🎯 什么是推理?

用训练好的模型生成回答

1 用户输入 Prompt
2 模型逐个生成 Token
3 输出完整回答

推理 = 只有前向传播,无反向

⚡ Prefill vs Decode

Prefill
首次计算

处理整个 Prompt

计算密集 | 高吞吐
Decode
逐 Token 生成

每次只算 1 个 Token

访存密集 | 低延迟

💾 KV Cache 是什么?

每层计算的 Key/Value 缓存:

  • Prefill 时生成并存储
  • Decode 时复用,避免重复计算
  • 占用大量显存

没有 KV Cache,每生成1个token都要重算所有

🔀 推理并行策略

🟦 TP
张量并行

Decode 通信最频繁

每个 Token 都要 AllReduce
🟪 PP
流水线并行

层间传递激活值

增加延迟,适合大模型
🟧 EP
专家并行 (MoE)

Token 路由到不同专家

All-to-All 通信

📺 本示例设定

GPU0 GPU1
Stage1: 层1-16 (TP=2)
↓ PP ↓
GPU2 GPU3
Stage2: 层17-32 (TP=2)

4GPU = TP2 × PP2

📊 关键指标

TTFT Time To First Token (首Token延迟)
TPOT Time Per Output Token (每Token延迟)
TPS Tokens Per Second (吞吐量)

GPU 推理通信流可视化

理解大模型推理中多GPU如何协作生成回答

步骤 1 / 8
Prefill 阶段
Prompt 分发 PREFILL
将用户输入的 Prompt 分发到各个 GPU
详细说明
网络挑战说明
延迟信息
Stage 1 (层1-16)
Stage 2 (层17-32)
TP AllReduce
TP AllReduce
PP
PP
All-to-All
GPU 0 TP左半
空闲
KV Cache
GPU 1 TP右半
空闲
KV Cache
GPU 2 TP左半
空闲
KV Cache
GPU 3 TP右半
空闲
KV Cache

📊 推理网络要求对比表

通信类型 网络层级 带宽要求 延迟要求 拓扑要求 典型硬件
🟦 TP Prefill Scale-up 200Gbps+ 中等 全互联 NVLink
🟦 TP Decode Scale-up 极高 400Gbps+ 极低 μs级 全互联 NVLink 900GB/s
🟪 PP Scale-out 中等 100Gbps+ 点对点 NVLink / IB
🟧 EP (MoE) Scale-out 极高 400Gbps+ Full-mesh IB 400G+ Rail-opt

💡 推理关键结论:

  • TP Decode: 每生成1个Token都需AllReduce累加部分和,是延迟关键瓶颈
  • TP Prefill: 批量处理Prompt,带宽需求高但可容忍一定延迟
  • PP: 层间传递激活值,直接影响TTFT和TPOT
  • EP: MoE推理时All-to-All路由,对bisection带宽要求极高
TP 张量并行 Decode 每 Token 通信
PP 流水线并行 层间激活值传递
EP 专家并行 MoE Token 路由

📡 NCCL 通信原语

推理场景使用说明

当前步骤使用
AllReduce 全归约 🔥 TP推理核心
Z₁
Z₂
Z
Z
TP 行并行输出是部分和(Partial Sum),必须 AllReduce 求和才能得到完整结果。Decode 每 Token 都需执行!
AllGather 全收集 输出层
A
B
AB
AB
最后输出层收集各 GPU 的 Logits 分片(Vocab Parallel)进行 Top-k/Top-p 采样。仅输出层使用。
All-to-All 全交换 🔥 MoE核心
A₁A₂
B₁B₂
A₁B₁
A₂B₂
MoE 推理时 Token 路由到对应专家。需要 Full-mesh 拓扑 和高 bisection 带宽。
Send / Recv 点对点
A
-
-
A
PP 流水线层间传递激活值。推理时影响 TTFT 和每层延迟。
Broadcast 广播 🔥 输入分发
X
-
X
X
标准 TP 模式:输入 Token 广播到所有 GPU,每个 GPU 用完整输入计算自己负责的 Q/K/V 分片。
Scatter 分发 SP模式
ABCD
-
AB
CD
序列并行(SP)模式才会 Scatter 切分序列。纯 TP 模式不涉及输入切分。
Gather 收集
A
B
AB
-
输出收集时将各 GPU 生成的 Token 汇总。
Broadcast 采样广播
TokenID
-
TokenID
TokenID
采样后广播:Decode 采样后将选中的 Token ID 广播给所有 GPU 用于下一轮计算。
⬇️ 以下原语主要用于训练
ReduceScatter 归约分发 训练常用
ABC
ABC
ABC
A×3
B×3
C×3
先归约再分发。训练时用于 TP 反向传播梯度汇总,推理无需此操作。
Reduce 归约 训练常用
1
2
3
6
-
-
所有GPU数据汇总到一个GPU。训练时用于梯度收集,推理通常不需要。