Prhub

#21711 Remove flashinfer wheel cache cleanup that deletes other versions

原始 PR 作者 alisonshao 合并时间 2026-03-31 07:47 文件变更 1 提交数 1 评论 2 代码增减 +0 / -2

执行摘要

移除 FlashInfer wheel 缓存清理逻辑,避免 CI 作业间版本冲突导致的重复下载。

根据PR body描述,当runner主机预缓存多个FlashInfer版本时(如0.6.6和0.6.7),不同CI作业或PR期望不同版本会互相清除缓存,导致重新下载1.6-1.9GB文件,在带宽受限的机器上可能引发超时失败。具体失败示例如链接:https://github.com/sgl-project/sglang/actions/runs/23769215101/job/69256426384。

此PR变更简单,值得快速审查以理解CI缓存策略调整,重点关注移除清理逻辑的权衡。建议阅读review评论,了解未解决的潜在问题,未来可能需补充wheel选择鲁棒性和磁盘清理机制。

讨论亮点

gemini-code-assist[bot]在review中提出两点建议:一是增强wheel选择逻辑,包括CUDA版本和使用sort -V | tail -n 1以确保选择正确版本;二是添加时间基清理以防止磁盘无限增长。但PR作者未采纳这些建议,Fridge003直接批准合并,表明决策是优先移除问题逻辑以解决缓存冲突,而建议留待未来处理。

实现拆解

仅修改文件scripts/ci/cuda/ci_download_flashinfer_jit_cache.sh,删除了第27-29行的find -delete命令。该命令原本用于清理缓存目录中不匹配当前所需Python版本的flashinfer_jit_cache wheel文件。移除后,脚本不再主动删除旧版本,依赖现有缓存;但wheel选择逻辑保持不变,仍使用head -n 1选取第一个匹配的wheel。

文件 模块 状态 重要度
scripts/ci/cuda/ci_download_flashinfer_jit_cache.sh CI/cuda modified 5.0

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

评论区精华

wheel 选择逻辑鲁棒性 正确性

gemini-code-assist[bot] 建议增强 wheel 选择逻辑,包含 CUDA 版本并使用 sort -V | tail -n 1 以确保选择正确 wheel,避免错误版本导致的构建失败。

结论:建议未采纳,当前逻辑保持原样,依赖 head -n 1 选取;PR 优先解决缓存冲突。 · suggested

磁盘清理策略 设计

gemini-code-assist[bot] 建议添加时间基清理(如 30 天)以防止磁盘无限增长,平衡缓存保留与空间管理。

结论:建议未采纳,清理逻辑被完全移除,磁盘风险暂未处理。 · suggested

风险与影响

主要风险包括:

  1. 磁盘使用可能无限增长,因为旧版本wheel未被清理(每个约1.2GB),在持久化runner上可能导致存储溢出。
  2. 当前wheel选择逻辑可能错误选取不匹配CUDA版本的wheel,因为模式仅基于Python版本且使用非确定性head -n 1,存在跨环境共享缓存时的正确性问题。这些风险在review中被提及但未在本次PR中解决。

积极影响:显著减少CI作业构建时间,避免大文件重复下载,提升开发效率和CI稳定性,尤其在带宽受限的runner上。负面影响:可能增加磁盘占用,需监控长期运行runner的缓存大小;对最终用户无直接影响,但内部开发流程和CI成本可能受益。

缺少磁盘清理机制 版本选择可能错误

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论