Prhub

#25756 [Fix] Fix extra uninstall of cutlass packages

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

执行摘要

移除 CI 中 cutlass 包的额外卸载,修复 LoRA 回归

PR 修复了 #25743 中报告的 LoRA Qwen3-8B CUDA 图捕获回归问题。该回归由 #25690 引入,其中添加了 purge_cutlass_libs_base 来清理 cutlass 包,但导致了非法地址异常。

该 PR 是一个标准的回归回退操作,展示了当临时修复引入更严重问题时如何快速止损。值得关注的是,依赖冲突问题(cutlass 包 extras 机制)并未根本解决,未来可能需要更持久的方案。

讨论亮点

审核机器人(gemini-code-assist)在早期提交中建议将 flash-attn-4 的版本约束改为带 extra 的固定版本以确保稳定性,但该建议涉及 pyproject.toml,而最终 PR 并未修改该文件,因此讨论未实际落地。

实现拆解

  1. scripts/ci/cuda/ci_install_dependency.sh 中删除 purge_cutlass_libs_base() 函数定义(减少 17 行)。
  2. main() 函数中移除对该函数的调用。
  3. 回归原因在于 nvidia-cutlass-dsl 的 extras 机制导致 -libs-base-libs-cu13 包文件冲突,之前的清理逻辑会卸载 -libs-base 并强制重装 -libs-cu13,但这可能改变了 CUDA 图捕获时的依赖状态。
文件 模块 状态 重要度
scripts/ci/cuda/ci_install_dependency.sh CI 脚本 modified 4.94

关键符号

purge_cutlass_libs_base main

关键源码片段

scripts/ci/cuda/ci_install_dependency.sh infrastructure

唯一的变更文件,删除了导致回归的 `purge_cutlass_libs_base` 函数及其调用。

# 以下为被删除的整个函数(以前位于 download_flashinfer_cache 之后)
# purge_cutlass_libs_base() { ... }
# 该函数用于卸载 nvidia-cutlass-dsl-libs-base 并强制重装 -libs-cu13
# 但该方法导致了 CUDA 图捕获时的非法地址异常(issue #25743)
# 因此在 PR #25756 中被完全移除# 在 main() 中,对应的调用行也已删除:
# main() {
# ...
# purge_cutlass_libs_base # 此行被删除
# stabilize_flashinfer_jit_paths
# ...
# }

评论区精华

flash-attn-4 版本约束建议 other

审核机器人建议在 pyproject.toml 中将 flash-attn-4 的版本从 `>=4.0.0b9` 改为带 extra `[cu13]` 的固定版本,以确保构建稳定性。

结论:该建议针对的是中间提交,最终 PR 未修改 pyproject.toml,因此未采纳。 · unresolved

风险与影响

风险极低:变更仅涉及 CI 安装脚本,回退了一个已被证明有问题的修复。若 cutlass 包冲突在未来再次出现,需采用不同方案解决。

影响范围:CI 构建流程。LoRA Qwen3-8B 的测试重新通过,恢复了 main 分支的稳定性。对用户无直接影响。

回归修复 依赖冲突未根本解决

关联 Issue

#25743 Revert #25690 to unblock LoRA Qwen3-8B CUDA graph capture on main

完整报告

参与讨论