Prhub

#44771 [XPU][Minor] format moe kernel name and add in kernel list

原始 PR 作者 yma11 合并时间 2026-06-08 13:58 文件变更 5 提交数 1 评论 0 代码增减 +13 / -11

执行摘要

统一 XPU MoE 内核命名格式

PR body 明确说明:"This PR unifies XPU moe kernels format and add "XPUExpertsBlockFp8", "XPUExpertsMxFp8", in kernel list.",目的是统一 XPU MoE 内核命名格式,并将缺失的内核名补全到公开导出列表中,确保内核枚举完整可被外部调用。

本 PR 为纯命名规范化变更,建议快速合并。若仓库有严格的向后兼容要求,可考虑在发布说明中提及类名变更。对于想了解 vllm XPU MoE 内核组织方式的读者,本 PR 可作为索引参考。

讨论亮点

未发现实质性技术讨论。唯一 review 来自 claude[bot] 的自动评论(因 PR 来自 fork 而跳过审核),以及 yewentao256 的简单批准 "LGTM, thanks for the work!",表明变更直接、无争议。

实现拆解

  1. 核心类重命名:在 vllm/model_executor/layers/fused_moe/experts/xpu_moe.py 中将 XPUExpertsMxfp8 重命名为 XPUExpertsMxFp8,将 XPUExpertsMXFp4 重命名为 XPUExpertsMxFp4,仅修改类定义行(+2/-2),保持继承关系和内部逻辑不变。
  2. 导入同步:在以下 4 个文件中对重命名后类的导入路径进行同步更新,均为局部导入语句中的类名替换(+9/-9):
    • compressed_tensors_moe_w4a4_mxfp4.py:更新 XPUExpertsMxFp4 导入和使用。
    • oracle/mxfp4.py:更新 XPUExpertsMxFp4 导入。
    • oracle/fp8.py:更新 XPUExpertsMxFp8 导入。
    • __init__.py:更新导入并扩展 __all__
  3. 导出列表扩展:在 vllm/model_executor/layers/fused_moe/__init__.py__all__ 列表中添加了 "XPUExpertsBlockFp8""XPUExpertsMxFp8" 两个新条目(+4/-2),使这些类可通过包接口公开访问。
  4. 无测试配套:本 PR 未包含测试文件变更,属于纯代码重构和导出合规调整。
文件 模块 状态 重要度
vllm/model_executor/layers/fused_moe/experts/xpu_moe.py MoE 内核 modified 6.2
vllm/model_executor/layers/fused_moe/__init__.py MoE 内核 modified 5.38
vllm/model_executor/layers/fused_moe/oracle/fp8.py MoE 内核 modified 5.18
vllm/model_executor/layers/quantization/compressed_tensors/compressed_tensors_moe/compressed_tensors_moe_w4a4_mxfp4.py 量化方法 modified 5.66
vllm/model_executor/layers/fused_moe/oracle/mxfp4.py MoE 内核 modified 5.46

关键符号

XPUExpertsMxFp8.__init__ XPUExpertsMxFp8._supports_quant_scheme XPUExpertsMxFp4.__init__ XPUExpertsMxFp4._supports_quant_scheme

关键源码片段

vllm/model_executor/layers/fused_moe/experts/xpu_moe.py data-contract

核心变更文件,完成类名 `XPUExpertsMxfp8` → `XPUExpertsMxFp8` 和 `XPUExpertsMXFp4` → `XPUExpertsMxFp4` 的重命名,保持继承和逻辑不变。

以下代码展示 XPU MoE 内核类的命名统一变更(仅类名修改,逻辑不变)

# 改前:class XPUExpertsMxfp8(XPUExpertsFp8):
class XPUExpertsMxFp8(XPUExpertsFp8):
    """ 改后类名中 mxfp8 -> MxFp8,与 XPU 其他内核命名风格保持一致 """
    def __init__(
        self,
        moe_config: FusedMoEConfig,
        quant_config: FusedMoEQuantConfig,
        max_num_tokens: int | None = None,
        num_dispatchers: int | None = None,
    ):
        super().__init__(moe_config, quant_config, max_num_tokens, num_dispatchers)
        assert quant_config.quant_dtype == "mxfp8"
        self.is_mxfp8 = True
​
    @staticmethod
    def _supports_quant_scheme(
        weight_key: QuantKey | None,
        activation_key: QuantKey | None,
    ) -> bool:
        SUPPORTED_W_A = [
            (kMxfp8Static, None),
            (kMxfp8Static, kMxfp8Dynamic),
        ]
        return (weight_key, activation_key) in SUPPORTED_W_A
​
​
# 改前:class XPUExpertsMXFp4(XPUExperts):
class XPUExpertsMxFp4(XPUExperts):
    """ MXFP4 内核,类名 MXFp4 -> MxFp4,统一大小写风格 """
    def __init__(
        self,
        moe_config: FusedMoEConfig,
        quant_config: FusedMoEQuantConfig,
        max_num_tokens: int | None = None,
        num_dispatchers: int | None = None,
    ):
        super().__init__(moe_config, quant_config, max_num_tokens, num_dispatchers)
        self.is_mxfp4 = True
​
    @staticmethod
    def _supports_quant_scheme(
        weight_key: QuantKey | None,
        activation_key: QuantKey | None,
    ) -> bool:
        SUPPORTED_W_A = [
            (kMxfp4Static, None),
        ]
        return (weight_key, activation_key) in SUPPORTED_W_A
vllm/model_executor/layers/fused_moe/__init__.py data-contract

更新导入语句并扩展 `__all__` 列表,新增 `XPUExpertsBlockFp8` 和 `XPUExpertsMxFp8` 两个公开导出符号,确保内核枚举完整。

以下代码展示 init.py 中的导出清单扩展(仅展示关键部分)

# 在 HAS_TRITON 分支中,更新 __all__ 列表
__all__ += [
    "AiterExperts",
    "fused_topk",
    "fused_experts",
    "get_config_file_name",
    "GroupedTopk",
    "CutlassExpertsFp8",
    "CutlassBatchedExpertsFp8",
    "CutlassExpertsW4A8Fp8",
    "TritonExperts",
    "TritonWNA16Experts",
    "BatchedTritonExperts",
    "DeepGemmExperts",
    "BatchedDeepGemmExperts",
    "TritonOrDeepGemmExperts",
    "XPUExperts",
    "XPUExpertsFp8",
    "XPUExpertsBlockFp8", # 新增:此前遗漏的 BlockFp8 内核
    "XPUExpertsMxFp8", # 新增:此前遗漏的 MxFp8 内核 ( 原名 Mxfp8)
    "XPUExpertsMxFp4", # 改名前为 XPUExpertsMXFp4,现统一为 MxFp4
]

评论区精华

没有提炼出高价值讨论线程

当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。

风险与影响

  1. 兼容性风险(低):类名变更属于破坏性 API 变动,若外部代码直接通过旧类名(如 XPUExpertsMxfp8)引用,会导致 ImportError。但在 vllm 内部所有引用已同步更新,且 PR 来自主线 contributor,风险可控。
  2. 回归风险(低):仅涉及类名文本替换和导出列表补充,未改动业务逻辑,回归概率极低。
  1. 用户影响(无):用户一般不直接引用这些内部 MoE 类,变更为透明。
  2. 系统影响(低):统一命名格式后,XPU MoE 内核的导出接口更完整,便于后续集成和调试。
  3. 团队影响(低):节省后续排查内核列表遗漏的认知开销。
类名破坏性变更 缺少测试覆盖

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论