Skip to content

Update MTP inference for SpeechLM vLLM for Nemotron 3.5 Lightning based models - #16068

Open
DongjiGao wants to merge 14 commits into
codex/pr-16048from
codex/nemotron-3.5-vllm-mtp-integration
Open

Update MTP inference for SpeechLM vLLM for Nemotron 3.5 Lightning based models#16068
DongjiGao wants to merge 14 commits into
codex/pr-16048from
codex/nemotron-3.5-vllm-mtp-integration

Conversation

@DongjiGao

@DongjiGao DongjiGao commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Summary

  • add native vLLM MTP draft-model registration and routing for NeMo SpeechLM
  • support both target-only and native MTP speculative inference
  • fuse SpeechLM audio embeddings into target and draft model inputs
  • load target and MTP checkpoint weights, including packed MoE experts and vocabulary padding
  • preserve Nemotron-H FP32 Mamba parameters and SSM cache precision
  • enable PEE online inference and correct PEE audio placeholder accounting
  • add focused tests for registration, configuration, weight mapping, multimodal embeddings, target-only loading, and MTP

Dependencies

This is a dependent PR based on the exact head of #16053:

The PR targets #16053's head branch, codex/pr-16048, so its functional diff is the vLLM-plugin integration layered on that work.

The MTP implementation builds on Slyne's work in #15906 and includes the follow-up fixes required by the Nemotron Transcribe 3.5 checkpoints tested here. The Speech #16053 base predates merged fix #16054, so that weight-name mapping is present in this dependent branch as well; it can disappear when the base is refreshed from current main.

What this enables

The same exported Nemotron Transcribe checkpoint can be loaded in either mode:

# Target only
LLM(model=checkpoint, ...)

# Native MTP draft model
LLM(
    model=checkpoint,
    spec_method="mtp",
    spec_tokens=1,
    ...,
)

The target-only loader ignores checkpoint MTP-head tensors. When MTP is enabled, vLLM resolves NeMoSpeechLMMTPModel, loads those draft weights, and uses the same audio embeddings and placeholder positions as the target.

Scope

This PR contains the complete SpeechLM vLLM-plugin path for target-only and MTP inference. It deliberately contains no decoded-word repetition detector, output trimming, or other checkpoint-specific post-processing.

Validation

Focused unit suites in the project's vLLM 0.23.0 / CUDA 12.9 container with Automodel #3555 mounted:

  • 156 passed
  • 8 skipped
  • isort 5.13.2 passed for all CI-reported Python files
  • Black 24.10 passed for all changed Python files
  • the repository copyright check passed locally

Real BF16 GPU smokes on one RTX PRO 6000 Blackwell Max-Q with the Hero5 Transformer-encoder checkpoint:

  • target-only loaded 60.12 GiB and completed with native EOS
  • native one-token MTP resolved and loaded NeMoSpeechLMMTPModel separately
  • both modes produced: 10 companies that let you teach English.
  • both modes produced identical token IDs and ended at EOS

The target-only and MTP smoke results, hashes, checkpoint/container provenance, and commands are retained in the Nemotron Transcribe vLLM Labbook project.

Slyne and others added 9 commits August 16, 2026 15:42
- register the NeMo SpeechLM MTP draft model and route compatible repeated-layer checkpoints through vLLM speculative decoding
- fuse audio embeddings at placeholder positions for target and draft models
- load MTP weights while handling SpeechLM checkpoint prefixes and vocabulary padding
- make plugin registration idempotent and validate repeated-layer multi-head configurations
- add focused plugin tests for registration, config routing, embeddings, and MTP properties

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

Signed-off-by: slyne deng <slyned@nvidia.com>
Signed-off-by: Codex <codex@openai.com>
Signed-off-by: SlyneD <slyned@nvidia.com>
Signed-off-by: Codex <codex@openai.com>
…r repeated MTP head; and fix for v0.20.0 weight loading

Signed-off-by: SlyneD <slyned@nvidia.com>
Signed-off-by: Codex <codex@openai.com>
Signed-off-by: SlyneD <slyned@nvidia.com>
Signed-off-by: Codex <codex@openai.com>
Signed-off-by: Codex <codex@openai.com>
Signed-off-by: Codex <codex@openai.com>
* Fix Mamba vLLM weight name mapping

* Narrow Mamba vLLM compatibility mapping

Signed-off-by: Codex <codex@openai.com>
Signed-off-by: Codex <codex@openai.com>
Signed-off-by: Codex <codex@openai.com>
@copy-pr-bot

copy-pr-bot Bot commented Aug 16, 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.

@github-actions github-actions Bot added the ASR label Aug 16, 2026
Signed-off-by: Codex <codex@openai.com>
@DongjiGao
DongjiGao requested a review from pzelasko August 16, 2026 23:08
@DongjiGao
DongjiGao marked this pull request as ready for review August 16, 2026 23:13
@pzelasko pzelasko changed the title Add Nemotron Transcribe target and MTP inference to SpeechLM vLLM Update MTP inference for SpeechLM vLLM for Nemotron 3.5 Lightning based models Aug 18, 2026
Signed-off-by: Piotr Żelasko <pzelasko@nvidia.com>
Signed-off-by: Piotr Żelasko <pzelasko@nvidia.com>

Copy link
Copy Markdown
Collaborator

/ok to test 52d477b

Signed-off-by: Piotr Żelasko <pzelasko@nvidia.com>

Copy link
Copy Markdown
Collaborator

/ok to test 761ea9b

Signed-off-by: Piotr Żelasko <pzelasko@nvidia.com>

Copy link
Copy Markdown
Collaborator

/ok to test bc8de5f

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

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants