Chengshu@skadai · 2026.09.30
1,418 字 · 344 词 · 约 5 分钟

并行三兄弟:TP / DP / EP(DEP)

一张卡装不下 511 GB 时必须切,但切法有三种:TP 切层内权重(每层都要通信)、DP 复制模型切数据(不省显存)、EP 把专家分卡(all-to-all)。对比 H200 / MI355X / MI325X / Blackwell 的默认配置,看同一份模型为什么在不同卡上得出完全不同的答案,以及 DEP 一次性打开了哪四样东西。

本篇属于系列 关于deepseek部署你要知道的一切 · 第 11 篇

来源:vLLM Recipes · deepseek-ai/DeepSeek-V4.1-Flash(页面标注 Updated 2026-09-20)

说明 本文是系列《关于deepseek部署你要知道的一切》的第 11 篇,面向只熟悉 vanilla transformer 的读者,把官方页面里的术语逐个拆开解释。文中所有数字、参数与命令均来自上述页面,未作独立核实。

一句话结论

一张卡装不下 511 GB,所以必须切——但“切”有三种完全不同的切法: TP 切每一层的权重(每层都要跨卡通信)、DP 复制整个模型、切数据(不解决装不下的问题)、 EP 把专家分给不同的卡(MoE 专用,用 all-to-all 通信换容量)。 DEP = 数据并行 + 专家并行,是 Blackwell 上官方推荐的做法。 选哪种,本质上是在“显存够不够”和“通信贵不贵”之间做交易——所以同一份模型在不同卡上的默认配置完全不同。

三种切法,三张图

TP(Tensor Parallel):把每一层的权重切开,多卡合算一层
  卡0: [W 的前半]   卡1: [W 的后半]     ← 每层算完要 all-reduce 汇总,通信频繁

DP(Data Parallel):每张卡都放一整套模型,各算各的数据
  卡0: [完整模型] 数据A    卡1: [完整模型] 数据B     ← 显存没有省,吞吐翻倍

EP(Expert Parallel):把 384 个专家分给不同的卡
  卡0: [专家 1-96]   卡1: [专家 97-192] ...   ← token 要 all-to-all 送到专家所在的卡

DEP(Data + Expert Parallel):数据并行 + 专家并行拼起来

一句话记住三者的区别:TP 切“层内”,DP 切“数据”,EP 切“专家”。

为什么不能只用 DP:参数量就是答案

DP 听上去最省心——每张卡一份模型,不涉及复杂的通信模式。但它有个致命问题: 每张卡都要装下整个 511 GB 的权重。单卡 141 GB(H200)或者 288 GiB(MI355X)都装不下, 所以 DP 单独用是不可能的;必须先用 TP/EP 把权重摊开。

而 TP 的代价就写在图里:每一层算完都要跨卡汇总一次。层数越多、TP 越大,通信次数越多, 对卡间互连(NVLink / 节点内带宽)的要求越高。这就是为什么 TP 基本只在节点内做, 而官方的 PD 分离布局在 8 卡节点上从 TP4 变成 TP8(第 12 篇)——它用的是同一台机器里的卡。

TP 不是越大越好:TP 越大,单卡权重越少(好事),但通信越多(坏事)。 这个平衡点由“卡有多大”和“互连有多快”共同决定——所以各平台的默认值不一样。

顺带回顾第 3 篇的一个特例:视觉编码器(ViT)反而不做 TP,而做数据并行。 因为它只有 32 层、hidden 1024,小到“TP 的通信成本比它省下的计算还多”。 同样的取舍逻辑,在 ViT 上的答案是 DP,在主干上的答案是 TP。

各平台默认配置一览(官方页面整理)

平台 默认方案 关键数字
H200(141 GB) TP4 + Engram CPU offload 每卡 23.6 GiB 挪到主机内存,留下 81.2 GiB 常驻权重 + 38.5 GiB KV(约 2000 万 token);这个规模不需要调度器上限
MI355X(288 GiB) TP2 + Engram CPU offload Engram 表 TP4 时每卡 47.2 GiB、TP2 时 94.4 GiB;TP2 时卡上放不下,所以搬到 pinned host memory。TP2 让每台服务器 GPU 数减半,于是每节点服务器数翻倍
MI355X 若用 TP4 显存够 → 让 Engram 常驻 传 --tensor-parallel-size 4 与 --engram-config '{"cpu_offload":false}'
MI325X(256 GB) TP4 + Engram CPU offload TP4 每卡约 81 GiB 常驻权重,TP2 约 145 GiB;TP2 装得下,但KV 池是全部方案里最小的(所以默认不用)
Blackwell(B200/B300/GB200/GB300) TP2 + Engram offload,或 DEP DEP 用满硬件 GPU 数:GB200/GB300 tray 上 DEP4,B200/B300 节点上 DEP8

DEP 到底开了什么

官方对 Blackwell 的 DEP 配置列得很清楚,它一次性打开四样东西:

  • --enable-expert-parallel:把专家分到不同的卡上(这是 DEP 的本体);
  • FLASHMLA_MEGA_ATTN_DSV41:为稀疏注意力准备的专用内核(第 5 篇的机制,第 13 篇讲内核);
  • --kernel-config '{"moe_backend":"deep_gemm_mega_moe"}':指定 MoE 的计算后端;
  • --engram-config '{"embedding_across_dp":true}':Engram 的查表跨数据并行组进行—— 因为专家已经分卡了,Engram 也得跟着跨卡对齐,否则每个 DP 副本都会重复查一遍同一张表。

它还统一设置了这些(TP2 和 DEP 两种配置都设): indexer_kv_dtype: mxfp4、indexer_sparse_logits: true、--kv-cache-dtype fp8、--max-num-seqs 128, 推理统一用 --reasoning-parser deepseek_v41。

注意最后那句关于尺寸的话:官方说 TP2 下“调度器限制与工作负载相关”, 所以要按自己的服务画像去定 --max-num-batched-tokens 和 --max-cudagraph-capture-size; 而要追求高交互性(低延迟),就用 --tensor-parallel-size 4—— 卡多了通信多,但每张卡要扛的 KV 和批更少,延迟更稳。这就是同一套硬件的两种服务取向。

三个常见误解

你以为:TP 越大,速度越快。 实际上:TP 越大,单卡显存压力越小(能开更长上下文、更大批),但每层通信次数不变而数据量变化, 延迟未必更低。官方在 Blackwell 上的建议是“高交互性用 TP4”, 它在 MI355X 上却默认 TP2——因为 TP2 能换到“每节点两倍的服务器数”,这是吞吐/成本取向。

你以为:并行方案可以随便挑。 实际上:显存决定下限。H200 上不 offload Engram 就装不下 TP4;MI325X 上 TP2 能装但 KV 太小; MI355X 上 TP4 直接就能让 Engram 常驻。顺序永远是:先看卡,再看互连,再看服务取向。

你以为:EP 是“多卡版的 DP”。 实际上:EP 的通信是 all-to-all(token 要送到它选中的专家所在的卡), 和 TP 的 all-reduce 是两种完全不同的模式。这也是为什么 DEP 必须同时指定 MoE 后端和 Engram 的跨 DP 行为—— 专家分卡之后,参数的“归属”变了,配套的东西都得跟着改。

术语卡片

术语 中文 一句话定义
TP 张量并行 把每层权重切开、多卡合算一层,每层需跨卡汇总
DP 数据并行 每卡一份完整模型、各算各的数据;不解决显存不足
EP 专家并行 把 MoE 的专家分到不同卡上,token 通过 all-to-all 送达
DEP 数据 + 专家并行 DP 与 EP 的组合,Blackwell 上按 GPU 数取 DEP4 / DEP8
all-reduce / all-to-all — 两种典型的集合通信:前者汇总结果,后者把数据分发到不同卡
--enable-expert-parallel 专家并行开关 打开 EP(DEP 配置的基础)
--engram-config Engram 配置 控制 Engram 表的 offload 与跨 DP 行为

小结

  1. TP 切层内、DP 切数据、EP 切专家;装不下 511 GB 必须靠 TP 或 EP,DP 单独救不了。
  2. 各平台默认值不同,因为取舍点不同:H200 TP4、MI355X TP2、MI325X TP4、Blackwell TP2 或 DEP4/DEP8。
  3. DEP 不只是“多开一个开关”:专家分卡后,内核、Engram 跨 DP 行为、调度上限都要一起改。

下一篇:《PD 分离、NIXL 与 vllm-router:prefill 和 decode 为什么分居》——官方唯一“验证通过”的那套黑科技布局。


系列目录:《关于deepseek部署你要知道的一切》

上一篇:《猜 5 个再验一遍:投机解码与 DSpark 草稿头》

讨论

这里是静态站点,没有内嵌评论区。如果这篇文章对你有用,欢迎通过 RSS 订阅后续更新。