直接回答:它们沿不同维度切分训练任务。数据并行(DP)每张卡放完整模型副本、切分数据,反向后对梯度做 all-reduce,实现最简单但完全不省显存;ZeRO 在 DP 基础上把优化器状态(1 级)、梯度(2 级)、参数(3 级)分片存到各卡、用时再通信聚合,把单副本显存近似摊薄 N 倍。张量并行(TP,Megatron 风格)把单层内的大矩阵乘按列/行切分到多卡、层内协同计算,单卡显存和算力都被切分,但每层都有 all-reduce、通信量大,通常只部署在节点内 NVLink 高速互联域。流水线并行(PP)把不同的层放到不同设备、按 micro-batch 流水执行,用 1F1B 等调度压低空泡(bubble),通信量小,适合跨节点扩展。MoE 模型还要叠加专家并行(EP),把专家分到不同卡、按路由做 all-to-all 交换 token。
实践要点:超大模型的标准做法是 3D 并行组合:节点内用 TP 吃满 NVLink 带宽,跨节点用 PP 加 DP,再叠 ZeRO 进一步省显存。选型要算三笔账——通信量(TP > DP > PP)、显存均衡(PP 首尾层要额外承担 embedding 与输出头,需要重新配平层数)、空泡率(PP 的 bubble 占比约为 (p-1)/m,micro-batch 数 m 越大越小)。例如训练 175B 级别模型,纯 DP 显存装不下、纯 TP 跨节点通信爆炸,只能组合使用;Llama 3 405B 的实际训练即采用 TP×PP×DP 多维切分跑在上万张 GPU 上。
追问方向:ZeRO-3 与 PyTorch FSDP 是什么关系?1F1B 相比 GPipe 朴素调度的显存优势来自哪里?序列并行(Sequence Parallelism)解决的是什么新瓶颈?(约 640 字)