跳转到内容

第五节:选择性架构

回想一下在建模(modeling)中提到的,神经语言模型的核心接口是一个编码器,它将词汇单元序列映射到上下文嵌入:

GPT-3是一个神经语言模型,它通过堆叠96层Transformer块来映射词汇单元序列

其中每个Transformer块应用:

  1. 一个自注意力层,允许每个词汇单元相互“交流”;
  2. 一个前馈层,独立处理每个词汇单元:

之前的讲座:

  • 这些密集型Transformer模型架构目前是开发大型语言模型的主流范式。
  • 但是扩大这些模型规模并非易事,需要数据、模型和流水线的并行性

现状:

  • 我们正在遇到极限,即我们还能扩展多少。
  • 随着模型变大,它们必须被分配到更多的机器上, 而网络带宽成为训练的瓶颈。 模型并行性的示例:

  • 因此,如果我们要继续扩展,我们需要重新思考大型语言模型的架构方式。
  • 对于密集型Transformer,每个输入使用语言模型的相同(全部)参数(GPT-3有1750亿个参数)。
  • 相反,我们能让每个输入使用不同的(并且更小的)参数子集吗?

在这次讲座中, 我们将探讨两种不同类型的**“选择性”架构**,这提高了模型可以扩展到的最大尺寸的上限。 特别是,我们将讨论:

  • 混合专家:我们创建一组专家。 每个输入只激活一小部分专家。
    • 直觉:一个由不同背景(例如,历史、数学、科学等)的专家组成的咨询委员会。

  • 检索:我们有一个存储库的原始数据。 给定一个新的输入,我们 检索存储库的相关部分,并使用它们来预测输出。
    • 直觉:如果有人问你一个问题,你发起一个网络搜索,并阅读生成的文档以产生答案。

混合专家模型 (Mixture of Experts)

段落标题 混合专家模型 (Mixture of Experts)

混合专家模型的概念可以追溯到 Jacobs 等人 (1991)

混合专家模型

为了介绍基本概念,假设我们正在解决一个预测问题:

让我们先学习一个前馈(ReLU)神经网络:

其中参数是

  • 然而,这个函数可能不足以表示感兴趣的函数。
  • 我们可以扩展神经网络的宽度或深度。

但是混合专家的方法是:

  • 定义 个专家。
  • 每个专家 有一个嵌入
  • 定义门控函数作为 个专家上的概率分布:

  • 每个专家 有参数
  • 根据专家特定的参数定义每个专家函数

  • 定义最终函数为专家的混合:

考虑 且每个专家都是线性分类器(来源):

MoE 图

我们可以通过正常的反向传播来学习混合专家模型。 应用乘积规则得到:

注意梯度与 成比例,并更新门控函数和专家。

  • 注意门控函数 对于每个专家都是非零的。例如:

  • 按照书写,混合专家并没有节省任何计算,因为前馈传递仍然需要评估每个专家, 向后传递也需要触及每个专家。

  • 然而,如果我们近似门控函数 , 它将大多数专家置零, 那么在前向传递中,我们只需要评估非零 的专家 (对于前向和向后传递都是如此)。

  • 例如,我们可能选择前两个专家并重新归一化:

  • 混合专家模型仅在所有专家都参与时才有效。
  • 如果只有一个专家处于活跃状态(例如,),那么这是一种浪费。
  • 此外,如果我们最终处于这种状态,那么未使用的专家的梯度将为零, 因此它们将不会接收到任何梯度并改进。
  • 因此,使用混合专家时的主要考虑因素之一是确保所有专家在输入中都被使用
  • 混合专家模型非常适合并行化。
  • 每个专家可以占据不同的机器。
  • 我们集中计算近似门控函数
  • 然后我们只要求包含激活专家的(稀疏)机器集处理
  • 我们现在考虑如何将混合专家模型的思想应用于语言建模。
  • 简单的解决方案是有一个由96层Transformer组成的混合体,但是
    • 门控函数需要以某种方式应用于序列;并且
    • 专家的组合只在顶部表面上发生。
  • 因此,我们将混合专家模型的思想应用于:
    • 每个词汇单元和
    • 每个Transformer块(或每隔一个)。
  • 由于前馈层对每个词汇单元是独立的,我们将每个前馈网络变成一个混合专家(MoE)前馈网络

  • 每个其他Transformer块使用MoETransformer块。

GLaM 架构

我们定义前两名专家近似门控函数如下:

  • 计算第一名专家:
  • 计算第二名专家:
  • 始终保留第一名专家,并随机保留第二名专家:
    • 以概率 ,设置 ,对于
    • 以概率 ,对于

符号:

  • 是批次中词汇单元的数量(跨所有序列);通常在数百万的量级。
  • 是专家的数量;通常在数千的量级。
  • 是批次中的词汇单元。
  • 是专家 被选择的次数。
  • 注意,在处理一个批次后,
  • 如果所有专家都平衡,那么
  • 溢出:如果 ,那么设置 (带有残差连接的旁路), 这里的 是容量因子。
  • 辅助损失:我们希望鼓励 接近均匀。
    • 我们可以惩罚 ,但这不可微。
    • 定义 (这是 的软版本)。
    • 相反,我们向目标函数中添加 。 这样,梯度将通过 非零。

例如,我们可以取

这里有一个 个词汇单元和 个专家的示例:

计数器将是:

我们将尝试推动专家 2 的门控函数,以阻止其使用。

  • 定义近似门控函数 仅为前 1 名专家(以获得更大的稀疏性)。
  • 技巧:
    • 从 FP32 到 FP16 的选择性转换
    • 初始化的较小参数
    • 专家dropout
    • 专家并行性
  • 训练了一个 1.6 万亿参数模型
  • 与 T5-XXL(110亿参数)相比,预训练速度提高了 4 倍
  • BASE 定义近似门控函数 为批次中所有词汇单元的联合优化结果。
  • 我们将为每个词汇单元分配 1 个专家,但负载平衡是约束而不是软惩罚。
  • 我们定义 为联合分配向量。

  • 这是一个可以高效解决的线性程序。
  • 在实践中,我们并行化线性程序。
  • 在测试时,只选择前 1 名专家。

实验设置:

  • 稀疏门控 MoE(前 2 名专家):525 亿参数
  • Switch Transformer(前 1 名专家):525 亿参数
  • BASE(1 名共同优化的专家):444 亿参数(13亿共享参数,335M x 128 专家参数)

BASE 结果

BASE 在优化分配 方面需要更多的计算,但更稳定。

  • Switch Transformer(Google)使用前 1 名专家。
  • BASE(Facebook)每个词汇单元使用 1 名专家,但共同优化。
  • 这两种方法都没有与 GPT-3 竞争。 从那时起,Google 和 Facebook 都发布了两个最新高性能的 MoE 语言模型,可以与 GPT-3 竞争, 但有趣的是,它们仍然基于原始简单的前 2 名专家:
    • Google 的 GLaM
    • Facebook 的 “FacebookMoE”

规格:

  • 1.2 万亿参数(GPT-3 有 1750 亿参数)
  • 64 个专家(不是很多),64 层,32K 隐藏单元
  • 每个词汇单元激活 950 亿(1.2T 的 8%)参数

其他升级:

  • 创建了新数据集(GLaM 数据集)1.6 万亿词汇的网页、论坛、书籍、新闻等。
  • 相对位置嵌入,带门控的线性单元,GeLU 激活函数,RMSNorm(不是 LayerNorm)
  • 跳过权重更新 / 如果遇到 NaN/Inf,回滚到早期检查点。
  • “通过仔细实施上述技巧,我们观察到在所有规模上训练稀疏激活模型变得相当稳定。”

结果:

  • 训练成本是 GPT-3 的 1/3
  • 在与 GPT-3 相同的基准上进行评估(开放领域问答、阅读理解、SuperGLUE 等)
  • 与 GPT-3 相比,在 0 次和 1 次性能上表现更好(尤其是在知识密集型任务上表现更好)
  • 注意:他们没有在 GPT-3 更强的几次射击中进行评估

GLaM 结果 GLaM 结果 GLaM 结果

在 WinoGender 上的结果:

  • 示例:The nurse notified the patient that shift would be ending in an hour.
  • GPT-3:64.2%
  • GLaM:71.7%
    • “he” 示例:70.8%
    • “she” 示例:72.5%
    • 刻板印象示例:71.7%
    • 反刻板印象(“gotcha”)示例:71.7%
  • GLaM 的性别偏见较小(通过此基准测量)。

设置:

  • 训练了一个 1.1T 参数模型
  • 512 个专家(比 GLaM 多),32 层,4096 隐藏单元
  • 在网页、论坛、书籍、新闻等上训练了 1120 亿词汇
  • 对较小模型有显著增益,对较大模型增益递减

FacebookMoE 结果

StereoSet 上的结果:

  • 示例:*The assistant went to work.
  • 随着模型大小的增加,刻板印象偏见变得更糟(与 GLaM 结果相反)。 FacebookMoE 结果

动机:

  • 到目前为止,混合专家完全是从中心组织(例如,Google 或 Facebook)扩展大型语言模型的角度出发的。
  • 然而,混合专家自然地暗示了一种更为激进的分散化
  • 用于训练 GPT-3 的 Azure 超级计算机集群 成本为 2.5 亿美元。
  • 我们如何利用 数亿 台消费 PC?
  • Folding@Home 是一个志愿者计算项目,利用全球志愿者捐赠的计算能力进行分子动力学模拟。
  • 2020 年 4 月,Folding@Home 有 70 万人捐赠计算能力,产生了 2.43 exaFLOPs(GPT-3 需要 350 gigaFLOPs)(文章)。
  • 主要区别在于分子动力学模拟是计算密集型的,不需要网络带宽。

主要考虑因素:

  • 许多节点( 异构 PC)
  • 频繁的节点故障(5-20% 至少有一天故障)
  • 家庭互联网通信带宽(100Mbps;与 Azure 超级计算机的 400Gbps 相比)

分布式哈希表:

  • 个节点
  • 一个节点需要与 其他节点通信
  • 使用 Kademlia DHT 协议(由 BitTorrent 和 Ethereum 使用)

分散化 MoE

论文中的实验:

  • 前 4 名专家(总共 256 名专家)
  • 每个专家是一个Transformer层
  • 在 4 个 GPU 上训练了一个小型Transformer LM

Diskin 等人,2021

  • 40 名志愿者
  • 为孟加拉语训练了一个 ALBERT 风格的遮蔽语言模型
  • Training Transformers Together:任何人都可以加入并贡献计算

志愿者训练 DALL-E

  • 混合专家:应用不同专家于不同输入的经典思想
  • 允许训练更大的语言模型(1.1 万亿参数)
  • 每个输入(更少的 FLOPs)比密集型Transformer模型更高效
  • 很难比较 在规模上直接比较仍然具有挑战性(GPT-3 与 GLaM 与 FacebookMoE)
  • 分散化有强烈的影响

现在我们转向另一类语言模型, 基于检索的(或检索增强的,记忆增强的模型), 这可以帮助我们突破密集型Transformer的扩展上限。

让我们首先关注使用编码器-解码器框架的序列到序列任务:

示例(开卷问答):

  • 输入 加拿大的首都是哪里?
  • 输出 渥太华

回想一下 BARTT5 是编码器-解码器模型的示例:

它们是针对去噪目标进行训练的;例如:

  • 输入 :谢谢你 我参加你的 周派对。
  • 输出 邀请 上次

让我们假设我们有一个存储库 ,它是一系列序列(通常是文档或段落)的集合。

直观地说,基于检索的模型生成:

  • 检索 基于输入 的相关序列(s)
  • 生成 给定检索到的序列(s) 和输入 的输出

示例(开卷问答):

  • 输入 加拿大的首都是哪里?
  • 检索 渥太华是加拿大的首都。
  • 输出 渥太华

最近邻 作为特殊情况:

  • 是训练集。
  • 检索 最相似。
  • 生成

RAG

正式地,RAG-Sequence 模型定义如下:

在实践中,求和 被替换为前 k 名 (类似于为混合专家选择前 1 或 2 名专家)。

检索器:密集通道检索 (DPR) (Karpukhin 等人,2020)。

  • 考虑 100 字的段落,维基百科文章的标题
  • 在 QA 数据集(NaturalQuestions, TriviQA 等)上训练查询、正面示例、负面示例:
    • 负面段落:随机 + 使用 BM25 在 上检索的段落,不包含答案
  • 推理:使用 FAISS(Facebook AI Similarity Search)

生成器

  • 使用 BART-large(400M 参数),其中输入是检索到的段落 与输入 连接
  • 回想一下,BART 是在 web、news、books、stories 上针对去噪目标(例如,掩蔽)进行训练的

训练

  • 使用 BART 和 DPR 初始化(DPR 使用 BERT 初始化)。
  • 调整

实验

  • RAG-Token 在给定输入 海明威 的 Jeopardy 问题生成示例:

RAG 示例

  • 优于非检索方法: RAG 结果 比较而言,GPT-3(几次射击):NaturalQuestions(29.9%)、WebQuestions(41.5%)、TriviaQA(71.2%)
  • 基于 32 个词汇单元的进行检索
  • 存储库:2 万亿词汇
  • 70 亿参数(比 GPT-3 少 25 倍参数)
  • 使用冻结的 BERT 进行检索(不更新)
  • 在 MassiveText 上训练(与训练 Gopher 相同的数据集)

结果:

  • 在语言建模上表现非常好
  • NaturalQuestions 准确率:45.5%(SOTA 为 54.7%)

RETRO 语言建模结果

  • 基于检索的模型非常适合知识密集型、问答任务。
  • 除了可扩展性,基于检索的模型提供可解释性和更新存储库的能力。
  • 这些模型是否具有与密集型Transformer相同的通用功能尚不清楚。
  • 为了扩展,需要超越密集型Transformer。
  • 混合专家和基于检索的方法更高效。
  • 如何设计最佳、可扩展的架构仍然是一个开放的问题。

混合专家:

  • 超大型神经网络:稀疏门控混合专家层Noam M. Shazeer, Azalia Mirhoseini, Krzysztof Maziarz, Andy Davis, Quoc V. Le, Geoffrey E. Hinton, J. Dean。ICLR 2017。 训练 1370 亿参数模型;在 LSTM 层之间应用混合专家(1000 专家)。
  • GShard:使用条件计算和自动分片扩展巨型模型Dmitry Lepikhin, HyoukJoong Lee, Yuanzhong Xu, Dehao Chen, Orhan Firat, Yanping Huang, M. Krikun, Noam M. Shazeer, Z. Chen。ICLR 2020。 训练神经机器翻译的Transformer(100 种语言)600 亿参数。 使用前 2 名专家。
  • Switch Transformers:通过简单高效的稀疏性扩展到万亿参数模型W. Fedus, Barret Zoph, Noam M. Shazeer。2021。 训练语言模型,比 T5-XXL(130亿参数)快 4 倍。使用前 1 名专家。
  • GLaM:通过混合专家高效扩展语言模型Nan Du, Yanping Huang, Andrew M. Dai, Simon Tong, Dmitry Lepikhin, Yuanzhong Xu, M. Krikun, Yanqi Zhou, Adams Wei Yu, Orhan Firat, Barret Zoph, Liam Fedus, Maarten Bosma, Zongwei Zhou, Tao Wang, Yu Emma Wang, Kellie Webster,Marie Pellat, Kevin Robinson, K. Meier-Hellstern, Toju Duke, Lucas Dixon, Kun Zhang, Quoc V. Le, Yonghui Wu, Zhifeng Chen, Claire Cui。2021。 训练 1.2 万亿参数模型,64 个专家。使用前 2 名专家。 还创建了新数据集。
  • BASE 层:简化大型稀疏模型的训练M. Lewis, Shruti Bhosale, Tim Dettmers, Naman Goyal, Luke Zettlemoyer。ICML 2021。 解决优化问题,为词汇单元到专家的分配平衡分配。 训练 1100 亿参数模型。
  • 通过混合专家有效进行大规模语言建模Mikel Artetxe, Shruti Bhosale, Naman Goyal, Todor Mihaylov, Myle Ott, Sam Shleifer, Xi Victoria Lin, Jingfei Du, Srinivasan Iyer, Ramakanth Pasunuru, Giridhar Anantharaman, Xian Li, Shuohui Chen, H. Akın, Mandeep Baines, Louis Martin, Xing Zhou, Punit Singh Koura, Brian O’Horo, Jeff Wang, Luke Zettlemoyer, Mona Diab, Zornitsa Kozareva, Ves Stoyanov。2021。 训练 1.1 万亿参数模型。使用前 2 名专家(512 专家)。
  • 通过分散混合专家实现大型神经网络的众包训练Max Ryabinin, Anton I. Gusev。NeurIPS 2020。
  • 在开放合作中进行分布式深度学习Michael Diskin, Alexey Bukhtiyarov, Max Ryabinin, Lucile Saulnier, Quentin Lhoest, A. Sinitsin, Dmitry Popov, Dmitry Pyrkin, M. Kashirin, Alexander Borzunov, Albert Villanova del Moral, Denis Mazur, Ilia Kobelev, Yacine Jernite, Thomas Wolf, Gennady Pekhimenko。2021。
  • 混合专家的密集到稀疏门控Xiaonan Nie, Shijie Cao, Xupeng Miao, Lingxiao Ma, Jilong Xue, Youshan Miao, Zichao Yang, Zhi Yang, Bin Cui。2021。

基于检索的模型:

  • REALM:检索增强型语言模型预训练Kelvin Guu, Kenton Lee, Z. Tung, Panupong Pasupat, Ming-Wei Chang。2020。 引入 REALM
  • 检索增强生成,用于知识密集型 NLP 任务Patrick Lewis, Ethan Perez, Aleksandara Piktus, Fabio Petroni, Vladimir Karpukhin, Naman Goyal, Heinrich Kuttler, M. Lewis, Wen-tau Yih, Tim Rocktäschel, Sebastian Riedel, Douwe Kiela。NeurIPS 2020。 引入 RAG
  • 通过从万亿词汇中检索改进语言模型Sebastian Borgeaud, A. Mensch, Jordan Hoffmann, Trevor Cai, Eliza Rutherford, Katie Millican, G. V. D. Driessche, J. Lespiau, Bogdan Damoc, Aidan Clark, Diego de Las Casas, Aurelia Guy, Jacob Menick, Roman Ring, T. Hennigan, Saffron Huang, Lorenzo Maggiore, Chris Jones, Albin Cassirer, Andy Brock, Michela Paganini, Geoffrey Irving, Oriol Vinyals, Simon Osindero, K. Simonyan, Jack W. Rae, Erich Elsen, L. Sifre。2021。 引入 RETRO