Prhub

#22029 [NPU][CI] Use UV to improve pip install speed

sgl-project/sglang · 作者 tfhddd · 合并时间 2026-04-09 09:18

分析状态 已生成
文件变更 4提交数 1 · 评论 8
代码增减 +30 / -7
npu run-ci dependencies

执行摘要

使用 UV 工具加速 NPU CI 环境中的 pip 安装,安装时间从 4 分钟缩短至 1 分 40 秒。

PR标题和简短描述表明,动机是提高CI环境中pip安装的速度,从4分钟减少到1分40秒,以加速NPU测试工作流的执行,提升开发效率和CI流水线性能。

对于技术管理者,此PR展示了CI基础设施优化的一个实例,值得关注以提高团队效率;对于工程师,除非直接维护NPU CI脚本,否则无需精读,但可借鉴uv工具的集成方法。

讨论亮点

review中,gemini-code-assist[bot]提出两个关键建议:一是使用${PIP_INSTALL}变量而非直接调用pip来安装uv,以确保安装一致性;二是避免硬编码UV_INDEX_URL为内部集群地址,建议通过环境变量覆盖以提高脚本可移植性。作者tfhddd回复'fixed',表明已采纳建议并修改代码。讨论聚焦于设计合理性和可维护性,没有未解决疑虑。

实现拆解

实现方案分为两部分:1) 在三个CI工作流文件(.github/workflows/full-test-npu.yml、nightly-test-npu.yml、pr-test-npu.yml)的多个job中添加UV_INDEX_URL环境变量,指向内部缓存服务;2) 修改安装脚本scripts/ci/npu/npu_ci_install_dependency.sh,引入uv pip安装命令(UV_PIP_INSTALL),设置UV相关环境变量如UV_NO_CACHE=true、UV_SYSTEM_PYTHON=true、UV_INDEX_STRATEGY=unsafe-best-match,并将原有的pip install替换为uv pip install,同时确保uv工具本身通过${PIP_INSTALL}安装以保持一致性。

文件 模块 状态 重要度
.github/workflows/full-test-npu.yml CI Workflow modified 3.0
.github/workflows/nightly-test-npu.yml CI Workflow modified 3.0
.github/workflows/pr-test-npu.yml CI Workflow modified 4.0
scripts/ci/npu/npu_ci_install_dependency.sh CI Script modified 5.0

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

评论区精华

使用 ${PIP_INSTALL} 安装 uv 以保持一致性 设计

gemini-code-assist[bot] 建议使用 ${PIP_INSTALL} 变量而非直接调用 pip 来安装 uv,以确保安装过程与脚本中其他依赖安装保持一致,避免潜在的不一致性问题。

结论:作者采纳建议并修改代码,使用 ${PIP_INSTALL} uv 来安装 uv 工具。 · 已解决

避免硬编码 UV_INDEX_URL 以提高可移植性 设计

gemini-code-assist[bot] 指出硬编码 UV_INDEX_URL 为内部集群地址(如 .svc.cluster.local)会降低脚本可移植性,在其他环境(如本地开发或外部 CI)中可能导致失败或超时,建议通过环境变量覆盖来灵活配置。

结论:作者采纳建议并修改代码,使用环境变量覆盖方式设置 UV_INDEX_URL。 · 已解决

风险与影响

技术风险较低:1) 新引入的uv工具可能带来兼容性问题或额外依赖,但已在CI环境中测试;2) UV_INDEX_URL虽已改为环境变量覆盖,但默认值仍指向内部缓存服务,在其他环境中可能需手动配置;3) 替换pip为uv可能影响包解析逻辑,但通过设置UV_INDEX_STRATEGY=unsafe-best-match来加速安装,整体风险可控,主要局限于CI基础设施。

影响范围仅限于NPU相关的CI工作流(full-test、nightly-test、pr-test),不影响生产代码或核心功能。影响程度:安装速度提升约60%,减少CI执行时间,提高开发迭代效率;对用户无直接影响,但间接加速了NPU功能测试和集成。

新工具依赖风险 环境变量配置依赖

关联 Issue

未识别关联 Issue

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

完整报告

执行摘要

本PR通过引入UV包管理工具替换传统pip安装,将NPU CI环境中的依赖安装时间从4分钟缩短至1分40秒,显著提升CI测试效率,改动局限于NPU相关的工作流和脚本,风险可控且影响直接。

功能与动机

PR的动机源于提升CI流水线性能,缩短依赖安装时间以加速NPU测试执行。从PR标题和描述可见,目标是将安装时间从4分钟减少到1分40秒,从而提高开发迭代效率。

实现拆解

实现分为两个核心部分:

  1. CI工作流配置:在.github/workflows/full-test-npu.ymlnightly-test-npu.ymlpr-test-npu.yml文件中,为多个job添加UV_INDEX_URL环境变量,指向内部缓存服务,以优化包索引源。
  2. 安装脚本重构:修改scripts/ci/npu/npu_ci_install_dependency.sh,引入UV_PIP_INSTALL命令替代原有的pip install,并设置关键环境变量:
    • UV_NO_CACHE=true:禁用缓存以加速安装。
    • UV_SYSTEM_PYTHON=true:使用系统Python。
    • UV_INDEX_STRATEGY=unsafe-best-match:优化包解析策略。
    • 同时确保uv工具通过${PIP_INSTALL} uv安装,保持脚本一致性。

评论区精华

review讨论中,gemini-code-assist[bot]提出两个设计改进点:

"使用${PIP_INSTALL}而非直接pip来安装uv,以确保安装一致性。"
"避免硬编码UV_INDEX_URL,建议用环境变量覆盖以提高脚本可移植性。"
作者tfhddd迅速回复"fixed"并修改代码,体现了对代码可维护性的重视,讨论以解决告终。

风险与影响

  • 风险分析:主要风险包括uv工具的新依赖可能引入兼容性问题,但已在CI环境中测试;UV_INDEX_URL默认值仍指向内部服务,在其他环境需手动配置;包解析逻辑变更可能影响稳定性,但通过策略设置缓解。整体风险低,限于CI基础设施。
  • 影响分析:影响范围仅限于NPU CI工作流,不涉及核心代码。安装速度提升约60%,直接减少CI执行时间,间接加速NPU功能开发和测试,对终端用户无直接影响。

关联脉络

从近期历史PR看,仓库持续优化CI基础设施,如PR 22388通过替换artifact机制提升效率,PR 22382升级依赖版本。本PR延续了这一趋势,专注于NPU测试环境的安装速度优化,反映了团队对开发体验和测试效率的重视。

参与讨论