Repository navigation
Conversation
This was referenced Oct 6, 2026
pst2154
marked this pull request as ready for review
October 6, 2026 19:10
Collaborator
Author
|
Codex assisting @pst2154: this incorrectly targeted fork PR is superseded by vllm-project#60287, targeting upstream main. The branch and reviewed commit are preserved. Tracking: vllm-project#60283 |
Collaborator
Author
|
Codex assisting @pst2154: reopened at the submitter’s request so this remains available for integration into the model author’s branch. The same fixes are also submitted upstream in vllm-project#60287; these are two review routes for the same commit, not separate changes. Tracking: vllm-project#60283 |
pst2154
force-pushed
the
feat/nemotron-full-model-followup
branch
from
October 9, 2026 17:13
c2b4b58 to
37e0476
Compare
Rebase the correctness follow-up onto current main and the reduced model-support foundation. Retain reveal-time per-request logprobs, pipeline-parallel rejection, GPU completion counts and the SM100 stochastic compiler workaround. Defer linear-speculation bookkeeping with its sampler. Co-authored-by: OpenAI Codex <codex@openai.com> Signed-off-by: Alex Steiner <asteiner@nvidia.com> Signed-off-by: "Alex Steiner" <asteiner@nvidia.com>
pst2154
force-pushed
the
nemotron-labs-diffusion-upstream
branch
from
October 9, 2026 17:31
943c956 to
7dca058
Compare
pst2154
force-pushed
the
feat/nemotron-full-model-followup
branch
from
October 9, 2026 17:31
37e0476 to
d3df247
Compare
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
Fix Nemotron diffusion scores changing when requests with different logprob settings share a batch. Capture each position's distribution when it is revealed, preserving the native model's diffusion generation, AR, and linear speculation implementation.
Draft follow-up to vllm-project/vllm#58387, targeting its implementation branch rather than introducing a competing model PR. It retains native checkpoint loading, diffusion text generation, AR, and linear speculation. The delta is one four-file commit above
943c956: c2b4b58.Claims
Validation
The original implementation was reproduced on H100 with the public 8B checkpoint: a sampled token's logprob changed from
-0.535999alone to-11.367270in a mixed batch while generated tokens remained identical.The final regression compares equal-sized three-request batches, resetting prefix cache between calls. One batch requests
logprobs=0throughout; the other requestsNone,0, and2. Output budgets are 17, 41, and 9 tokens with EOS ignored: the top-k neighbour finishes before the 41-token request's second block. It checks generated-token equality, complete scores, and sampled-token probabilities for both requesting rows, preserving tolerance 0.02.Public checkpoint:
nvidia/Nemotron-Labs-Diffusion-8B, revision16c67f0560b912e93e0cabb6e0c4f5c3086d95fc. BF16, TP=1, PP=1, Triton attention, maximum model length 2,048. Validation usesVLLM_GPU_SYNC_CHECK=error.Pre-commit passed. CPU/configuration tests run in the existing model suite. Weight-dependent tests require a supplied local checkpoint; default CI skips them unless
NEMOTRON_DLM_MODEL_PATHpoints to one. The GPU results above provide manual coverage for this gap. These tests do not establish a new model accuracy score, speedup, quantization support, or multi-GPU correctness. Stochastic generation was rerun after the compiler workaround on all three GPUs and passed. A100 eager linear-spec logprob parity differs by 0.12671864 (tolerance 0.12), with the exact same scores in the unchanged sampler; no assertion was relaxed. All three FP32 native HF-reference checks passed on H100 (158.68 seconds). RTX validation is not available.Details
Previously, the batch's maximum requested top-k count selected the output path for every request. A neighbour asking for top-k scores could therefore switch a
logprobs=0request from reveal-time scores to final-step scores. Scores could also be absent if that neighbour finished before another request committed its block.The sampler now records top-k scores per requesting slot and per newly revealed position. Completed-token scores persist until the next reveal overwrites that position. Sampled-only requests use their reveal buffers regardless of the batch's maximum top-k count. Fixed canvas-stride output offsets let the output processor use GPU-produced sample counts without synchronizing on phase flags. Request-slot reuse clears stored scores through the existing lifecycle.
Accurate top-k capture requires computing requested scores at reveal steps rather than only at convergence; this may increase work for requests that explicitly ask for top-k logprobs. No performance claim is made. The default path without logprobs avoids this capture.
Linear-spec score rows are computed for the scheduled block, padded to canvas stride, and emitted according to GPU-produced acceptance counts. Carried seed logits are selected and preserved on GPU, replacing the blocking host read. Computing scores for positions that are not accepted can increase work when logprobs are requested. Stochastic selection has a graph boundary before downstream confidence/rank reductions to avoid an Inductor-generated temporary escaping its loop scope on SM100; both sides remain compiled, but the boundary can add kernel launches.
AI assistance: OpenAI Codex assisted with implementation, diagnosis, tests, and documentation. The detailed results above were recorded by Codex. The submitter has confirmed reviewing the changed lines and running the relevant tests. This follow-up is ready for maintainer review; the disclosed A100 eager numerical discrepancy and CI coverage limits remain unchanged.
Pull Request Checklist
I used vLLM's
/pr-checklistskill. (Mandatory for agents, optional for humans).AI assistance was used during the creation of this PR.
Design Fit: Minimizes impact on core components, reuses existing functionality, and justifies added complexity.
Testing and Validation: Validates the change and ensures any added tests are meaningful and reliable, with CI coverage or documented CI resource constraints and validation performed outside CI.
Code Quality and Style: Keeps code and comments clear and concise, and updates relevant documentation and examples.
Pull Request Contents: Includes a brief summary and relevant links, supports claims with evidence, explains root causes and implementation trade-offs, and follows the contributing guide.
BEFORE SUBMITTING, PLEASE READ https://docs.vllm.ai/en/latest/contributing
Tracking issue for the full three-part stack: vllm-project#60283