vLLM多GPU张量并行大模型推理实操教程

为什么需要多GPU张量并行

大语言模型动辄几十亿甚至上千亿参数,单张GPU显存根本装不下。
vLLM的张量并行(Tensor Parallelism)能把一个模型的权重切分到多张GPU上,让每张卡只持有部分参数,推理时协同计算。
本文面向需要部署大模型但只有多卡(如2×A100、4×3090等)的用户,讲清楚从零启动到验证的全流程。

第一步:准备硬件与软件环境

硬件要求

  • 至少2块NVIDIA GPU,推荐同型号(跨型号也可但性能可能受PCIe带宽影响)。
  • 显存总量至少要大于模型权重占用 + KV Cache(vLLM会动态分配)。
  • NVIDIA驱动版本 ≥ 535,CUDA ≥ 12.1(vLLM 0.4+要求)。

安装vLLM

建议在Python虚拟环境中安装,避免依赖冲突:

python3 -m venv vllm_env
source vllm_env/bin/activate
pip install vllm  # 自动安装PyTorch等依赖

如果网络慢,可使用国内镜像:pip install vllm -i https://pypi.tuna.tsinghua.edu.cn/simple

验证安装:执行 python -c "import vllm; print(vllm.__version__)" 无报错即成功。

第二步:启动多GPU张量并行推理服务

vLLM通过 --tensor-parallel-size 参数控制参与张量并行的GPU数量。
假设你有4张卡,想全部用于张量并行,启动命令如下:

python -m vllm.entrypoints.openai.api_server \
    --model /path/to/your/model \
    --tensor-parallel-size 4 \
    --gpu-memory-utilization 0.9 \
    --port 8000
  • --model:支持HuggingFace模型ID(如Qwen/Qwen2-7B-Instruct)或本地路径。
  • --tensor-parallel-size 4:告诉vLLM使用4张GPU做张量并行。
  • --gpu-memory-utilization 0.9:预留10%显存给其他进程,防止OOM。
  • --port 8000:API服务端口。

启动后观察日志,看到 INFO: Uvicorn running on http://0.0.0.0:8000 即为成功。
可以用 nvidia-smi 查看每张GPU显存均有占用。

第三步:调用API验证推理效果

vLLM兼容OpenAI API格式,用curl或Python requests测试:

curl http://localhost:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "/path/to/your/model",
    "messages": [{"role": "user", "content": "你好,请介绍一下张量并行"}],
    "temperature": 0.7,
    "max_tokens": 200
  }'

返回结果中 usage 字段会显示 prompt_tokenscompletion_tokens,说明推理正常执行。

避坑指南:新手最常遇到的三个问题

1. CUDA out of memory 显存不足

  • 降低 --gpu-memory-utilization 到0.8或更低。
  • 减少 --max-model-len(默认4096),例如设置 --max-model-len 2048
  • 确认模型实际大小与显存匹配:7B模型约需16GB,13B约需32GB,70B需更大显存。

2. 张量并行生效但性能提升不明显

  • 检查PCIe带宽:nvidia-smi topo -m 查看GPU拓扑,如果跨NUMA或使用CPU通信会慢。
  • 小批量请求时张量并行优势不大,建议压测时 num_prompts=100 以上。

3. 模型不支持张量并行

  • 部分HuggingFace模型实现未适配from_pretraineddevice_map="auto",vLLM内部自动处理,但不支持所有模型。建议使用主流通用架构(LLaMA、Qwen、Baichuan等)。
  • 如果报错 ValueError: This model is not supported...,可换用官方支持的模型列表中的模型。

效果验证:实测多GPU加速比

执行以下压测脚本(保存为bench.py):

from openai import OpenAI
import time

client = OpenAI(base_url="http://localhost:8000/v1", api_key="-")
prompt = "请用300字解释量子计算原理"

start = time.time()
for _ in range(10):
    client.completions.create(model="/path/to/model", prompt=prompt, max_tokens=500)
end = time.time()

print(f"平均请求耗时: {(end-start)/10:.2f} 秒")

对比单GPU(--tensor-parallel-size 1)和多GPU的结果。
一般来说,2卡张量并行可获得1.6-1.9倍加速,4卡约2.5-3.5倍(受通信开销影响)。

常见问题FAQ

Q:vLLM必须使用张量并行才能用多卡吗?
A:不是。vLLM还支持流水线并行(--pipeline-parallel-size),但张量并行更常用且延迟更低。对于小型模型(如7B以下),单卡即可,多卡建议直接用张量并行。

Q:能不能动态调整张量并行卡数?
A:不能。启动时指定--tensor-parallel-size后即固定;若需更改必须重启服务。

Q:使用两卡时显存利用不均匀怎么办?
A:可能是模型切分后各层大小差异导致。vLLM内部做了负载均衡,差异在10%以内正常。如果差距过大,检查驱动或CUDA版本。

---

如果你在执行过程中遇到其他问题,建议先检查日志中的 ERROR 行,并确认模型路径和参数拼写。
vLLM官方文档和GitHub Issues是很好的排错资源。
祝你部署顺利!

分享到:
上一篇
LangChain本地RAG私有知识库住宅服务器部署
下一篇
bit/8bit模型量化显存占用极致优化方案
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意