Prhub

#41354 [XPU] Use custom op collective behavior

原始 PR 作者 chaojun-zhang 合并时间 2026-05-19 14:15 文件变更 1 提交数 5 评论 5 代码增减 +4 / -0

执行摘要

XPU 通信层启用自定义 op collective

启用自定义 op collective,以便后续可以开启 fusion patterns。

值得关注本 PR 中关于 _ENABLE_CUSTOM_ALL_REDUCE 与通信 group 类型耦合的设计决策,但遗留的 DP/PP group 风险建议在后续 PR 中跟进修复。

讨论亮点

Review 中 gemini-code-assist[bot] 指出,将 outplace all-reduce 限制在 TP group 可能导致其他通信组(DP/PP)仍使用 inplace 操作,在图捕获或编译时可能产生正确性问题。但该问题未在合入前被修复。此外,核心维护者 jikunshang 与作者 chaojun-zhang 就 inplace/outplace 的性能进行了讨论,最终同意接受 eager-outplace 略差于 eager-inplace 的事实,并决定强制启用 out-of-place 和 use_custom_op_collective

实现拆解

  1. vllm/platforms/xpu.pyXpuPlatform 类中新增类方法 use_custom_op_collectives,返回 True,表示 XPU 平台启用自定义 op collective。
  2. vllm/distributed/device_communicators/xpu_communicator.py 中修改初始化逻辑,根据 group 名称是否包含 'tp' 决定是否使用 outplace all-reduce:对于 TP group,根据全局标志 _ENABLE_CUSTOM_ALL_REDUCE 设置;对于其他 group(DP/PP),强制使用 inplace all-reduce。
  3. 本次变更为纯源码修改,未包含测试或配置变更。
文件 模块 状态 重要度
vllm/platforms/xpu.py 平台层 modified 5.49

关键符号

use_custom_op_collectives

关键源码片段

vllm/platforms/xpu.py core-logic

新增 `use_custom_op_collectives` 类方法,标志 XPU 平台启用自定义 collective 操作,是本次变更的核心入口。

# vllm/platforms/xpu.py (head 版本 )
    @classmethod
    def num_compute_units(cls, device_id: int = 0) -> int:
        return torch.xpu.get_device_properties(device_id).max_compute_units
​
    @classmethod
    def use_custom_op_collectives(cls) -> bool:
        # XPU 平台启用自定义 op collective,以便后续融合图编译模式
        return True

评论区精华

outplace all-reduce 作用范围限制 正确性

gemini-code-assist[bot] 指出将 outplace all-reduce 仅限制在 TP group 可能导致 DP/PP group 在图编译时产生正确性问题,因为其他 group 继续使用 inplace 操作。

结论:未在合入前采纳修复,风险遗留。 · unresolved

inplace vs outplace all-reduce 性能权衡 性能

chaojun-zhang 提供了多种组合的性能对比数据,显示 eager-outplace 比 eager-inplace 差,但差异有限。jikunshang 同意接受这一差异,并建议强制使用 out-of-place 和 custom op collective。

结论:接受 eager-outplace 性能略差,强制开启 custom op collective 和 out-of-place all-reduce。 · 已解决

风险与影响

  1. 在非 TP 通信组中仍使用 inplace all-reduce,可能在图编译场景下导致正确性问题(review 中指出的遗留风险)。
  2. 变更覆盖整个 XPU 平台,但对其他平台无影响。
  3. 性能测试显示 compile 模式下 TPOT 有小幅波动(-1.9% ~ +1.2%),但整体在合理范围内。

影响范围:仅 XPU 平台。对使用 Intel GPU 的用户,该 PR 为后续算子融合和图编译优化铺平道路,直接用户无感知。对开发团队,需注意后续各通信组的 all-reduce 行为一致性。

非 TP 通信组 inplace 风险 compile 模式 TPOT 波动

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论