Transformer速查宝典:模型、架构、训练方法的论文都在这里了

发布时间 2023-08-28 20:15:14作者: CV技术指南(公众号)
前言 论文大合集,一篇文章就搞定。

本文转载自机器之心

仅用于学术分享,若侵权请联系删除

欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读、CV招聘信息。

CV各大方向专栏与各个部署框架最全教程整理

【CV技术指南】CV全栈指导班、基础入门班、论文指导班 全面上线!!

AI 发展迅速,这对于刚刚入门或是正想跟上「潮流」的新手们来说并不友好。如果有一份详细全面的知识列表可能会帮助他们更快走上「正途」。

今天给大家带来一篇 Transformer 的综述文章,供大家了解 Transformer 的来龙去脉及相关技术。

本篇综述涵盖了 21 种模型、11 种架构变化、7 种预训练后处理技术和 3 种训练技术(还有 5 种不属于以上技术的东西)。模型包括 GPT-3、GPT-4、Gopher、AlphaCode、RETRO、GPT-3.5、Chinchilla、Flamingo 等。一些重要的架构变化包括多查询注意力、稀疏注意力、混合专家等。同时还介绍了 RLHF、CAI、Minerva 等预训练后处理技术以及超参。所有内容均按照重要性和独特性进行排序,并将链接附在下方。

以下为机器之心不改变原义对文章进行编译的内容。

一、模型

以下模型的属性若未明确说明,要么未公开,要么大致遵循标准 GPT 配置。

1.GPT-3

本文是继 GPT-2 论文(2018 及扩展定律论文后,大语言模型的一片开创性论文。以下是论文中指出有关 GPT-3 的特征。

  • 它在一个 300B token 的数据集上进行训练。该数据集主要由过滤后的 Common Crawl 以及一些书籍、网络文本和维基百科构成;
  • 使用了 BPE tokenizer(与 GPT-2 相同);
  • 2048 上下文长度;
  • 交替使用密集和稀疏注意力层;
  • 在最初的 375M toks 中,学习率升至 0.6 × 10^-4,260B toks 后余弦衰减至 10%;
  • 在前 12B 个 token 中,批大小从 32k toks 上升到 3.2M toks;
  • 4x MLP 投影率,如 2017 年 Transformer 论文所示;
  • 50k 词汇表(vocab size)。

以上的许多特征形成了一种标准配置,被后来的模型重复使用。

在论文记录超参数的表 2.1 中有一个可能的拼写错误,其中 GPT-3 13B 被记作为具有 5140 的嵌入维度,这里应该是 5120。

 

2.GPT-4

GPT-4 是 OpenAI 提供的一个模型,其架构不明(技术上类似于 Transformer)。技术报告主要包含大部分评估(结果表现良好),以及能够从较小模型精确推断出的持续扩展结果。报告还记录了提高模型安全性的措施,并演示了 GPT-4 的多模态能力,这种能力似乎是用类似于 Flamingo 的方式训练的。

 

3.Gopher

  • 属性:280B 参数,260B 非嵌入参数,80 层,16384 嵌入维度,128 个注意力头
  • 论文地址:
  • 发布详情:DeepMind 在 2020 年底对其进行训练,发布于 2021 年 12 月。

Gopher 是 DeepMind 在 2021 年发布的第一个大型语言模型。它使用 RMSNorm 而不是 LayerNorm,使用 Transformer-XL 的相对位置编码方案而不是绝对位置编码,这就是嵌入参数如此之多的原因。

它使用 SentencePiece 进行分词,词汇表大小为 32k,并用 300B token 进行训练,其中一半来自为 Gopher 收集的 MassiveText,以及书籍、Common Crawl、维基百科、新闻和 Github。

 

4.AlphaCode

  • 属性:41B 参数,8 个编码器层,56 个解码器层,6144 嵌入维度
  • 论文地址:
  • 发布详情:DeepMind 发布于 2022 年 2 月。

AlphaCode 是在 715GB(967B token)代码基础上训练出来的模型,可以用于解决编程竞赛问题。它是本文中唯一采用解码器 - 编码器架构的模型。它将编程竞赛题视为一项翻译任务(问题陈述 → 解决方案),以获得双向性。它在编码器中使用 1536 个 token,在解码器中使用 768 个 token。使用多查询注意力,并在推理时生成数千个样本,然后选择一个解决方案子集进行提交。

 

5.RETRO

检索是一种通用的技术,即在进行推理时提供一个数据库供其查找。RETRO 是第一篇使用 2T token 数据库的 Transformer 检索论文。它使用预训练的 BERT 式模型将 token 数据库嵌入块中,然后在训练和推理期间对数据库中的最近邻执行分块交叉注意力。

 

6.GPT-3.5

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 是否具有相同尺寸。

 

7.Chinchilla

Chinchilla 的论文中引入了新的、改进版的 scalling law。它使用 1.5T token(与 Gopher 相似的数据集)和与 Gopher 相同的计算量进行训练,但性能优于 Gopher。在 scalling law 中,模型的参数和 token 数按照 20:1 的比例线性增加。学习率采用余弦调度进行调整。Megatron Turing NLG 和 Jurassic J-1 Jumbo 是另外两个大型模型,由于它们不是 Chinchilla 最优模型,也没有独特意义,因此没有在本文中单独记录。

 

8.Flamingo

Flamingo 是一个多模态(文本 / 图像)模型。它只生成文本,而图像输入通过视觉编码器(435M 参数)运行,并使用交叉注意力来关注这些输出。它还在视觉编码器之后使用重采样器(194M 参数),无论输入特征的数量如何,都能产生固定(少量)的视觉 token。它们建立在冻结的 Chinchilla 模型上,80B 参数来自添加到 70B Chinchilla 模型中的交叉注意力层。PaLI 是谷歌的图像 / 语言多模态模型。

 

9.Gato

Gato 是一个通用型智能体,算是 Flamingo 的后续产品,但拥有更多的模态。它使用图像和文本,以及按钮按压数据格式化成的 token,还有来自机器人感知的连续数据编码,并尝试使用尽可能少的数据来完成额外的任务。这些任务包括机器人堆叠测试、图像字幕和 Atari。

 

10.Anthropic LM

在 400Btoken 上进行训练,但在 Chinchilla 之后的一篇论文(《 Language Models (Mostly) Know What They Know 》)中,Anthropic 使用了为 850B token 训练的具有相同架构的模型。在后来的另一篇关于道德自我纠正的论文中,使用了一个没有明确说明的 175B 模型。

 

11.PaLM

截至 2023 年 1 月,这是公开已知的最大密集语言模型。PaLM 使用 SwiGLU 激活,使用并行注意力、多查询注意力、旋转嵌入,并对输入和输出嵌入使用相同的矩阵。它没有使用偏置,使用了一个包含 256k 个 token 的 SentencePiece tokenizer。PaLM 是在与 LaMDA 和 GLaM 类似的数据集上,用 780B 个 token 进行训练的。

 

12.GPT-NeoX

这是 Eleuther 的一个开源模型。它使用 DeepSpeed (微软) 和 Nvidia Megatron 在 GPU 上进行训练,并使用与 GPT-J 相同的架构修改,在整个 Pile (400B token) 上进行训练。

 

13.GPT-J

GPT-J 因完全开源而闻名,并且与 GPT-3 论文中 6.7B 版本性能相媲美。它在 TPU 上进行训练,并使用旋转嵌入,并行注意力。为降低复杂性,它仅使用了密集注意力层。它是在 Pile 上训练的,Pile 是一个由 Eleuther AI 创建的开放数据集,包含 22 个较小的数据集,包括 Common Crawl、 OpenWebText、书籍和论文。

 

14.GLaM

GLaM 被称为「通用语言模型」,是一个混合专家 (MoE) 模型,其中的参数是稀疏激活。它每层有 64 个专家,每个 token 激活 96.6B 参数。每一层都有一个门控单元,它为每个 token 选择 64 个 MLP 中的一个或两个。

 

15.LAMDA

  • 属性:137B 参数,64 层,8192 嵌入维度,128 个注意力头
  • 论文地址:
  • 发布详情: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。

 

16.Switch

SwitchTransformer 对 GLaM 进行了改进,它只路由到一个专家,从而减少了计算量。它的创新是使用了不同的路由机制,证明了路由到单个专家是有效的。

 

17.BLOOM

  • 属性:176B 参数,70 层,14336 嵌入维度,112 个注意力头
  • 论文地址:
  • 发布详情:HuggingFace 发布于 2022 年 7 月。

截止于本文梳理的时间,BLOOM 是最大的开源模型。它在 HuggingFace 语料库 ROOTS 上进行训练,该语料库包含 498 个 HuggingFace 数据集。该模型在 366B token 上进行训练,并且位置编码是用 ALiBi 完成的。它用到了 250k 词汇表大小的 BPE tokenizer,帮助它适应多语言数据。

 

18.Galactica

Galactica 是一个科学模型,主要以论文、少量代码、其他基于知识的数据和一些 Common Crawl 数据为基础进行预训练。它用 <work> token 对工作记忆进行编码,并使用特殊 token 对引文进行编码。

 

19.LLaMa

LLaMa 像是 Chinchilla 的复制品,有着相当标准的训练组合,大部分为 Common Crawl。

 

20.OPT

这是 GPT-3 的复刻版,它在 Pile 和 PushShift reddit 上训练,只有 180B token。

这些 Meta 论文完全不是相互关联的项目。LLama、OPT 和 Galactica 共有 41 位作者,只有一位是重合的。

 

21.GLM-130B

GLM 是一个开源的双语(中文 / 英文)模型。它使用旋转嵌入和 DeepNorm,并通过 GeGLU 激活 MLP。值得关注的是,它主要以 INT4 进行推理(而其他模型,如 BLOOM 和 OPT,则量化为 INT8)。它还在预训练中加入了 prompt,而不是标准的 GPT 架构,并且使用 GLM 实现了双向注意力。

架构变化

1. 多查询注意力(Multi-Query Attention,MQA)

论文地址:

Noam Shazeer 的这篇论文中,key 和 value 在 head 之间共享,大大减少了推理时所需的内存数量,提高了延迟和吞吐量。这是一篇非常简洁的论文,并附有代码和结果。AlphaCode 和 PaLM 都使用 MQA。

2. 稀疏注意力

论文地址:

在这种机制中,注意力不会应用于所有之前的 token。它描述了稀疏 Transformer 的两种风格,一种是跨步式,即关注最后 N 个 token;另一种是固定式,即关注序列中的部分 token。在 GPT-3 论文中,该模型被描述为交替密集和「局部带状」稀疏层。

3. 混合专家(Mixture-of-Experts,MoE)

关于 MoE 的内容有很多,在介绍 GLaM 和 Switch 时已经提到了一点。因此,此处将罗列一些优秀的原始文献。

一些谷歌的论文:

 

4.FlashAttention

论文地址:

FlashAttention 是一种架构变革,能以更少的内存访问量完成注意力处理。它对注意力矩阵进行切片和增量化的 softmax 约简,并避免了在后向传播过程中存储整个中间注意力矩阵。论文指出,与 megatron 相比,它训练速度提高到 1.7 倍,推理速度提高到 4 倍多(上下文长度越长,倍数越大)。在此之前,另一篇文章 () 也在 TPU 上采用了同样的方法,实现了 O (log_n) 内存占用。

5. 编码器 + 解码器

论文地址:

根据 Transformer 的原始论文,编码器 - 解码器架构最初是为翻译任务而设计的。经典的 GPT 架构交替使用注意力和 MLP 模块。原始的 Transformer 则采用了编码器块和解码器块。编码器块的结构是:注意力机制 → MLP;解码器块的结构是:掩蔽注意力→ 编码器 - 解码器注意力 → MLP。对于许多序列到序列的任务来说,例如 AlphaCode 或 T5,这也是一个合理的架构。

6. 平行注意力

论文地址:

PaLM 使用平行注意力。即在训练模型时,注意力层和 MLP 层并行运行,使用相同的向量。如此一来,就可以将注意力和前馈矩阵乘法合并在一起,从而提升运算强度,获得更好的性能(PaLM 的训练速度提升了 15%)。GPT-J 也使用了这种方法。

7. 可供选择的激活方案:GeGLU,SwiGLU,SoLU

论文地址:

最初的 Transformer 论文使用 ReLU 来激活 MLP 模块。它在两个线性变换(matmuls)之间进行简单的 x if > x = 0 else 0。从直观上看,这有点草率。GeLU 与 ReLU 类似,但要平滑一些。

论文地址:

SoLU(Softmax)简单地说就是 x*softmax (x),用于提高模型的可解释性。

论文地址:

SwiGLU 是所列论文中最复杂的,也是 Noam Shazee 的个人论文。它建立在门控线性单元的基础上,旨在比 ReLU 更稳定,并在 GLU 之前进行 swish 运算。与 GeLU 一样,它软化了 ReLU,允许某些值低于零。

8.LayerNorm 的替代方案:DeepNorm,RMSNorm

LLM 每个区块有两次 norm(一次用于注意力,一次用于前馈),它会执行一些归一化功能以改进训练。

DeepNorm 论文地址:)

RMSNorm 论文地址:

DeepNorm 和 RMSNorm 可以成为替代方案。RMSNorm(均方根)简单来说就是数值均值的平方根。还有一种 batch norm,效率很低,用起来似乎不太聪明。

9.RoPE

这篇 Blog 文章总结得十分优秀,本文不做赘述。

10.BPE vs SentencePiece Tokenizers

字节对编码(Byte Pair Encoding,BPE)是大多数语言模型的默认编码,最初的 GPT 论文、GPT-3 以及 GPT-3.5 都使用了这种编码。不使用纯 BPE,而使用 SentencePiece 情况的一个明显原因是,分布不包含空格分隔的单词,就像 AlphaCode、GLM(中文)和 PaLM(明确是因为多语言)那样。

11.ALiBi

论文地址:

ALiBi(Attention with Linear Biases)是一种长上下文位置嵌入方案,通过根据距离对 qk 分数进行线性偏置,来支持对更长的长度进行外推。BLOOM 用了 ALiBi,Galactica 也尝试过,但没有采用。

预训练后处理技术

1. 采用 PPO 算法的 RLHF

在 RLHF 中,首先要训练一个奖励模型,由标注员评估模型生成的数组。然后在 RL 中使用 PPO(近端策略优化),策略生成由奖励模型评估的输出,以改进策略。

Christiano 论文:

Deepmind 的 Sparrow 和 Anthropic 的 LM 都是用 RL (AI|H) F 训练的,它们都有对话界面。WebGPT 和 GopherCite 一样,也是用 RLHF 训练的(后者调用了 RLHPreferences)。我认为,这都起源于 2017 年的 Christiano,它先于 LLM 所有内容,之后才是 2020 年根据人类反馈进行的总结以及 PPO 论文。

2020 年根据人类反馈进行的总结 

2.Constitutional

论文链接:

作为 RLHF 的扩展,Constitutional 基本上是 RLAIF,不过实际上被称为 CAI。它有一个监督学习阶段,在这一阶段,只提供帮助的 AI 会生成对抗性 prompt。然后,助手会根据所提供的 constitution(以字符串的形式提供给模型的一组短值)迭代出自己的响应。然后对这些响应进行微调。第二阶段就像采用 PPO 的 RLHF,只不过将 AI 反馈替换了。

3.Minerva

论文地址:

Minerva 是 Blueshift 团队于 2022 年 6 月发布的一个数学和科学数据微调模型,执行效果非常好。它是一个来自 PaLM 的 62/540B 微调模型。它的数据集来自 ArXiV 和一些网站,并经过精心预处理,保留了数学格式。

4.Codex

论文地址:

Codex 于 2021 年 7 月推出(并支撑了 Github Copilot 的推出),是在 100B token 代码 (此处为公开的 Github 代码) 上微调而成的。该论文还首次提出了 HumanEval,即人类编写的代码评估。本文最值得注意的是,它证明了代码数据对代码性能非常重要,因为 GPT-J 在代码方面的表现优于 GPT-3。他们还为代码添加了一些 token,这使压缩率提高了 30%。

5. 只对 CoTed 输出进行微调

我忘了哪篇论文是这么做的,但依稀记得他们根据模型的思维链输出对模型进行了微调,结果变得更好。虽然这在意料之中,但是也值得关注。

6.FeedME (SFT)

论文地址:

这种方法在 Instruct GPT 论文中有所描述,但这不一定是该方法起源。该方法的起源更加接近下面这篇论文。

论文地址:

监督微调使用人工生成的内容,然后用于微调预训练模型。论文发现,SFT 比基础预训练模型表现更好,但 RLHF 比 SFT 表现更好。

7.FLAN

论文地址:

FLAN 是一个经过指令调整的模型(在指令格式的 nlp 任务上进行了微调),可提升零样本性能。

训练技术

1. 善于设置超参数

没有论文是专门讨论这个的,但正确设置超参数显然是非常重要的。

通过阅读以下文章可以获得一些基准。

2. 基于人类反馈的预训练

论文地址:

尽管 PHF(Pretraining with Human Feedback)在预训练时使用了一种简单的技术来标记数据,但预训练往往采用无监督的形式。该方法在训练时使用两个条件 token(好的和坏的)预置到样本中,然后在推理时使用它们进行采样。该研究还尝试了其他各种目标(尤其是把坏数据过滤掉),但在 python 风格、PII 和毒性上的评估结果都很差。

3.MuP

论文地址:

MuP(Maximal Update Parameterization )是一种参数化方法,这种方法不仅节省了参数扫描计算,而且更接近最优。这篇论文很好地阐述了这一方法的理论依据。

其他

1. 思维链(CoT)

论文地址:

CoT 是一种让模型 「step-by-step」思考并产生更好结果的技术,名字起源于上述论文《 Chain-of-Thought Prompting Elicits Reasoning in Large Language Models 》。论文描述了发表于 2021 年 2 月的论文《Prompt Programming for Large Language Models:Beyond the Few-Shot Paradigm》中技术的具体应用。

论文地址:

2. 工具使用

关于规范工具使用的论文可以最早追溯到 2021 年 12 月的 WebGPT 论文。文中 GPT-3 可以访问网络,从而大大增强了模型能力。

论文地址:

除此以外,DeepMind 还训练了可以借助 RL 工具来完成各种任务的智能体 ;Meta 发布语言模型 Toolformer,可以教会自己使用工具。

3.Fill In the Middle

论文地址:

这篇论文描述了一种简单的数据转换,它将子字符串从文本中间移到末尾,并要求模型填充中间部分。这样,模型就能获得一种对代码补全等任务非常有用的能力,而不会影响严格意义上从左到右任务的性能。

4. 采样技术:Top-k,Top-p (核),Beam Search

与 Top -P 有关的论文地址:

语言模型的输出基本上是每个可能 token 的 logit,然后将其 softmax 化为概率。将 logits 转换为 token 的最简单方法,就是取最有可能的 token。当语言模型有温度控制时,它将 logits 除以温度,这使模型对其首选更有信心 / 更没有信心。Top -K 采样从该分布中获取前 K 个 token 和样本。Top -P 采样,或称核采样,会选择 tokens 中概率累积排名前 P 个百分比的部分,并从这个选定的部分进行抽样。

5. 无尾采样(Tail Free Sampling)

文章地址:

无尾采样是 Top-p 采样的衍生,之所以这样命名是为了找到 「尾」,因为 Top-p 采样可能会在许多 token 具有相似概率的点上被切断而失败。上面这篇文章像是说明了无尾采样能够更好进行采样工作的原因,但当涉及到提高模型的创造力和范围时,没有很好的基准。

补充地址(文章中提到的其他论文的地址)如下:

原文链接:

 

欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读、CV招聘信息。

计算机视觉入门1v3辅导班

【技术文档】《从零搭建pytorch模型教程》122页PDF下载

QQ交流群:470899183。群内有大佬负责解答大家的日常学习、科研、代码问题。

其它文章

新认识了几位专注AI的大佬!

如何看待稚晖君的时间管理水平?

重新思考 视频超分辨 Transformers 中的对齐

RecursiveDet | 超越Sparse RCNN,完全端到端目标检测的新曙光

ICCV 2023 | ReDB:可靠、多样、类平衡的域自适应3D检测新方案!

大厂必考深度学习面试题及参考答案

ICCV2023 | 清华大学提出FLatten Transformer,兼顾低计算复杂度和高性能

ICCV'23 | MetaBEV:传感器故障如何解决?港大&诺亚新方案!

ICCV 2023 | 旷视研究院入选论文亮点解读

RCS-YOLO | 比YOLOv7精度提高了2.6%,推理速度提高了60%

国产130亿参数大模型免费商用!性能超Llama2-13B支持8k上下文,哈工大已用上

KDD 2023奖项出炉!港中文港科大等获最佳论文奖,GNN大牛Leskovec获创新奖

大连理工联合阿里达摩院发布HQTrack | 高精度视频多目标跟踪大模型

ICCV 2023 | Actformer:从单人到多人,迈向更加通用的3D人体动作生成

ReID专栏(二)多尺度设计与应用

ReID专栏(一) 任务与数据集概述

libtorch教程(三)简单模型搭建

libtorch教程(二)张量的常规操作

libtorch教程(一)开发环境搭建:VS+libtorch和Qt+libtorch

NeRF与三维重建专栏(三)nerf_pl源码部分解读与colmap、cuda算子使用

NeRF与三维重建专栏(二)NeRF原文解读与体渲染物理模型

NeRF与三维重建专栏(一)领域背景、难点与数据集介绍

异常检测专栏(三)传统的异常检测算法——上

异常检测专栏(二):评价指标及常用数据集

异常检测专栏(一)异常检测概述

BEV专栏(二)从BEVFormer看BEV流程(下篇)

BEV专栏(一)从BEVFormer深入探究BEV流程(上篇)

可见光遥感图像目标检测(三)文字场景检测之Arbitrary

可见光遥感目标检测(二)主要难点与研究方法概述

可见光遥感目标检测(一)任务概要介绍

TensorRT教程(三)TensorRT的安装教程

TensorRT教程(二)TensorRT进阶介绍

TensorRT教程(一)初次介绍TensorRT

AI最全资料汇总 | 基础入门、技术前沿、工业应用、部署框架、实战教程学习

计算机视觉入门1v3辅导班

计算机视觉交流群

聊聊计算机视觉入门