双卡/多卡推理:张量并行入门与坑
GrokCode 品牌专题:双卡/多卡推理:张量并行入门与坑。 锚点:GPU。
Full article body is primarily in Chinese for SEO depth; key points above are localized. Use the language switcher and deep links for global navigation.

双卡/多卡推理:张量并行入门与坑
在多卡环境中运行大型大模型时,张量并行是让显存利用率最大化的关键技术。它让每个 GPU 负责模型部分参数,通过 All-Reduce 操作同步梯度,实现端到端计算。当你有 2 张或更多独立显卡时(双卡服务器或多卡工作站),张量并行特别适合你:单卡可能爆显存、速度慢,而多卡能显著降低延迟、提升吞吐。
谁适用?
- 运行 70B+ 模型(Llama 3.1 70B、Qwen2.5-72B、DeepSeek-V3 等)
- 需要高吞吐的本地推理或批量服务
- 显卡总显存充足、NCCL 通信稳定(推荐 NVLink 或高速网络)
怎么决策? 先看显存需求:模型参数量 / 16 字节(FP16) > 单卡显存时必须张量并行。决策表如下:
| GPU 卡数 | 模型参数规模(B) | 单卡显存需求(GB) | 推荐策略 | 典型速度提升(vs 单卡) |
|---|---|---|---|---|
| 2 | 32–70 | 32–64 | 张量并行(TP=2) | 1.8–2.2 倍 |
| 2 | 100+ | 80+ | 张量并行 + 混合精度 | 2.0–2.5 倍 |
| 4 | 70–130 | 32–64 | 张量并行(TP=4) | 3.5–4.0 倍 |
| 8 | 70–405 | 16–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 中标配实现。
实操清单:分步可核对
- 确认硬件:每张卡 ≥ 24GB 显存,NCCL 版本 >= 2.20,CUDA 12.4+。
- 安装依赖:
pip install vllm(vLLM 已原生支持张量并行)。 - 启动命令示例(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 ``
- 验证:
curl http://localhost:8000/v1/models看到模型已分片。 - 监控:使用
nvidia-smi或 vLLM 自带监控页面,确认各卡参数分布均匀、无 OOM。 - 调优:调整
--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 倍率榜。信息仅供参考,不构成购买、投资或法律意见。