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_tokens 和 completion_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_pretrained的device_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
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意