跳到主要内容

ROCm 下安装

vLLM 0.2.4 版本开始,支持在 AMD GPU 下使用 ROCm 进行模型推理和服务,目前ROCm 还不支持 AWQ 量化, 不过 SqueezeLLM 量化已经移植了. ROCm 支持的数据类型有 FP16 和 BF16.

环境依赖

  • OS: Linux
  • Python: 3.8 – 3.11
  • GPU: MI200s (gfx90a), MI300 (gfx942), Radeon RX 7900 series (gfx1100)
  • Pytorch 2.0.1/2.1.1/2.2
  • ROCm 5.7 (Verified on python 3.10) or ROCm 6.0 ( python 3.9下已验证)

安装方式

方式1:(推荐)使用预安装的 vLLM Docker 镜像快速开始

这个方式只适用于ROCm 5.7:

docker pull embeddedllminfo/vllm-rocm:vllm-v0.2.4
docker run -it \
--network=host \
--group-add=video \
--ipc=host \
--cap-add=SYS_PTRACE \
--security-opt seccomp=unconfined \
--device /dev/kfd \
--device /dev/dri \
-v <path/to/model>:/app/model \
embeddedllminfo/vllm-rocm \
bash

方式2:从源码构建

你可以从源码构建并安装vLLM:

下面的说明仅适用于 ROCm 5.7。在本文档更新时,PyTorch 网站还未提供在 ROCm 6.0 上的 wheel 版本。

  1. 安装前提 (如果你有了已经安装好的下列软件环境可以跳过这步):
  • ROCm
  • Pytorch
$ pip install torch==2.2.0.dev20231206+rocm5.7 --index-url https://download.pytorch.org/whl/nightly/rocm5.7 # tested version
  1. 为ROCm安装 flash attention
安装ROCm的 flash attention 2.0.4版本,根据这个文档 GitHub - ROCm/flash-attention: Fast and memory-efficient exact attention
信息
  • 如果你使用 rocm5.7 和 pytorch 2.1.0 以上版本, 不需要 hipify_python.patch. 可以直接构建 ROCm flash attention
  • 如果安装 ROCmSoftwarePlatform/flash-attention 失败, 试试使用 commit 为 6fd2f8e572805681cd67ef8596c7e2ce521ed3c6 的版本
  • ROCm’s Flash-attention-2 (v2.0.4) 不支持 sliding windows attention.
  • 您可能需要将“ninja”版本降级到1.10,在编译flash-attention-2时不会使用它(例如,使用pip install ninja==1.10.2.4)。
  1. 安装 xformers==0.0.23 无依赖, 并且应用补丁适配 ROCm flash attention
pip install xformers==0.0.23 --no-deps
bash patch_xformers.rocm.sh
  1. 构建vLLM
cd vllm
pip install -U -r requirements-rocm.txt
python setup.py install # 估计要5到10分钟. Currently, `pip install .`` does not work for ROCm installation

方式3:使用Docker从源码开始构建

你可以从源码构建安装vLLM

使用 Dockerfile.rocm 构建Docker镜像, 并启动docker容器

Dokerfile.rocm 支持 ROCm 5.7 和 ROCm 6.0 及后面版本. 提供灵活的方式通过下面自定义参数构建Docker镜像:

  • BASE_IMAGE: 为Docker 构建提供基础镜像, 具体是 PyTorch 的 ROCm 基本镜像。我们已经测试过了 ROCm 5.7 和 ROCm 6.0。 默认是 rocm/pytorch:rocm6.0_ubuntu20.04_py3.9_pytorch_2.1.1
  • FX_GFX_ARCHS: 指定 GFX 架构用于构建 flash-attention, 例如, gfx90a;gfx942 for MI200 and MI300. 默认是 gfx90a;gfx942
  • FA_BRANCH: 指定构建 flash-attention ROCmSoftwarePlatform’s flash-attention repo 的分支, 默认是 3d2b6f5
  • BUILD_FA: 指定是否为 Radeon RX 7900 series (gfx1100) 构建flash attention, 在支持这个之前默认是0.

这些值在运行 docker build 时用 --build-arg 传入.

例如, 构建 vllm ROCm 5.7 的Docker 镜像:

docker build --build-arg BASE_IMAGE="rocm/pytorch:rocm5.7_ubuntu22.04_py3.10_pytorch_2.0.1" \
-f Dockerfile.rocm -t vllm-rocm .

构建 vllm ROCm 6.0 可以使用默认:

docker build -f Dockerfile.rocm -t vllm-rocm .
docker run -it \
--network=host \
--group-add=video \
--ipc=host \
--cap-add=SYS_PTRACE \
--security-opt seccomp=unconfined \
--device /dev/kfd \
--device /dev/dri \
-v <path/to/model>:/app/model \
vllm-rocm \
bash

再者,如果你计划把 vLLM-ROCm 安装在一台本地主机或者开个新的Docker (例如. rocm/pytorch), 你可以根据下面步骤操作:

安装前提 (如果你有了已经安装好的下列Docker环境可以跳过这步):

  • ROCm
  • Pytorch
  • hipBLAS
  1. 安装 flash attention for ROCm
安装 ROCm’s flash attention (v2.0.4) 根据这个文档  ROCmSoftwarePlatform/flash-attention
提示
  • 如果你使用 rocm5.7 和 pytorch 2.1.0 以上版本, 不需要 hipify_python.patch. 可以直接构建 ROCm flash attention
  • 如果安装 ROCmSoftwarePlatform/flash-attention 失败, 试试使用 commit 为 6fd2f8e572805681cd67ef8596c7e2ce521ed3c6 的版本
  • ROCm’s Flash-attention-2 (v2.0.4) 不支持 sliding windows attention.
  • 您可能需要将“ninja”版本降级到1.10,在编译flash-attention-2时不会使用它(例如,使用pip install ninja==1.10.2.4)。
  1. 安装 xformers==0.0.23 无依赖, 并且应用补丁适配 ROCm flash attention
pip install xformers==0.0.23 --no-deps
bash patch_xformers.rocm.sh
  1. 构建vLLM
cd vllm
pip install -U -r requirements-rocm.txt
python setup.py install # 估计要5到10分钟. Currently, `pip install .`` does not work for ROCm installation
提示

如果您在运行 benchmark_throughput.py 脚本测试安装时遇到进程挂起的情况,您可能需要开启 --enforce-eager