Prhub

#28632 [Docker] Fix cu12 dev image build: pin torch reinstall + JIT-fallback for missing x86 cubins

原始 PR 作者 dougyster 合并时间 2026-06-18 16:51 文件变更 1 提交数 1 评论 2 代码增减 +8 / -1

执行摘要

修复 cu12 dev 镜像构建失败的两项问题

修复 GitHub Actions 中每日构建开发 Docker 镜像(CUDA 12)的失败问题。失败日志显示 kernels download python Cannot find a build variant for this system in kernels-community/sgl-flash-attn3,原因是上游 torch 版本浮动导致 cubin 不兼容。

可以直接合并。修复了构建阻塞问题,回退策略合理。建议在下次升级 torch 时统一升级所有路径中的版本固定值。

讨论亮点
  1. 版本硬编码 vs 动态提取gemini-code-assist[bot] 建议通过 pip freeze 动态提取已安装的 torch 版本,而不是硬编码特定版本,以使构建更健壮。作者未采纳此建议,采用了更显式的固定版本(与 .[all] 一致)。
  2. 注释续行符zijiexia 指出添加的多行注释末尾包含了不必要的 \,需要移除。该问题在最终提交中被修复。

实现拆解

  1. 锁定 torch 版本:在 docker/Dockerfile 中将 cu12 路径的 torch 重装命令从无版本(torch torchvision torchaudio)改为固定版本 torch==2.11.0 torchvision==0.26.0 torchaudio==2.11.0,与 .[all] 和 cu13 路径保持一致。
  2. 非致命 cubin 下载:在 x86 路径的 kernels download 成功后增加检查,如果 $success 不为 1,则输出警告并将 success 置为 1,使构建继续而非失败。这使得在没有预编译 cubin 时回退到运行时 JIT 编译,与 arm64 分支行为一致。
  3. 注释调整:根据 review 意见,去掉了多行注释中不当的续行符 \
文件 模块 状态 重要度
docker/Dockerfile Docker 构建 modified 5.03

关键源码片段

docker/Dockerfile infrastructure

唯一的变更文件,修复了 cu12 开发镜像的 torch 重装版本锁定和 x86 cubin 下载失败回退逻辑。

# 锁定 cu12 路径的 torch 版本,防止浮动导致 cubin 不匹配
python3 -m pip install --index-url https://download.pytorch.org/whl/cu${CUINDEX} \
    torch==2.11.0 torchvision==0.26.0 torchaudio==2.11.0 --force-reinstall; \# 在 cubin 下载循环后,检查是否成功
# x86: 如果没有匹配的预编译 sgl-flash-attn3 cubin(例如 cu129 没有 torch>=2.10 的 cubin)
# 则回退到运行时 JIT 编译,而不是让构建失败。这与 aarch64 分支行为一致。
if [ "$success" != "1" ]; then \
    echo "WARNING: no matching sgl-flash-attn3 cubin variant for this torch+CUDA; kernels will be JIT-compiled at runtime"; \
    success=1; \
fi; \

评论区精华

torch 版本固定方式 设计

gemini-code-assist[bot] 建议使用 `pip freeze` 动态提取版本,而非硬编码。

结论:作者未采用,选择了显式硬编码版本,与 `.[all]` 路径一致,保证确定性。 · 已解决

注释续行符问题 other

zijiexia 指出新增的多行注释末尾含有多余的 `\`,需要移除。

结论:已修复,最终提交中移除了多余的续行符。 · 已解决

风险与影响

  1. 版本管理风险:固定 torch 版本为 2.11.0,如果未来上游依赖要求更新,需要同步修改此处,可能导致版本滞后或构建不一致。
  2. JIT 编译性能:当回退到 JIT 编译时,首次启动会增加几秒延迟,但影响有限。
  3. 仅影响 cu12 开发镜像:不影响生产镜像或 cu13 路径。

影响范围较小,仅限于开发 Docker 镜像的 CUDA 12 构建流程。修复后,每日构建能够成功生成 cu12 镜像,开发者可正常使用该环境。cu13 和 arm64 镜像不受影响。

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论