问题描述
我试图了解MegatronLM的实现细节,该模型同时具有模型和数据。在他们的site或他们的研究paper中,他们提到了如何使用类似于网格TensorFlow的层内并行。我对一些细节感到困惑。
如下图所示,我的理解是,可以通过层内分割来并行化4个红色圆圈中的每个内部的计算,但是MLP必须在自我关注之后发生,因此只能并行化2个红色圆圈与此同时。论文说,模型并行是8向的。我的第一个问题是,这是否表示它们将每个块划分为4个层内部分(8/2)?
本文也提到了
为了在自我关注层中具有一致的Gemm大小,每个关注头的隐藏大小保持恒定为96,同时改变头和层的数目以获取10亿到80亿个参数的配置。
我的第二个问题是这里隐藏的96个尺寸是什么?
我对分布式培训完全陌生,我可能误会了一些东西。对此主题的任何澄清将不胜感激!谢谢!
解决方法
GPT2模型的模型并行性实现。 据我了解,并行实现如下图所示。标记块是并行计算的。
图(a)MLP,
f和g是共轭的,f是正向传递中的身份运算符 并在向后传递中全部减少,而g是在 前进和后退的身份。
根据paper中给出的实验,单个GPU上有12亿个参数,而80亿个参数需要8个GPU(8路)。
96是用作每个头的隐藏大小的常数。 根据{{3}}中的表2,隐藏大小可能基于参数计数。