16384块GPU训练一个模型,为什么数据并行远远不够?
40分钟,搞懂5D并行。数据并行为什么不够,张量、上下文、流水线、专家并行各切了什么,最后附Llama 3的16384块GPU真实布局。
训练前沿AI模型,几千块GPU要协同工作。Meta训练Llama 3 405B用了16384块GPU。训练工作量要沿不同轴切碎,再同步拼起来。
Jia-Bin Huang做了个40分钟视频,讲5D并行:数据、张量、上下文、流水线、专家。这五种并行分别沿数据、宽度、序列长度、层、专家五个方向切分工作量。
视频从数据并行讲起,先回顾ZeRO的三个阶段:切掉优化器状态、梯度、权重的冗余。但数据并行有一个硬伤:它没法拆单条序列。Llama 3用2048条序列、每条8192个token做全局batch(批次),摊到16384块GPU上,等于每8块GPU一起处理一条序列。数据并行到此为止,没法再往下切。
更大的问题是激活值。一条131072个token的序列,在405B模型里单层输入就要4.3GB,126层累计541GB,这还没算反向传播需要的额外内存。再加上通信开销,GPU数量翻倍时,ZeRO-3反而会变慢。
训练任务可以看成一个立方体,三个维度是token、序列、层(tokens × sequences × layers)。每个小格是一个token在某层的激活值。数据并行只切了batch(批次)这一个维度,需要沿其他轴切。
张量并行沿宽度切。线性层两种切法:按列切(column-linear),用all-gather(全收集)把输出拼起来;按行切(row-linear),用all-reduce(全规约)把部分结果加起来。MLP层把第一个矩阵按列切、第二个矩阵按行切,整个层只需要一次all-reduce。注意力层同理,QKV投影按列切,输出投影按行切。注意Llama 3 405B有128个query head(注意力头),但只有8个KV head(键值头),所以tensor parallel的大小上限是8。
上下文并行解决超长序列。序列长到单台服务器放不下时,用环注意力(ring attention)把KV块绕一圈,配合online softmax,实现跨服务器的长序列训练。
流水线并行沿层切。naive schedule(朴素调度)气泡大,GPipe引入micro-batch(微批次)填充气泡,1F1B让前向和反向交错,Zero-bubble和DualPipe把气泡压得更小。
专家并行是给MoE(混合专家)模型用的。不同专家放不同GPU,token通过all-to-all(全对全)发给对应专家。
视频最后拆了Llama 3的16384块GPU布局,还给了三步骤速查表,教你怎么设计自己的并行策略。有网友说,这是唯一一个自己要用0.5倍速看的频道。图解密度高。
完整视频在这里:
发布时间: 2026-10-27 01:13