执行摘要
- 一句话:为扩散模型GT生成CI工作流添加预构建sgl-kernel wheel支持,解决PyPI wheel ABI不兼容问题。
- 推荐动作:该PR主要涉及CI基础设施,对核心功能无影响。建议CI维护者关注其实现模式,可作为处理类似ABI不兼容问题的参考。普通开发者无需深入阅读。
功能与动机
PR body中明确指出,当分支升级torch时,PyPI发布的sglang-kernel wheel会因ABI不兼容而加载失败(错误:undefined symbol: _ZN3c104cuda29c10_cuda_check_implementationEiPKcS2_ib)。这导致在torch升级分支上无法重新生成扩散模型的GT基准。该PR通过允许使用预构建的wheel来解决此问题。
实现拆解
- 添加输入参数:在
.github/workflows/diffusion-ci-gt-gen.yml的workflow_dispatch部分新增可选输入kernel_artifact_run_id,用于指定预构建wheel的来源运行ID。
- 条件化下载步骤:在三个作业(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工件)。
- 控制安装逻辑:修改
Install dependencies步骤,当kernel_artifact_run_id设置时,传递CUSTOM_BUILD_SGL_KERNEL=true环境变量,触发scripts/ci/cuda/ci_install_dependency.sh中已有的预构建wheel安装路径。
- 保持向后兼容:输入为空时,工作流行为不变,仍从PyPI安装sglang-kernel。
关键文件:
.github/workflows/diffusion-ci-gt-gen.yml(模块 CI工作流;类别 infra;类型 infrastructure): 这是唯一变更的文件,实现了整个功能:添加输入参数、条件化下载和安装步骤。
关键符号:未识别
评论区精华
无review评论,PR由作者直接合并。
风险与影响
- 风险:
- 依赖过期风险:预构建wheel来自其他CI运行,工件默认90天后过期,若过期后使用会导致下载失败。
- ABI匹配风险:要求
kernel_artifact_run_id必须与当前分支提交相同,若提交不匹配可能导致wheel与当前环境ABI不兼容。
- 配置错误风险:用户可能错误设置
kernel_artifact_run_id或未确保提交一致,导致工作流失败。
- 维护负担:新增的输入参数和条件步骤增加了工作流配置的复杂性。
- 影响:
- 对用户影响:为开发者在torch升级等场景下重新生成扩散GT基准提供了可行路径,提升了开发灵活性。
- 对系统影响:仅影响CI工作流,不改变运行时行为或核心代码。
- 对团队影响:简化了在ABI不兼容分支上的GT维护流程,减少了阻塞。
- 风险标记:依赖外部工件, ABI兼容性要求, 配置复杂性增加
关联脉络
- PR #23422 [diffusion] support custom output folder name in GT generation workflo: 同属扩散模型GT生成CI工作流改进,涉及同一文件.diffusion-ci-gt-gen.yml的修改。
- PR #23417 [ci] split stage-c-test-4-gpu-b200 to enable a low-disk runner pool: 同属CI基础设施优化,涉及CI工作流配置和资源管理。
- PR #22830 ci: enable /rerun-test for nightly test suites: 同属CI工具能力扩展,涉及GitHub Actions工作流和脚本修改。
参与讨论