# PR #6535 完整报告

- 仓库：`verl-project/verl`
- 标题：[ci] chore: migrate pip→uv in all Ascend CI workflows
- 合并时间：2026-06-02 17:34
- 原文链接：http://prhub.com.cn/verl-project/verl/pull/6535

---

# 执行摘要

- 一句话：Ascend CI 工作流中 pip 迁移为 uv pip
- 推荐动作：该 PR 结构清晰，更改模式可复制，适合作为其他 CI 环境迁移 pip→uv 的参考。建议关注 uv 配置参数（如 `INDEX_STRATEGY`、`INSECURE_HOST`）的选择逻辑，后续可考虑统一推广到更多工作流。

# 功能与动机

PR 正文说明替换 `pip`/`pip3` install/list 调用为 `uv pip` 等价调用，通过配置内部集群 PyPI 缓存服务和华为云 Ascend 仓库作为 fallback，并设置 `unsafe-best-match` 策略，目的是加速 Ascend CI 工作流中的包安装过程。

# 实现拆解

1. **替换包管理命令**：在 8 个工作流（`e2e_ascend.yml`, `e2e_fully_async_policy_ascend.yml`, `e2e_one_step_off_policy_ascend.yml`, `e2e_ppo_trainer_megatron_sglang_ascend.yml`, `e2e_ppo_trainer_megatron_sglang_2_ascend.yml`, `reward_model_sglang_ascend.yml`, `sgl_ascend.yml`, `nightly_ascend.yml`）的每个 job 中，将 `pip list` 替换为 `uv pip list`，将 `pip install` 替换为 `uv pip install`（保留参数如 `--no-deps`, `--no-build-isolation`, `-e .`）。
2. **添加 UV 环境变量**：在每个 job 的 `env:` 块中新增以下变量：
 - `UV_EXTRA_INDEX_URL`：指向华为云 Ascend PyPI 仓库（fallback）。
 - `UV_INDEX_STRATEGY: unsafe-best-match`：允许在不安全的索引中优先选择最佳匹配。
 - `UV_INSECURE_HOST` 白名单：内部缓存服务域名。
 - `UV_HTTP_TIMEOUT: 120`、`UV_NO_CACHE: "1"`、`UV_SYSTEM_PYTHON: "1"` 等设置。
3. **安装 uv 步骤**：在每个 job 的开头新增 `- name: Install uv` 步骤，通过 `pip install uv` 安装 uv 工具。
4. **保持原有环境变量**：保留原有的 `HF_HUB_ENABLE_HF_TRANSFER` 等环境变量。
5. **不涉及 a2b3 工作流**：PR 明确排除 a2b3 机型的工作流，因其已有基础设施级 pip 源配置。

关键文件：
- `.github/workflows/sgl_ascend.yml`（模块 CI 配置；类别 infra；类型 infrastructure）: 修改量最大的工作流（+134/-126），包含详细的 CI 步骤和 uv 迁移，是本次变更的核心文件。
- `.github/workflows/e2e_ascend.yml`（模块 CI 配置；类别 infra；类型 infrastructure）: 多个 job 中执行了 uv 迁移，包括 uv install 步骤、应用 `--no-build-isolation` 的差异，影响多个端到端测试。
- `.github/workflows/nightly_ascend.yml`（模块 CI 配置；类别 infra；类型 infrastructure）: 夜间 CI 工作流，增加 uv 环境和 install 步骤，确保长时间运行的工作流也能受益于加速。
- `.github/workflows/reward_model_sglang_ascend.yml`（模块 CI 配置；类别 infra；类型 infrastructure）: 奖励模型测试工作流，迁移后使用了 `uv pip install pytest pytest-asyncio` 等第三方包安装。
- `.github/workflows/e2e_fully_async_policy_ascend.yml`（模块 CI 配置；类别 infra；类型 infrastructure）: 全异步策略 e2e 测试工作流，包含 FSDP2 和 Megatron 两种策略的 job，均迁移到 uv。
- `.github/workflows/e2e_one_step_off_policy_ascend.yml`（模块 CI 配置；类别 infra；类型 infrastructure）: 离策略 e2e 测试工作流，与 fully_async 结构类似，同样迁移。
- `.github/workflows/e2e_ppo_trainer_megatron_sglang_ascend.yml`（模块 CI 配置；类别 infra；类型 infrastructure）: PPO 训练器 Megatron+SGLang 组合测试工作流。
- `.github/workflows/e2e_ppo_trainer_megatron_sglang_2_ascend.yml`（模块 CI 配置；类别 infra；类型 infrastructure）: PPO 训练器另一个配置工作流，修改最小。

关键符号：未识别


# 评论区精华

无有效 review 讨论。PR 有一条 CLA 检查评论和一条 Gemini 自动评论表示无法审查该文件类型。审核人 wucong25 直接批准，未留下评论。

- 暂无高价值评论线程

# 风险与影响

- 风险：本次变更为纯 CI 配置修改，风险较低。但 uv 与 pip 在依赖解析策略上存在差异，`unsafe-best-match` 策略可能导致与之前不同的包版本被安装，从而引发兼容性问题。不过，升级后的缓存配置使用内部服务和华为云官方仓库，且保留了 `--no-deps` 和 `--no-build-isolation` 参数，显著降低了依赖冲突风险。建议在合并后手动触发一次 CI 流程验证各工作流能够成功完成包安装。
- 影响：影响范围仅限于 8 个使用 a3 自托管 runner 的 Ascend CI 工作流。对用户、产品代码或公共 API 无直接影响。团队收益是通过使用 uv 和内部缓存服务可加速包安装，减少 CI 等待时间。运维方面，新增的 UV 环境变量需要在 CI 网络中保证缓存服务域名可访问。
- 风险标记：CI 工具替换 , 依赖解析行为变化 , 内部缓存服务依赖

# 关联脉络

- 暂无明显关联 PR