在 vLLM OSS CI/CD 上更新 PyTorch 版本¶
vLLM 當前的策略是在 CI/CD 中始終使用最新的 PyTorch 穩定版。當新的 PyTorch 穩定版可用時,儘早提交 PR 來更新 PyTorch 版本是一種標準做法。由於 PyTorch 釋出週期之間存在的時間差,這個過程並非易事。以 Pull Request #16859 為例,本文件概述了實現此更新的常見步驟,以及潛在問題及其解決方案。
測試 PyTorch 釋出候選版(RC)¶
在 PyTorch 正式釋出後才更新 vLLM 中的 PyTorch 並非理想選擇,因為屆時發現的任何問題只能透過等待下一個版本釋出或在 vLLM 中實現臨時的變通方法來解決。更好的解決方案是測試 vLLM 與 PyTorch 釋出候選版(RC)的相容性,以確保在每次釋出前都相容。
PyTorch 釋出候選版可以從 PyTorch 測試索引下載。例如,可以使用以下命令安裝 torch2.7.0+cu12.8 RC。
uv pip install torch torchvision torchaudio \
--index-url https://download.pytorch.org/whl/test/cu128
當最終 RC 版本準備好進行測試時,將在 PyTorch dev-discuss 論壇上向社群釋出。在此公告後,我們可以透過遵循以下 3 步流程起草一個 pull request 來開始測試 vLLM 整合:
-
更新 requirements 檔案,將
torch、torchvision和torchaudio指向新版本。 -
使用以下選項獲取最終釋出候選版的 wheel。一些常見平臺是
cpu、cu128和rocm6.2.4。 -
由於 vLLM 使用
uv,請確保應用以下索引策略:- 透過環境變數
- 或透過 CLI 標誌
如果在 pull request 中發現失敗,請在 vLLM 上將其作為 issue 提出,並抄送 PyTorch 釋出團隊,以啟動關於如何解決這些問題的討論。
更新 CUDA 版本¶
PyTorch 釋出矩陣包含穩定版和實驗版 CUDA 版本。由於限制,只有最新的穩定 CUDA 版本(例如,torch 2.7.1+cu126)會上傳到 PyPI。但是,vLLM 可能需要不同的 CUDA 版本,例如 12.8 以支援 Blackwell。這使得過程變得複雜,因為我們無法使用開箱即用的 pip install torch torchvision torchaudio 命令。解決方案是在 vLLM 的 Dockerfiles 中使用 --extra-index-url。
- 目前重要的索引包括:
| 平臺 | --extra-index-url |
|---|---|
| CUDA 12.8 | https://download.pytorch.org/whl/cu128 |
| CPU | https://download.pytorch.org/whl/cpu |
| ROCm 6.2 | https://download.pytorch.org/whl/rocm6.2.4 |
| ROCm 6.3 | https://download.pytorch.org/whl/rocm6.3 |
| XPU | https://download.pytorch.org/whl/xpu |
- 更新以下檔案以匹配步驟 1 中的 CUDA 版本。這確保了 vLLM wheel 的釋出能在 CI 上進行測試。
.buildkite/release-pipeline.yaml.buildkite/scripts/upload-wheels.sh
手動在 BuildKiteCI 上執行 vLLM 構建¶
使用新的 PyTorch/CUDA 版本構建 vLLM 時,vLLM sccache S3 儲存桶中將沒有任何快取的偽影,這可能導致 CI 構建作業超過 5 小時。此外,vLLM 的 fastcheck 管道在只讀模式下執行,並且不填充快取,使其無法用於快取預熱。
為了解決這個問題,手動觸發 Buildkite 上的構建,以實現兩個目標:
- 透過設定環境變數:
RUN_ALL=1和NIGHTLY=1,針對 PyTorch RC 構建執行完整的測試套件。 - 填充 vLLM sccache S3 儲存桶,包含編譯後的偽影,從而加快後續構建速度。
更新所有不同的 vLLM 平臺¶
與其試圖在一個 pull request 中更新所有 vLLM 平臺,不如單獨處理某些平臺更容易管理。vLLM CI/CD 中不同平臺的需求和 Dockerfiles 的分離,允許我們選擇性地更新哪些平臺。例如,更新 XPU 需要 Intel Extension for PyTorch 來自 Intel 的相應釋出。雖然 Pull Request #16859 在 CPU、CUDA 和 ROCm 上將 vLLM 更新到 PyTorch 2.7.0, Pull Request #17444 完成了 XPU 的更新。