分布式 Serving 数学
核心定位:系统性推导 Tensor Parallelism (TP)、Pipeline Parallelism (PP)、Data Parallelism (DP)、Expert Parallelism (EP) 在推理场景下的通信代价、显存分摊和延迟模型。基于 α-β 通信模型给出精确的公式推导,并分析各策略的适用场景与组合方案。
1. 并行策略总览
TP (Tensor Parallel)
层内 Weight 切分
All-Reduce
$2$
单机多卡,延迟敏感
PP (Pipeline Parallel)
层间切分
Point-to-Point
$1$(层间)
多机,带宽有限
DP (Data Parallel)
Batch 切分
无(推理时)
$0$
多副本扩容
EP (Expert Parallel)
MoE Expert 切分
All-to-All
$2$
MoE 模型
SP (Sequence Parallel)
序列维度切分
All-Gather / RS
$2$
超长序列
2. α-β 通信模型
所有通信操作都可以用延迟-带宽模型描述:
典型量级可以直接记成:
$\alpha$(启动延迟):NVLink 约 $1\ \mu\mathrm{s}$,IB 跨机约 $10$ 到 $50\ \mu\mathrm{s}$,PCIe 约 $5\ \mu\mathrm{s}$。
$\beta$(每字节传输时间):NVLink 约 $0.0011\ \mu\mathrm{s}/\mathrm{B}$(约 $900\ \mathrm{GB/s}$),IB 约 $0.02\ \mu\mathrm{s}/\mathrm{B}$(约 $50\ \mathrm{GB/s}$),PCIe 约 $0.03\ \mu\mathrm{s}/\mathrm{B}$。
如果想把它写成更适合推导的形式,可以分别表示为:
关键结论:
小消息(Decode,$T=1$):受 $\alpha$ 主导,多卡反而可能更慢。
大消息(Prefill,$T$ 大):受 $\beta$ 主导,多卡能有效分摊。
3. Tensor Parallelism (TP) 详解
3.1 切分策略
将每层的权重矩阵沿列(或行)切分到 $P$ 张卡上:
Attention 层
$W_Q, W_K, W_V$ 按列切分,各卡计算不同 Head;$W_O$ 按行切分。
FFN 层
对于 SwiGLU,$W_{\text{gate}}, W_{\text{up}}$ 按列切分,$W_{\text{down}}$ 按行切分。
每层需要 2 次 All-Reduce(Attention 后一次,FFN 后一次)。
3.2 All-Reduce 通信量
Ring All-Reduce 的延迟近似为:
每次 All-Reduce 的数据量为:
3.3 每层总通信量
全模型:
3.4 显存分摊
每张卡的权重显存:
KV Cache 按 Head 自然分配到各卡(GQA 下每卡 $H_{\text{KV}} / P$ 个 KV Head)。
3.5 TP 的加速极限
Decode 阶段($T = 1$)的 All-Reduce 延迟由 $\alpha$ 主导。假设单次 All-Reduce 延迟为 $T_{\text{AR}} \approx 5 \mu$s(NVLink),则:
以 $L = 80$(70B 模型):$T_{\text{comm_overhead}} = 160 \times 5 \mu$s $= 0.8$ ms。
与 TPOT $\approx 5$–$10$ ms 相比,通信开销约 $8$–$16%$——可接受但不可忽略。
4. Pipeline Parallelism (PP) 详解
4.1 切分策略
将 $L$ 层分为 $P_{\text{PP}}$ 个 Stage,每个 Stage 包含 $L / P_{\text{PP}}$ 层。
4.2 通信量
Stage 之间传递激活值:
通信频率低(仅在 Stage 边界,而非每层),但受限于跨机带宽。
4.3 气泡率(Bubble Ratio)
推理时(自回归 Decode),每步只有 1 个 token,Pipeline 中只有一个 Stage 在工作,其余空闲:
以 $P_{\text{PP}} = 4$:$\text{Bubble} = 75%$——极其浪费!
结论:PP 在 Decode 阶段效率极差,应尽量用 TP 替代。PP 更适合 Prefill 阶段(可通过 Micro-batch 填充 Pipeline):
5. Expert Parallelism (EP) 详解
5.1 切分策略
将 $E$ 个 Expert 分配到 $P_{\text{EP}}$ 张卡上,每张卡 $E / P_{\text{EP}}$ 个 Expert。
5.2 All-to-All 通信
每个 MoE 层需要 2 次 All-to-All。
Dispatch
每张卡将 token 路由到持有目标 Expert 的卡。
Combine
Expert 计算完成后再将结果返回原始卡。
每次 All-to-All 的数据量(最坏情况):
5.3 负载不均衡
若路由不均匀,部分卡过载、部分卡空闲。等效延迟取决于最慢的卡:
训练时通过辅助损失 $\mathcal{L}_{\text{balance}}$ 缓解,推理时需要 Token Dropping 或 Capacity Factor 控制。
6. 跨卡 KV Cache 迁移分析
在 Prefill-Decode 分离或请求迁移场景下,需要传输 KV Cache:
迁移决策准则:
其中 $\text{Benefit}{\text{reuse}}$ 是避免重算的收益,$T{\text{comm}}$ 是传输延迟,$T_{\text{reindex}}$ 是页表重映射开销。
对短序列请求,迁移通常不划算(传输成本 > 重算成本)。
7. 典型部署配置
7B
1× A100
1
1
—
单卡可放下
70B (BF16)
4× A100
4
1
—
权重 140 GB,4 卡 TP
70B (INT4)
1× A100
1
1
—
权重 35 GB,单卡
Mixtral 8×7B
2× A100
2
1
2
TP 切 Attention,EP 切 Expert
405B
8× H100
8
1
—
全 TP
8. 多副本负载均衡
8.1 Join-the-Shortest-Queue (JSQ)
8.2 预测负载
考虑已有请求的剩余生成长度:
将新请求分配到 $\text{EstimatedLoad}$ 最小的副本。
面试一句话
"分布式推理的上限由通信决定,不是纯算力。TP 减延迟但每层需要 All-Reduce,Decode 时 $\alpha$ 主导;PP 省通信但有气泡,Decode 时气泡率高达 $(P-1)/P$。实际部署以 TP 为主,跨机再加 PP/EP。"
最后更新于