大模型推理的分布式部署:张量并行、流水线并行与数据并行的组合策略
大模型推理的分布式部署:张量并行、流水线并行与数据并行的组合策略
当模型参数量突破千亿,单张 H100 的 80GB 显存放不下一个 Layer 的权重时,分布式推理就不是"可选项"而是"必选项"。但并行策略的选择从来不是非此即彼——张量并行切割了模型,流水线并行切割了层,数据并行切割了请求。三者如何组合,直接决定推理吞吐和延迟的上限。
一、三种并行范式的数学本质
1.1 张量并行(Tensor Parallelism, TP)
张量并行的核心思想是将单个 Transformer 层内的权重矩阵切分到多个 GPU 上并行计算。对于一个 [hidden_size, intermediate_size] 的前馈网络权重矩阵 W,TP 沿列方向切分为 W₁ 和 W₂:
Y = GeLU(X · W) = GeLU(X · [W₁ || W₂]) = [GeLU(X·W₁) || GeLU(X·W₂)]
TP 的通信发生在每次前向传播中——每个 GPU 计算的结果需要 All-Reduce 汇总。对于 N 张 GPU 的 TP,每次前向传播的通信量约为 4 × hidden_size² × N。这决定了 TP 只能在 高带宽的 NVLink 域内 使用,跨节点 TP 的 PCIe/NVSwitch 延迟会导致通信开销吃掉所有并行收益。
1.2 流水线并行(Pipeline Parallelism, PP)
PP 将模型的层序列切分成多个 Stage,每个 Stage 部署在一组 GPU 上。Micro-batch 流水线执行,不同 Stage 同时处理不同的 Micro-batch。
PP 的通信只发生在 Stage 边界,通信量是 batch_size × hidden_size,远小于 TP。但 PP 引入了"气泡"(Bubble)——流水线填充和排空阶段,部分 GPU 处于空闲状态。气泡占比近似为 (P-1) / M,其中 P 是 Stage 数,M 是 Micro-batch 数。
1.3 数据并行(Data Parallelism, DP)
DP 最简单:每个 GPU 有一份完整的模型副本,处理不同的输入数据。反向传播后通过 All-Reduce 同步梯度。推理场景下 DP 没有梯度同步开销,只需在负载均衡层分发请求。
1.4 通信开销对比
| 并行策略 | 通信量量级 | 通信频率 | 适宜拓扑 |
|---|---|---|---|
| TP | O(hidden² × N) | 每层 | NVLink 域内 |
| PP | O(batch × hidden) | 每Stage边界 | 跨节点 |
| DP | O(参数总量) | 每Step(训)/0(推) | 任意 |
在推理场景的具体架构中,用户请求首先经过负载均衡器分发至不同的 GPU 组,每个组维护一份完整的模型副本以实现请求级并行。而在单个 GPU 组内部,则进一步采用 TP 与 PP 的组合策略:TP 负责层内切分,利用 NVLink 互联进行高速通信;PP 则负责跨 Stage 的边界通信,例如将模型分为 Layer 0-15 和 Layer 16-31 两个阶段。这种分层架构确保了在负载均衡层分发请求的同时,组内能高效利用 NVLink 带宽处理张量并行,并通过流水线并行管理内存与计算负载。
二、TP+PP 组合配置:GPU 拓扑感知的决策
2.1 八卡节点的最佳实践
典型的 8×H100 节点(NVLink 全互联),推荐配置:
- 70B 以下模型:TP=4, PP=2。TP 在 4 张卡内通过 NVLink 高速通信,PP 的 2 个 Stage 各占 4 张卡
- 70B~130B 模型:TP=8, PP=1。全节点作为一个 TP 组,利用全部 NVLink 带宽
- 130B+ 模型:TP=8, PP=2(跨节点)。引入跨节点通信,需要 InfiniBand 或 RoCE 网络
关键配置原则:TP 优先填满 NVLink 域。跨 NVSwitch 的 TP 通信延迟是域内的 3-5 倍,收益急剧下降。
2.2 多机多卡的调度策略
多节点部署时,调度器需要同时考虑:
- 亲和性:同一 TP 组的 GPU 尽量在同一节点
- 碎片整理:避免 GPU 资源碎片化——大模型推理任务应优先调度到空闲度高的节点
- 故障域:同一模型的不同 DP 副本应分布在不同节点,避免单节点故障导致全部副本不可用
# GPU拓扑感知调度伪代码
class TopologyAwareScheduler:
def schedule(self, model_config, available_gpus):
"""
根据模型配置和可用GPU列表计算最优并行策略。
Args:
model_config: 含model_size_gb, num_layers, hidden_size字段
available_gpus: 可用GPU列表,含node_id, nvlink_group字段
Returns:
ParallelConfig: TP=?, PP=?, 每GPU分配的层范围
"""
# Step 1: 确定最小TP——单GPU能否装下一个Layer
layer_memory = model_config.hidden_size * model_config.hidden_size * 4 * 4 / (1024**3)
min_tp = max(1, int(layer_memory / 70)) # 假设单GPU 70GB可用显存
# Step 2: 在NVLink域内尽量使用更大的TP
nvlink_groups = self._group_by_nvlink(available_gpus)
best_config = None
best_throughput = 0
for tp in [1, 2, 4, 8]:
if tp < min_tp:
continue
pp = (model_config.num_layers * tp) // (tp * 4) # 每GPU 4层的经验值
pp = max(1, pp)
# 评估通信开销和吞吐量
comm_cost = self._estimate_communication(tp, pp, nvlink_groups)
throughput = self._estimate_throughput(tp, pp, model_config)
if throughput - comm_cost > best_throughput:
best_throughput = throughput - comm_cost
best_config = ParallelConfig(tp=tp, pp=pp)
return best_config
三、推理延迟的理论下界分析
理解延迟的理论下界是判断"是否还有优化空间"的基础。
对于一次 Prefill-Decode 两阶段的推理请求:
- Prefill 阶段延迟下界 =
模型总FLOPs / (GPU数 × 单GPU理论TFLOPS × 利用率)。H100 的 BF16 理论峰值约 989 TFLOPS,大模型推理的实际利用率通常在 45-60% - Decode 阶段延迟下界 =
num_tokens × (2 × 参数量 × 带宽) / 显存带宽。Decode 是显存带宽受限的(Memory-Bound),而非计算受限
这意味着:优化 Prefill 延迟靠加 GPU 和 TP,优化 Decode 延迟靠提高显存带宽和 KV Cache 管理。
关键洞察:对于交互式对话场景(Decode 为主),TP 超过 NVLink 域后几乎无收益。因为 Decode 每步的计算量很小(一次矩阵-向量乘法),通信延迟完全支配了总延迟。
四、生产环境的关键实践
4.1 KV Cache 的分布式管理
多 GPU 推理时,KV Cache 的分布直接决定了 Decode 阶段的通信模式。vLLM 的 PagedAttention 机制在 TP 场景下需要额外考虑:每个 KV Block 在 TP 组内是分片存储的,Attention 计算时需要 All-Reduce。
4.2 连续批处理与并行策略的交互
Continuous Batching 在预填充阶段可以混合处理不同长度的请求,但 PP 场景下会因为 Micro-batch 的填充/排空引入额外的调度复杂度。需要在吞吐量和延迟之间做权衡——更多 Micro-batch 减少气泡但增加端到端延迟。
4.3 监控指标体系
分布式推理需要建立三个维度的监控:
- GPU 维度:SM 利用率、显存带宽利用率、NVLink 带宽利用率
- 模型维度:每 Token 延迟(TTFT/TPOT)、Token 吞吐量、批处理效率
- 请求维度:队列等待时间、端到端延迟、首 Token 延迟
报警规则以"用户体验"为锚点:首 Token 延迟超过 2 秒报警,端到端延迟超过 30 秒报警,批处理效率低于 60% 报警。
五、总结
分布式推理的并行策略选择是一个"非凸优化"问题——不存在全局最优解,只有给定硬件拓扑和模型规模下的局部最优。
核心决策框架是三句话:TP 解决"单层放不下",PP 解决"全部层放不下",DP 解决"请求太多处理不过来"。实际部署中,先用 TP 填满 NVLink 域,再用 PP 跨节点扩展容量,最后用 DP 扩展吞吐——这是一个"由内向外"的扩展路径。
未来随着 NVLink 带宽的持续增长(Blackwell 的 NVLink 6 已达 1800GB/s),TP 的应用范围将进一步扩大。但跨节点 PP 的气泡问题短期内没有根本性突破——气泡占比的控制仍然依赖于 Micro-batch 数量的增加,而这与延迟优化天然矛盾。
本文的延迟分析基于 Transformer Decoder-Only 架构,Encoder-Decoder 模型的通信模式有所不同。
更多推荐




所有评论(0)