Prhub

#24141 ci: run setup_ld_library_path before install_sglang_kernel

原始 PR 作者 alisonshao 合并时间 2026-05-01 01:55 文件变更 1 提交数 3 评论 1 代码增减 +10 / -0

执行摘要

修复 CI 中 nvidia-cusparselt-cu13 库文件缺失问题

CI runner 上 nvidia-cusparselt-cu13 升级至 0.9.1 时出现部分失败,导致 libcusparseLt.so.0 文件丢失,torch import 失败(错误日志见 PR body 中 action 链接)。因为 pip 元数据标记为已安装,后续所有 pip install 操作均跳过该包,问题持续存在。

建议合并。该 PR 针对 CI 中的偶发依赖故障提供了稳健的防御机制,且改动量小、逻辑清晰。适合快速集成以消除 CI 不稳定因素。后续可关注类似的 pip 部分安装失败场景,考虑更通用的检测方案。

讨论亮点

gemini-code-assist[bot] 指出:将 setup_ld_library_path 提前至 install_sglang_kernel 之前确实修复了 torch import,但从原位置移除该调用可能导致后续函数(如 install_extra_depsfix_nvidia_deps)安装的其他 NVIDIA 包的库路径未加入 LD_LIBRARY_PATH。建议保留两个调用以确保所有路径正确。但最终实现并未采纳该建议——作者在后续 commit 中移除了与 setup_ld_library_path 相关的改动,仅保留了 cusparselt 的修复,避免了该副作用。

实现拆解

  1. 定位脚本:在 scripts/ci/cuda/ci_install_dependency.shinstall_sglang 函数末尾增加检查逻辑。
  2. 检查缺失:使用 python3 获取 site-packages 路径,检查 nvidia/cusparselt/lib/libcusparseLt.so.0 是否存在。
  3. 条件重装:如果该文件不存在但 pip show nvidia-cusparselt-cu13 成功(元数据存在),则打印 WARNING 并执行 pip install --reinstall nvidia-cusparselt-cu13 强制重装 wheel。
  4. 执行顺序:该防御段放在 pip install -e "python[${EXTRAS}]" 之后,确保不干扰正常安装流程。
文件 模块 状态 重要度
scripts/ci/cuda/ci_install_dependency.sh CI 脚本 modified 4.37

关键符号

install_sglang

关键源码片段

scripts/ci/cuda/ci_install_dependency.sh infrastructure

主要变更文件,在 `install_sglang` 函数末尾添加了防御性重装逻辑,用于检测和修复 nvidia-cusparselt-cu13 元数据存在但库文件缺失的问题。

# install_sglang 函数末尾增加防御性检查
# 某些 runner 上 nvidia-cusparselt-cu13 的 pip 元数据存在但 .so 文件丢失,
# 导致任何 torch import 失败。若文件缺失则强制重装 wheel。
SITE_PACKAGES=$(python3 -c "import site; print(site.getsitepackages()[0])")
if [ ! -f "$SITE_PACKAGES/nvidia/cusparselt/lib/libcusparseLt.so.0" ] \
   && pip show nvidia-cusparselt-cu13 >/dev/null 2>&1; then
    echo "WARNING: nvidia-cusparselt-cu13 metadata present but libcusparseLt.so.0 missing — reinstalling"
    $PIP_CMD install --reinstall nvidia-cusparselt-cu13 $PIP_INSTALL_SUFFIX
fi

评论区精华

setup_ld_library_path 位置冲突 设计

gemini-code-assist[bot] 评论:将 setup_ld_library_path 提前可修复 torch import,但移除原位置可能导致后续安装的 NVIDIA 包路径未加入 LD_LIBRARY_PATH。

结论:作者未采用该建议,而是移除了所有与 setup_ld_library_path 相关的变更,仅保留 cusparselt 修复,从而避免副作用。 · 已解决

风险与影响

风险极低:仅新增一段防御性 shell 指令,在文件缺失时触发重装,不影响正常路径。但重装操作可能略微增加 CI 执行时间(只在故障 runner 上触发)。

直接影响 CI 安装流程的可靠性,防止因 nvidia-cusparselt-cu13 部分安装失败导致整个 CI 任务阻塞。因仅修改 CI 基础设施脚本,对业务逻辑无影响。

CI 稳定性修复 偶发依赖问题

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论