vLLM多GPU张量并行大模型推理教程:零基础也能上手
为什么要在vLLM中使用张量并行
大模型推理单张显卡显存往往不够,vLLM的张量并行(Tensor Parallelism)允许将模型参数切分到多张GPU上并行计算,显著降低单卡显存占用并提升吞吐。
本教程将带你从零配置vLLM多GPU推理环境,确保每一步都能落地。
部署前的硬件与软件准备
首先确认机器有至少两块NVIDIA GPU(推荐同型号),驱动版本≥525,CUDA版本≥11.8。
然后创建Python 3.10环境并安装vLLM依赖:
# 检查GPU数量和型号
nvidia-smi --query-gpu=index,name --format=csv
# 安装vLLM(会自动拉取兼容的torch)
pip install vllm
注意:如果使用模型meta-llama/Meta-Llama-3-8B,需要提前登录Hugging Face并下载。
推荐用huggingface-cli login认证。
启动vLLM推理并配置张量并行
核心参数是--tensor-parallel-size,设置为你可用的GPU数量。
例如两块GPU启动一个Qwen2.5-7B模型:
python -m vllm.entrypoints.openai.api_server \
--model Qwen/Qwen2.5-7B-Instruct \
--tensor-parallel-size 2 \
--gpu-memory-utilization 0.9 \
--max-model-len 4096 \
--port 8000
参数说明:
--tensor-parallel-size:指定张量并行粒度,必须≤实际GPU数。--gpu-memory-utilization:控制显存占用比例,避免OOM。--max-model-len:最大输入长度,根据显存调整。
启动后vLLM会在8000端口提供OpenAI兼容接口。
高频问题与避坑提醒
Q:启动时提示RuntimeError: CUDA error: peer access
A:检查GPU是否开启了NVLink或者用nvidia-smi topo -m查看拓扑,确保GPU间支持P2P通信。如果报错可添加环境变量export NCCL_P2P_DISABLE=1绕开,但会降低性能。
Q:模型加载后显存占用过高,推理失败
A:适当降低--gpu-memory-utilization(如0.7),或减小--max-model-len。也可以换用参数更小的量化版本(如model改为Qwen2.5-7B-Instruct-GPTQ-Int4)。
Q:张量并行后推理速度没有提升
A:检查是否真的使用了多卡:nvidia-smi查看每张GPU利用率。如果负载不均衡,可能是模型切分引入通信开销,小模型(<7B)用单卡反而更快。建议在13B以上模型使用张量并行。
验证多GPU推理效果
启动服务后,用curl测试一个请求:
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "Qwen/Qwen2.5-7B-Instruct",
"messages": [{"role": "user", "content": "你好"}],
"max_tokens": 100
}'
同时打开另一个终端运行nvidia-smi观察显存和GPU利用率。
如果两块卡的显存占用接近且都有计算负载,说明张量并行已生效。
若遇到模型返回乱码或超时,检查--max-model-len是否过小导致截断,或者Hugging Face token权限不足。
建议先下载模型到本地再用--model指向本地路径。
如果你是第一次配置多GPU推理,建议先按本文步骤走通一个7B模型,再根据实际显存和模型大小调整--tensor-parallel-size和量化方式。
遇到问题优先查看vLLM官方日志(--log-level debug)和GPU间的通信错误,大部分都能在避坑部分找到对应方案。