1757 字
约 5 分钟
8
S23-J02 · 分布式推理:PD 分离、DOPD 与 AFD

适用读者:要决定"推理服务怎么部署、要不要拆"的平台/架构工程师。
前置:S23-J01(prefill/decode 与两个指标)、S17(服务部署与容量)。
覆盖旧文:A-1988 → 18 点(PD 分离、DOPD、AFD、MoE 跨机与 DeepEP)。
扩展点:E-S23-003(PD 分离的收益条件)、E-S23-004(DOPD 的监控三指标)、E-S23-005(AFD 的硬件搭配判据)。
上一篇:S23-J01 · 推理的两段与两个指标:MoE、prefill/decode、TTFT/TPOT
下一篇:S23-J03 · 训推分离与协同设计。


1. 一句话结论

PD 分离的本质是"把两种负载从互相干扰变成可独立配置":prefill 吃算力、decode 吃带宽,混部时任何一方扩容都会浪费另一方。分离后能分别调 TTFT / TPOT,代价是多了一次 KV 传输与一套调度器。

方案 收益 代价
混部(PD 同实例) 部署简单、无 KV 传输 两种负载互相干扰;扩容只能整体扩
PD 分离 独立优化 TTFT/TPOT;同等资源承载更多请求 KV 传输、调度复杂、混合长度下失衡
PD + 动态调度(DOPD) 应对负载波动 需要监控 + 路由 + 扩缩容组件
AFD(Attention/FFN 再分离) 按硬件特性配比,降成本 更细的切分 → 更多通信

2. PD 分离与 DOPD(§2)

原文的事实链(DistServe 论文首次提出):

  1. prefill 与 decode 资源需求不同 → 拆开部署(不同设备或同机不同 GPU);
  2. 好处:避免相互干扰,独立优化 TTFT 与 TPOT;论文实验与大规模实践显示"同样资源承载更多请求,或同等请求响应更快";
  3. 代价:混合长度请求下出现"生产者—消费者失衡"——P 实例产 KV 的速度与 D 实例消费的速度不匹配,导致部分实例过载、部分闲置;
  4. 解法:DOPD 动态调整 P/D 实例数量,靠"资源监控 + 请求路由 + KV 通信"三件套实现自动扩缩容。

2.1 收益条件(E-S23-003)

不是所有场景都该拆。 四条判据,全部满足才划算:

判据 满足的标志 不满足的后果
请求足够多 稳态 QPS 能填满至少一组 P 与一组 D 拆完两边都吃不饱
输入/输出比例稳定或可预测 有历史分布(如平均输入 2k、输出 300) 比例漂移 → 失衡更严重
KV 传输成本可接受 同机/同超节点内可走高速互联 跨机房传 KV → 延迟吃掉收益
有调度与监控能力 能观测 P/D 队列深度并自动扩缩 手工调 → 永远滞后于负载

反向指标:如果 P95 的 TTFT 与 TPOT 同时偏高,混部通常是瓶颈在总容量;此时先扩容,而不是拆。

2.2 DOPD 的监控三指标(E-S23-004)

指标 含义 阈值示例(示意)
P 实例队列深度 待处理 prefill 请求数 持续 > 2× 均值 → 扩 P
D 实例 KV 等待时间 decode 等 KV 就绪的时长 P95 > TPOT 的 20% → 扩 P 或迁 D
KV 传输带宽利用率 互联是否成为新瓶颈 > 70% → 拆分收益见顶

判据:扩缩容动作必须先于用户可感知的延迟劣化(即用队列深度触发,而不是等 TTFT 报警)。


3. AFD:把 Attention 与 FFN 也拆开(§3)

原文的推理链:既然 prefill/decode 能拆,decode 内部的 Attention(访存密集) 与 FFN(计算密集) 也能拆——Step-3 论文的 AFD 架构即此。

模块 瓶颈 适配硬件(论文示例) 理由
Attention 显存带宽(读 KV) H20 一类(带宽/成本比更优) 不需要极限算力
FFN 算力 H800 一类 大矩阵乘

原文还给出一个工程含义:FFN 部分可考虑国产化硬件,"打破对高端 GPU 的单一依赖"。

AFD 的硬件判据(E-S23-005):

若 某模块 算术强度 < 硬件 roofline → 它是带宽瓶颈 → 配"带宽/价格比"高的卡
若 某模块 算术强度 > 硬件 roofline → 它是算力瓶颈 → 配"算力/价格比"高的卡

注意适用条件:AFD 的价值依赖"两类硬件价差 × 利用率提升 > 额外通信开销"。只有单一卡型时,拆开反而增加通信。


4. MoE 跨机与通信库(§4)

原文的判断:DeepSeek V3 系列约有 1.4 万个专家(全层合计),单卡/单机装不下;MoE 每次只激活少数专家,未激活专家算力闲置;跨机若用 NCCL(擅长全量密集通信)效率低,因为 MoE 只需按需传输。

项 传统做法 MoE 专用做法
通信模式 全量 AllReduce/AllGather 按需 All-to-All(路由到被激活专家)
精度 FP16/BF16 原生 FP8 通信(DeepEP)
重叠 有限 通信-计算重叠(边传边算)
网络 InfiniBand RoCE 也可(原文提到腾讯 TRMT 优化 RoCE 效率)

判据:MoE 部署的第一瓶颈是互联,不是单卡算力。 选型时先算"每 token 需要搬运多少专家权重/激活",再看互联带宽能否覆盖。

每 token 跨机传输量 ≈ 激活专家数 × 单专家参数字节 × 2(上下行,示意)
若 互联带宽 < 传输量 ÷ 期望 TPOT → 必须换拓扑或减专家并行度

5. 常见误区

误区 纠正
"PD 分离一定更快" 只在 §2.1 四条判据满足时更快;小流量下更慢
"拆得越细越好" 每拆一层多一跳通信;AFD 只在硬件异构时划算
"NCCL 万能" MoE 稀疏通信需要 All-to-All 优化(DeepEP 一类)
"MoE 省算力就等于省钱" 省的是 FLOPs,花的是显存与互联;总成本可能更高

6. 自测

  1. 你的服务输入/输出比例稳定吗?算出 P 与 D 的配比依据。
  2. 若要做 PD 分离,KV 传输走哪条链路?带宽够不够"输出 token 速率 × KV/token"?
  3. AFD 在你的硬件条件下,额外通信开销占 TPOT 的百分之几?

7. 下一篇

S23-J03 · 训推分离与协同设计 —— RL 训练的数据由推理产生,为什么必须拆、拆完的"气泡"怎么消,以及算术强度如何反过来指导模型设计。

S23-J02 · 分布式推理:PD 分离、DOPD 与 AFD
https://www.clxhxhhr.top/posts/5529/
作者
clxstart
发布于
2024-12-31
许可协议
CC BY-NC-SA 4.0
评论
0 条
还没有评论,先写一条吧。