Prhub

#21456 [CPU] upgrade dependent torch ver to PT2.12

原始 PR 作者 ZailiWang 合并时间 2026-06-04 11:04 文件变更 11 提交数 35 评论 7 代码增减 +18 / -22

执行摘要

升级 CPU 端 PyTorch 系列依赖至 2.12

根据 PR 作者说明,PyTorch 2.11 未包含所需的 FP8 优化,因此关闭原 targeting PT2.11 的 PR,转而升级到 PT2.12 以获取最新的 FP8 加速能力。

建议 CPU 平台开发者和依赖管理者阅读该 PR,了解版本升级细节和适配方式。对于仅关注 GPU 的读者,此 PR 无直接参考价值。设计决策方面,迁移 AMX 查询到公开 API 是良好的版本兼容实践。

讨论亮点
  1. 作者 ZailiWang 说明关闭旧 PR 原因:"Closing the PR since some FP8 optimizations in torch is not included in PT2.11 Targeting PT2.12"。
  2. 合并者 mingfeima 要求先修复 Xeon CI:"@1pikachu @MingxuZh first fix xeon ci issue. @ZailiWang then rebase this one."。
  3. 修复后作者确认 Xeon CI 通过:"Xeon CI passed with the tuned torch seeds in some CI cases: ... It can be merged if the model level E2E acc tests pass."。

实现拆解

  1. 依赖版本升级:修改 python/pyproject_cpu.tomlsgl-kernel/pyproject_cpu.toml,将 torch 从 2.9.0 升至 2.12.0,torchao 从 0.14.1 升至 0.17.0,torchaudio 从 2.9.0 升至 2.11.0,torchvision 从 0.24.0 升至 0.27.0,triton 从 3.5.0 升至 3.7.0。
  2. AMX 查询 API 迁移:在 python/sglang/srt/utils/common.pypython/sglang/multimodal_gen/runtime/utils/common.py 中,将 torch._C._cpu._is_amx_tile_supported() 替换为 torch.cpu._is_amx_tile_supported(),以匹配 PyTorch 2.12 的公开 API。
  3. 测试种子调整:因 torch 新版本的随机数生成行为变化,调整了 test/registered/cpu/test_topk.pytest/srt/cpu/test_topk.pytest/registered/cpu/test_moe.pytest/srt/cpu/test_moe.pytest/registered/cpu/test_rope.pytest/srt/cpu/test_rope.py 中的随机种子,消除随机性导致的断言差异。
  4. CI 配置微调:更新 .github/workflows/pr-test-xeon.yml,适配新的依赖版本。
文件 模块 状态 重要度
python/pyproject_cpu.toml CPU 配置 modified 4.67
python/sglang/srt/utils/common.py SRT 工具 modified 5.07
python/sglang/multimodal_gen/runtime/utils/common.py 多模态工具 modified 4.67
test/registered/cpu/test_topk.py 测试套件 modified 3.43
test/srt/cpu/test_topk.py 测试套件 modified 3.43
test/registered/cpu/test_moe.py 测试套件 modified 3.25
test/srt/cpu/test_moe.py 测试套件 modified 3.25
test/registered/cpu/test_rope.py 测试套件 modified 3.25
test/srt/cpu/test_rope.py 测试套件 modified 3.25
sgl-kernel/pyproject_cpu.toml 内核配置 modified 3.65
.github/workflows/pr-test-xeon.yml CI 配置 modified 2.38

关键符号

is_amx_tile_supported

关键源码片段

python/pyproject_cpu.toml configuration

CPU 平台依赖版本声明,核心变更文件,升级了 torch/torchvision/torchaudio/torchao/triton 等关键包。

# pyproject_cpu.toml 依赖版本更新片段
[project]
dependencies = [
  "torch==2.12.0", # 之前 2.9.0,跳过大版本以获取 FP8 优化
  "torchao==0.17.0", # 之前 0.14.1
  "torchaudio==2.11.0", # 之前 2.9.0
  "torchvision==0.27.0",# 之前 0.24.0
  "triton==3.7.0", # 之前 3.5.0
  # ... 其余依赖不变
]
python/sglang/multimodal_gen/runtime/utils/common.py core-logic

多模态生成模块公共工具,与 SRT 同步 AMX 检测接口变更,保持一致。

try:
    # move torch.cpu._is_amx_tile_supported() from cpu_has_amx_support
    # to support torch compile
    is_amx_tile_supported = torch.cpu._is_amx_tile_supported()
except:
    is_amx_tile_supported = False

评论区精华

关闭旧 PR 原因 other

作者 ZailiWang 解释关闭原 targeting PT2.11 的 PR,因为 FP8 优化未包含在 PT2.11 中,重新 targeting PT2.12。

结论:决定迁移到 PT2.12 以获取 FP8 优化。 · 已解决

Xeon CI 修复和 rebase 测试

合并者 mingfeima 要求先修复 Xeon CI 问题,然后 rebase。作者随后修复并报告 CI 通过。

结论:通过调整测试种子修复 CI,然后成功 rebase 并合并。 · 已解决

测试种子调整 测试

多个提交尝试调整测试种子以消除 torch 版本升级导致的随机性差异,如 'Try fix UT error by use default seed'、'Adjust seed again'、'Try fix test_moe failure by setting another seed'、'Try fix CI failure by tuning topk case seed'。

结论:最终通过为每个测试方法单独设置种子(如 topk 改为 12,moe 改为 1183)解决 CI 失败。 · 已解决

风险与影响

  1. 依赖兼容性风险:PyTorch 2.12 可能引入与旧版本不完全兼容的 API 变化,但由于仅涉及 CPU 平台且已通过 CI,风险可控。
  2. 测试覆盖不足:测试种子调整后可能掩盖部分数值边界差异,尤其是 topk 和 moe 测试,需关注后续随机性相关 failure。
  3. AMX 查询接口风险torch.cpu._is_amx_tile_supported() 是推荐 API,但若未来 PyTorch 修改该接口,CPU 平台 AMX 检测可能失效。
  4. 回归范围:变更集中在 CPU 配置和测试,对 GPU 路径无影响。

用户影响:CPU 平台用户需安装 PyTorch 2.12 及配套包(torchao、triton 等),升级后可利用新的 FP8 优化提升性能。
系统影响:CPU 相关的推理与训练路径将依赖新版本,务必保持依赖一致性。
团队影响:后续 CPU 开发需基于此版本依赖,维护时需注意与主分支 torch 版本的同步。影响程度中等,主要限于 CPU 子项目。

依赖升级可能引入回归 测试种子调整后覆盖可能不足 AMX API 变更仅影响 CPU

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论