I·Infra Notes AI Infra 工程实践指南 ← 返回主博客
加速与分布式 / READING NOTES

12.1 策略总览与训练的差异

TP、PP、DP、EP 与 Ray 多节点实践

通信进入每层时间账本

以两卡 Tensor Parallel 的线性层为例,Column Parallel 把输出通道切分,后续 Row Parallel 把输入通道切分并在输出处归约。理想计算时间下降时,每层 All-Reduce/All-Gather 的启动延迟与传输字节会成为新瓶颈。Pipeline Parallel 按层切分,需要微批填满阶段;Expert Parallel 把 token 经 All-to-All 送到专家所在设备,再逆路由回来。

TP: X → [XW0 | XW1] → 局部 Attention/MLP → All-Reduce
PP: Stage0 → 激活 P2P → Stage1(微批之间交错)
EP: Router → 按 expert 分桶 → All-to-All → Expert GEMM → All-to-All
PD: Prefill Pool → KV transfer(含 block layout/位置)→ Decode Pool

NCCL 排障基线:各 rank 必须按同样顺序进入 collective,shape/dtype/count 必须相容,所有 rank 都要报告前后日志;超时日志里的“最后一个 collective”不一定是最早出错点。先用两 rank、最小张量复现,再加 PP/TP/EP 和动态请求。检查 topology、网络、KV 传输量与通信计算重叠。NCCL 用户指南 与 TensorRT-LLM 的 KV transfer 工作流 可作为实现入口。

并行策略:DP / TP / PP / EP / SP

速查:单卡放不下或要提吞吐时,把模型/数据切到多卡。DP 复制模型切数据;TP 层内切权重(通信量大,优先高速互联);PP 按层切(有 Bubble,需 Micro-batch);EP 切专家(MoE 专用);SP 切序列维度。

图 5-4 并行策略 DP / TP / PP / EP 图 5-4 · 四种主要并行策略的切分方式、通信模式与适用场景

术语解释:

  • DP(Data Parallel,数据并行):每张卡放一份完整模型,把数据切分到各卡。
  • TP(Tensor Parallel,张量并行):把同一层的权重矩阵按维度切到多卡,层内需要频繁通信。
  • PP(Pipeline Parallel,流水线并行):按层切分到不同卡,形成流水线。
  • EP(Expert Parallel,专家并行):MoE 场景下把不同 Expert 放到不同卡。
  • SP(Sequence Parallel,序列并行):沿序列维度切分,常用于降低激活显存。
  • Micro-batch(微批次):PP 中把一个大 Batch 拆成多个小批,填充流水线以减少气泡。
  • Pipeline Bubble(流水线气泡):流水线启动/排空阶段部分阶段空闲造成的浪费。
  • All-Reduce(全归约):所有卡的数据求和后广播回每张卡。
  • All-to-All(全交换):每张卡把自己的一部分数据发给所有其他卡,是 EP 的核心通信模式。
  • All-Gather / Reduce-Scatter(全收集 / 归约散射):All-Reduce 的两个半边操作,分别用于聚合与分散。
  • P2P(Point-to-Point,点对点):相邻卡之间直接传输,PP 使用。
  • NVLink:NVIDIA 的 GPU 间高速互联,带宽远高于 PCIe,适合放通信量大的 TP。
  • RDMA(Remote Direct Memory Access,远程直接内存访问):跨机器的高性能网络传输技术。
策略 切什么 通信模式 通信量 适用
DP 数据(模型复制) 训练做梯度 All-Reduce;Dense 推理副本独立 取决于模式 训练 / 推理多副本
TP 层内权重矩阵 All-Reduce(每层) 很大 单机内(NVLink)
PP 按层切分 P2P(相邻 stage) 小 跨机
EP MoE 专家 All-to-All 大 MoE 模型
SP 序列维度 All-Gather / Reduce-Scatter 中 长序列

追问:TP 和 PP 怎么选?

TP 通信量大但延迟低,适合放在同一台机器内(NVLink 带宽高);PP 通信量小但会产生 Pipeline Bubble(需要 Micro-batch 填充),适合跨机器。实践中常用 TP + PP + DP 的组合(3D 并行)。

追问:为什么 MoE 要用 EP?

MoE 的专家数量多(DeepSeek-V3 有 256 个),全放一张卡显存不够。EP 把不同专家放到不同卡上,Token 通过 All-to-All 路由到对应专家所在卡。代价是通信成为新瓶颈。

推理 DP 通常把独立请求分给模型副本,不做训练梯度 All-Reduce;TP / PP 的副本内各 rank 必须协同推进同一请求。MoE 中 DP 与 EP 可能组合,不能把 DP 一律理解为互不通信。推理优化还受逐 token 延迟和动态序列长度约束,训练的大 batch 经验不直接适用。

训练补课:ZeRO、FSDP 与通信定位

训练的 DP 每张卡先计算不同样本的梯度,再同步等价的全局梯度,供一致的参数更新;推理 DP 则通常没有反向传播和梯度同步。训练单卡显存要分别列参数、梯度、优化器状态、激活,不能只用“模型权重大小”判断是否放得下。ZeRO-1 分片优化器状态,ZeRO-2 再分片梯度,ZeRO-3 进一步分片参数;分片程度越高,单卡常驻状态越少,前后向取回参数与归约梯度的通信也更关键。PyTorch FSDP 采用参数分片,在计算模块前按需 All-Gather 参数,反向时用 Reduce-Scatter 等方式同步并重新分片梯度;实际粒度和内存峰值取决于 wrap、预取、混合精度与实现配置。DeepSpeed ZeRO · PyTorch FSDP

训练任务 GPU 算力未满时,先把一个 step 切成数据读取、前向、反向、优化器更新及 All-Reduce / All-Gather / Reduce-Scatter;比较各 rank 的时间线。若通信 Kernel 或等待跨越计算区间,检查张量字节数、collective 次序、梯度 bucket、网络 / NVLink 拓扑与最慢 rank;若通信少而设备空闲,回到数据加载、CPU launch 与同步。只看 GPU utilization 不能区分通信等待和算子低效。