快速结论:此 Bug 出现在 vLLM main 分支(约 0.22.1rc1.dev)上,加载 nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-NVFP4 模型进行多步推理时,输出会退化为重复/无意义内容。优先排查 #46756 引入的 parent-prefix fallback 逻辑是否错误地将 Mamba 层(conv1d、norm)的量化算法从 bf16 提升为 FP8。
问题场景
用户使用 vLLM main 分支推理 nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-NVFP4 模型(NVFP4 量化),在贪婪解码(temperature=0)下,短文本回答基本正确,但需要多步推理的复杂问题(如 GSM8K)输出崩溃为重复乱码。同一环境中,nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-NVFP4 模型不受影响。
报错原文
Prompt: "What is 2+2? Reply with just the number."
Output on recent main: "The answer is 4. The the answer is the."
Prompt: "Name the largest planet in our solar system."
Output: "...Jupiter... The largest planet in the the world is a giant planet..."
Prompt: "A shop has 5 apples and sells 2. How many remain?"
Output: "The answer is 2. The number of oranges is 1... 1000000000000..."
原因分析
通过 git bisect 定位到 #46756(debec6440)是引入退化的提交。该提交修改了共享的 ModelOpt-NVFP4 量化路径,在 ModelOptMixedPrecisionConfig._resolve_quant_algo 中增加了步骤4的 “parent-prefix fallback” 逻辑。该步骤没有像步骤2那样使用 packed_modules_mapping 守卫,因此对每个前缀都会触发,导致 MIXED_PRECISION 检查点中的 Mamba 层(conv1d、norm、gate)被错误地从 bf16 提升为 FP8 量化。量化 causal-conv1d 和 norm 会破坏 Mamba 混合器,从而造成随序列长度积累的生成退化。
Nano 模型是纯 NVFP4(非 MIXED_PRECISION),不会进入此路径,因此不受影响。
环境排查
- vLLM 版本:main 分支(
~0.22.1rc1.dev),复现涉及ac521f623和8cf7c4d8a。 - PyTorch 版本:
2.11.0+cu130。 - CUDA 版本:13.0。
- FlashInfer 版本:0.6.12/0.6.13(已排除依赖变更影响,保持不变)。
- GPU 架构:sm120(RTX PRO 6000)和 sm121(DGX Spark/GB10)均已复现,非硬件特定。
- 模型名称:
- 受影响:
nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-NVFP4 - 不受影响:
nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-NVFP4
- 受影响:
- 推理配置:
moe_backend=marlin,linear_backend=cutlass,默认 fp8 KV 缓存。但问题源自 MoE 后端上游的量化路径,因此不是后端特定的。
解决步骤
注意:以下修复基于 Issue #47241 中的 PR #47445,它与 #47354 有实质区别。 #47445 移除了 parent-sibling 推断,并为 MiniMax-M3 显式添加了 packed 映射。在 B300 上验证通过。
- 定位文件
vllm/model_executor/layers/quantization/modelopt.py。 - 找到
ModelOptMixedPrecisionConfig._resolve_quant_algo方法中的步骤4(parent-prefix fallback)。 - 当前 #47354 的修复是为步骤4添加
packed_modules_mapping守卫(与步骤2一致),防止未注册的 sibling 层被错误继承量化算法。但 #47354 对 Qwen3.6 仍会导致退化。 - 推荐采用 #47445 的方案:
- 移除 parent-sibling 推断逻辑(步骤4的内容)。
- 为 MiniMax-M3 模型显式添加
qkv_proj/gate_up_proj的 packed 映射。
- 在修复后重新构建 vLLM(
pip install -e .或相关编译命令)。
验证方法
使用以下测试提示在修复后的版本上运行贪婪解码(temperature=0),确认输出正确且不退化:
"What is 2+2? Reply with just the number."→ 应输出4"Name the largest planet in our solar system."→ 应输出Jupiter"A shop has 5 apples and sells 2. How many remain?"→ 应输出3"60 km / 2 h"→ 应输出30
在验证中,使用 moe_backend=marlin、enforce_eager=True、max_model_len=2048。修复后可在 RTX PRO 6000 和 DGX Spark 上均得到正确结果。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。


