快速结论:该问题发生在 NVIDIA GB10(DGX Spark,sm_121)上运行 DeepSeek-V4-Flash 模型时,由于 vLLM 的架构能力门控将 family-120 误判为不支持 Blackwell 专用内核,导致 MoE 路由层回退到纯 FP32 线性层,性能下降。优先排查方向是确认模型实际权重类型(应为 BF16)以及 BF16x3 内核在 sm_121a 上的编译可行性。
适用环境:vLLM v0.26.0、NVIDIA GB10(DGX Spark,compute capability 12.1 → family 120)、aarch64 架构、DeepSeek-V4-Flash-DSpark 284B MoE 模型(13B 激活)、TP=2 基于 RoCEv2 的部署。
最快修复方案:暂无确认的一步修复方案。核心障碍在于 BF16x3 路由 GEMM 内核(CuteDSL 编写)仅针对 SM100(tcgen05)验证过,在 GB10(sm_121a)上会触发 NVVM 编译失败(CompilerDiagnosticError: NVVM backend compilation failed),因此简单放宽架构门控只会把问题从部署时移到运行时。
注意事项:虽然 Issue 讨论确认 DeepSeek-V4-Flash 实际路由权重为 BF16(仅校正偏置为 FP32),但 BF16x3 内核在 sm_121a 上的编译失败是确定的(已在两个独立 GB10 上复现)。FP32 路由 GEMV 内核(#48335)作为替代路径可行,但其形状列表(FP32_SUPPORTED_SHAPES)目前不包含 (4096, 256),且该内核仅在每路由调用 token 数 ≤ 32 时生效,对端到端性能影响低于基准噪声下限(±2-3%)。
问题场景
用户在使用 vLLM v0.26.0 在 NVIDIA GB10(DGX Spark,sm_121)上部署 DeepSeek-V4-Flash 模型时,发现所有专用 MoE 路由 GEMM 内核层均被禁用。由于 gate_linear.py 中的架构门控仅识别 Hopper(family-100)和 Blackwell(family-100),而 GB10 的 compute capability 12.1 被判定为 family-120(121 // 10 = 12 != 10),导致 is_blackwell = False,路由层最终退化为纯 FP32 F.linear 运算,每个 MoE 层共 43 处均受影响。
报错原文
CompilerDiagnosticError: NVVM backend compilation failed
libNVVM failed while compiling generated device IR.
note: target architecture: sm_121a
(该报错发生在将 BF16x3 内核直接应用于 DeepSeek-V4-Flash 路由形状(X bf16 [16, 4096],W fp32 [256, 4096])时,已在两个独立 GB10 环境中复现。)
原因分析
可能原因有两个层面相互叠加:
1. 架构门控误判:gate_linear.py 中 can_use_specialized_kernels 仅检查 is_device_capability_family(100),未包含 family-120(GB10)。代码库内部对此不一致——deep_gemm.py 已将 family-120 视为 Blackwell 处理 E8M0 检查。这导致 DeepSeek-V4-Flash 的路由层无法使用任何专用内核层。
2. BF16x3 内核在 sm_121a 上不可用:即便放宽架构门控,BF16x3 是使用 CuteDSL 编写、仅针对 SM100 验证的实验性内核(启用日志明确标注 “SM100 BF16x3″)。在 GB10 上该内核会触发 NVVM 编译失败,报错目标架构为 sm_121a。此问题已在 cutlass-dsl 4.6.0 cu12/cu13 和系统 CUDA 13.0 工具链下复现。
3. 权重类型误判可能性:Issue 讨论后期确认 DeepSeek-V4-Flash 实际路由权重为 BF16(仅校正偏置为 FP32),因此 force_fp32_compute 导致的 FP32 回退是不必要的。但这一发现不影响 BF16x3 的编译障碍。
环境排查
- 确认 GPU 型号为 NVIDIA GB10(DGX Spark),compute capability 12.1(sm_121)
- 确认 vLLM 版本(Issue 基于 v0.26.0,讨论者基于 v0.25.1 验证)
- 确认 CUDA 工具链版本:NVVM 编译失败在 CUDA 13.0(nvcc 13.0.88)下复现
- 确认 cutlass-dsl 版本:4.6.0 cu12 和 cu13 均复现同一编译失败
- 检查
vllm/model_executor/layers/fused_moe/router/gate_linear.py中的架构门控逻辑(约第 59-63 行)和 BF16x3 启用条件(约第 211-213 行) - 验证 DeepSeek-V4-Flash 检查点中
layers.N.ffn.gate.weight的实际 dtype(应为 BF16)
解决步骤
- 验证当前模型权重类型:检查 DeepSeek-V4-Flash-DSpark 检查点的
ffn.gate.weight,确认实际为 BF16 而非 FP32(可优先尝试——若确认为 BF16,可绕过 FP32 回退逻辑)。 - 等待 cutlass-dsl 支持 sm_121a:BF16x3 路由 GEMM 是 CuteDSL 内核,需要等待发布支持 sm_121a 代码生成的 cutlass-dsl 版本,否则放宽门控只会将失败从部署时移到运行时。
- 考虑 FP32 路由 GEMV 替代路径(#48335):该内核是预编译的
.cu内核(非 CuteDSL),不存在 NVVM/sm_121a 的 JIT 依赖。需要为 (4096, 256) 形状添加实例化、更新FP32_SUPPORTED_SHAPES形状列表、并放宽架构门控。注意:此路径仅在每路由调用 token 数 ≤ 32 时生效。 - 测试回退方案:若 BF16x3 不可用且 FP32 GEMV 未覆盖目标形状,可考虑让 family-120 回退到非 CuteDSL 层或 FP32 回退,而不是 BF16x3。
- 提交性能对比数据:Issue 作者愿意在 2× DGX Spark(TP=2,RoCEv2)上测试放宽门控后的前后性能数据,可作为上游决策依据。
验证方法
确认问题已解决的标准:
- 在 GB10 上运行 DeepSeek-V4-Flash 推理时,不再出现
NVVM backend compilation failed错误 - 确认路由层实际使用了专用内核(BF16x3 或 FP32 GEMV),而非回退到 FP32
F.linear - 可选:对比放宽前后推理延迟和吞吐量,确认性能提升(注意:在 TP=2、decode batch 8-12 时,路由 GEMM 在端到端中占比可能低于 ±2-3% 的基准噪声下限,需谨慎解读数据)
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。
![[bug]: InvokeAI v6.14.0-RC1 Crashed while generating Krea-2 Image](https://www.chat-gpts.plus/wp-content/uploads/2026/09/9444-d6bdc60c-768x403.jpg)
![[Question]: Shared embedded chat URL fails to access documents after logout or when accessed by other users](https://www.chat-gpts.plus/wp-content/uploads/2026/09/15895-cf3f7033-768x403.jpg)
