# PR #22029 完整报告

- 仓库：`sgl-project/sglang`
- 标题：[NPU][CI] Use UV to improve pip install speed
- 合并时间：2026-04-09 09:18
- 原文链接：http://prhub.com.cn/sgl-project/sglang/pull/22029

---

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

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

## 实现拆解
实现分为两个核心部分：
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_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 测试环境的安装速度优化，反映了团队对开发体验和测试效率的重视。