Prhub

#23809 fix act fun for xpu

原始 PR 作者 sushildubey171 合并时间 2026-05-21 14:02 文件变更 2 提交数 4 评论 4 代码增减 +13 / -1

执行摘要

为 XPU 添加 SiluMul 和 Rotary Embedding 前向路径

在运行 Z Image Turbo 模型时,需要为 XPU 平台启用 Silu_Mul 激活函数。PR body 明确说明:"Enable Silu_Mul act function for xpu while running Z Image Turbo model"。

变更简单且逻辑清晰,建议合并。值得关注的设计决策是:将 XPU 的 silu_and_mul 导入与 HIP 共享同一条件分支,暗示了 sgl_kernel 对两者均支持的意图。

讨论亮点

无 review 评论。审核者 mingfeima 批准了 PR,无需进一步讨论。

实现拆解

  1. 激活函数层 (activation.py): 添加 _is_xpu 标志检测当前平台是否为 XPU,修改导入条件使得 XPU 平台从 sgl_kernel 导入 silu_and_mul(与 HIP 共享同一路径)。新增 SiluAndMul.forward_xpu 方法,其实现与 forward_cuda 完全一致:计算输出形状、分配空张量、调用 silu_and_mul(x, out)
  2. 旋转位置编码层 (rotary_embedding/base.py): 在 RotaryEmbedding 类中添加 forward_xpu 方法,直接委托给 forward_native,因为 XPU 平台没有专门的加速库,使用 PyTorch 原生实现。
  3. 测试与配置: 未涉及测试文件或配置变更。
文件 模块 状态 重要度
python/sglang/multimodal_gen/runtime/layers/activation.py 激活函数 modified 6.62
python/sglang/multimodal_gen/runtime/layers/rotary_embedding/base.py 位置编码 modified 5.22

关键符号

forward_xpu

关键源码片段

python/sglang/multimodal_gen/runtime/layers/activation.py core-logic

核心变更:添加 `forward_xpu` 方法,修改导入逻辑以支持 XPU 从 sgl_kernel 导入 silu_and_mul。

# 检测通用平台适配层
_is_xpu = current_platform.is_xpu()# XPU 与 HIP 共用 sgl_kernel 中的 silu_and_mul
if _is_cuda:
    from sglang.jit_kernel.activation import silu_and_mul
elif _is_hip or _is_xpu:
    from sgl_kernel import silu_and_mul# 在 SiluAndMul 类中新增 XPU 前向方法
class SiluAndMul(CustomOp):
    # ... 其他方法不变 ...
    def forward_xpu(self, x: torch.Tensor) -> torch.Tensor:
        """XPU 专用 SiluMul 前向,使用 sgl_kernel 加速"""
        d = x.shape[-1] // 2
        output_shape = x.shape[:-1] + (d,)
        out = torch.empty(output_shape, dtype=x.dtype, device=x.device)
        silu_and_mul(x, out)
        return out

评论区精华

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

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

风险与影响

风险较低:变更仅新增 XPU 专用分支,不影响现有 CUDA/HIP/NPU 路径。但缺少针对 XPU 的单元测试或集成测试覆盖,如果 sgl_kernel 中的 silu_and_mul 在 XPU 上未经过充分测试,可能出现数值错误或崩溃。建议后续补充 XPU 精度测试。

影响范围较小:仅影响 XPU 平台上的扩散模型推理,使得此前运行失败的 Z Image Turbo 等模型能够在 XPU 上正常工作。对其他平台无影响。

缺少测试覆盖

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论