GPU¶
vLLM 是一个 Python 库,支持以下 GPU 类型。选择您的 GPU 类型以查看特定厂商的说明
vLLM 包含预编译的 C++ 和 CUDA (12.8) 二进制文件。
vLLM 支持使用 ROCm 6.3 的 AMD GPU。
警告
此设备没有预构建的 wheels,因此您必须使用预构建的 Docker 镜像或从源代码构建 vLLM。
vLLM 最初支持在 Intel GPU 平台上进行基础的模型推理和服务。
警告
此设备没有预构建的 wheels 或镜像,因此您必须从源代码构建 vLLM。
要求¶
- 操作系统: Linux
- Python: 3.9 -- 3.12
- GPU: 计算能力 7.0 或更高 (例如, V100, T4, RTX20xx, A100, L4, H100 等)
- GPU: MI200s (gfx90a), MI300 (gfx942), Radeon RX 7900 系列 (gfx1100/1101), Radeon RX 9000 系列 (gfx1200/1201)
- ROCm 6.3
- 支持的硬件: Intel 数据中心 GPU, Intel ARC GPU
- OneAPI 要求: oneAPI 2025.0
使用 Python 设置¶
创建新的 Python 环境¶
推荐使用 uv,一个非常快的 Python 环境管理器,来创建和管理 Python 环境。请按照文档安装 uv
。安装 uv
后,您可以使用以下命令创建新的 Python 环境并安装 vLLM
关于此设备创建新的 Python 环境没有额外信息。
关于此设备创建新的 Python 环境没有额外信息。
预编译的 wheels¶
您可以使用 pip
或 uv pip
安装 vLLM
# Install vLLM with CUDA 12.8.
# If you are using pip.
pip install vllm --extra-index-url https://download.pytorch.org/whl/cu128
# If you are using uv.
uv pip install vllm --torch-backend=auto
我们建议利用 uv
通过 --torch-backend=auto
(或 UV_TORCH_BACKEND=auto
)检查已安装的 CUDA 驱动程序版本来在运行时自动选择合适的 PyTorch 索引。要选择特定的后端(例如 cu126
),请设置 --torch-backend=cu126
(或 UV_TORCH_BACKEND=cu126
)。如果这不起作用,请尝试先运行 uv self update
更新 uv
。
注意
NVIDIA Blackwell GPU (B200, GB200) 要求最低 CUDA 12.8,因此请确保您安装的 PyTorch wheels 版本至少为该版本。PyTorch 本身提供了一个专用接口来确定针对特定目标配置运行的适当 pip 命令。
目前,vLLM 的二进制文件默认使用 CUDA 12.8 和公开发布的 PyTorch 版本编译。我们也提供使用 CUDA 12.6、11.8 和公开发布的 PyTorch 版本编译的 vLLM 二进制文件
# Install vLLM with CUDA 11.8.
export VLLM_VERSION=0.6.1.post1
export PYTHON_VERSION=312
uv pip install https://github.com/vllm-project/vllm/releases/download/v${VLLM_VERSION}/vllm-${VLLM_VERSION}+cu118-cp${PYTHON_VERSION}-cp${PYTHON_VERSION}-manylinux1_x86_64.whl --extra-index-url https://download.pytorch.org/whl/cu118
安装最新代码¶
LLM 推理是一个快速发展的领域,最新代码可能包含尚未发布的问题修复、性能改进和新特性。为了让用户无需等待下一个版本即可尝试最新代码,vLLM 为自 v0.5.3
以来的每次提交提供了适用于在 x86 平台上运行 Linux 并使用 CUDA 12 的 wheels。
使用 pip
安装最新代码¶
pip
需要 --pre
才能考虑预发布版本。
另一种安装最新代码的方法是使用 uv
使用 pip
安装特定版本¶
如果您想访问之前提交的 wheels(例如用于二分查找行为变化、性能回归),由于 pip
的限制,您必须通过在 URL 中嵌入提交哈希来指定 wheel 文件的完整 URL
export VLLM_COMMIT=33f460b17a54acb3b6cc0b03f4a17876cff5eafd # use full commit hash from the main branch
pip install https://wheels.vllm.ai/${VLLM_COMMIT}/vllm-1.0.0.dev-cp38-abi3-manylinux1_x86_64.whl
请注意,这些 wheels 是使用 Python 3.8 ABI 构建的(关于 ABI 的更多详情请参见 PEP 425),因此它们兼容 Python 3.8 及更高版本。wheel 文件名中的版本字符串 (1.0.0.dev
) 只是一个占位符,以便为 wheels 提供统一的 URL,wheels 的实际版本包含在 wheel 元数据中(extra index url 中列出的 wheels 具有正确的版本)。尽管我们不再支持 Python 3.8(因为 PyTorch 2.5 放弃了对 Python 3.8 的支持),但 wheels 仍然使用 Python 3.8 ABI 构建,以保持与之前相同的 wheel 名称。
使用 uv
安装特定版本¶
如果您想访问之前提交的 wheels(例如用于二分查找行为变化、性能回归),您可以在 URL 中指定提交哈希
export VLLM_COMMIT=72d9c316d3f6ede485146fe5aabd4e61dbc59069 # use full commit hash from the main branch
uv pip install vllm \
--torch-backend=auto \
--extra-index-url https://wheels.vllm.ai/${VLLM_COMMIT}
uv
的方法适用于 vLLM v0.6.6
及更高版本,并提供了一个易于记住的命令。uv
的一个独特功能是 --extra-index-url
中的包具有比默认索引更高的优先级。如果最新的公开发布版本是 v0.6.6.post1
,uv
的行为允许通过指定 --extra-index-url
来安装在 v0.6.6.post1
之前的提交。相比之下,pip
会合并来自 --extra-index-url
和默认索引的包,只选择最新版本,这使得安装发布版本之前的开发版本变得困难。
目前,没有预构建的 ROCm wheels。
目前,没有预构建的 XPU wheels。
从源代码构建 wheel¶
使用纯 Python 构建设置(无需编译)¶
如果您只需要修改 Python 代码,可以在不编译的情况下构建和安装 vLLM。使用 pip
的--editable
标志,您对代码所做的更改在运行 vLLM 时会得到体现
git clone https://github.com/vllm-project/vllm.git
cd vllm
VLLM_USE_PRECOMPILED=1 pip install --editable .
此命令将执行以下操作
- 在您的 vLLM 克隆中查找当前分支。
- 识别 main 分支中对应的基础提交。
- 下载基础提交的预构建 wheel。
- 在安装中使用其编译后的库。
注意
- 如果您更改 C++ 或 kernel 代码,则不能使用纯 Python 构建;否则您会看到关于找不到库或未定义符号的导入错误。
- 如果您对开发分支进行 rebase,建议卸载 vllm 并重新运行上述命令,以确保您的库是最新的。
如果您在运行上述命令时看到关于找不到 wheel 的错误,可能是因为您基于的 main 分支中的提交刚刚合并,并且 wheel 正在构建中。在这种情况下,您可以等待大约一个小时再试,或者使用 VLLM_PRECOMPILED_WHEEL_LOCATION
环境变量在安装中手动指定先前的提交。
export VLLM_COMMIT=72d9c316d3f6ede485146fe5aabd4e61dbc59069 # use full commit hash from the main branch
export VLLM_PRECOMPILED_WHEEL_LOCATION=https://wheels.vllm.ai/${VLLM_COMMIT}/vllm-1.0.0.dev-cp38-abi3-manylinux1_x86_64.whl
pip install --editable .
您可以在安装最新代码中找到关于 vLLM 的 wheels 的更多信息。
注意
您的源代码的提交 ID 可能与最新的 vLLM wheel 不同,这可能导致未知错误。建议源代码的提交 ID 与您安装的 vLLM wheel 使用相同的提交 ID。关于如何安装特定 wheel 的说明,请参考安装最新代码。
完整构建(带编译)¶
如果您想修改 C++ 或 CUDA 代码,则需要从源代码构建 vLLM。这可能需要几分钟
提示
从源代码构建需要大量编译。如果您重复从源代码构建,缓存编译结果会更有效率。
例如,您可以使用 conda install ccache
或 apt install ccache
安装 ccache。只要 which ccache
命令能找到 ccache
二进制文件,构建系统就会自动使用它。第一次构建后,后续构建会快得多。
当将 ccache
与 pip install -e .
一起使用时,您应该运行 CCACHE_NOHASHDIR="true" pip install --no-build-isolation -e .
。这是因为 pip
为每次构建创建一个带随机名称的新文件夹,阻止 ccache
识别正在构建的是相同文件。
sccache 的工作方式与 ccache
类似,但具备在远程存储环境中利用缓存的能力。可以设置以下环境变量来配置 vLLM sccache
远程:SCCACHE_BUCKET=vllm-build-sccache SCCACHE_REGION=us-west-2 SCCACHE_S3_NO_CREDENTIALS=1
。我们也建议设置 SCCACHE_IDLE_TIMEOUT=0
。
使用现有的 PyTorch 安装¶
在某些情况下,PyTorch 依赖项无法通过 pip 轻松安装,例如:
- 使用 PyTorch nightly 或自定义 PyTorch 构建来构建 vLLM。
- 使用 aarch64 和 CUDA (GH200) 构建 vLLM,其中 PyTorch wheels 在 PyPI 上不可用。目前,只有 PyTorch nightly 提供了适用于带 CUDA 的 aarch64 的 wheels。您可以运行
pip3 install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cu124
来安装 PyTorch nightly,然后在此基础上构建 vLLM。
要使用现有的 PyTorch 安装来构建 vLLM
git clone https://github.com/vllm-project/vllm.git
cd vllm
python use_existing_torch.py
pip install -r requirements/build.txt
pip install --no-build-isolation -e .
使用本地 cutlass 进行编译¶
目前,在开始构建过程之前,vLLM 会从 GitHub 拉取 cutlass 代码。但是,在某些情况下,您可能希望使用本地版本的 cutlass。要实现这一点,您可以设置环境变量 VLLM_CUTLASS_SRC_DIR 指向您的本地 cutlass 目录。
git clone https://github.com/vllm-project/vllm.git
cd vllm
VLLM_CUTLASS_SRC_DIR=/path/to/cutlass pip install -e .
故障排除¶
为了避免系统过载,您可以通过环境变量 MAX_JOBS
限制同时运行的编译作业数量。例如
这在您使用性能较低的机器进行构建时尤其有用。例如,当您使用 WSL 时,它默认只分配总内存的 50%,因此使用 export MAX_JOBS=1
可以避免同时编译多个文件导致内存不足。副作用是构建过程会慢得多。
此外,如果您在构建 vLLM 时遇到问题,我们建议使用 NVIDIA PyTorch Docker 镜像。
# Use `--ipc=host` to make sure the shared memory is large enough.
docker run \
--gpus all \
-it \
--rm \
--ipc=host nvcr.io/nvidia/pytorch:23.10-py3
如果您不想使用 docker,建议完整安装 CUDA Toolkit。您可以从官方网站下载并安装。安装后,将环境变量 CUDA_HOME
设置为 CUDA Toolkit 的安装路径,并确保 nvcc
编译器在您的 PATH
中,例如
这是一个健全性检查,用于验证 CUDA Toolkit 是否正确安装
nvcc --version # verify that nvcc is in your PATH
${CUDA_HOME}/bin/nvcc --version # verify that nvcc is in your CUDA_HOME
不支持的操作系统的构建¶
vLLM 只能在 Linux 上完全运行,但出于开发目的,您仍然可以在其他系统(例如 macOS)上构建它,以便导入和获得更方便的开发环境。二进制文件不会被编译,并且无法在非 Linux 系统上工作。
安装前只需禁用 VLLM_TARGET_DEVICE
环境变量
-
安装前置条件(如果您已处于安装了以下内容的环境/docker 中,请跳过)
要安装 PyTorch,您可以从一个全新的 docker 镜像开始,例如
rocm/pytorch:rocm6.3_ubuntu24.04_py3.12_pytorch_release_2.4.0
,rocm/pytorch-nightly
。如果您正在使用 docker 镜像,可以跳到步骤 3。或者,您可以使用 PyTorch wheels 安装 PyTorch。您可以在 PyTorch 入门指南中查看 PyTorch 安装指南。示例
-
安装 适用于 ROCm 的 Triton flash attention
按照 ROCm/triton 中的说明安装 ROCm 的 Triton flash attention(默认的 triton-mlir 分支)
python3 -m pip install ninja cmake wheel pybind11 pip uninstall -y triton git clone https://github.com/OpenAI/triton.git cd triton git checkout e5be006 cd python pip3 install . cd ../..
注意
如果在构建 triton 期间看到与下载软件包相关的 HTTP 问题,请重试,因为 HTTP 错误是间歇性的。
-
可选地,如果您选择使用 CK flash attention,可以安装适用于 ROCm 的 flash attention
按照 ROCm/flash-attention 中的说明安装 ROCm 的 flash attention (v2.7.2)。或者,可以在版本发布下访问专为 vLLM 使用的 wheels。
例如,对于 ROCm 6.3,假设您的 gfx 架构是
gfx90a
。要获取您的 gfx 架构,请运行rocminfo |grep gfx
。git clone https://github.com/ROCm/flash-attention.git cd flash-attention git checkout b7d29fb git submodule update --init GPU_ARCHS="gfx90a" python3 setup.py install cd ..
注意
您可能需要将“ninja”版本降级到 1.10,因为它在编译 flash-attention-2 时未使用(例如
pip install ninja==1.10.2.4
) -
如果您选择自己构建 AITER 以使用特定分支或提交,可以按照以下步骤构建 AITER
python3 -m pip uninstall -y aiter git clone --recursive https://github.com/ROCm/aiter.git cd aiter git checkout $AITER_BRANCH_OR_COMMIT git submodule sync; git submodule update --init --recursive python3 setup.py develop
注意
您需要根据您的目的配置
$AITER_BRANCH_OR_COMMIT
。 -
构建 vLLM。例如,可以在 ROCM 6.3 上按照以下步骤构建 vLLM
pip install --upgrade pip # Build & install AMD SMI pip install /opt/rocm/share/amd_smi # Install dependencies pip install --upgrade numba \ scipy \ huggingface-hub[cli,hf_transfer] \ setuptools_scm pip install "numpy<2" pip install -r requirements/rocm.txt # Build vLLM for MI210/MI250/MI300. export PYTORCH_ROCM_ARCH="gfx90a;gfx942" python3 setup.py develop
这可能需要 5-10 分钟。目前,
pip install .
不适用于 ROCm 安装。提示
- 默认使用 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 性能优化。
使用 Docker 设置(推荐)¶
vLLM 的 AMD Infinity Hub 提供了一个预构建、优化的 docker 镜像,专为验证 AMD Instinct™ MI300X 加速器上的推理性能而设计。
提示
请查看 在 AMD Instinct MI300X 上进行 LLM 推理性能验证,了解如何使用此预构建 docker 镜像的说明。
从源代码构建 Docker 镜像是使用 vLLM 与 ROCm 的推荐方式。
(可选)构建包含 ROCm 软件栈的镜像¶
从以下构建 docker 镜像rocm/vllm-dev:base
下,以加快用户体验。如果您选择自己构建此 rocm_base 镜像,步骤如下。
重要的是用户使用 buildkit 启动 docker 构建。用户可以在调用 docker build 命令时将 DOCKER_BUILDKIT=1 作为环境变量,或者需要在 docker daemon 配置 /etc/docker/daemon.json 中按如下方式设置 buildkit 并重启 daemon
要在 ROCm 6.3 上为 MI200 和 MI300 系列构建 vllm,可以使用默认设置
构建包含 vLLM 的镜像¶
首先,从以下构建 docker 镜像DOCKER_BUILDKIT=1
作为环境变量,或者需要在 docker daemon 配置 /etc/docker/daemon.json 中按如下方式设置 buildkit 并重启 daemon
BASE_IMAGE
: 指定运行docker build
时使用的基础镜像。默认值rocm/vllm-dev:base
是由 AMD 发布和维护的镜像。它使用以下方式构建USE_CYTHON
: 在 docker 构建时对部分 python 文件运行 cython 编译的选项BUILD_RPD
: 在镜像中包含 RocmProfileData 分析工具ARG_PYTORCH_ROCM_ARCH
: 允许覆盖基础 docker 镜像中的 gfx 架构值
运行 docker build
时可以使用 --build-arg
选项传递它们的值。
要在 ROCm 6.3 上为 MI200 和 MI300 系列构建 vllm,可以使用默认设置
要在 ROCm 6.3 上为 Radeon RX7900 系列 (gfx1100) 构建 vllm,您应该选择替代的基础镜像
DOCKER_BUILDKIT=1 docker build \
--build-arg BASE_IMAGE="rocm/vllm-dev:navi_base" \
-f docker/Dockerfile.rocm \
-t vllm-rocm \
.
要运行上述 docker 镜像 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
其中 <path/to/model>
是模型存储的位置,例如 llama2 或 llama3 模型的权重。
支持的特性¶
请参阅 特性与硬件兼容性矩阵,了解特性支持信息。
- 首先,安装所需的驱动程序和 Intel OneAPI 2025.0 或更高版本。
- 其次,安装用于构建 vLLM XPU 后端的 Python 软件包
git clone https://github.com/vllm-project/vllm.git
cd vllm
pip install --upgrade pip
pip install -v -r requirements/xpu.txt
- 然后,构建并安装 vLLM XPU 后端
注意
- FP16 是当前 XPU 后端中的默认数据类型。BF16 数据类型在 Intel 数据中心 GPU 上受支持,在 Intel Arc GPU 上尚未受支持。
使用 Docker 设置¶
预构建的镜像¶
请参阅 使用 vLLM 官方 Docker 镜像,了解如何使用官方 Docker 镜像的说明。
另一种获取最新代码的方式是使用 docker 镜像
export VLLM_COMMIT=33f460b17a54acb3b6cc0b03f4a17876cff5eafd # use full commit hash from the main branch
docker pull public.ecr.aws/q9t5s3a7/vllm-ci-postmerge-repo:${VLLM_COMMIT}
这些 docker 镜像仅用于 CI 和测试,不适用于生产环境。它们将在几天后过期。
最新代码可能包含错误且不稳定。请谨慎使用。
vLLM 的 AMD Infinity Hub 提供了一个预构建、优化的 docker 镜像,专为验证 AMD Instinct™ MI300X 加速器上的推理性能而设计。
提示
请查看 在 AMD Instinct MI300X 上进行 LLM 推理性能验证,了解如何使用此预构建 docker 镜像的说明。
目前,没有预构建的 XPU 镜像。
从源代码构建镜像¶
从源代码构建 Docker 镜像是使用 vLLM 与 ROCm 的推荐方式。
(可选)构建包含 ROCm 软件栈的镜像¶
从以下构建 docker 镜像rocm/vllm-dev:base
下,以加快用户体验。如果您选择自己构建此 rocm_base 镜像,步骤如下。
重要的是用户使用 buildkit 启动 docker 构建。用户可以在调用 docker build 命令时将 DOCKER_BUILDKIT=1 作为环境变量,或者需要在 docker daemon 配置 /etc/docker/daemon.json 中按如下方式设置 buildkit 并重启 daemon
要在 ROCm 6.3 上为 MI200 和 MI300 系列构建 vllm,可以使用默认设置
构建包含 vLLM 的镜像¶
首先,从以下构建 docker 镜像DOCKER_BUILDKIT=1
作为环境变量,或者需要在 docker daemon 配置 /etc/docker/daemon.json 中按如下方式设置 buildkit 并重启 daemon
BASE_IMAGE
: 指定运行docker build
时使用的基础镜像。默认值rocm/vllm-dev:base
是由 AMD 发布和维护的镜像。它使用以下方式构建USE_CYTHON
: 在 docker 构建时对部分 python 文件运行 cython 编译的选项BUILD_RPD
: 在镜像中包含 RocmProfileData 分析工具ARG_PYTORCH_ROCM_ARCH
: 允许覆盖基础 docker 镜像中的 gfx 架构值
运行 docker build
时可以使用 --build-arg
选项传递它们的值。
要在 ROCm 6.3 上为 MI200 和 MI300 系列构建 vllm,可以使用默认设置
要在 ROCm 6.3 上为 Radeon RX7900 系列 (gfx1100) 构建 vllm,您应该选择替代的基础镜像
DOCKER_BUILDKIT=1 docker build \
--build-arg BASE_IMAGE="rocm/vllm-dev:navi_base" \
-f docker/Dockerfile.rocm \
-t vllm-rocm \
.
要运行上述 docker 镜像 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
其中 <path/to/model>
是模型存储的位置,例如 llama2 或 llama3 模型的权重。
支持的特性¶
请参阅 特性与硬件兼容性矩阵,了解特性支持信息。
$ docker build -f docker/Dockerfile.xpu -t vllm-xpu-env --shm-size=4g .
$ docker run -it \
--rm \
--network=host \
--device /dev/dri \
-v /dev/dri/by-path:/dev/dri/by-path \
vllm-xpu-env
支持的特性¶
XPU 平台支持张量并行(tensor parallel)推理/服务,并作为在线服务的 beta 特性支持流水线并行(pipeline parallel)。我们需要 Ray 作为分布式运行时后端。例如,参考执行如下
python -m vllm.entrypoints.openai.api_server \
--model=facebook/opt-13b \
--dtype=bfloat16 \
--max_model_len=1024 \
--distributed-executor-backend=ray \
--pipeline-parallel-size=2 \
-tp=8
默认情况下,如果系统中未检测到现有的 ray 实例,则会自动启动一个 ray 实例,其中 num-gpus
等于 parallel_config.world_size
。建议在执行前正确启动 ray 集群,请参考