硬件

双卡/多卡推理:张量并行入门与坑

GrokCode 品牌专题:双卡/多卡推理:张量并行入门与坑。 锚点:GPU。

双卡/多卡推理:张量并行入门与坑

在多卡环境中运行大型大模型时,张量并行是让显存利用率最大化的关键技术。它让每个 GPU 负责模型部分参数,通过 All-Reduce 操作同步梯度,实现端到端计算。当你有 2 张或更多独立显卡时(双卡服务器或多卡工作站),张量并行特别适合你:单卡可能爆显存、速度慢,而多卡能显著降低延迟、提升吞吐。

谁适用?

  • 运行 70B+ 模型(Llama 3.1 70B、Qwen2.5-72B、DeepSeek-V3 等)
  • 需要高吞吐的本地推理或批量服务
  • 显卡总显存充足、NCCL 通信稳定(推荐 NVLink 或高速网络)

怎么决策? 先看显存需求:模型参数量 / 16 字节(FP16) > 单卡显存时必须张量并行。决策表如下:

GPU 卡数模型参数规模(B)单卡显存需求(GB)推荐策略典型速度提升(vs 单卡)
232–7032–64张量并行(TP=2)1.8–2.2 倍
2100+80+张量并行 + 混合精度2.0–2.5 倍
470–13032–64张量并行(TP=4)3.5–4.0 倍
870–40516–50张量并行(TP=8)6.0–7.0 倍

数据以官方 vLLM 文档及 NVIDIA 2025 年底标准为准。

张量并行的核心概念与术语

张量并行(Tensor Parallelism)是模型并行范式之一,核心是把模型的权重张量沿深度方向切分给不同 GPU。

  • 张量并行 (Tensor Parallelism):沿模型层数(hidden dimension)分割权重矩阵和激活张量。
  • 分片 (Sharding):每个 GPU 只持有部分参数。
  • All-Reduce:梯度同步操作,在多卡间全局归约。
  • 流水线并行 (Pipeline Parallelism):与张量并行组合使用,加速激活张量的流动。
  • All-Gather:数据分发给所有 GPU。
  • Zero Redundancy(ZeRO):张量并行常搭配 ZeRO-1/2/3,节省显存。

这些都是 vLLM、DeepSpeed 和 Hugging Face Accelerate 中标配实现。

实操清单:分步可核对

  1. 确认硬件:每张卡 ≥ 24GB 显存,NCCL 版本 >= 2.20,CUDA 12.4+。
  2. 安装依赖:pip install vllm(vLLM 已原生支持张量并行)。
  3. 启动命令示例(Llama-3.1-70B,2 卡 TP=2):

``bash vllm serve meta-llama/Meta-Llama-3.1-70B-Instruct \ --tensor-parallel-size 2 \ --gpu-memory-utilization 0.85 \ --max-model-len 8192 \ --port 8000 ``

  1. 验证:curl http://localhost:8000/v1/models 看到模型已分片。
  2. 监控:使用 nvidia-smi 或 vLLM 自带监控页面,确认各卡参数分布均匀、无 OOM。
  3. 调优:调整 --pipeline-parallel-size(如果需要流水线)+ --max-num-seqs 提升并发。

以上步骤在 GrokCode /tools/local-deploy 页面有更完整的配置模板。

常见坑与风险边界

  • 显存不均导致 OOM:不同层参数大小不一致,需在配置文件中指定 --device-memory-usage 或使用 --enforce-eager。
  • 通信瓶颈:NVLink 延迟高或网络带宽不足(2x40G 网络),All-Reduce 成为主耗时点。
  • 精度损失:默认 FP16 可能因 All-Reduce 精度累积出错,推荐 --dtype float16 + --enforce-eager。
  • 内核不兼容:旧 CUDA 版本不支持张量并行,需升级显卡驱动。
  • 吞吐下降:模型太大时,All-Reduce 通信开销可能让速度反而不及单卡 + 蒸馏(边界:模型 < 40B 时单卡已足够)。

这些问题在 vLLM 官方文档和 NVIDIA 博客中都有详细排查指南。

站内路径

  • [GrokCode API 中转工具页](https://www.grokcode.cn/api-transit):查看当前中转倍率与代理节点,支持多卡推理场景。
  • [本地部署实验室](https://www.grokcode.cn/tools/local-deploy):获取完整 vLLM 张量并行配置样例和监控脚本。
  • [API 中转探测器](https://www.grokcode.cn/api-transit/detector):测试多卡环境下的实际延迟与稳定性。

风险与边界

风险:设置错误可能导致显存溢出、推理服务崩溃或模型无法启动。vLLM 张量并行依赖 NCCL 库,环境不一致可能触发内核崩溃。 边界:此方法仅适用于 2 卡及以上独立显卡推理场景,不适用于单卡或 CPU-only 部署。 非法律意见声明:以上内容基于公开技术文档和实际测试,仅供参考。实际应用请以官方 vLLM、NVIDIA 以及 GrokCode 实时数据为准,勿用于非法用途。

延伸阅读

English summary

Tensor parallelism lets multiple GPUs (especially dual or multi-GPU setups) shard large model weights across cards, dramatically reducing per-GPU memory usage while maintaining full model accuracy. It works best for models over 30B parameters when single-GPU VRAM is insufficient, pairing well with tools like vLLM and DeepSpeed. Start with 2-GPU servers using NVLink or high-speed networking to avoid communication bottlenecks in All-Reduce operations. Always monitor GPU utilization and set appropriate gpu-memory-utilization to prevent out-of-memory errors. This approach scales to 4-8 GPUs for even larger models like 70B–405B, delivering 3-7x speedups over single-card inference. Always verify hardware compatibility with latest CUDA and NCCL versions before deployment.

适用于 GrokCode 倍率榜。信息仅供参考,不构成购买、投资或法律意见。