人人都会AI编程

23.5 分布式推理:多卡推理、大模型分片部署

更新时间:2026-07-09

在第 22 章中,我们已看到量化、KV 缓存、投机采样等单卡优化手段如何将一个 70B 模型塞进消费级显卡。但当模型规模进一步增大(如 Llama 3.1 405B)、要求不牺牲精度的实时高并发,或需要在单个请求中处理超长上下文时,单卡显存与带宽的物理上限就变成了硬瓶颈。这时就必须引入分布式推理——将模型的计算与存储任务拆分到多张 GPU 甚至多台服务器上并行完成

本节从工程实践角度出发,回答三个核心问题:什么时候必须多卡?多卡怎么“分”模型?以及具体怎么部署。


一、为什么单卡不够?三条硬约束

在决定是否需要分布式推理之前,先看单卡推理的三道物理墙:

| 约束维度 | 典型瓶颈 | 触发条件 |
|---------|----------|---------|
| 显存容量 | 无法放下模型权重 + KV Cache | 70B 模型 FP16 权重 ≈ 140 GB,超过 H100 单卡 80 GB |
| 显存带宽 | Token 生成速度受限 | 权重读取成为流水线瓶颈,延迟不可接受 |
| 计算吞吐 | 并发请求时 GPU 利用率打满 | 大量用户同时请求,单卡 Compute 不足 |

量化(INT4/INT8)可以缓解显存压力,但会引入精度损失;高并发下还需吞吐保障。这正是分布式推理的主场。


二、核心并行策略:把模型“拆”到多卡上

与分布式训练类似,分布式推理也有三种基础切分方式。但因为推理没有反向传播和梯度同步,通信模式远比训练简单,重点在前向计算的拆分与负载均衡

1. 张量并行(Tensor Parallelism, TP)

原理:将单层 Transformer 中的权重矩阵横向切分到多张 GPU 上。例如自注意力的 Q/K/V 投影矩阵按列切分,每张卡负责矩阵乘法的一部分,最后通过 AllReduce 汇总结果。

适用场景

  • 模型单层太大,一张卡的显存放不下权重或中间激活;
  • 对延迟敏感:TP 是层内并行,不增加推理步数,延迟几乎不变。

局限

  • 需要在每层结束后进行 GPU 间通信(AllReduce),通信量较大,要求高带宽互联(NVLink/NVSwitch,至少 PCIe 4.0 x16);
  • 跨节点 TP 通信开销陡增,通常只限单机内多卡(如 tp_size ≤ 8 台同一节点内的 GPU)。

2. 流水线并行(Pipeline Parallelism, PP)

原理:将模型的不同层分配给不同 GPU。GPU0 负责第 1–5 层,GPU1 负责第 6–10 层,以此类推。前向计算时,中间激活通过点对点通信传递给下一阶段。

适用场景

  • 模型总显存占用远超单卡,但单层不大——常见于极深模型(如 100+ 层的超大 Dense 模型);
  • 跨节点部署:PP 每次只传一小块激活张量,对带宽要求低于 TP,可以跑在 InfiniBand 甚至高性能以太网上。

局限

  • 流水线气泡(Bubble):最先的卡处理完第一个 Micro-batch 后需等待后续卡完成,GPU 利用率会下降。可以通过 Micro-batch 并发(将请求切为更小批次交错处理)大幅缓解。
  • 延迟略增:多个阶段串行会导致端到端延迟增大,但吞吐量可通过 Micro-batch 补偿。

3. 数据并行(Data Parallelism, DP)——推理中的特殊形态

训练时的 DP 是每张卡复制完整模型,推理则在模型能单卡放下时才有意义。此时可启动多个模型副本,由前端负载均衡器将不同请求分发给不同副本,实现横向扩展

当模型需要 TP/PP 时,DP 与模型切分结合形成混合并行:先在单机内用 TP 切成一个副本,再复制多个“多卡副本组”,对外统一服务。


三、主流框架中的分布式推理实现

实际部署不需要手写 NCCL 通信。以下三个主流推理框架已内置上述并行策略,只需配置参数即可。

1. vLLM 的分布式推理

vLLM 原生支持 TP,配置极其简单:

# 启动命令示例:使用 4 张 GPU,张量并行度=4
python -m vllm.entrypoints.api_server \
  --model meta-llama/Llama-3.1-70B \
  --tensor-parallel-size 4 \
  --dtype auto

vLLM 会自动将模型的每层权重切割到 4 张卡上,并管理中间激活的通信。配合其 PagedAttention 内存管理,即使 KV Cache 占用极大也能高效跨卡协调。

适用限制:仅限单节点内 TP,不支持跨节点流水线。因此需要单节点 4/8 卡物理机能装下全部权重。

2. DeepSpeed Inference

DeepSpeed 提供更灵活的混合并行,尤其在跨节点场景下有优势。

核心配置:通过 JSON 文件指定 tensor_parallelpipeline_parallel 组合。

{
  "train_batch_size": 1,
  "tensor_parallel": {
    "size": 2   // 每节点内 TP=2
  },
  "pipeline_parallel": {
    "size": 4   // 4 个流水线阶段
  }
}

DeepSpeed 还支持 ZeRO-Inference(主要针对训练中的推理,但也可用于纯推理),利用 CPU/NVMe 做权重卸载,进一步降低对 GPU 显存的需求。对于缺乏多卡集群的小团队,这可能是低成本部署超大模型的唯一路径。

3. TensorRT-LLM 的多卡部署

TensorRT-LLM 使用 Tensor ParallelismPipeline Parallelism 的组合,并可通过 NCCL 实现跨节点通信。它要求先构建一个 engine,命令行中指定 --world_size--tp_size--pp_size。由于 Engine 构建过程会针对具体并行拓扑进行图优化,推理效率是三者中最高的,尤其适合 NVIDIA 卡生产环境。


四、大模型分片部署实战决策树

步骤一:算清单卡能否装下

估算规则(按无量化 FP16):

  • 每 1B 参数 ≈ 2 GB 权重
  • 显存额外开销(KV Cache、激活)约占权重的 30%–60%

示例:70B 模型 → 权重 140 GB → 2×A100-80G 勉强能装,但 KV Cache 会爆。实践通常 4 卡。

步骤二:根据硬件拓扑选策略

  • 单机内多卡(最大 8×A100/H100):优先纯 TP,配置简单,延迟低。
  • 跨节点但高速 RDMA 网络(InfiniBand/RoCE):可用 PP 或 TP+PP 混合,将模型跨机切分。
  • 无高速互联或单卡环境:走量化 + DeepSpeed ZeRO-Offload,将部分权重/缓存卸载到 CPU 内存甚至 NVMe SSD。

步骤三:框架选型速查

| 场景 | 推荐方案 | 配置重点 |
|------|---------|---------|
| 单机多卡、追求低延迟高吞吐 | vLLM(纯 TP) | tensor-parallel-size |
| 跨节点、千亿级稠密模型 | DeepSpeed(TP+PP) | 混合并行 JSON 配置 |
| NVIDIA 原生、极致性能优化 | TensorRT-LLM | Engine 构建参数 |
| 显存极度受限(无多卡) | DeepSpeed ZeRO-Inference | offload 参数 |


五、实用避坑指南

  1. 通信瓶颈是主要杀手:TP 每层都做 AllReduce,务必确保 GPU 间用 NVLink(单机)或至少 100G+ RDMA(跨机)。不是插几块 4090 就能把 405B 跑起来,消费级显卡缺乏高速互联和充裕显存。
  1. 不一定要分布式:先尝试量化:70B INT4 约 35 GB,单张 A100-80G 或 RTX 6000 Ada 可跑。分布式会增加延迟和运维复杂度,只在量化精度不可接受或模型确实太大时才用。
  1. 别让 KV Cache 毁了你的规划:长上下文(如 128K token)下,KV Cache 可能比权重还大。计划显存时必须一并估算,并在 vLLM 等框架中设置合理的 max_model_lengpu_memory_utilization
  1. 推理和训练的并行策略并不等同:推理无梯度和优化器状态,不需要 ZeRO-1/2/3 中的多数优化。直接用 TP/PP 就够了,不用复刻训练的 3D 并行全套。
  1. 监控 GPU 利用率和显存分布:部署后务必用 nvidia-smi 或 Prometheus + DCGM 检查各卡间的计算是否均衡。流水线并行中若出现“一头沉”(前面阶段负载远高于后面),需调整切片层数或 Micro-batch 参数。

六、小结

分布式推理的本质,是当单卡物理极限无法容纳“模型+上下文”时,通过张量并行横向切层、流水线并行纵向切层、数据并行横向扩展副本的工程手段。如今主流推理框架已将其高度封装:单机多卡用 vLLM 或 TGI 开箱即用,跨节点超大模型用 DeepSpeed 组合拳,追求极致用 TensorRT-LLM 自建 Engine

掌握这节内容后,再看 23.1–23.4 节中的单框架部署就有了“可扩展”的底气。在下一节 24.1 中,我们将换一个视角,从应用开发者的需求出发,探讨如何让部署好的推理服务“听人话”——进入提示工程的核心实战原则。