Prhub

#24291 [CI] Keep custom sgl-kernel wheel in CUDA CI

原始 PR 作者 mmangkad 合并时间 2026-05-03 12:53 文件变更 1 提交数 1 评论 2 代码增减 +9 / -5

执行摘要

修复 CI 中自定义 sgl-kernel 被覆盖的问题

PR body 指出:来自 #21247 的回归导致 CUDA CI 总是强制从公共 wheel 索引重新安装 sglang-kernel,这会覆盖当 CUSTOM_BUILD_SGL_KERNEL=true 时刚构建的自定义 wheel,导致 CI 无法测试 PR 的内核变更。同时引用了失败的 CI 运行日志。

应合并此修复,它解决了一个关键的 CI 回归,使内核相关 PR 的测试更加可靠。建议精读该变更,以理解 CI 依赖安装的控制流。

讨论亮点

仅有机器人评论和仓库维护者 Kangyan-Zhou 的感谢回复,无深度讨论。

实现拆解

  1. 修改文件scripts/ci/cuda/ci_install_dependency.sh 中的 install_sglang_kernel 函数。
  2. 添加条件判断:在原先无条件执行 pip install sglang-kernel 之前,增加 if [ "${CUSTOM_BUILD_SGL_KERNEL:-}" != "true" ] 检查。
  3. 分支处理
    • CUSTOM_BUILD_SGL_KERNEL 不为 true(包括未设置)时,保持原有行为:从与 CUDA 版本匹配的 wheel 索引强制重新安装 sglang-kernel
    • CUSTOM_BUILD_SGL_KERNEL=true 时,跳过安装,打印日志 "CUSTOM_BUILD_SGL_KERNEL=true: keeping freshly built sgl-kernel wheel.",保留之前构建的自定义 wheel。
  4. 影响:仅影响 CI 安装依赖的流程,不影响任何运行时逻辑或用户代码。
文件 模块 状态 重要度
scripts/ci/cuda/ci_install_dependency.sh CI 脚本 modified 4.31

关键源码片段

scripts/ci/cuda/ci_install_dependency.sh infrastructure

这是唯一变更的文件,修复了 CI 中自定义 sgl-kernel 被公共 wheel 覆盖的问题。

# 在 install_sglang_kernel 函数中,原无条件安装改为条件判断
install_sglang_kernel() {
  # ... 前面的 torch 安装等逻辑 ...  # 检查是否设置了 CUSTOM_BUILD_SGL_KERNEL 环境变量
  # 如果为 true,说明 PR 已构建了自定义 sgl-kernel wheel,跳过从公共索引安装
  if [ "${CUSTOM_BUILD_SGL_KERNEL:-}" != "true" ]; then
    # 原逻辑:从与 CU_VERSION 匹配的 wheel 索引强制安装 sglang-kernel
    # 确保 runners 使用与本地 libnvrtc 链接的正确 wheel(例如 cu129)
    $PIP_CMD install "sglang-kernel==${SGL_KERNEL_VERSION_FROM_SRT}" \
      --index-url "https://docs.sglang.ai/whl/${CU_VERSION}/" \
      --force-reinstall --no-deps $PIP_INSTALL_SUFFIX
  else
    # 保留自定义构建的 wheel,并打印日志
    echo "CUSTOM_BUILD_SGL_KERNEL=true: keeping freshly built sgl-kernel wheel."
  fi
  mark_step_done "${FUNCNAME[0]}"
}

评论区精华

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

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

风险与影响

低风险。变更仅涉及 CI 脚本的条件分支,对生产代码无影响。如果 CUSTOM_BUILD_SGL_KERNEL=true 但自定义构建失败,自定义 wheel 可能无效,但 CI 会在构建步骤中报错,因此不会引入静默失败。

影响范围:仅影响 CUDA CI 中 CUSTOM_BUILD_SGL_KERNEL=true 的作业,确保它们使用 PR 自定义的内核 wheel 进行测试。其他 CI 作业不受影响。影响程度:中高,因为此修复确保内核变更被正确测试,避免误通过或不充分的测试。

CI 脚本变更 回归修复

关联 Issue

#21247 [Dependency] Upgrade to Torch 2.11.0

完整报告

参与讨论