Prhub

#41165 [ROCm][Bugfix][GPTOSS]: fix input_ids and expert_map args for quark w4a8 gptoss

原始 PR 作者 Rohan138 合并时间 2026-04-30 07:39 文件变更 1 提交数 4 评论 1 代码增减 +5 / -5

执行摘要

修复 GPT-OSS 专家负载方法签名不匹配

修复 GPT-OSS 专家加载方法因参数不匹配导致的启动崩溃。PR #40860 新增 input_ids 参数时遗漏了 GPT-OSS 子类,导致 QuarkOCP_MX_MoEMethod_OSS.apply_monolithic() got an unexpected keyword argument 'input_ids' 错误。

建议合并。该 PR 修复了致命的启动崩溃,改动小而精确。值得关注的是 expert_map 参数改为从 layer 属性获取这一设计决策,减少了接口参数数量,提升了可维护性。

讨论亮点

Review 评论中 gemini-code-assist[bot] 指出了返回值类型注解不匹配的问题(父类返回 torch.Tensor,而本方法仍保留联合类型),PR 作者已据此修正。此外,expert_map 参数被移除,改为从 layer 属性获取,简化了接口。

实现拆解

  1. 对齐方法签名:将 apply_monolithic 的参数 expert_map 替换为 input_ids,并更新类型注解;同时将 layer 参数类型从 torch.nn.Module 改为 FusedMoE,确保与父类签名一致。
  2. 修复返回值类型:将返回类型从 torch.Tensor | tuple[torch.Tensor, torch.Tensor] 改为 torch.Tensor,与基类定义一致(该方法实际只返回单个张量)。
  3. 改进错误消息:将 EPLB 不受支持的错误消息改为使用 f-stringself.__class__.__name__,提升可维护性。
  4. 移除 expert_map 参数传递:改为直接从 layer.expert_map 属性读取,简化调用约定。
文件 模块 状态 重要度
vllm/model_executor/layers/quantization/quark/quark_moe.py 量化层 modified 5.15

关键符号

QuarkOCP_MX_MoEMethod_OSS.apply_monolithic

关键源码片段

vllm/model_executor/layers/quantization/quark/quark_moe.py data-contract

唯一修改的文件,修复了 `QuarkOCP_MX_MoEMethod_OSS.apply_monolithic` 的方法签名和实现。

def apply_monolithic( # 修复签名:参数和返回值与父类对齐
    self,
    layer: FusedMoE, # 从 torch.nn.Module 改为 FusedMoE,更精确
    x: torch.Tensor,
    router_logits: torch.Tensor,
    input_ids: torch.Tensor | None = None, # 替换 expert_map 参数
) -> torch.Tensor: # 修复联合类型为单一类型
    if layer.enable_eplb:
        raise NotImplementedError(
            f"EPLB not supported for {self.__class__.__name__} yet."
        )
    # 省略导入和断言 ...
    return triton_kernel_moe_forward(
        hidden_states=x,
        # ... 其他参数 ...
        expert_map=layer.expert_map, # 从 layer 属性获取,而非参数传递
        # ... 其他参数 ...
    )

评论区精华

返回值类型注解修正 正确性

gemini-code-assist[bot] 指出方法返回类型应为 `torch.Tensor` 而非联合类型,以匹配父类。

结论:作者接受建议,修正了返回类型注解。 · 已解决

风险与影响

风险极低。变更仅涉及单个文件中的方法签名和内部实现,无跨模块影响。GPT-OSS 是特定于 ROCm 的专家实现,非通用路径,回归影响面小。缺少直接测试,但方法调用路径已在启动时验证。

影响范围限于使用 Quark W4A8 量化 + GPT-OSS 专家实现 + ROCm 平台的工作流。修复后,该类模型可正常启动和推理。对其他用户无影响。

单文件变更 特定量化路径

关联 Issue

未识别关联 Issue

当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。

完整报告

参与讨论