机器之心报道
机器之心编辑部
大规模语言模型性能固然好,但计算和资源成本太高了,有没有方法可以更有效地训练和使用 ML 模型呢?
近几年,我们已经看到模型规模越来越大,例如 2018 年诞生的 GPT 具有 1.17 亿参数,时隔一年,2019 年 GPT-2 参数量达到 15 亿,2020 年更是将其扩展到 1750 亿参数的 GPT-3。据了解,OpenAI 打造的超级计算机拥有 285000 个 CPU 核以及 10000 个 GPU,供 OpenAI 在上面训练所有的 AI 模型。
大型语言模型虽然训练昂贵,但也有其重要的一面,例如可以在各种任务中执行小样本学习,包括阅读理解、问答。虽然这些模型可以通过简单地使用更多参数来获得更好的性能。但是有没有方法可以更有效地训练和使用这些模型呢?
为了回答这个问题,谷歌推出了具有万亿权重的通用语言模型 (Generalist Language Model,GLaM),该模型的一大特点就是具有稀疏性,可以高效地进行训练和服务(在计算和资源使用方面),并在多个小样本学习任务上取得有竞争力的性能。
我们来看一下 GLaM 模型的具体情况。
数据集
谷歌首先构建了一个高质量的、具有 1.6 万亿 token 的数据集,该无标签数据集很大一部分来自 Web 页面,其范围从专业写作到低质量的评论和论坛页面。此外,谷歌还开发了一个文本质量过滤器,该过滤器是在维基百科和书籍文本数据集上训练而成,由于过滤器训练的数据集质量很高,所以谷歌将其过滤 Web 网页内容的质量。最后,谷歌应用这个过滤器来生成 Web 网页的最终子集,并将其与书籍和维基百科数据相结合来创建最终的训练数据集。
GLaM 模型架构
GLaM 是混合专家模型 (MoE) ,这种模型可以被认为具有不同的子模型(或专家),每个子模型都专门用于不同的输入。每一层的专家由一个门控网络控制,该门控网络根据输入数据激活专家。对于每个 token(通常是一个词或词的一部分),门控网络选择两个最合适的专家来处理数据。完整的 GLaM 总共有 1.2T 参数,每个 MoE 包含 64 个专家,总共 32 个 MoE 层,但在推理期间,模型只会激活 97B 的参数,占总参数的 8%。
通过增加每个专家的大小,zero-shot 和 one-shot 的平均性能。随着专家大小的增长,推理时每个 token 预测的 FLOPS 也会增加。
如上图所示,跨任务的性能与专家的大小成比例。在生成任务的推理过程中,GLaM 稀疏激活模型的性能也优于 FLOP 类似的密集模型。对于理解任务,研究者观察到它们在较小的规模上性能相似,但稀疏激活模型在较大的规模上性能更好。
数据效率
训练大型语言模型计算密集,因此提高效率有助于降低能耗。该研究展示了完整版 GLaM 的计算成本。
模型推理(左)和训练(右)的计算成本(GFLOPS)。
这些计算成本表明 GLaM 在训练期间使用了更多的计算,因为它在更多的 token 上训练,但在推理期间使用的计算却少得多。下图展示了使用不同数量的 token 进行训练的比较结果,并评估了该模型的学习曲线。
随着训练中处理了更多的 token,稀疏激活型和密集模型在 8 项生成任务上的平均 zero-shot 和 one-shot 性能。
随着训练中处理了更多的 token,稀疏激活型和密集模型在 21 项理解任务上的平均 zero-shot 和 one-shot 性能。
结果表明,稀疏激活模型在达到与密集模型相似的 zero-shot 和 one-shot 性能时,训练时使用的数据显著减少。并且,如果适用的数据量相同,稀疏型模型的表现明显更好。
最后,谷歌对 GLam 的能效进行了评估:
训练期间,GLaM 与 GPT-3 的能耗比较。
虽然 GLaM 在训练期间使用了更多算力,但得益于 GSPMD(谷歌 5 月推出的用于常见机器学习计算图的基于编译器的自动化并行系统)赋能的更高效软件实现和 TPUv4 的优势,它在训练时耗能要少于其他模型。
英文原文:https://ai.googleblog.com/
花粉社群VIP加油站
猜你喜欢