如何在MegatronLM中为GPT2实现模型并行性?

问题描述

我试图了解MegatronLM的实现细节,该模型同时具有模型和数据。在他们的site或他们的研究paper中,他们提到了如何使用类似于网格TensorFlow的层内并行。我对一些细节感到困惑。

如下图所示,我的理解是,可以通过层内分割来并行化4个红色圆圈中的每个内部的计算,但是MLP必须在自我关注之后发生,因此只能并行化2个红色圆圈与此同时。论文说,模型并行是8向的。我的第一个问题是,这是否表示它们将每个块划分为4个层内部分(8/2)?

(8路除以2块)

enter image description here

本文也提到了

为了在自我关注层中具有一致的Gemm大小,每个关注头的隐藏大小保持恒定为96,同时改变头和层的数目以获取10亿到80亿个参数的配置。

我的第二个问题是这里隐藏的96个尺寸是什么?

我对分布式培训完全陌生,我可能误会了一些东西。对此主题的任何澄清将不胜感激!谢谢!

解决方法

GPT2模型的模型并行性实现。 据我了解,并行实现如下图所示。标记块是并行计算的。 enter image description here

图(a)MLP,

f和g是共轭的,f是正向传递中的身份运算符 并在向后传递中全部减少,而g是在 前进和后退的身份。

类似地,自我注意的功能如下图所示 enter image description here

根据paper中给出的实验,单个GPU上有12亿个参数,而80亿个参数需要8个GPU(8路)。

96是用作每个头的隐藏大小的常数。 根据{{​​3}}中的表2,隐藏大小可能基于参数计数。