先这样答
数据并行切分训练数据。张量并行切分层内权重。流水线并行按层切分模型。ZeRO 是针对数据并行的显存优化技术。
数据并行让每张显卡保存完整的模型。它把训练数据切分给不同显卡。这种方式卡间通信量较小。它无法节省模型占用的显存。张量并行切分模型层内的权重矩阵。它把矩阵乘法分配到多张卡上共同计算。这种方式会产生大量的通信。它适合在具备高带宽的单机内部使用。流水线并行按网络层级切分模型。它把不同的层分配到不同的显卡上。这种方式会带来设备空转等待的气泡问题。
ZeRO 优化数据并行的显存占用。它完全不改变原有的计算语义。它通过分片训练状态来降低显存。ZeRO 包含三个阶段。Stage 1 切分优化器状态。Stage 2 在此基础上切分梯度。Stage 3 进一步切分模型参数。
面试官会怎么追问
-
「你提到流水线并行有气泡问题,这个气泡具体指什么?」 气泡指显卡等待数据时的空转状态。流水线并行按层切分模型到不同显卡上。前置层传输结果前,后置层显卡只能闲置。
-
「为什么张量并行适合在单机内部使用?」 张量并行切分层内权重矩阵。多张卡共同计算时产生大量的通信。单机内部的高带宽能支持这种通信需求。
-
「ZeRO 切分了参数和状态,它会改变原本的计算逻辑吗?」 ZeRO 不改变原有的计算语义。它本质上是数据并行的显存优化方案。它仅通过分片优化器状态、梯度和参数来节省显存。
回答的坑
混淆张量并行和流水线并行的切分维度,前者切分层内权重矩阵,后者按模型层级切分。
误以为 ZeRO 改变了底层计算语义,它仅是对数据并行的显存优化。
同系列的题
—— 本题完 ——