feat: ultra recipes for gb200 - #3276
Merged
Merged
Conversation
macandro96
marked this pull request as draft
July 17, 2026 22:52
macandro96
force-pushed
the
amahishi/ultra-gb200
branch
from
July 22, 2026 02:28
19e368b to
b48bb44
Compare
macandro96
marked this pull request as ready for review
July 22, 2026 23:39
yfw
reviewed
Jul 23, 2026
macandro96
force-pushed
the
amahishi/ultra-gb200
branch
from
July 23, 2026 03:53
b48bb44 to
18d19b0
Compare
yfw
previously approved these changes
Jul 24, 2026
Contributor
Author
|
/ok to test 18d19b0 |
macandro96
force-pushed
the
amahishi/ultra-gb200
branch
from
July 24, 2026 23:43
18d19b0 to
784f8e4
Compare
Contributor
Author
|
/ok to test 784f8e4 |
macandro96
force-pushed
the
amahishi/ultra-gb200
branch
from
July 25, 2026 04:09
784f8e4 to
1bce23f
Compare
Contributor
|
Let's mirror the super config location: |
yfw
reviewed
Jul 29, 2026
Signed-off-by: Anish Mahishi <amahishi@nvidia.com>
Signed-off-by: Anish Mahishi <amahishi@nvidia.com>
Signed-off-by: Anish Mahishi <amahishi@nvidia.com>
Signed-off-by: Anish Mahishi <amahishi@nvidia.com>
Signed-off-by: Anish Mahishi <amahishi@nvidia.com>
Signed-off-by: Anish Mahishi <amahishi@nvidia.com>
Signed-off-by: Anish Mahishi <amahishi@nvidia.com>
…erences
Address review feedback on the Ultra recipes PR:
- Replace `sif_dir: ???` / `_teachers.general: ???` with concrete
placeholders so example configs resolve under
`OmegaConf.to_container(resolve=True)`, fixing the blocking CI
regression in test_config_validation.py. Fail-fast is preserved at the
launch boundary: ultra_launch.sh now hard-requires SIF_DIR whenever the
selected config interpolates `${sif_dir}` (mopd already guards
NRL_GENERAL_TEACHER_PATH).
- Correct nonexistent `student_rlvr.yaml` references to `student_rlvr1.yaml`
in the launch guide and ultra_launch.sh.
- Drop the tautological `save_optimizer is True` assert in the Ultra config
contract test, keeping the meaningful schema + CheckpointManager checks.
- Use a non-"interactive" reaper reason for the batch training submit.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Anish Mahishi <amahishi@nvidia.com>
Signed-off-by: Anish Mahishi <amahishi@nvidia.com>
…ron-3-ultra Move the 7 Ultra recipe YAMLs and ultra_launch.sh from examples/configs/ultra/ and the repo root into examples/nemo_gym/nemotron-3-ultra/, mirroring the existing nemotron-3-super layout (recipe configs + launcher co-located in one nemo_gym recipe dir). Update all path references so everything resolves: - tests/unit/utils/test_config.py: repoint ULTRA_CONFIG_PATHS to the new dir (otherwise test_ultra_configs_satisfy_current_grpo_contract errors on missing files). - ultra_launch.sh: update usage comments, the CONFIG_PATH example, and the invocation hints to the new script path (run from the repo root, matching super_launch.sh). - docs/guides/nemotron-3-ultra.md: update config paths and the launch command. The configs now sit outside examples/configs/**, so test_config_validation.py no longer globs them (same as the super recipe); the Ultra contract test still covers them via ULTRA_CONFIG_PATHS. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Signed-off-by: Anish Mahishi <amahishi@nvidia.com>
Runtime tuning for the GB200 Ultra recipes: - Point judge models (genrm/nl2bash) at the async vLLM worker venv via ray_worker_py_executable, matching the generation path. - Add max_num_seqs=256 and max_num_batched_tokens=8192 to vLLM serve kwargs. - Enable NCCL_MNNVL_ENABLE and the trtllm FlashInfer allreduce backend (VLLM_FLASHINFER_ALLREDUCE_BACKEND=trtllm, VLLM_ALLREDUCE_USE_SYMM_MEM=0); route DP through Ray (distributed_executor_backend/data_parallel_backend=ray). - Switch load_format to auto and replace cudagraph_capture_sizes with pass_config.fuse_allreduce_rms=false in compilation_config. - student_rlvr2: lower gpu_memory_utilization 0.85 -> 0.80 to leave headroom for the packed buffer during Megatron->vLLM refits, and document the NL2BASH_BASE_URL / GENRM_MODEL launcher overrides. - ultra_launch.sh: set the batch reaper reason to "other" (was "batch"). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Signed-off-by: Anish Mahishi <amahishi@nvidia.com>
Ultra runs on the container's stock vLLM, so remove the USE_CUSTOM_VLLM
switch and everything that only served the fork: the case block that
sourced 3rdparty/vllm/nemo-rl.env, the ${VLLM_ENV_SOURCE} prefix in
TRAIN_CMD, the 3rdparty/vllm code-snapshot symlink, the status echo, and
the related header/mount comments. The vLLM compile-cache and runtime env
(VLLM_CACHE_ROOT, FlashInfer MoE, etc.) are untouched — they serve the
stock vLLM too.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Anish Mahishi <amahishi@nvidia.com>
…rams - Container section: Ultra runs on the stock NeMo RL container (upstream aarch64 vLLM wheel); document pulling a prebuilt nightly from NGC and drop the BUILD_CUSTOM_VLLM build args and the USE_CUSTOM_VLLM note. - Prepare the code: clone -b main instead of the ultra-v3 branch. - Sync recipe parameters to the configs: student RLVR phase-1 group_answer_length_penalty_coeff 0.15 -> 0.25, MOPD CP 8 -> 32, and the RLHF/Reasoning teacher default cluster shapes (Gym node counts). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Signed-off-by: Anish Mahishi <amahishi@nvidia.com>
macandro96
force-pushed
the
amahishi/ultra-gb200
branch
from
July 29, 2026 21:32
1bce23f to
a99f247
Compare
Signed-off-by: Anish Mahishi <amahishi@nvidia.com>
yfw
reviewed
Jul 29, 2026
- mopd.yaml: remove the "Disabled on main" header note. OPD/MOPD runtime support (OPDAdvantageEstimator, non-colocated teachers) is already on main and the recipe ships as an active .yaml, so the note told readers not to use a shipped recipe. - nemotron-3-ultra.md: GENRM_MODEL is served at TP=4 with DP varying by stage (DP=16 in the RLHF and student RLVR2 stages), not a fixed DP=4 / 16 GPUs. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Signed-off-by: Anish Mahishi <amahishi@nvidia.com>
Contributor
Author
|
/ok to test 31c3bf7 |
yfw
approved these changes
Jul 30, 2026
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.
What does this PR do ?
Upstreaming ultra recipes for main
Issues
List issues that this PR closes (syntax):
Usage
# Add a code snippet demonstrating how to use thisBefore your PR is "Ready for review"
Pre checks:
Additional Information