You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Support external model providers in Slurm runs #1079
DD Slurm currently requires a local vLLM deployment for every Data Designer model alias and rewrites every alias to a managed endpoint. This prevents recipes that combine a local generator with a hosted judge. Hosted-only recipes also cannot run as CPU jobs.
Proposed scope:
Declare external providers using Data Designer provider settings and Slurm secret references.
Require every alias to resolve to either a local deployment or an explicitly declared external provider.
Preserve external model settings while materializing only local endpoints.
Allow hosted-only client jobs without GPU requests, serving images, or container processes.
Retain the existing async engine, sharding, retry, and collection behavior.
Validation covers local-only compatibility, mixed providers, hosted-only CPU execution, credential handling, and retry/resume. Automatic splitting of recipe stages is outside this change.
Could we keep hosted-provider configuration entirely in DD’s existing model-provider settings, with the Slurm config describing only the models we deploy locally? That would preserve hosted-only and mixed runs without introducing invocation.model_providers or a parallel provider schema.
Concretely, I’m thinking of the following flow:
1. Users configure hosted providers through DD as usual.
Their normal model_providers.yaml contains the endpoint, provider type, request settings, and credential reference:
The recipe’s ModelConfig references provider: hosted-judge. Users export MODEL_API_KEY in the submit environment before running the Slurm command; they don’t repeat the provider or credential configuration in the Slurm YAML.
2. Submission resolves which models Slurm owns.
Aliases listed in deployments get managed servers and generated runtime endpoints. For every remaining alias, submission resolves its provider through DD’s normal settings. We validate missing providers, ambiguous assignments, and provider-name collisions before submitting a job.
3. Capture provider settings as run inputs.
Submission snapshots only the hosted providers required by the recipe into the internal run bundle, keeping credential references rather than values. That makes the run independent of later edits to the user’s provider settings and avoids assuming their home directory is available on compute nodes.
This also matters because the client currently uses an isolated DATA_DESIGNER_HOME per attempt.
4. Reuse the existing credential transport.
Discover the required environment-variable references from those providers, validate their availability, and forward their values only to the client steps. Values should stay out of the persisted plans and generated scripts.
I’d initially support environment-backed API keys explicitly. Plaintext keys, sensitive headers, and custom secret resolvers need a defined policy so we don’t accidentally persist credentials. Any additional secret-reference support should belong to DD’s provider contract and be reusable outside Slurm.
5. Combine providers at execution time.
The compute-node client loads the captured hosted providers, adds the generated local providers, and passes the combined list to DD. Hosted model identities and inference settings remain intact; only locally deployed aliases get endpoint overrides.
With no deployments, this becomes a CPU-only run. With local deployments, it remains a GPU run using the existing async execution, sharding, retry/resume, and collection machinery.
The mixed-run utilization tradeoff still exists: GPUs remain allocated until the shard finishes, including hosted requests. We should document that clearly and recommend separate stages when hosted processing is substantial. This proposal simplifies configuration ownership; it doesn’t claim to solve that scheduling tradeoff.
Implemented in #1080 on feat/slurm-execution, with hosted-only and mixed-provider runs verified. Closing ahead of the feature branch's upcoming merge into main via #1040.
Activity
feat(slurm): support external model providers
nabinchha commentedon Oct 23, 2026
Could we keep hosted-provider configuration entirely in DD’s existing model-provider settings, with the Slurm config describing only the models we deploy locally? That would preserve hosted-only and mixed runs without introducing
invocation.model_providersor a parallel provider schema.Concretely, I’m thinking of the following flow:
1. Users configure hosted providers through DD as usual.
Their normal
model_providers.yamlcontains the endpoint, provider type, request settings, and credential reference:The recipe’s
ModelConfigreferencesprovider: hosted-judge. Users exportMODEL_API_KEYin the submit environment before running the Slurm command; they don’t repeat the provider or credential configuration in the Slurm YAML.2. Submission resolves which models Slurm owns.
Aliases listed in
deploymentsget managed servers and generated runtime endpoints. For every remaining alias, submission resolves its provider through DD’s normal settings. We validate missing providers, ambiguous assignments, and provider-name collisions before submitting a job.3. Capture provider settings as run inputs.
Submission snapshots only the hosted providers required by the recipe into the internal run bundle, keeping credential references rather than values. That makes the run independent of later edits to the user’s provider settings and avoids assuming their home directory is available on compute nodes.
This also matters because the client currently uses an isolated
DATA_DESIGNER_HOMEper attempt.4. Reuse the existing credential transport.
Discover the required environment-variable references from those providers, validate their availability, and forward their values only to the client steps. Values should stay out of the persisted plans and generated scripts.
I’d initially support environment-backed API keys explicitly. Plaintext keys, sensitive headers, and custom secret resolvers need a defined policy so we don’t accidentally persist credentials. Any additional secret-reference support should belong to DD’s provider contract and be reusable outside Slurm.
5. Combine providers at execution time.
The compute-node client loads the captured hosted providers, adds the generated local providers, and passes the combined list to DD. Hosted model identities and inference settings remain intact; only locally deployed aliases get endpoint overrides.
With no deployments, this becomes a CPU-only run. With local deployments, it remains a GPU run using the existing async execution, sharding, retry/resume, and collection machinery.
The mixed-run utilization tradeoff still exists: GPUs remain allocated until the shard finishes, including hosted requests. We should document that clearly and recommend separate stages when hosted processing is substantial. This proposal simplifies configuration ownership; it doesn’t claim to solve that scheduling tradeoff.
feat(slurm): support hosted models through native DD provider settings (
feat(slurm): support hosted models through native DD provider settings (
andreatnvidia commentedon Oct 28, 2026
Implemented in #1080 on
feat/slurm-execution, with hosted-only and mixed-provider runs verified. Closing ahead of the feature branch's upcoming merge intomainvia #1040.