近年来,模型的规模不断扩大。例如,2018年推出的GPT模型拥有1.17亿参数,而2019年发布的GPT-2参数量提升至15亿,到了2020年,GPT-3更是达到了1750亿参数。据悉,OpenAI构建了一台超级计算机,配备了285000个CPU核心和10000个GPU,以支持其AI模型的训练。
虽然训练大型语言模型的成本极高,但其在多个任务中展现出的优越性能,如小样本学习、阅读理解和问答等,显示出其重要价值。尽管通过增加参数数量可以提高模型性能,但是否存在更高效的训练和使用方法呢?
为了解决这个问题,谷歌推出了通用语言模型(GLaM),其显著特点是稀疏性,使得训练和服务更加高效(在计算和资源使用方面),并在多个小样本学习任务中表现出色。
数据集
谷歌首先构建了一个高质量的数据集,包含1.6万亿个Token。这个无标签数据集主要来源于网页,涵盖了从专业写作到低质量评论和论坛的广泛内容。此外,谷歌开发了一种文本质量过滤器,该过滤器基于维基百科和书籍文本数据集进行训练,确保过滤后的网页内容质量较高。最终,谷歌将过滤后的网页集与书籍和维基百科数据结合,创建了最终的训练数据集。
GLaM模型架构
GLaM采用混合专家模型(MoE)架构,可以视为由多个子模型(或专家)组成,每个专家专注于不同的输入。每层的专家由一个门控网络控制,该网络根据输入数据激活相应的专家。对于每个Token(通常是一个词或词的一部分),门控网络会选择两个最适合的专家进行数据处理。GLaM总共有1.2万亿参数,每个MoE层包含64个专家,总共32层MoE,但在推理时仅激活97亿参数,占总参数的8%。
在GLaM的架构中,每个输入Token都通过动态路由选择两个专家网络进行预测。
实验结果
当每个MoE层仅使用一个专家时,GLaM可缩减为基于Transformer的基础密集模型架构。在所有实验中,谷歌使用“基础密集模型大小/每个MoE层专家数量”来描述GLaM模型。例如,1B/64E表示该模型为1B参数的密集模型架构,每隔一层由64个专家的MoE层替代。
谷歌测试了GLaM的性能及其扩展特性,与同一数据集上训练的基线密集模型进行比较。与最近微软和英伟达联合推出的MegatRon-TuRing相比,GLaM在7个不同任务中实现了相当的性能,同时推理过程中减少了4/5的计算资源。
此外,在使用更少计算资源的情况下,1.2万亿参数的稀疏激活模型(GLaM)在更多任务上超越了1750亿参数的密集GPT-3模型,取得了更好的平均结果。
谷歌在29个基准上总结了GLaM与GPT-3的性能比较,结果显示,GLaM在约80%的零样本任务和90%的单样本任务中超越或持平于GPT-3的表现。
