You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Run Nemotron-3.5-Lightning-30B-A3B-NVFP4 end to end: NemotronH hybrid (23 Mamba2 / 6 GQA / 23 non-gated relu² MoE) with a MIXED_PRECISION checkpoint #517
Quantization: ModelOpt quant_algo: MIXED_PRECISION, quant_method: modelopt, producer modelopt 0.44.0rc5, with a 5981-entry quantized_layers
map — NVFP4 W4A16 group_size 16 for routed experts, shared experts and lm_head; FP8 W8A8 static (with input_scale) for the mamba in_proj/out_proj only (46 targets); bf16 attention q/k/v/o; fp8 kv_cache_scheme with k_scale/v_scale. Weight prefix is backbone..
20.1 GiB on disk, fits one GB10. Downloaded to $CHECKPOINT_ROOT/nemotron-3.5-lightning-30b-nvfp4 at pinned revision 29f2d1746d8f41e316523194b19018707749b1b1.
registry.py:179 -> models/nemotron_h.py::NemotronHForCausalLM; MambaMixer2 at nemotron_h.py:373; NemotronHMoEDecoderLayer at :317
(FusedMoE with ckpt_names=("up_proj","down_proj",""), use_grouped_topk, scoring_func="sigmoid", activation=activation_without_mul(mlp_hidden_act), apply_routed_scale_to_output=True); MTP at models/nemotron_h_mtp.py; ModelOptMixedPrecisionConfig at layers/quantization/modelopt.py:2280.
Non-gated relu² MoE. Every grouped-MoE op we have is SwiGLU-shaped
(kMoeGateUpSwiGLUGrouped, kMoeGroupedGemmBf16GateUpSilu, kMoeSiluMul).
This arch has no gate half at all: up_proj -> relu² -> down_proj, and it
must route through vt::MergedGemmGroup / the NVFP4 Marlin grouped path
rather than a hand-rolled sibling.
ModelOpt MIXED_PRECISION loading. We handle uniform modelopt NVFP4
(Laguna, MiniMax-H3, Qwen3.5) and have no per-module quant_algo resolution
at all — quantization_config is read ad-hoc in exactly two model weight
files today (kimi_k3_weights.cpp:171, deepseek_v2_weights.cpp:365).
Mirror get_quant_algo_for_layer's direct-then-shard-prefix lookup.
Model plumbing.nemotron_h.cpp / _weights.cpp / _registry.cpp, layers_block_type -> layer dispatch, het-KV group construction (one MambaSpec group + one full-attention group covering only 6 layers), the backbone. prefix, and the MTP head (our MTP spec-decode machinery already
exists — qwen3_5_mtp.cpp).
Gate
Token-exact greedy vs the pinned oracle on GB10, identical prompts, token
counts, batching and sampling; oracle identity asserted before any number is
believed. Note the oracle venv trap: $HOME/venvs/vllm-oracle on dgx symlinks
to vllm-oracle-v0.25.0-stage (vLLM 0.25.0), which predates the NemotronH MoE
decoder layer entirely. The pin is vllm-oracle-next
(555967922, transformers 5.14.1, flashinfer 0.6.15.post1).
Speed is a separate, later question and no ratio is claimed by this row until
correctness lands.
Goal
Run
nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-NVFP4end to end, token-gatedagainst the pinned vLLM oracle on GB10.
Row:
MODEL-TEXT-nemotron-h-nemotron-hfor-causal-lm(INVENTORIED,model-matrix.md:248). Arch
NemotronHForCausalLM,model_type: nemotron_h.What the checkpoint is
52 layers from
layers_block_type: 23 mamba (Mamba2) / 6 GQA attention / 23MoE.
hidden_size=2688,vocab=131072,max_position_embeddings=1048576.mamba_num_heads=64,mamba_head_dim=64,n_groups=8,ssm_state_size=128,conv_kernel=4,chunk_size=128, silu,use_conv_bias=true,use_bias=false,mamba_ssm_cache_dtype=float32.head_dim=128,rope_theta=10000, no sliding window.relu²(up_projanddown_projonly, nogate_proj), 1 shared expert (intermediate=3712),sigmoid scoring with
e_score_correction_bias,n_group=1/topk_group=1,norm_topk_prob=true,routed_scaling_factor=2.5applied to the OUTPUT.num_nextn_predict_layers=1,mtp_layers_block_type=["attention","moe"],DeepSeek-style
eh_proj/enorm/hnorm, bf16 (unquantized).quant_algo: MIXED_PRECISION,quant_method: modelopt, producer modelopt 0.44.0rc5, with a 5981-entryquantized_layersmap — NVFP4 W4A16 group_size 16 for routed experts, shared experts and
lm_head; FP8 W8A8 static (withinput_scale) for the mambain_proj/out_projonly (46 targets); bf16 attention q/k/v/o; fp8kv_cache_schemewithk_scale/v_scale. Weight prefix isbackbone..20.1 GiB on disk, fits one GB10. Downloaded to
$CHECKPOINT_ROOT/nemotron-3.5-lightning-30b-nvfp4at pinned revision29f2d1746d8f41e316523194b19018707749b1b1.Upstream (pinned oracle
555967922, vLLM 0.26.0.dev0)registry.py:179->models/nemotron_h.py::NemotronHForCausalLM;MambaMixer2atnemotron_h.py:373;NemotronHMoEDecoderLayerat:317(
FusedMoEwithckpt_names=("up_proj","down_proj",""),use_grouped_topk,scoring_func="sigmoid",activation=activation_without_mul(mlp_hidden_act),apply_routed_scale_to_output=True); MTP atmodels/nemotron_h_mtp.py;ModelOptMixedPrecisionConfigatlayers/quantization/modelopt.py:2280.Blockers and owed work
KERNEL-SSM-MAMBAMamba2 SSD core is unported: KERNEL-SSM-MAMBA has only the GDN arm, so every hybrid-SSM arch (Nemotron-H/3.5, Bamba, Granite-4, Zamba2, Falcon-H1, Mamba2) is blocked #496 — Mamba2 SSD. Hard blocker.spec.
W1 (CPU host references) is in fresh review on
row/KERNEL-SSM-MAMBA-SSD-W1;the CUDA arm is W2.
relu²MoE. Every grouped-MoE op we have is SwiGLU-shaped(
kMoeGateUpSwiGLUGrouped,kMoeGroupedGemmBf16GateUpSilu,kMoeSiluMul).This arch has no gate half at all:
up_proj -> relu² -> down_proj, and itmust route through
vt::MergedGemmGroup/ the NVFP4 Marlin grouped pathrather than a hand-rolled sibling.
MIXED_PRECISIONloading. We handle uniform modelopt NVFP4(Laguna, MiniMax-H3, Qwen3.5) and have no per-module
quant_algoresolutionat all —
quantization_configis read ad-hoc in exactly two model weightfiles today (
kimi_k3_weights.cpp:171,deepseek_v2_weights.cpp:365).Mirror
get_quant_algo_for_layer's direct-then-shard-prefix lookup.nemotron_h.cpp/_weights.cpp/_registry.cpp,layers_block_type-> layer dispatch, het-KV group construction (oneMambaSpecgroup + one full-attention group covering only 6 layers), thebackbone.prefix, and the MTP head (our MTP spec-decode machinery alreadyexists —
qwen3_5_mtp.cpp).Gate
Token-exact greedy vs the pinned oracle on GB10, identical prompts, token
counts, batching and sampling; oracle identity asserted before any number is
believed. Note the oracle venv trap:
$HOME/venvs/vllm-oracleon dgx symlinksto
vllm-oracle-v0.25.0-stage(vLLM 0.25.0), which predates the NemotronH MoEdecoder layer entirely. The pin is
vllm-oracle-next(
555967922, transformers 5.14.1, flashinfer 0.6.15.post1).Speed is a separate, later question and no ratio is claimed by this row until
correctness lands.
Not in scope
NemotronHPuzzleForCausalLMheterogeneous per-layer configs,moe_latent_size(null here), TP sharding of
n_groups, ReplaySSM.