使用 ROCm 安装#

vLLM 支持使用 ROCm 6.1 的 AMD GPU。

要求#

  • 操作系统:Linux

  • Python:3.8 - 3.11

  • GPU:MI200s (gfx90a)、MI300 (gfx942)、Radeon RX 7900 系列 (gfx1100)

  • ROCm 6.1

安装选项:

  1. 使用 Docker 从源代码构建

  2. 从源代码构建

选项 2:从源代码构建#

  1. 安装先决条件(如果你已经在安装了以下内容的环境/docker 中,则跳过此步骤):

对于安装 PyTorch,你可以从一个新的 docker 镜像开始,例如 rocm/pytorch:rocm6.1.2_ubuntu20.04_py3.9_pytorch_stagingrocm/pytorch-nightly

或者,你可以使用 PyTorch 轮子安装 PyTorch。你可以在 PyTorch 的 入门指南 中查看 PyTorch 安装指南。

  1. 安装 Triton flash attention for ROCm

按照 ROCm/triton 中的说明安装 ROCm 的 Triton flash attention(默认的 triton-mlir 分支)。

  1. 可选地,如果你选择使用 CK flash attention,你可以安装 flash attention for ROCm

按照 ROCm/flash-attention 中的说明安装 ROCm 的 flash attention(v2.5.9.post1)。或者,可以在发布版本下访问为 vLLM 使用的轮子。

备注

  • 你可能需要将 “ninja” 版本降级到 1.10,因为它在编译 flash-attention-2 时不会被使用(例如 pip install ninja==1.10.2.4)。

  1. 构建 vLLM。

$ cd vllm
$ pip install -U -r requirements-rocm.txt
$ python setup.py develop # This may take 5-10 minutes. Currently, `pip install .`` does not work for ROCm installation

小技巧

例如,vLLM v0.5.3 在 ROCM 6.1 上可以通过以下步骤构建:

$ pip install --upgrade pip

$ # Install PyTorch
$ pip uninstall torch -y
$ pip install --no-cache-dir --pre torch==2.5.0.dev20240726 --index-url https://download.pytorch.org/whl/nightly/rocm6.1

$ # Build & install AMD SMI
$ pip install /opt/rocm/share/amd_smi

$ # Install dependencies
$ pip install --upgrade numba scipy huggingface-hub[cli]
$ pip install "numpy<2"
$ pip install -r requirements-rocm.txt

$ # Apply the patch to ROCM 6.1 (requires root permission)
$ wget -N https://github.com/ROCm/vllm/raw/fa78403/rocm_patch/libamdhip64.so.6 -P /opt/rocm/lib
$ rm -f "$(python3 -c 'import torch; print(torch.__path__[0])')"/lib/libamdhip64.so*

$ # Build vLLM for MI210/MI250/MI300.
$ export PYTORCH_ROCM_ARCH="gfx90a;gfx942"
$ python3 setup.py develop

小技巧

  • 默认情况下使用 Triton flash attention。为了进行基准测试,建议在收集性能数据之前运行一个预热步骤。

  • Triton flash attention 目前不支持滑动窗口注意力。如果使用半精度,请使用 CK flash-attention 来支持滑动窗口。

  • 要使用 CK flash-attention 或 PyTorch naive attention,请使用此标志 export VLLM_USE_TRITON_FLASH_ATTN=0 来关闭 triton flash attention。

  • 理想情况下,PyTorch 的 ROCm 版本应与 ROCm 驱动程序版本匹配。

小技巧

  • 对于 MI300x (gfx942) 用户,为了获得最佳性能,请参考 MI300x 调整指南 以获取有关系统和工作流程级别的性能优化和调整技巧。对于 vLLM,请参考 vLLM 性能优化