Skip to content

feat(slurm): support hosted models through native DD provider settings - #1080

Draft
dhruvnathawani wants to merge 7 commits into
feat/slurm-executionfrom
dhruv/slurm-hosted-providers
Draft

dhruvnathawani wants to merge 7 commits into
feat/slurm-executionfrom
dhruv/slurm-hosted-providers

Conversation

@dhruvnathawani

@dhruvnathawani dhruvnathawani commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

📋 Summary

Slurm recipes can now use hosted models configured through DD's existing model_providers.yaml, alongside managed vLLM deployments or in hosted-only CPU allocations. The Slurm run file describes only the models deployed locally; there is no parallel provider schema or invocation.model_providers setting.

Targets feat/slurm-execution. Live qualification combines head 774774487da6 with the independent vLLM version-gate fix in #1086 (3442c185abac). This PR remains draft for review.

🔗 Related Issue

Closes #1079. Implements the native-provider ownership and snapshot flow proposed in Nabin's comment.

🔄 Changes

  • Resolve undeployed aliases through native DD settings and capture only the required providers as immutable native JSON in the run inputs. Validate missing/ambiguous providers, generated-name collisions, and API-key environment availability before capture/submission.
  • Retain environment-variable references in the snapshot and forward values only to client steps, including retries. Initially support environment-backed API keys and non-secret static headers; reject plaintext keys and sensitive headers. Compute nodes use the captured settings rather than the submit host's home directory.
  • Override endpoints only for locally deployed aliases. Preserve hosted model identities, inference settings, and the existing async execution, sharding, resume, retry, and collection behavior.
  • Allow zero deployments: use a CPU allocation with --gres=none, without GPU discovery, serving images, containers, or proxies. Add per-node submission.memory for generation/collection.
  • Fix native dataset handoff: let DD create its output directory exclusively, then restrict it before winner publication; preserve existing nonempty/linked paths.
  • Fix Parquet export when async batches use different column orders: select the unified order before schema casting. The live baseline exposed this after successful generation/judging; a regression covers reordered columns, nested structs, and empty lists without changing row values.
  • Update public examples and Fern documentation for normal DD provider configuration.

Async execution does not guarantee continuous GPU utilization. Local GPUs remain allocated during hosted requests; separate stages remain appropriate when hosted processing is substantial.

🧪 Testing

  • Exact combined source with fix(slurm): remove vLLM release allowlist #1086: 2,035 Slurm tests passed.
  • Native results/export suite: 49 passed; the new regression reproduced the live failure before the fix.
  • make check-all, changed-file Ruff checks, and git diff --check passed.
  • Fern: internal links across 101 pages and full validation passed (0 errors, one authentication-dependent warning).
  • Native DD HTTP and service tests cover hosted/mixed routing, settings snapshots, unavailable/plaintext credentials, client-only secret scope, and candidate verification.
  • Frozen baseline on the existing Qwen image generated 4/4 authored SQL fixture records, with 4/4 hosted judgments pass, then failed during Parquet consolidation. CPU replay with the export fix preserved all four saved records exactly; the original failed attempt remains preserved.
  • Fresh native-settings hosted-only run: 2/2 records generated, judged, published, and collected. Generation and collection both completed with exit code 0 and zero GPUs.
  • Fresh native-settings mixed run on the preserved Qwen image/checkpoint and TP4 configuration: 4/4 records generated, all four hosted judgments pass, and all four records published and collected. Generation completed with exit code 0; collection also completed with exit code 0 on a CPU allocation with zero GPUs.
  • Paired fixture prompts, seed rows, judge code, inference settings, and serving parameters are unchanged after normalizing provider ownership, library version, and fixture paths. Persisted text-artifact scans found no hosted credential values in either final run.

The small fixture tests provider routing and publication. It does not qualify Gym SQL execution, production SQL data quality, sustained GPU utilization, or a full dataset/SFT rerun.

✅ Checklist

  • Conventional commits and signed-off DCO.
  • Internal contribution; external-contributor triage does not apply.
  • Public documentation updated; package layering preserved.

Allow hosted endpoints alongside managed models and run hosted-only
recipes in CPU allocations. Resolve credentials at runtime and preserve
native Data Designer model settings and asynchronous execution.

Reuse shard, retry, resume, and collection contracts while preserving
existing local-only plan serialization. Add configuration examples,
documentation, and native client and allocation lifecycle coverage.

Closes #1079

Signed-off-by: Dhruv Nathawani <[email protected]>
@github-actions

github-actions Bot commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

All contributors have signed the DCO ✍️ ✅
Posted by the DCO Assistant Lite bot.

@github-actions

Copy link
Copy Markdown
Contributor

Fern preview: https://nvidia-preview-pr-1080.docs.buildwithfern.com/nemo/datadesigner

Fern previews include the docs-website version archive with PR changes synced into latest. Notebook tutorials are rendered without execution outputs in previews.

@dhruvnathawani
dhruvnathawani force-pushed the dhruv/slurm-hosted-providers branch from 2f19916 to dfcbbf0 Compare October 23, 2026 05:52
@dhruvnathawani dhruvnathawani changed the title feat(slurm): support external model providers feat(slurm): support hosted models through native DD provider settings Oct 23, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant