feat(ultra): 3K NVCF + disaggregated-sandbox pipeclean recipes and launch fixes - #3876
Draft
hemildesai wants to merge 2 commits into
Draft
feat(ultra): 3K NVCF + disaggregated-sandbox pipeclean recipes and launch fixes#3876hemildesai wants to merge 2 commits into
hemildesai wants to merge 2 commits into
Conversation
Adds the 3K-GPU pipeclean arms that run tool execution on an external
sandbox service and serve all three judges (GenRM, NL2Bash, safety) from
NVCF instead of the allocation: no judge hetgroup, sub-minute prewarmed
sandbox attach, and the Gym nodes keep only CPU work.
- nvcf_judges.yaml: mergeable fragment routing the judges at NVCF. The
deployment-specific function routes and credential are taken from the
environment (GENRM_NVCF_MODEL, NL2BASH_NVCF_MODEL, SAFETY_NVCF_MODEL,
NVIDIA_API_KEY); nothing secret is embedded.
- pipeclean_3k{,_sc}.yaml: the 3K base and SingleController overlays,
halved from the 6K cohort.
- disagg_sandboxes/: SC launchers and configs for the NVCF arm and the
on-allocation backup arm.
Recipes originate from sauramishra's RL-6k working tree; this commit
publishes them with the NVCF routes externalized.
Co-authored-by: saumishr <3660203+saumishr@users.noreply.github.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Signed-off-by: Hemil Desai <hemild@nvidia.com>
Three launch-path defects surfaced when running the 752-node recipes on a cluster whose login nodes resolve /lustre through a physical mount that compute nodes cannot see, and whose Slurm reserves system cores: 1. Slurm records the submit host's physical cwd; every path derived from SLURM_SUBMIT_DIR (batch script, --container-workdir, log dirs) then fails on compute with 'pyxis: couldn't chdir'. Route host paths through SLURM_WORKDIR (caller-overridable, defaults to SLURM_SUBMIT_DIR), add PROJECT_ROOT_OVERRIDE to ultra_launch, and pass --chdir on every sbatch component. 2. A job step that omits --gres/--mem inherits the node's full GPU and memory allocation: the external-vLLM load-balancer steps on the ray-head node starved the ray-head srun into endless 'step creation temporarily disabled' retries. Pin the LB and preflight steps to gpu:0/16G and let the ray-head step --overlap service steps. 3. CPUS_PER_WORKER resolved from CPUTot exceeds the allocation on clusters with CoreSpecCount-reserved cores, which also blocks step creation forever. Clamp to SLURM_CPUS_ON_NODE. All three were hit and fixed live; unit tests pin the contracts. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Signed-off-by: Hemil Desai <hemild@nvidia.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Overview
Enables the 3K-GPU pipeclean with disaggregated sandboxes + NVCF-hosted judges, stacked on the
6k-pipecleaninglineage (base branch:hemild/saumishr-6k-pipecleaning-base, a snapshot of @saumishr's branch tip).What the NVCF + disagg arm changes: tool execution moves to prewarmed pods on an external sandbox service, and all three judges (GenRM, NL2Bash, safety) are served from NVCF — so there is no judge hetgroup, no local judge vLLM, and the run is a single 752-node group (256 train / 488 gen / 8 Gym). Measured against the on-allocation arm on the same day/cluster/scale, this removed ~13 minutes of hard init gate (judge bring-up before ray.sub) and reached rollout dispatch ~14 minutes after job start.
Recipes (
feat(ultra))nvcf_judges.yaml— mergeable fragment routing the judges at NVCF. Deployment-specific function routes and the credential come from the environment (GENRM_NVCF_MODEL,NL2BASH_NVCF_MODEL,SAFETY_NVCF_MODEL,NVIDIA_API_KEY); nothing secret is embedded, and the launcher fails closed if they are missing.pipeclean_3k.yaml/pipeclean_3k_sc.yaml— 3K base + SC overlays (halved 6K cohort).disagg_sandboxes/launch_3k_nvcf_disagg_sc.sh+pipeclean_3k_nvcf_disagg_sc.yaml— the primary arm.disagg_sandboxes/launch_3k_disagg_sc.sh+pipeclean_3k_disagg_sc.yaml— the on-allocation backup arm.Recipes were authored in @saumishr's RL-6k working tree; this PR publishes them with the NVCF routes externalized.
Launch fixes (
fix(launch)) — each hit live at 752 nodes/lustrethrough a mount compute nodes cannot see, every path derived fromSLURM_SUBMIT_DIRfails (pyxis: couldn't chdir …, all containers dead in ~2 min). Host paths now route throughSLURM_WORKDIR(defaults toSLURM_SUBMIT_DIR),ultra_launchgainsPROJECT_ROOT_OVERRIDE, and every sbatch component gets--chdir.--gres/--meminherits the node's full GPU/memory allocation; the external-vLLM load-balancer steps on the ray-head node blocked the ray-head srun in endlessstep creation temporarily disabledretries. LB/preflight steps are now pinned togpu:0+ 16G and the ray-head step overlaps service steps.CPUTot, which exceeds the allocation on clusters that reserve system cores — also an unsatisfiable step. The resolved value is clamped toSLURM_CPUS_ON_NODE.Unit tests pin all three contracts (
tests/unit/tools/test_external_gym_vllm.py).Validation
bash -non all touched shell files; new unit tests pass by construction against the modified files.Draft: the mooncake data-plane dispatch stall observed at scale is still under investigation (workaround:
DP_BACKEND=simple), and the base branch should be retargeted to @saumishr's branch owner-side before merge.🤖 Generated with Claude Code