使用 Docker¶
使用 vLLM 的官方 Docker 镜像¶
vLLM 提供了一个官方 Docker 镜像用于部署。该镜像可用于运行兼容 OpenAI 的服务器,并可在 Docker Hub 上找到,地址为 vllm/vllm-openai。
docker run --runtime nvidia --gpus all \
-v ~/.cache/huggingface:/root/.cache/huggingface \
--env "HF_TOKEN=$HF_TOKEN" \
-p 8000:8000 \
--ipc=host \
vllm/vllm-openai:latest \
--model Qwen/Qwen3-0.6B
此镜像也可与其他容器引擎(如 Podman)配合使用。
podman run --device nvidia.com/gpu=all \
-v ~/.cache/huggingface:/root/.cache/huggingface \
--env "HF_TOKEN=$HF_TOKEN" \
-p 8000:8000 \
--ipc=host \
docker.io/vllm/vllm-openai:latest \
--model Qwen/Qwen3-0.6B
您可以在镜像标签(vllm/vllm-openai:latest)后添加任何其他所需的 engine-args。
注意
您可以使用 ipc=host 标志或 --shm-size 标志来允许容器访问主机的共享内存。vLLM 使用 PyTorch,PyTorch 在底层使用共享内存来在进程之间共享数据,特别是对于张量并行推理。
注意
可选依赖项未包含在内,以避免许可问题(例如 问题 #8030)。
如果您需要使用这些依赖项(并已接受许可条款),请在基础镜像之上创建一个自定义 Dockerfile,并添加一个额外的层来安装它们。
提示
一些新模型可能仅在 HF Transformers 的主分支上可用。
要使用 transformers 的开发版本,请在基础镜像之上创建一个自定义 Dockerfile,并添加一个额外的层来从源码安装其代码。
从源码构建 vLLM 的 Docker 镜像¶
您可以通过提供的 docker/Dockerfile 构建并运行 vLLM。要构建 vLLM:
# optionally specifies: --build-arg max_jobs=8 --build-arg nvcc_threads=2
DOCKER_BUILDKIT=1 docker build . \
--target vllm-openai \
--tag vllm/vllm-openai \
--file docker/Dockerfile
注意
默认情况下,vLLM 将为所有 GPU 类型进行构建,以实现最广泛的发行。如果您仅为当前运行机器的 GPU 类型进行构建,可以在运行 --build-arg torch_cuda_arch_list="" 参数时添加该参数,以便 vLLM 查找当前 GPU 类型并为其构建。
如果您使用的是 Podman 而非 Docker,则在运行 podman build 命令时,可能需要通过添加 --security-opt label=disable 来禁用 SELinux 标签,以避免某些 现有问题。
为 Arm64/aarch64 构建¶
可以为 aarch64 系统(如 Nvidia Grace-Hopper 和 Grace-Blackwell)构建 Docker 容器。使用 --platform "linux/arm64" 标志将为 arm64 构建。
注意
需要编译多个模块,因此此过程可能需要一段时间。建议使用 --build-arg max_jobs= 和 --build-arg nvcc_threads= 标志来加快构建过程。但是,请确保您的 max_jobs 远大于 nvcc_threads 以获得最大效益。请注意并行作业的内存使用量,因为内存消耗可能很大(请参见下面的示例)。
命令
# Example of building on Nvidia GH200 server. (Memory usage: ~15GB, Build time: ~1475s / ~25 min, Image size: 6.93GB)
DOCKER_BUILDKIT=1 docker build . \
--file docker/Dockerfile \
--target vllm-openai \
--platform "linux/arm64" \
-t vllm/vllm-gh200-openai:latest \
--build-arg max_jobs=66 \
--build-arg nvcc_threads=2 \
--build-arg torch_cuda_arch_list="9.0 10.0+PTX" \
--build-arg RUN_WHEEL_CHECK=false
对于 (G)B300,我们建议使用 CUDA 13,如下面的命令所示。
命令
DOCKER_BUILDKIT=1 docker build \
--build-arg CUDA_VERSION=13.0.1 \
--build-arg BUILD_BASE_IMAGE=nvidia/cuda:13.0.1-devel-ubuntu22.04 \
--build-arg max_jobs=256 \
--build-arg nvcc_threads=2 \
--build-arg RUN_WHEEL_CHECK=false \
--build-arg torch_cuda_arch_list='9.0 10.0+PTX' \
--platform "linux/arm64" \
--tag vllm/vllm-gb300-openai:latest \
--target vllm-openai \
-f docker/Dockerfile \
.
注意
如果您在非 ARM 主机(例如 x86_64 机器)上构建 linux/arm64 镜像,则需要确保您的系统已通过 QEMU 设置为交叉编译。这允许您的主机模拟 ARM64 执行。
在主机上运行以下命令以注册 QEMU 用户静态处理程序:
设置 QEMU 后,您可以在 docker build 命令中使用 --platform "linux/arm64" 标志。
使用自定义构建的 vLLM Docker 镜像¶
使用自定义构建的 Docker 镜像运行 vLLM:
docker run --runtime nvidia --gpus all \
-v ~/.cache/huggingface:/root/.cache/huggingface \
-p 8000:8000 \
--env "HF_TOKEN=<secret>" \
vllm/vllm-openai <args...>
参数 vllm/vllm-openai 指定要运行的镜像,应替换为自定义构建镜像的名称(构建命令中的 -t 标签)。
注意
仅适用于 0.4.1 和 0.4.2 版本 - 这些版本的 vLLM Docker 镜像需要以 root 用户身份运行,因为需要加载 root 用户主目录下的一个库,即 /root/.config/vllm/nccl/cu12/libnccl.so.2.18.1。如果您以其他用户身份运行容器,则可能需要首先更改该库(及其所有父目录)的权限,以允许该用户访问它,然后使用环境变量 VLLM_NCCL_SO_PATH=/root/.config/vllm/nccl/cu12/libnccl.so.2.18.1 运行 vLLM。