Prhub

#23443 [diffusion] ci: allow using prebuilt sgl-kernel wheel for GT regeneration

原始 PR 作者 Kangyan-Zhou 合并时间 2026-04-22 14:44 文件变更 1 提交数 1 评论 1 代码增减 +62 / -3

执行摘要

为扩散模型 GT 生成 CI 工作流添加预构建 sgl-kernel wheel 支持,解决 PyPI wheel ABI 不兼容问题。

PR body中明确指出,当分支升级torch时,PyPI发布的sglang-kernel wheel会因ABI不兼容而加载失败(错误:undefined symbol: _ZN3c104cuda29c10_cuda_check_implementationEiPKcS2_ib)。这导致在torch升级分支上无法重新生成扩散模型的GT基准。该PR通过允许使用预构建的wheel来解决此问题。

该PR主要涉及CI基础设施,对核心功能无影响。建议CI维护者关注其实现模式,可作为处理类似ABI不兼容问题的参考。普通开发者无需深入阅读。

讨论亮点

无review评论,PR由作者直接合并。

实现拆解

  1. 添加输入参数:在.github/workflows/diffusion-ci-gt-gen.ymlworkflow_dispatch部分新增可选输入kernel_artifact_run_id,用于指定预构建wheel的来源运行ID。
  2. 条件化下载步骤:在三个作业(1-gpu-h100、2-gpu-h100、4-gpu-b200)的Install dependencies步骤前,新增两个条件步骤:Prepare sgl-kernel/dist for prebuilt wheel(清空目录)和Download prebuilt sgl-kernel wheel(使用actions/download-artifact下载指定运行中的wheel-python3.10-cuda13.0工件)。
  3. 控制安装逻辑:修改Install dependencies步骤,当kernel_artifact_run_id设置时,传递CUSTOM_BUILD_SGL_KERNEL=true环境变量,触发scripts/ci/cuda/ci_install_dependency.sh中已有的预构建wheel安装路径。
  4. 保持向后兼容:输入为空时,工作流行为不变,仍从PyPI安装sglang-kernel。
文件 模块 状态 重要度
.github/workflows/diffusion-ci-gt-gen.yml CI 工作流 modified 4.99

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

评论区精华

没有提炼出高价值讨论线程

当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。

风险与影响

  1. 依赖过期风险:预构建wheel来自其他CI运行,工件默认90天后过期,若过期后使用会导致下载失败。
  2. ABI匹配风险:要求kernel_artifact_run_id必须与当前分支提交相同,若提交不匹配可能导致wheel与当前环境ABI不兼容。
  3. 配置错误风险:用户可能错误设置kernel_artifact_run_id或未确保提交一致,导致工作流失败。
  4. 维护负担:新增的输入参数和条件步骤增加了工作流配置的复杂性。
  1. 对用户影响:为开发者在torch升级等场景下重新生成扩散GT基准提供了可行路径,提升了开发灵活性。
  2. 对系统影响:仅影响CI工作流,不改变运行时行为或核心代码。
  3. 对团队影响:简化了在ABI不兼容分支上的GT维护流程,减少了阻塞。
依赖外部工件 ABI 兼容性要求 配置复杂性增加

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论