AI 发展迅速,这对于刚刚入门或是正想跟上「潮流」的新手们来说并不友好。如果有一份详细全面的知识列表可能会帮助他们更快走上「正途」。
今天给大家带来一篇 Transformer 的综述文章,供大家了解 Transformer 的来龙去脉及相关技术。
本篇综述涵盖了 21 种模型、11 种架构变化、7 种预训练后处理技术和 3 种训练技术(还有 5 种不属于以上技术的东西)
。模型包括 GPT-3、GPT-4、Gopher、AlphaCode、RETRO、GPT-3.5、Chinchilla、Flamingo 等。一些重要的架构变化包括多查询注意力、稀疏注意力、混合专家等。同时还介绍了 RLHF、CAI、Minerva 等预训练后处理技术以及超参。所有内容均按照重要性和独特性进行排序,并将链接附在下方。
以下模型的属性若未明确说明,要么未公开,要么大致遵循标准 GPT 配置。
-
属性:175B 参数,96 层,12288 嵌入维度,96 个注意力头
-
论文地址:https://arxiv.org/pdf/2005.14165.pdf
-
发布详情 Open AI 发布于 2020 年 5 月
本文是继 GPT-2 论文(2018 及扩展定律论文后,大语言模型的一片开创性论文。以下是论文中指出有关 GPT-3 的特征。
-
它在一个 300B token 的数据集上进行训练。该数据集主要由过滤后的 Common Crawl 以及一些书籍、网络文本和维基百科构成;
-
使用了 BPE tokenizer(与 GPT-2 相同);
-
-
-
在最初的 375M toks 中,学习率升至 0.6 × 10^-4,260B toks 后余弦衰减至 10%;
-
在前 12B 个 token 中,批大小从 32k toks 上升到 3.2M toks;
-
4x MLP 投影率,如 2017 年 Transformer 论文所示;
-
以上的许多特征形成了一种标准配置,被后来的模型重复使用。
在论文记录超参数的表 2.1 中有一个可能的拼写错误,其中 GPT-3 13B 被记作为具有 5140 的嵌入维度,这里应该是 5120。
-
报告地址:https://arxiv.org/pdf/2303.08774.pdf
-
发布详情:Open AI 2022 年 8 月对其完成预训练,发布于 2023 年 3 月。
GPT-4 是 OpenAI 提供的一个模型,其架构不明(技术上类似于 Transformer)。技术报告主要包含大部分评估(结果表现良好),以及能够从较小模型精确推断出的持续扩展结果。报告还记录了提高模型安全性的措施,并演示了 GPT-4 的多模态能力,这种能力似乎是用类似于 Flamingo 的方式训练的。
-
属性:280B 参数,260B 非嵌入参数,80 层,16384 嵌入维度,128 个注意力头
-
论文地址:https://arxiv.org/pdf/2112.11446.pdf
-
发布详情:DeepMind 在 2020 年底对其进行训练,发布于 2021 年 12 月。
Gopher 是 DeepMind 在 2021 年发布的第一个大型语言模型。它使用 RMSNorm 而不是 LayerNorm,使用 Transformer-XL 的相对位置编码方案而不是绝对位置编码,这就是嵌入参数如此之多的原因。
它使用 SentencePiece 进行分词,词汇表大小为 32k,并用 300B token 进行训练,其中一半来自为 Gopher 收集的 MassiveText,以及书籍、Common Crawl、维基百科、新闻和 Github。
-
属性:41B 参数,8 个编码器层,56 个解码器层,6144 嵌入维度
-
论文地址:https://arxiv.org/pdf/2203.07814.pdf
-
发布详情:DeepMind 发布于 2022 年 2 月。
AlphaCode 是在 715GB(967B token)代码基础上训练出来的模型,可以用于解决编程竞赛问题。它是本文中唯一采用解码器 – 编码器架构的模型。它将编程竞赛题视为一项翻译任务(问题陈述 → 解决方案),以获得双向性。它在编码器中使用 1536 个 token,在解码器中使用 768 个 token。使用多查询注意力,并在推理时生成数千个样本,然后选择一个解决方案子集进行提交。
-
-
论文地址:https://arxiv.org/pdf/2112.04426.pdf
-
发布详情:DeepMind 发布于 2022 年 2 月。
检索是一种通用的技术,即在进行推理时提供一个数据库供其查找。RETRO 是第一篇使用 2T token 数据库的 Transformer 检索论文。它使用预训练的 BERT 式模型将 token 数据库嵌入块中,然后在训练和推理期间对数据库中的最近邻执行分块交叉注意力。
-
-
文档地址 https://platform.openai.com/docs/guides/gpt
-
发布详情:OpenAI 发布于 2022 年 3 月。
OpenAI 将三种模型划分为 GTP-3.5,具体包括 davinci-002 系列中的两种和 davinci-003 系列中的一种。其中, code-davinci-002 是基本模型,text-davinci-002 是一个带有 FeedME 非 RL 指令调整的版本。text-davinci-003 是带有 RLHF 的 InstructGPT。有一篇 InstructGPT 论文训练了 RLHF 模型,但没有提到 FeedME,而 text-davinci-002 虽然是 InstructGPT 模型,但没有使用 RLHF。OpenAI API 上的 davinci 模型在 2020 年的论文中被指出是 175B 模型,但从未证实 davinci-002 是否具有相同尺寸。
-
属性:70B 参数,80 层,8192 嵌入维度,64 个注意力头
-
论文地址:https://arxiv.org/pdf/2203.15556.pdf
-
发布详情:DeepMind 发布于 2022 年 3 月。
Chinchilla 的论文中引入了新的、改进版的 scalling law。它使用 1.5T token(与 Gopher 相似的数据集)和与 Gopher 相同的计算量进行训练,但性能优于 Gopher。在 scalling law 中,模型的参数和 token 数按照 20:1 的比例线性增加。学习率采用余弦调度进行调整。Megatron Turing NLG 和 Jurassic J-1 Jumbo 是另外两个大型模型,由于它们不是 Chinchilla 最优模型,也没有独特意义,因此没有在本文中单独记录。
-
-
论文地址 https://arxiv.org/pdf/2204.14198.pdf
-
发布详情:DeepMind 发布于 2022 年 4 月。
Flamingo 是一个多模态(文本 / 图像)模型。它只生成文本,而图像输入通过视觉编码器(435M 参数)运行,并使用交叉注意力来关注这些输出。它还在视觉编码器之后使用重采样器(194M 参数),无论输入特征的数量如何,都能产生固定(少量)的视觉 token。它们建立在冻结的 Chinchilla 模型上,80B 参数来自添加到 70B Chinchilla 模型中的交叉注意力层。PaLI 是谷歌的图像 / 语言多模态模型。
-
-
论文地址:https://arxiv.org/pdf/2205.06175.pdf
-
Gato 是一个通用型智能体,算是 Flamingo 的后续产品,但拥有更多的模态。它使用图像和文本,以及按钮按压数据格式化成的 token,还有来自机器人感知的连续数据编码,并尝试使用尽可能少的数据来完成额外的任务。这些任务包括机器人堆叠测试、图像字幕和 Atari。
-
-
论文地址:https://arxiv.org/pdf/2112.00861.pdf
-
发布详情:Anthropic 发布于 2021 年 12 月。
在 400Btoken 上进行训练,但在 Chinchilla 之后的一篇论文(《 Language Models (Mostly) Know What They Know 》)中,Anthropic 使用了为 850B token 训练的具有相同架构的模型。在后来的另一篇关于道德自我纠正的论文中,使用了一个没有明确说明的 175B 模型。
-
属性:540B 参数,118 层,18432 嵌入维度,48 个注意力头
-
论文地址:https://arxiv.org/pdf/2204.02311.pdf
-
发布详情:Google 发布于 2022 年 4 月。
截至 2023 年 1 月,这是公开已知的最大密集语言模型。PaLM 使用 SwiGLU 激活,使用并行注意力、多查询注意力、旋转嵌入,并对输入和输出嵌入使用相同的矩阵。它没有使用偏置,使用了一个包含 256k 个 token 的 SentencePiece tokenizer。PaLM 是在与 LaMDA 和 GLaM 类似的数据集上,用 780B 个 token 进行训练的。
-
-
论文地址:https://arxiv.org/pdf/2204.06745.pdf
-
项目地址:https://github.com/EleutherAI/gpt-neox
-
发布详情:Eleuther AI 发布于 2022 年 2 月。
这是 Eleuther 的一个开源模型。它使用 DeepSpeed (微软) 和 Nvidia Megatron 在 GPU 上进行训练,并使用与 GPT-J 相同的架构修改,在整个 Pile (400B token) 上进行训练。
-
-
项目地址:https://github.com/kingoflolz/mesh-transformer-jax/#gpt-j-6b
-
发布详情:Eleuther AI 发布于 2021 年 7 月。
GPT-J 因完全开源而闻名,并且与 GPT-3 论文中 6.7B 版本性能相媲美。它在 TPU 上进行训练,并使用旋转嵌入,并行注意力。为降低复杂性,它仅使用了密集注意力层。它是在 Pile 上训练的,Pile 是一个由 Eleuther AI 创建的开放数据集,包含 22 个较小的数据集,包括 Common Crawl、 OpenWebText、书籍和论文。
-
-
论文地址:https://arxiv.org/pdf/2112.06905.pdf
-
发布详情:Google 发布于 2021 年 12 月。
GLaM 被称为「通用语言模型」,是一个混合专家 (MoE) 模型,其中的参数是稀疏激活。它每层有 64 个专家,每个 token 激活 96.6B 参数。每一层都有一个门控单元,它为每个 token 选择 64 个 MLP 中的一个或两个。
-
属性:137B 参数,64 层,8192 嵌入维度,128 个注意力头
-
论文地址:https://arxiv.org/pdf/2201.08239.pdf
-
发布详情:Google 在 I/O 上演示于 2021 年 5 月,论文发布于 2022 年 1 月。
LaMDA 对话模型是根据 Meena 创建的。它明确有一个包含大量对话 / 论坛的 2.81T 数据集 (用 32k 的 SentencePiece tokenizer 进行编码)。基础模型有时被称为 LaMDA GLM 或 GLM- 137B;LaMDA 在此基础上添加了许多对话微调。
模型训练用了多少个 token 是明确的,它用到了 1024 个 TPUv3,使用率为 56.5%,训练时间为 57.7 天,batch 大小为 256k,可能是 bf16,计算表明这将是 2.81T token 中的约 900B。
-
-
论文地址:https://arxiv.org/pdf/2101.03961.pdf
-
发布详情:Google 发布于 2022 年 6 月。
SwitchTransformer 对 GLaM 进行了改进,它只路由到一个专家,从而减少了计算量。它的创新是使用了不同的路由机制,证明了路由到单个专家是有效的。
-
属性:176B 参数,70 层,14336 嵌入维度,112 个注意力头
-
论文地址:https://arxiv.org/pdf/2211.05100.pdf
-
发布详情:HuggingFace 发布于 2022 年 7 月。
截止于本文梳理的时间,BLOOM 是最大的开源模型。它在 HuggingFace 语料库 ROOTS 上进行训练,该语料库包含 498 个 HuggingFace 数据集。该模型在 366B token 上进行训练,并且位置编码是用 ALiBi 完成的。它用到了 250k 词汇表大小的 BPE tokenizer,帮助它适应多语言数据。
-
-
论文地址:https://arxiv.org/pdf/2211.09085.pdf
-
发布详情:Meta 发布于 2022 年 11 月。
Galactica 是一个科学模型,主要以论文、少量代码、其他基于知识的数据和一些 Common Crawl 数据为基础进行预训练。它用 <work> token 对工作记忆进行编码,并使用特殊 token 对引文进行编码。
-
-
论文地址:https://arxiv.org/pdf/2302.13971.pdf
-
发布详情:Meta 发布于 2023 年 2 月。
LLaMa 像是 Chinchilla 的复制品,有着相当标准的训练组合,大部分为 Common Crawl。
-
-
论文地址:https://arxiv.org/pdf/2205.01068.pdf
-
项目地址:https://github.com/facebookresearch/metaseq/blob/main/projects/OPT/chronicles/OPT175B_Logbook.pdf
-
发布详情:Meta 发布于 2022 年 5 月。
这是 GPT-3 的复刻版,它在 Pile 和 PushShift reddit 上训练,只有 180B token。
这些 Meta 论文完全不是相互关联的项目。LLama、OPT 和 Galactica 共有 41 位作者,只有一位是重合的。
-
-
论文地址:https://arxiv.org/pdf/2210.02414.pdf
-
发布详情:清华大学发布于 2022 年 10 月。
GLM 是一个开源的双语(中文 / 英文)模型。它使用旋转嵌入和 DeepNorm,并通过 GeGLU 激活 MLP。值得关注的是,它主要以 INT4 进行推理(而其他模型,如 BLOOM 和 OPT,则量化为 INT8)。它还在预训练中加入了 prompt,而不是标准的 GPT 架构,并且使用 GLM 实现了双向注意力。
1. 多查询注意力(Multi-Query Attention,MQA)
论文地址:https://arxiv.org/pdf/1911.02150.pdf
Noam Shazeer 的这篇论文中,key 和 value 在 head 之间共享,大大减少了推理时所需的内存数量,提高了延迟和吞吐量。这是一篇非常简洁的论文,并附有代码和结果。AlphaCode 和 PaLM 都使用 MQA。
论文地址:https://arxiv.org/pdf/1904.10509.pdf
在这种机制中,注意力不会应用于所有之前的 token。它描述了稀疏 Transformer 的两种风格,一种是跨步式,即关注最后 N 个 token;另一种是固定式,即关注序列中的部分 token。在 GPT-3 论文中,该模型被描述为交替密集和「局部带状」稀疏层。
3. 混合专家(Mixture-of-Experts,MoE)
关于 MoE 的内容有很多,在介绍 GLaM 和 Switch 时已经提到了一点。因此,此处将罗列一些优秀的原始文献。
-
2017 年关于 LSTM 的 MoE 论文 https://arxiv.org/abs/1701.06538
-
面向 MoE 的 Deepmind Scaling Laws 论文 https://arxiv.org/pdf/2202.01169.pdf
-
训练 1.1T 参数 MoE 的 Meta 论文 :https://arxiv.org/pdf/2112.10684.pdf
-
https://arxiv.org/pdf/2202.08906.pdf
-
https://arxiv.org/pdf/2202.09368.pdf
-
https://arxiv.org/pdf/2205.10937.pdf
-
https://arxiv.org/pdf/2202.08906.pdf
-
https://openreview.net/pdf?id=23ZjUGpjcc
论文地址:https://arxiv.org/pdf/2205.14135.pdf
FlashAttention 是一种架构变革,能以更少的内存访问量完成注意力处理。它对注意力矩阵进行切片和增量化的 softmax 约简,并避免了在后向传播过程中存储整个中间注意力矩阵。论文指出,与 megatron 相比,它训练速度提高到 1.7 倍,推理速度提高到 4 倍多(上下文长度越长,倍数越大)。在此之前,另一篇文章 (https://arxiv.org/pdf/2112.05682.pdf) 也在 TPU 上采用了同样的方法,实现了 O (log_n) 内存占用。
论文地址:https://arxiv.org/pdf/1706.03762.pdf
根据 Transformer 的原始论文,编码器 – 解码器架构最初是为翻译任务而设计的。经典的 GPT 架构交替使用注意力和 MLP 模块。原始的 Transformer 则采用了编码器块和解码器块。编码器块的结构是:注意力机制 → MLP;解码器块的结构是:掩蔽注意力→ 编码器 – 解码器注意力 → MLP。对于许多序列到序列的任务来说,例如 AlphaCode 或 T5,这也是一个合理的架构。
论文地址:https://arxiv.org/pdf/2204.02311.pdf
PaLM 使用平行注意力。即在训练模型时,注意力层和 MLP 层并行运行,使用相同的向量。如此一来,就可以将注意力和前馈矩阵乘法合并在一起,从而提升运算强度,获得更好的性能(PaLM 的训练速度提升了 15%)。GPT-J 也使用了这种方法。
7. 可供选择的激活方案:GeGLU,SwiGLU,SoLU
论文地址:https://arxiv.org/pdf/1706.03762.pdf
最初的 Transformer 论文使用 ReLU 来激活 MLP 模块。它在两个线性变换(matmuls)之间进行简单的 x if > x = 0 else 0。从直观上看,这有点草率。GeLU 与 ReLU 类似,但要平滑一些。
论文地址:https://transformer-circuits.pub/2022/solu/index.html
SoLU(Softmax)简单地说就是 x*softmax (x),用于提高模型的可解释性。
论文地址:https://arxiv.org/pdf/2002.05202.pdf
SwiGLU 是所列论文中最复杂的,也是 Noam Shazee 的个人论文。它建立在门控线性单元的基础上,旨在比 ReLU 更稳定,并在 GLU 之前进行 swish 运算。与 GeLU 一样,它软化了 ReLU,允许某些值低于零。
8.LayerNorm 的替代方案:DeepNorm,RMSNorm
LLM 每个区块有两次 norm(一次用于注意力,一次用于前馈),它会执行一些归一化功能以改进训练。
DeepNorm 论文地址:https://arxiv.org/pdf/2203.00555.pdf)
RMSNorm 论文地址:https://arxiv.org/pdf/1910.07467.pdf
DeepNorm 和 RMSNorm 可以成为替代方案。RMSNorm(均方根)简单来说就是数值均值的平方根。还有一种 batch norm,效率很低,用起来似乎不太聪明。
-
论文地址:https://arxiv.org/pdf/2104.09864.pdf
-
相关 Blog 文章:https://blog.eleuther.ai/rotary-embeddings/
这篇 Blog 文章总结得十分优秀,本文不做赘述。
10.BPE vs SentencePiece Tokenizers
-
BPE 项目地址:https://huggingface.co/learn/nlp-course/chapter6/5?fw=pt
-
SentencePiece 编码器项目地址:https://github.com/google/sentencepiece
字节对编码(Byte Pair Encoding,BPE)是大多数语言模型的默认编码,最初的 GPT 论文、GPT-3 以及 GPT-3.5 都使用了这种编码。不使用纯 BPE,而使用 SentencePiece 情况的一个明显原因是,分布不包含空格分隔的单词,就像 AlphaCode、GLM(中文)和 PaLM(明确是因为多语言)那样。
论文地址:https://arxiv.org/pdf/2108.12409.pdf
ALiBi(Attention with Linear Biases)是一种长上下文位置嵌入方案,通过根据距离对 qk 分数进行线性偏置,来支持对更长的长度进行外推。BLOOM 用了 ALiBi,Galactica 也尝试过,但没有采用。
在 RLHF 中,首先要训练一个奖励模型,由标注员评估模型生成的数组。然后在 RL 中使用 PPO(近端策略优化),策略生成由奖励模型评估的输出,以改进策略。
Christiano 论文:https://proceedings.neurips.cc/paper/2017/hash/d5e2c0adad503c91f91df240d0cd4e49-Abstract.html
Deepmind 的 Sparrow 和 Anthropic 的 LM 都是用 RL (AI|H) F 训练的,它们都有对话界面。WebGPT 和 GopherCite 一样,也是用 RLHF 训练的(后者调用了 RLHPreferences)。我认为,这都起源于 2017 年的 Christiano,它先于 LLM 所有内容,之后才是 2020 年根据人类反馈进行的总结以及 PPO 论文。
2020 年根据人类反馈进行的总结 https://proceedings.neurips.cc/paper/2020/file/1f89885d556929e98d3ef9b86448f951-Paper.pdf
论文链接:https://arxiv.org/pdf/2212.08073.pdf
作为 RLHF 的扩展,Constitutional 基本上是 RLAIF,不过实际上被称为 CAI。它有一个监督学习阶段,在这一阶段,只提供帮助的 AI 会生成对抗性 prompt。然后,助手会根据所提供的 constitution(以字符串的形式提供给模型的一组短值)迭代出自己的响应。然后对这些响应进行微调。第二阶段就像采用 PPO 的 RLHF,只不过将 AI 反馈替换了。
论文地址:https://arxiv.org/pdf/2206.14858.pdf
Minerva 是 Blueshift 团队于 2022 年 6 月发布的一个数学和科学数据微调模型,执行效果非常好。它是一个来自 PaLM 的 62/540B 微调模型。它的数据集来自 ArXiV 和一些网站,并经过精心预处理,保留了数学格式。
<img data-ratio=”0.4074074074074074″ data-s=”