标准回答
数据并行(Data Parallel)
每张卡保存完整模型副本,各自处理不同数据切片;反向传播后通过 AllReduce 汇总并平均梯度,保持参数一致。实现简单、扩展性好,但每卡都要装下整个模型,无法解决单模型放不下的问题。
张量并行(Tensor Parallel)
把单层内的大权重矩阵按行或列切分到多卡,各卡算一部分再拼接,属于层内并行。通信发生在每层前向/反向中,频繁且对带宽敏感,通常限制在单机多卡的 NVLink 域内。
流水线并行(Pipeline Parallel)
把模型按层划分成多个 stage 分布到不同卡,数据像流水线一样逐 stage 流动。为减少首尾的空泡(bubble),把 batch 拆成多个 micro-batch 交错执行。
组合使用
超大模型常用 3D 并行:张量并行解决单层放不下,流水线并行解决整模型放不下,数据并行提升吞吐,再配合 ZeRO(DeepSpeed)切分优化器状态、梯度与参数进一步省显存。
常见误区
⚠️ 常见踩坑
混淆张量并行(切单层矩阵、层内通信)与流水线并行(切层、stage 间传激活);忽略流水线的 bubble 问题以及张量并行对卡间带宽的强依赖。
追问
追问 1:ZeRO 和数据并行是什么关系?
ZeRO 是数据并行的显存优化版:标准数据并行每卡冗余存一份优化器状态、梯度、参数,ZeRO 把这三者按 Stage 1/2/3 逐步切分到各卡,消除冗余,使数据并行也能训练放不下单卡的大模型,通信换显存。
追问 2:流水线并行的 bubble 怎么减小?
bubble 来自流水线填充和排空阶段的空闲。增大 micro-batch 数量可摊薄首尾空泡占比;采用 1F1B(交错的一前一后调度)等调度策略让前向与反向更紧凑地交错,进一步提升设备利用率。
延伸学习
与本题相关的知识库文章、术语、工具与行业资讯。
📖 术语表
🛠️ AI 工具
- DeepSpeed
深度学习训练优化库,42,156+ stars。微软开发的开源深度学习优化库,提供 ZeRO 内存优化、3D 并行等核心技术,大幅降低大模型训练成本