Prhub

#27941 Enable PDL for GPT-OSS tinygemm router

原始 PR 作者 mmangkad 合并时间 2026-06-13 04:51 文件变更 1 提交数 2 评论 6 代码增减 +2 / -2

执行摘要

为 GPT-OSS tinygemm 路由启用 PDL

PR body 指出 tinygemm 是少数默认关闭 PDL 而不是自动选择的路径,启用后可在 PDL 兼容 GPU 上获得微小延迟收益。

值得合并的微小优化。建议熟悉 PDL 机制的工程师了解 is_arch_support_pdl 函数的实现,以及为什么 tinygemm 路径默认没有启用 PDL。

讨论亮点

作者 mmangkad 在评论中指出,技术上可以硬编码为 True 因为 tinygemm 已经只会在 PDL 兼容架构上启用,但使用 is_arch_support_pdl() 调用使意图更明确。另一位开发者 b8zhong 对无用变量移除表示认可。

实现拆解

  1. 导入新增:在文件头部增加 from sglang.jit_kernel.utils import is_arch_support_pdl,用于运行时判断当前架构是否支持 PDL。
  2. forward 方法修改:在 TinygemmBf16Linear.forward 中调用 tinygemm_bf16 时,新增参数 use_pdl=is_arch_support_pdl(),将 PDL 启用决策委托给架构检测函数。
  3. 清理无用变量:在 _load_normal_weights 函数中移除未使用的 tp_rank 赋值,由 ruff 自动格式化时发现并清理。
文件 模块 状态 重要度
python/sglang/srt/models/gpt_oss.py 模型层 modified 5.74

关键源码片段

python/sglang/srt/models/gpt_oss.py data-contract

该文件包含了 GPT-OSS 模型实现,其中 TinygemmBf16Linear 类的 forward 方法调用 tinygemm_bf16,是本 PR 唯一修改的核心文件。

# 文件顶部新增导入,用于判断当前架构是否支持 PDL(Persistent Distribution Layer)
from sglang.jit_kernel.utils import is_arch_support_pdlclass TinygemmBf16Linear(nn.Module):
    # ... 省略上下文 ...
​
    def forward(self, x: torch.Tensor) -> Tuple[torch.Tensor, Optional[torch.Tensor]]:
        if (
            self._use_tinygemm
            and x.ndim == 2
            and x.is_cuda
            and x.shape[0] <= 128
            and x.is_contiguous()
            and x.shape[1] == self.weight.shape[1]
            and x.dtype == torch.bfloat16
        ):
            out = x.new_empty((x.shape[0], self.output_size))
            # 关键变更:传入 use_pdl = is_arch_support_pdl(),使 PDL 启用显式化
            tinygemm_bf16(x, self.weight, out, self.bias, use_pdl=is_arch_support_pdl())
            return out, None
​
        return super().forward(x)

评论区精华

PDL 启用方式 设计

mmangkad 表示理论上可以直接用 True,但使用 is_arch_support_pdl() 更明确。

结论:保持 is_arch_support_pdl() 调用,使意图清晰。 · 已解决

无用变量移除 style

mmangkad 指出 tp_rank 删除是由 ruff 自动发现的,b8zhong 回复 lol 表示认可。

结论:接受删除。 · 已解决

风险与影响

风险极低。变更仅影响 tinygemm 路径,且 PDL 支持由架构检测函数保证,不会在不支持 PDL 的 GPU 上启用。移除未使用变量无功能影响。

影响范围局限在 GPT-OSS 模型使用 tinygemm_bf16 的场景(即特定量化与形状条件下),PDL 启用后可在支持 GPU 上获得微小延迟改善。无用户可见行为变更或 API 兼容性问题。

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论