Skip to content

feat(nemotron_3.5_super): report the model under a caller-supplied name - #2786

Merged
laszkiewiczp merged 3 commits into
mainfrom
plaszkiewicz/pd-policy-model-name
Aug 26, 2026
Merged

feat(nemotron_3.5_super): report the model under a caller-supplied name#2786
laszkiewiczp merged 3 commits into
mainfrom
plaszkiewicz/pd-policy-model-name

Conversation

@laszkiewiczp

@laszkiewiczp laszkiewiczp commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

Problem

In benchmarks/nemotron_3.5_super/sbatch_external_vllm.sh the reported model name is derived from the serve path — one variable feeds both:

vllm serve "$MODEL"
++policy_model_name=$MODEL

Under the current coupling, the only way to give a run a meaningful name is to rename the mount, and that is a trap: anything else addressing that mount by path (--chat-template /checkpoint/..., --reasoning-parser-plugin /checkpoint/...) silently points at a path that is no longer mounted, and vLLM fails to load it. We hit exactly that.

Change

MODEL_NAME names the model independently of where it is mounted:

  • vLLM serves under it (--served-model-name), so the endpoint answers to it.
  • The eval sends it (++policy_model_name), so the two cannot disagree.

This lets the caller keep the mount fixed and still say which checkpoint a run used.

Tested on a run

The P/D launcher derived the reported model name from the serve path:
`vllm serve "$MODEL"` and `++policy_model_name=$MODEL` read the same
variable. A caller that mounts every checkpoint at one fixed container
path therefore reports every run under that path, and cannot tell two
checkpoints apart in the rollouts.

MODEL_NAME now names the model independently of where it is mounted.
vLLM serves under it and the eval reports it, so the two stay consistent
without the caller having to move the mount. It defaults to $MODEL,
which is what vLLM would advertise anyway, so unset behaviour is
unchanged.

--served-model-name is passed before VLLM_COMMON_ARGS, so a VLLM_CONFIG
that sets its own still wins.

Signed-off-by: plaszkiewicz <plaszkiewicz@nvidia.com>
@copy-pr-bot

copy-pr-bot Bot commented Aug 26, 2026

Copy link
Copy Markdown

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

Signed-off-by: plaszkiewicz <plaszkiewicz@nvidia.com>
@laszkiewiczp
laszkiewiczp enabled auto-merge (squash) August 26, 2026 10:11
@laszkiewiczp

Copy link
Copy Markdown
Contributor Author

/ok to test fd05aae

@laszkiewiczp
laszkiewiczp merged commit e3133c3 into main Aug 26, 2026
17 checks passed
@laszkiewiczp
laszkiewiczp deleted the plaszkiewicz/pd-policy-model-name branch August 26, 2026 10:20
@laszkiewiczp

Copy link
Copy Markdown
Contributor Author

Data point on the cleanup-job bug I mentioned above, in case it helps prioritise it.

Three direct P/D runs today, all of which failed to submit the cleanup job with

sbatch: error: Unable to open file <submit_dir>/nemo_gym/sandbox/providers/opensandbox/cleanup_sandboxes.py

Running cleanup_sandboxes.py by hand afterwards found:

run orphaned sandboxes
6541154 (cancelled while pending) 0
6541226 (~8 min, 123 rollouts) 1689
6543224 (~8 min, 20 rollouts) 1115

2804 in total, from about sixteen minutes of two runs that never reached the end of the benchmark. All reaped now.

The script itself works fine — it is only the submission that fails, because submit_dir=$(pwd -P) assumes the caller runs from a Gym checkout. When the tree is mounted at /opt/Gym and the job is submitted from a run directory instead, that path never exists on the host, so nothing ever reaps.

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.

2 participants