Prhub

#27075 Add DeepGEMM prerelease wheel tests

原始 PR 作者 b8zhong 合并时间 2026-06-12 06:14 文件变更 1 提交数 13 评论 13 代码增减 +129 / -10

执行摘要

为 DeepGEMM wheel 添加 CI 预发布测试

避免类似 Issue #26541(GLM-5-FP8 CUDA graph IMA)的回归问题,以及 DeepGEMM 仓库 PR #342 中暴露的测试缺口。在 wheel 构建后立即运行 DeepGEMM 测试套件,可以在发布前捕获潜在的错误。

对于关注 CI/CD 和 DeepGEMM 发布流程的开发者值得精读,尤其是如何通过环境变量确保依赖一致性,以及将测试作为发布门禁的做法。建议后续补充 FP8 combine 和 MXF4 的测试覆盖。

讨论亮点

Review 中 Fridge003 提出了几点建议:

1) 将测试仓库分支固定为 dev 以避免硬编码;
2) 考虑将依赖管理移至 DeepGEMM 仓库侧;
3) 减少测试 GPU 数量以节省资源;
4) 增加 sm103 架构的测试。b8zhong 接受了分支固定建议,并解释了依赖版本对齐的必要性,但对减少 GPU 和增加 sm103 测试未做实际修改。最终 Fridge003 给予 APPROVE。

实现拆解

  1. 在 workflow 顶层定义 TORCH_VER 环境变量(值 2.11.0),确保运行时 PyTorch 版本与 Docker 构建镜像一致,并强制重装匹配的 torch。
  2. 新增 test-cu129test-cu130 作业,依赖同 CUDA 版本的构建矩阵,在 8-GPU H200(sm90)和 8-GPU B200(sm100)上安装 wheel 并执行 DeepGEMM 测试脚本 run_tests.sh
  3. 修改 release-cu129release-cu130 作业,将其 needs 列表加入对应的测试作业,将 PyPI 上传后移到测试通过之后,形成“构建 → 测试 → 发布”的门禁流程。
文件 模块 状态 重要度
.github/workflows/release-whl-deepgemm.yml CI/ 部署 modified 5.49

分析完成后,这里会展示 LLM 生成的相对完整源码片段和详细注释。

评论区精华

将测试仓库分支固定为 dev other

Fridge003 评论建议将测试的仓库分支固定为 `dev`;b8zhong 回答 Yes。

结论:已采用,代码中改为 `ref: ${{ inputs.branch || 'dev' }}`。 · 已解决

依赖管理放在 DeepGEMM 侧 设计

Fridge003 询问能否由 DeepGEMM 侧管理依赖;b8zhong 解释 torch 版本必须对齐,会在 CI 中做断言。

结论:保留在 CI 侧,添加了 TORCH_VER 环境变量和强制重装。 · 已解决

减少测试 GPU 数量 性能

Fridge003 建议使用 2 或 4 卡 runner 节省资源;b8zhong 表示同意但未修改。

结论:未实施,仍使用 8 卡 runner。 · 待处理

风险与影响

主要风险包括:CI 测试占用较多 GPU 资源(8 卡 H200/B200),可能导致排队;测试依赖外部仓库分支(dev),如果被破坏可能导致 CI 失败;测试覆盖仍不完全(FP8 combine / MXF4 路径无测试),无法保证所有功能正确。此外,如果运行时 torch 版本与 wheel 构建版本不匹配,可能出现链接错误,已通过强制 reinstall 缓解。

对用户无直接影响但提升了发布质量;对系统 CI 流程增加了 2 个测试作业(每个大约 2 小时),延长了发布总时间;对团队增加了维护测试环境和 runner 的工作量。

缺少 FP8 combine 和 MXF4 测试覆盖 CI 资源消耗大 依赖外部分支(dev)

关联 Issue

#26541 [Bug] GLM-5-FP8 Nvidia CUDA graph IMA during capture

完整报告

参与讨论