[Bug]: GLM MXFP4 returns 0 GSM8K on GB200 (DEP8+EP8, vLLM 0.30.0)

该报错出现在 GB200/B300 等 SM100 机器上,用 vLLM 0.30.0 以数据并行 + 专家并行(DEP8+EP8)方式托管 GLM-5.3-MXFP4 时,MoE 走 Cutlass MXFP4 路径但不应用 expert_map,只支持 EP=1,导致 GSM8K 约 0 分。优

快速结论:该报错出现在 GB200/B300 等 SM100 机器上,用 vLLM 0.30.0 以数据并行 + 专家并行(DEP8+EP8)方式托管 GLM-5.3-MXFP4 时,MoE 走 Cutlass MXFP4 路径但不应用 expert_map,只支持 EP=1,导致 GSM8K 约 0 分。优先排查 MoE 后端(Cutlass 还是 Marlin)以及 EP 配置。

适用环境:Ubuntu 24.04.3 LTS (aarch64);Python 3.12.3;PyTorch 2.13.0+cu130;CUDA runtime 13.0.88;NVIDIA GB200 ×8(评论中另有 B300 复现);vLLM 0.30.0(vllm/vllm-openai:v0.30.0);模型 RedHatAI/GLM-5.3-MXFP4;flashinfer-python 0.6.18.post1、triton 3.7.1、transformers 5.17.0;DP+EP8 部署。

最快修复方案:暂无确认的一步修复方案。Issue 中明确验证过的规避方式只有一条:仅把 MoE 路径从 Cutlass 回退到 Marlin,其他设置保持不变,输出即可恢复正常(2+2 得到 “4\n”)。

注意事项:回退到 Marlin 只是规避,不是官方修复;Issue 指出 CutlassExpertsMxfp4 只允许 ep_size==1,而压缩张量(compressed-tensors)MXFP4 路径绕过了 oracle 的 is_supported_config 保护,仅凭 GPU 能力选择 Cutlass,因此 vLLM 不会在启动时直接报错拒绝该配置。改动前建议先在单节点验证 GSM8K,再上多节点。

问题场景

用户在 8× NVIDIA GB200 上以聚合的 DEP8 + EP8 方式,用 vLLM 0.30.0 托管 RedHatAI/GLM-5.3-MXFP4,跑 GSM8K 评测(或常规请求)后得到不可用的输出:1,178 / 1,319 个请求的 API 返回 content 为 null(答案落在 reasoning_content 里,content 为空),GSM8K 接近 0。评论中在 B300 上也复现,表现为答案反复重复;用 Cutlass MoE 时 “2+2” 输出成 “What is2 +”。

报错原文

[Bug]: GLM MXFP4 returns 0 GSM8K on GB200 (DEP8+EP8, vLLM 0.30.0)

1,178 / 1,319 requests logged API returned null content (answer in reasoning_content, content is null/empty).

With Cutlass MoE, 2+2 produces " What is2 +".
Falling back only the MoE path to Marlin, with all other settings unchanged, makes the output start with " 4\n", which is correct.

The first divergence occurs precisely at model.layers.3.mlp.
Neither path contains any NaN or Inf values.

CutlassExpertsMxfp4 (the W4A4 MXFP4 path used by GLM-5.3-MXFP4 on SM100) does not apply expert_map, so it only works with EP=1 — DP+EP8 is unsupported and routes tokens to the wrong local experts, producing garbage outputs (~0% GSM8K).

原因分析

根因较明确:GLM-5.3-MXFP4 在 SM100 上走 W4A4 MXFP4 的 CutlassExpertsMxfp4 路径,而该实现不应用 expert_map,只支持 ep_size==1。DP+EP8 时 token 被路由到错误的本地专家,输出变成乱码、GSM8K 约 0%。逐层对比显示:layer 0–2 完全一致,actor 之前输入一致,首次分歧恰好出现在 model.layers.3.mlp——按配置 first_k_dense_replace=3,layer 3 正是第一个 MoE 层;两条路径都没有 NaN/Inf,说明不是数值溢出而是路由/专家映射错误。另一层问题是 compressed-tensors 的 MXFP4 路径绕过了 oracle 的 is_supported_config 保护,仅凭 GPU 能力选择 CutlassExpertsMxfp4,所以 vLLM 能正常启动而不直接拒绝该配置。

环境排查

  • 确认 vLLM 版本为 0.30.0(VLLM_IMAGE_TAG=vllm/vllm-openai:v0.30.0,VLLM_BUILD_COMMIT=ced6857afa0ea7b2e3f0846a62e1394e90f15607)。
  • 确认 GPU 型号与数量:GB200 ×8(评论中 B300 也复现),是否属于 SM100 且触发 Cutlass MXFP4 路径。
  • 确认是否使用数据并行 + 专家并行(DP8 + EP8),以及 EP 是否大于 1。
  • 确认 MoE 后端配置:是 Cutlass 还是 Marlin,是否有配置项可切回 Marlin。
  • 确认模型为 RedHatAI/GLM-5.3-MXFP4,量化格式为压缩张量(compressed-tensors)MXFP4。
  • 确认关键环境变量是否开启:VLLM_USE_V2_MODEL_RUNNER=1、VLLM_USE_RUST_FRONTEND=1、VLLM_USE_DEEP_GEMM=1、VLLM_USE_NCCL_SYMM_MEM=1、NCCL_MNNVL_ENABLE=1、NCCL_NVLS_ENABLE=1、NCCL_CUMEM_ENABLE=1、TORCH_SYMMMEM=NVSHMEM。
  • 确认 Python 3.12.3、PyTorch 2.13.0+cu130、CUDA runtime 13.0.88、triton 3.7.1、transformers 5.17.0、flashinfer-python 0.6.18.post1 是否与 Issue 一致。

解决步骤

  1. 先复现:在 DP+EP8 配置下用 Cutlass MoE 跑一个简单的 “2+2” 请求,确认输出是否为 “What is2 +” 这类乱码,并跑一次 GSM8K 记录得分(预期接近 0)。
  2. 仅把 MoE 路径从 Cutlass 回退到 Marlin,其他所有设置保持不变(这是 Issue 中验证过的规避方式,可优先尝试)。
  3. 回退后重新跑 “2+2”,确认输出以 “4\n” 开头。
  4. 再跑 GSM8K,确认不再出现约 0 分与大量 content 为 null 的情况。
  5. 如仍使用 Cutlass MXFP4,则应避免 EP>1:即在该路径下把 EP 设为 1,或整体退回 EP=1 的部署方式(此点属于按根因推断的规避方向,Issue 未给出完整验证过的配置差异)。
  6. 等待上游修复:参考 oracle 的 is_supported_config 思路,让 compressed-tensors MXFP4 路径在 EP>1 时不再静默选择 CutlassExpertsMxfp4,而是在启动阶段直接拒绝不支持的配置。

验证方法

用同一模型、同一节点与并行配置重启服务后,先发一个简单算术请求(例如 “2+2”),确认输出正常以 “4” 开头而不是 “What is2 +”;再次统计 API 返回,确认不再是 1,178 / 1,319 这种大面积 content 为 null,而是回答了主要落在 content 中;最后重跑 GSM8K,确认得分明显恢复而非约 0%。另外可用逐层对比确认分歧点:正常路径下 layer 3(第一个 MoE 层)之后的 hidden state 应与对照路径一致,且 forward 过程中不出现 NaN/Inf。

参考来源

vllm-project/vllm #58729

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 28958

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注