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

为什么需要多GPU张量并行

当你部署一个参数量超过单卡显存的大模型(例如70B、130B)时,单张显卡根本塞不下。张量并行(Tensor Parallelism) 能把模型权重切分到多张GPU上,让它们协同完成推理。
vLLM作为一个高性能推理框架,原生支持张量并行,配置非常简单。
本文围绕vLLM多GPU张量并行大模型推理完整实操教程,从零开始带你在多卡服务器上跑通推理。

准备工作:硬件与软件

硬件要求

  • 至少2张NVIDIA GPU(建议同型号,显存8GB以上)
  • 显存总量需超过模型权重大小(例如70B模型FP16约140GB,你需要至少4张40GB A100)
  • 服务器需安装NVIDIA驱动、CUDA(推荐11.8或12.1)和cuDNN

软件环境

  • Python 3.8 – 3.11
  • PyTorch(建议从官网安装CUDA对应版本)
  • vLLM(最新版):pip install vllm
如果网络慢,可以换国内源:pip install vllm -i https://pypi.tuna.tsinghua.edu.cn/simple

核心操作:配置并启动多GPU推理

1. 确认GPU状态

运行 nvidia-smi 检查GPU数量和可用显存。
确保GPU之间已通过NVLink或PCIe连接,否则张量并行通信会有瓶颈。

2. 编写推理脚本

vLLM通过 LLMAsyncLLMEngine 启动。
最简便的方式是使用Python脚本。
示例文件 infer_tp.py

from vLLM import LLM, SamplingParams

# 关键参数:tensor_parallel_size 设置为GPU数量(这里假设4张)
model_path = "/path/to/your/model"  # 可以是本地路径或HuggingFace模型名
llm = LLM(model=model_path, tensor_parallel_size=4)

prompts = [
    "介绍一下张量并行的原理。",
    "用Python写一个快速排序。"
]
sampling_params = SamplingParams(temperature=0.8, max_tokens=256)
outputs = llm.generate(prompts, sampling_params)

for output in outputs:
    print(output.outputs[0].text)

关键行tensor_parallel_size=4 告诉vLLM将模型切分到4张GPU上。
如果你的服务器只有2张,改为2即可。

3. 启动推理

python infer_tp.py

首次运行会自动下载模型(如果模型在云端)并切分权重。
你会看到类似 Launching tensor parallel with size 4 的日志。

4. 使用vLLM服务模式(可选)

如果你需要HTTP API,可以用以下命令启动:

python -m vLLM.entrypoints.openai.api_server \
    --model /path/to/model \
    --tensor-parallel-size 4 \
    --port 8000

然后通过 curl 或客户端发送请求。

避坑说明:常见错误与解决

错误1:CUDA out of memory

  • 原因:单卡显存不足以放下切分后的碎片,或未正确设置 tensor_parallel_size
  • 解决:检查模型是否太大,减少 max num batched tokens 或使用更小的精度(如FP16、INT8)。在启动参数中添加 --dtype half

错误2:RuntimeError: Expected tensor to have ... 通信错误

  • 原因:GPU之间不支持P2P访问,或驱动版本不匹配。
  • 解决:运行 python -c "import torch; print(torch.cuda.is_available()); print(torch.cuda.device_count())" 确认PyTorch能识别全部显卡。再执行 torch.cuda.nccl.all_reduce 测试。如果报错,尝试设置环境变量 export NCCL_P2P_DISABLE=1(会降低性能但稳定)。

错误3:模型下载极慢

  • 解决:提前用 huggingface-cli 下载模型到本地,指定 model 参数为本地路径。

效果验证:确认多GPU真正并行工作

  1. 运行上述脚本或API服务。
  2. 另开终端执行 watch -n 1 nvidia-smi,观察所有GPU的显存使用率和计算利用率。
  3. 如果每张GPU显存占用接近 模型总权重/GPU数,且利用率均有波动,说明张量并行成功。
  4. 也可以比较单卡推理(tensor_parallel_size=1)与多卡推理的响应速度,多卡在模型足够大时会有明显加速。

常见问题解答

Q:张量并行与数据并行有什么区别?
A:数据并行把不同batch分给各卡,每卡存完整模型;张量并行把模型切分,每卡只存一部分权重,适合单batch推理。

Q:我的模型不支持vLLM怎么办?
A:vLLM目前支持大多数HuggingFace上常见的Transformer架构(如Llama、Mistral、Qwen)。如果无法加载,参考官方文档检查支持列表。

Q:多GPU推理显存反而比单卡高?
A:张量并行会引入额外通信缓冲区,显存略有增加(约5-10%),但单卡放不下的模型只有多卡才能跑。

小结

本文以vLLM多GPU张量并行大模型推理完整实操教程为主线,从环境准备、核心参数设置到常见错误排查,给出可直接运行的步骤。
实际操作时,建议先从2卡开始测试,确认环境稳定后再扩展到更多GPU。
遇到异常时优先回看上文的避坑说明,大部分问题都能解决。
如果你正在处理类似的部署需求,按本文流程走一遍,多GPU推理不会太复杂。

分享到:
上一篇
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 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意