VLLM 部署 大模型
vLLM 高性能推理部署指南
vLLM 是一个为大型语言模型(LLM)设计的高性能、高吞吐量的推理和服务引擎。它通过创新的 PagedAttention 算法,显著减少了内存浪费,并实现了比传统方法高出数倍的推理速度,使其成为 LLM 服务化部署的行业最佳选择之一。
核心定位: vLLM 专注于文本生成。它目前是纯粹的大语言模型(LLM)推理框架,因此天然不适用于直接部署文生图、文生音频/视频等多模态生成模型。然而,对于文本类任务,包括多模态模型的文本理解与生成部分,vLLM 提供了无与伦比的性能。
部署方式
vLLM 提供了灵活的部署选项,以适应不同的开发和生产环境。
方式一:使用 Docker 部署(推荐用于生产)
Docker 部署提供了隔离、可复现和易于扩展的环境,是生产环境的首选。
-
拉取官方镜像 vLLM 的官方镜像已经包含了所有必要的依赖项,包括 CUDA、PyTorch 等。
docker pull vllm/vllm-openai:latest
注意:请确保您的主机已正确安装 NVIDIA 驱动和 NVIDIA Container Toolkit。
-
启动服务 使用
docker run
命令启动一个 API 服务器。以下示例将部署meta-llama/Llama-2-7b-chat-hf
模型。docker run --runtime nvidia --gpus all \ -v ~/.cache/huggingface:/root/.cache/huggingface \ -p 8000:8000 \ --ipc=host \ vllm/vllm-openai:latest \ --model meta-llama/Llama-2-7b-chat-hf
--runtime nvidia --gpus all
: 允许容器访问所有 GPU。-v ~/.cache/huggingface:/root/.cache/huggingface
: 重要! 将主机的 Hugging Face 缓存目录挂载到容器内,避免每次启动都重新下载模型。-p 8000:8000
: 将容器的 8000 端口映射到主机。--model ...
: 指定要加载的模型。
方式二:使用 Conda/venv 部署(推荐用于开发与调试)
在本地 Python 环境中部署 vLLM 提供了更大的灵活性,方便进行代码调试和定制。
-
创建并激活虚拟环境 使用 Conda 或 venv 创建一个干净的 Python 环境。
# Conda conda create -n vllm python=3.10 -y conda activate vllm # 或者 venv # python -m venv vllm-env # source vllm-env/bin/activate
-
安装 vLLM 直接使用 pip 安装。vLLM 会自动处理 PyTorch 等核心依赖。
pip install vllm
-
启动服务 vLLM 提供了与 OpenAI API 兼容的服务器。
python -m vllm.entrypoints.openai.api_server \ --model meta-llama/Llama-2-7b-chat-hf
服务启动后,同样监听在
http://localhost:8000
。
模型部署场景
vLLM 可以轻松加载来自 Hugging Face Hub 的模型,或您存储在本地的模型。
场景一:部署 Hugging Face Hub 上的模型
这是最常见的方式。只需在 --model
参数后指定模型的 ID 即可。vLLM 会自动从 Hugging Face Hub 下载并加载。
# Docker 部署
docker run ... vllm/vllm-openai:latest --model Qwen/Qwen1.5-7B-Chat
# 本地环境部署
python -m vllm.entrypoints.openai.api_server --model Qwen/Qwen1.5-7B-Chat
场景二:部署本地模型
如果模型文件已存储在本地磁盘,直接将本地路径传递给 --model
参数。
假设您的模型文件位于 /path/to/my-local-model
:
# Docker 部署 (需要将本地目录挂载到容器内)
docker run --runtime nvidia --gpus all \
-v /path/to/my-local-model:/app/my-local-model \
-p 8000:8000 \
vllm/vllm-openai:latest \
--model /app/my-local-model
# 本地环境部署
python -m vllm.entrypoints.openai.api_server --model /path/to/my-local-model
常用启动参数
以下是一些在部署 vLLM 服务时非常关键和常用的参数:
参数 | 示例 | 描述 |
---|---|---|
--model |
meta-llama/Llama-2-7b-chat-hf |
(必需) 指定要加载的模型,可以是 Hugging Face ID 或本地路径。 |
--tensor-parallel-size |
2 |
设置张量并行的大小,用于在多张 GPU 上拆分模型以实现加速。 |
--gpu-memory-utilization |
0.9 |
设置每张 GPU 内存的最大使用率(0到1之间)。默认为 0.9 。 |
--max-model-len |
4096 |
模型可以处理的最大序列长度(上下文长度)。 |
--dtype |
bfloat16 |
加载模型时的数据类型,可选 auto , half , float16 , bfloat16 , float , float32 。auto 会自动选择最佳类型。 |
--host |
0.0.0.0 |
服务器监听的主机地址。默认为 localhost ,改为 0.0.0.0 以允许外部访问。 |
--port |
8000 |
服务器监听的端口。 |
--trust-remote-code |
(无值) | 如果模型需要执行自定义代码(如一些多模态模型或特殊架构),则需添加此标志。 |
一个更完整的启动命令示例:
python -m vllm.entrypoints.openai.api_server \
--model mistralai/Mistral-7B-Instruct-v0.2 \
--tensor-parallel-size 2 \
--gpu-memory-utilization 0.85 \
--max-model-len 8192 \
--host 0.0.0.0
这个命令将在 2 张 GPU 上以张量并行方式部署 Mistral-7B 模型,最大上下文长度为 8192,并允许从任何 IP 地址访问。
No comments to display
No comments to display