# PR #26390 完整报告

- 仓库：`sgl-project/sglang`
- 标题：[NPU] fix CI
- 合并时间：2026-05-27 14:45
- 原文链接：http://prhub.com.cn/sgl-project/sglang/pull/26390

---

# 执行摘要

- 一句话：NPU CI 因 torchaudio 依赖位置调整修复
- 推荐动作：PR 较小，但展示了依赖管理的最佳实践：将版本敏感的依赖从项目元数据中剥离，交由 CI 脚本按环境动态安装。值得阅读 review 中的讨论。

# 功能与动机

NPU CI 在合并 #26267 后失败。原因是 `torchaudio` 版本与 PyTorch 版本不匹配，需要从项目元数据中解耦，由 CI 脚本根据实际 PyTorch 版本动态安装。

# 实现拆解

1. **移除 pyproject_npu.toml 中的 torchaudio 依赖**：删除第 60 行 `"torchaudio==2.8.0"`，避免固定版本与 CI 实际使用的 PyTorch 版本冲突。
2. **在 CI 脚本中新增 torchaudio 安装**：在 `scripts/ci/npu/npu_ci_install_dependency.sh` 的 `else` 分支（非 `OPTIONAL_DEPS` 模式）中，添加 `TORCHAUDIO_VERSION="2.8.0"` 变量，并在 `uv pip install` 命令中增加 `torchaudio==${TORCHAUDIO_VERSION}`，确保与 PyTorch 2.8.0 一同安装。
3. **修复 review 指出的遗漏**：根据 gemini-code-assist[bot] 的建议，在 `if` 分支（`OPTIONAL_DEPS` 开启时）也补充了 `torchaudio` 的安装（例如 `TORCHAUDIO_VERSION="2.10.0"`），防止该路径下 CI 失败。

关键文件：
- `scripts/ci/npu/npu_ci_install_dependency.sh`（模块 CI 脚本；类别 infra；类型 infrastructure）: CI 安装脚本，新增 torchaudio 显式安装，确保与 PyTorch 版本对齐。修复了 review 指出的 OPTIONAL_DEPS 分支遗漏。
- `python/pyproject_npu.toml`（模块 依赖配置；类别 config；类型 configuration）: NPU 项目依赖配置文件，移除了 torchaudio 固定版本依赖，避免版本冲突。

关键符号：未识别

## 关键源码片段

### `scripts/ci/npu/npu_ci_install_dependency.sh`

CI 安装脚本，新增 torchaudio 显式安装，确保与 PyTorch 版本对齐。修复了 review 指出的 OPTIONAL_DEPS 分支遗漏。

```bash
# scripts/ci/npu/npu_ci_install_dependency.sh ( 片段 )
if [ -n "$OPTIONAL_DEPS" ]; then
    # OPTIONAL_DEPS 分支：安装 torchaudio 2.10.0 以匹配可选依赖版本
    TORCHAUDIO_VERSION="2.10.0"
    ${UV_PIP_INSTALL} torch==${PYTORCH_VERSION} torchvision==${TORCHVISION_VERSION} torchaudio==${TORCHAUDIO_VERSION} --index-url ${TORCH_CACHE_URL} --extra-index-url ${PYPI_CACHE_URL}
else
    # 非 OPTIONAL_DEPS 分支：使用与 PyTorch 2.8.0 对齐的 torchaudio 2.8.0
    PYTORCH_VERSION="2.8.0"
    TORCHVISION_VERSION="0.23.0"
    TORCHAUDIO_VERSION="2.8.0"
    ${UV_PIP_INSTALL} torch==${PYTORCH_VERSION} torchvision==${TORCHVISION_VERSION} torchaudio==${TORCHAUDIO_VERSION} --index-url ${TORCH_CACHE_URL} --extra-index-url ${PYPI_CACHE_URL}
fi

```

# 评论区精华

gemini-code-assist[bot] 指出将 `torchaudio` 从 `pyproject_npu.toml` 移除后，当 `OPTIONAL_DEPS` 启用时（`if` 分支）会完全缺失 `torchaudio`，导致 CI 失败。建议在 `if` 分支也显式安装对应版本。该问题已在后续提交中修复。

- torchaudio 在 OPTIONAL_DEPS 路径下缺失 (correctness): PR 作者在后续提交中修复，在 if 分支也添加了 torchaudio 安装。

# 风险与影响

- 风险：低风险。变更仅涉及依赖管理和 CI 脚本，不影响运行时逻辑。但需确保 `OPTIONAL_DEPS` 与普通模式下的 `torchaudio` 版本一致性，避免版本冲突。
- 影响：直接影响 NPU CI 流程，修复了因 #26267 引入的回归。对用户无感知，仅影响 CI 环境。
- 风险标记：仅影响 CI 环境

# 关联脉络

- PR #26267 [PR #26267]: PR #26390 明确说明是为了修复 #26267 合并后导致的 NPU CI 失败。