执行摘要
- 一句话:升级 CPU 端 PyTorch 系列依赖至 2.12
- 推荐动作:建议 CPU 平台开发者和依赖管理者阅读该 PR,了解版本升级细节和适配方式。对于仅关注 GPU 的读者,此 PR 无直接参考价值。设计决策方面,迁移 AMX 查询到公开 API 是良好的版本兼容实践。
功能与动机
根据 PR 作者说明,PyTorch 2.11 未包含所需的 FP8 优化,因此关闭原 targeting PT2.11 的 PR,转而升级到 PT2.12 以获取最新的 FP8 加速能力。
实现拆解
- 依赖版本升级:修改
python/pyproject_cpu.toml 和 sgl-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。
- AMX 查询 API 迁移:在
python/sglang/srt/utils/common.py 和 python/sglang/multimodal_gen/runtime/utils/common.py 中,将 torch._C._cpu._is_amx_tile_supported() 替换为 torch.cpu._is_amx_tile_supported(),以匹配 PyTorch 2.12 的公开 API。
- 测试种子调整:因 torch 新版本的随机数生成行为变化,调整了
test/registered/cpu/test_topk.py、test/srt/cpu/test_topk.py、test/registered/cpu/test_moe.py、test/srt/cpu/test_moe.py、test/registered/cpu/test_rope.py、test/srt/cpu/test_rope.py 中的随机种子,消除随机性导致的断言差异。
- CI 配置微调:更新
.github/workflows/pr-test-xeon.yml,适配新的依赖版本。
关键文件:
python/pyproject_cpu.toml(模块 CPU 配置;类别 config;类型 configuration): CPU 平台依赖版本声明,核心变更文件,升级了 torch/torchvision/torchaudio/torchao/triton 等关键包。
python/sglang/srt/utils/common.py(模块 SRT 工具;类别 source;类型 core-logic;符号 is_amx_tile_supported): SRT 公共模块,更新了 AMX 支持查询接口,确保在 PyTorch 2.12 下正确检测 AMX 能力。
python/sglang/multimodal_gen/runtime/utils/common.py(模块 多模态工具;类别 source;类型 core-logic;符号 is_amx_tile_supported): 多模态生成模块公共工具,与 SRT 同步 AMX 检测接口变更,保持一致。
test/registered/cpu/test_topk.py(模块 测试套件;类别 test;类型 test-coverage): CPU topk 测试,调整随机种子以适应新 torch 版本行为,消除 CI 失败。
test/srt/cpu/test_topk.py(模块 测试套件;类别 test;类型 test-coverage): 与 test/registered/cpu/test_topk.py 相同的种子调整,保持一致性。
test/registered/cpu/test_moe.py(模块 测试套件;类别 test;类型 test-coverage): CPU MoE 测试种子调整,从 1234 改为 1183。
test/srt/cpu/test_moe.py(模块 测试套件;类别 test;类型 test-coverage): 与 test/registered/cpu/test_moe.py 相同的种子调整。
test/registered/cpu/test_rope.py(模块 测试套件;类别 test;类型 test-coverage): CPU RoPE 测试种子调整。
test/srt/cpu/test_rope.py(模块 测试套件;类别 test;类型 test-coverage): 与 test/registered/cpu/test_rope.py 同步种子调整。
sgl-kernel/pyproject_cpu.toml(模块 内核配置;类别 config;类型 configuration): sgl-kernel 的 CPU 依赖配置,与主 CPU 配置同步升级 torch 等版本。
.github/workflows/pr-test-xeon.yml(模块 CI 配置;类别 infra;类型 infrastructure): CPU CI 工作流配置,可能更新了容器镜像标签或缓存键以匹配新依赖。
关键符号:is_amx_tile_supported
关键源码片段
python/pyproject_cpu.toml
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
多模态生成模块公共工具,与 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
评论区精华
- 作者 ZailiWang 说明关闭旧 PR 原因:"Closing the PR since some FP8 optimizations in torch is not included in PT2.11 Targeting PT2.12"。
- 合并者 mingfeima 要求先修复 Xeon CI:"@1pikachu @MingxuZh first fix xeon ci issue. @ZailiWang then rebase this one."。
- 修复后作者确认 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."。
- 关闭旧 PR 原因 (other): 决定迁移到 PT2.12 以获取 FP8 优化。
- Xeon CI 修复和 rebase (testing): 通过调整测试种子修复 CI,然后成功 rebase 并合并。
- 测试种子调整 (testing): 最终通过为每个测试方法单独设置种子(如 topk 改为 12,moe 改为 1183)解决 CI 失败。
风险与影响
关联脉络
- PR #21455 [CPU] upgrade dependent torch ver to PT2.11: 同一作者之前 targeting PT2.11 的 PR,因缺少 FP8 优化被关闭,本 PR 是替代方案。
参与讨论