分布式训练系统包括多个组成部分,如AI集群架构、通信机制、并行技术等。基于这些内容,我们可以设计出不同的大模型算法。下面我们简单讲述下大模型的发展脉络,大模型的结构以及SOTA大模型算法。
大模型发展脉络
随着2017年Transformer结构的提出,使得深度学习模型参数突破了1亿,Transformer 取代RNN、CNN进入大模型时代。2018年谷歌发布了BERT,便一举击败 11 个 NLP 任务的 State-of-the-art (Sota)结果,成为了 NLP 界新的里程碑,同时为模型训练和NLP领域打开了新的思路,预训练模型逐渐成为自然语言处理(NLP)领域的主流;同时,网络模型参数量首次超过3亿规模。2020年,OpenAI发布GPT-3 全新语言模型,模型参数规模一举突破千亿参数(1750 亿)。2021年1月Google重磅推出的Switch Transformer首次突破万亿规模。2021年12月,Google再次推出1.2万亿参数GLaM通用稀疏语言模型,小样本学习打败GPT-3。
大模型结构
下面我们来看下大模型算法结构演进。
Transformer结构
Transformer 是Google Brain 2017年的提出的一篇工作,它针对RNN的弱点进行重新设计,解决了RNN效率问题和传递中的缺陷等,在很多问题上都超过了RNN的表现。
Transformer的详细结构如下图所示,他的核心组件就是Self-Attention。Self Attention就是句子中的某个词对于本身的所有词做一次Attention。算出每个词对于这个词的权重,然后将这个词表示为所有词的加权和。每一次的Self Attention操作,就像是为每个词做了一次Convolution操作或Aggregation操作。
MOE结构
现在的模型越来越大,训练样本越来越多,每个样本都需要经过模型的全部计算,这就导致了训练成本的平方级增长。
为了解决这个问题,一种方式是将大模型拆分成多个小模型,对于一个样本来说,无需经过所有的小模型去计算,而只是激活一部分小模型进行计算,这样就节省了计算资源。
那么如何决定一个样本去经过哪些小模型呢?这就引入了一个稀疏门机制,即样本输入给这个门,得到要激活的小模型索引,这个门需要确保稀疏性,从而保证计算能力的优化。
稀疏门控专家混合模型(Sparsely-Gated MoE):旨在实现条件计算,即神经网络的某些部分以每个样本为基础进行激活,作为一种显著增加模型容量和能力而不必成比例增加计算量的方法。
将大模型拆分成多个小模型,对于一个样本来说,无需经过所有的小模型去计算,而只是激活一部分小模型进行计算,这样就节省了计算资源。稀疏门控 MoE,实现了模型容量超过1000倍的改进,并且在现代 GPU 集群的计算效率损失很小。
如果说Transformer结构使得模型突破到上亿参数量,MoE 稀疏混合专家结构使模型参数量进一步突破,达到上千亿、万亿规模。
SOTA大模型算法
上面我们从Transformer和MOE结构看大模型发展,下面我们来具体看下在业界比较有名的SOTA大模型。
Bert
2018年谷歌发布了BERT,首次面世便一举击败 11 个 NLP 任务的 State-of-the-art (Sota)结果,成为了 NLP 界新的里程碑;
Bert是基于Transformer的模型,并且是一个迁移能力很强的通用语义表示模型,但是Bert只是运用了Transformer的Encoder部分。Bert的全称是Bidirectional Encoder Representation from Transformers,即双向Transformer的Encoder(其中,双向表示模型在处理某一个词的时候,能同时利用前面的词和后面的词两部分信息)。
Bert的结构如下图所示,左侧表示了预训练的过程,右边是对于具体任务的微调(Fine-tuning)过程。 其中, 微调阶段是后续用于一些下游任务的时候进行微调,例如:文本分类,词性标注,问答系统等,BERT 无需调整结构就可以在不同的任务上进行微调。Bert的出现为模型训练和NLP领域打开了新的思路,预训练模型逐渐成为自然语言处理(NLP)领域的主流;
GPT-3
2020年,OpenAI发布全新语言模型GPT-3,拥有1750亿参数的超大规模,使得语言模型具备了生成难辨真假的新闻文章的能力。
GPT-3是一个无监督的预训练模型。
GPT-3有96层 Transformer Encoder,而Bert-Large只有24 层 Transformer Encoder。
GPT-3是基于上下文的生成AI系统。当您向GPT-3提供提示或上下文时,它可以填写其余内容。如果您开始撰写文章,它将继续撰写文章。
毫无疑问GPT-3是NLP领域乃至AI领域取得重大突破的一项工作。
Switch Transformer
2021年1月,谷歌大脑团队重磅推出了超级语言模型Switch Transformer,有1.6万亿个参数。在开发Switch Transformer时,谷歌研究人员力求最大程度地增加参数数量,同时保持每个训练示例和相对少量的数据,训练的FLOPS数量不变。
尽管在大数据集和参数支撑下的简单的架构可以超越一些复杂的算法,然而,高效的大规模训练和密集的计算是关键。为此,Switch Transformer使用了Mixture of Experts (MoE,混合专家)模型。MoE会为每个输入的例子选择不同的参数。多个专家被保留在一个更大的模型中,或者说是专门处理不同任务的模型,针对任何给定的数据,由一个门控网络来选择咨询哪些专家。结果得到一个稀疏激活(sparsely activated)模型——仅使用模型的权值子集,或仅转换模型中输入数据的参数。该参数数量惊人,但计算成本恒定。
Switch Transformer的创新之处在于它有效地利用了为密集矩阵乘法设计的硬件,如GPU和谷歌的张量处理单元TPU。
在分布式训练设置中通过数据并行、模型并行、Expert并行的方式降低了训练通信量,提升训练性能;他们的模型将不同的权重分配到不同的设备上,这样权重就会随着设备数量的增加而增加,但是每个设备却可以管理设备的内存和计算足迹。
总的来说,Switch Transformers是一个可扩展的,高效的自然语言学习模型。通过简化MoE,得到了一个易于理解、易于训练的体系结构,该结构还比同等大小的密集模型具有更大的采样效率。这些模型在一系列不同的自然语言任务和不同的训练机制中,包括预训练、微调和多任务训练,都表现出色。这些进步使得使用数千亿到万亿参数训练模型成为可能,相对于密集的T5基准,这些模型可以实现显著的加速。
GLaM
2021年12月,谷歌推出了具有万亿权重的通用语言模型 (Generalist Language Model,GLaM),该模型的一大特点就是具有稀疏性,可以高效地进行训练和服务(在计算和资源使用方面),在多个小样本学习任务上取得有竞争力的性能。
GLaM 是混合专家模型 (MoE) ,这种模型可以被认为具有不同的子模型(或专家),每个子模型都专门用于不同的输入。每一层的专家由一个门控网络控制,该门控网络根据输入数据激活专家。对于每个 token(通常是一个词或词的一部分),门控网络选择两个最合适的专家来处理数据。完整的 GLaM 总共有 1.2T 参数,每个 MoE 包含 64 个专家,总共 32 个 MoE 层,但在推理期间,模型只会激活 97B 的参数,占总参数的 8%。
GLaM 的体系架构,每个输入 token 都被动态路由到从 64 个专家网络中选择的两个专家网络中进行预测,如下图所示。
总之,Google的大规模稀疏激活语言模型 GLaM 在零样本和单样本学习方面取得了有竞争力的结果,并且是比之前的整体密集模型更有效的模型。