从早期的 GPT 模型到如今复杂的开放式 LLM,大型语言模型 (LLM) 的发展已经取得了长足的进步。最初,LLM 训练过程仅侧重于预训练,但后来扩展到包括预训练和后训练。后训练通常包括监督指令微调和校准,这是由 ChatGPT 推广的。
自 ChatGPT 首次发布以来,训练方法已不断发展。在本文中,我回顾了训练前和训练后方法的最新进展,特别是最近几个月取得的进展。
概述 LLM 开发和培训流程,重点介绍本文讨论的新的预培训和后培训方法
每个月都有数百篇 LLM 论文提出新技术和新方法。然而,了解哪些方法在实践中真正有效的最佳方法之一是查看最新最先进模型的训练前和训练后流程。幸运的是,过去几个月已经发布了四篇重要的新 LLM,并附有相对详细的技术报告。
在本文中,我重点介绍以下模型的预训练和后训练流程:
-
阿里巴巴的 Qwen 2
-
Apple Intelligence Foundation 语言模型
-
谷歌的 Gemma 2
-
Meta AI 的 Llama 3.1
这些模型按照其各自技术论文在 arXiv.org 上的发表日期的顺序呈现,这也与它们的字母顺序一致。
1.阿里巴巴的Qwen 2
让我们从Qwen 2开始,这是一个非常强大的 LLM 模型系列,可以与其他主要 LLM 相媲美。
1.1 Qwen 2 概述
在查看Qwen 2 技术报告中讨论的预训练和后训练方法之前,让我们简单总结一下一些核心规格。
Qwen 2 模型有 5 种类型。有 4 种常规(密集)LLM,大小分别为 5 亿、15 亿、70 亿和 720 亿个参数。此外,还有一个 Mixture-of-Experts 模型,具有 570 亿个参数,其中同时激活了 140 亿个参数。(由于架构细节不是这次的重点,我不会过多地介绍 Mixture-of-Experts 模型;但是,简而言之,这与 Mistral AI 的 Mixtral 类似,只是它有更多活跃的专家。有关高级概述,请参阅我的"模型合并、专家混合和迈向更小的 LLM"文章中的Mixtral 架构部分。)
Qwen 2 LLM 的突出特点之一是其出色的多语言能力,涵盖 30 种语言。它们还拥有惊人的 151,642 个标记词汇表(作为参考,Llama 2 使用 32k 个词汇表,而 Llama 3.1 使用 128k 个标记词汇表);根据经验,将词汇表大小增加 2 倍可将输入标记数量减少 2 倍,因此 LLM 可以将更多标记放入相同的输入中。此外,它特别有助于处理多语言数据和编码,以涵盖标准英语词汇表之外的单词。
以下是 MMLU 基准与后面介绍的其他 LLM 的简要比较。(请注意,MMLU 是一个多项选择基准,因此有其局限性;然而,它仍然是报告 LLM 表现的最流行的方法之一。)
最新开放权重模型的 MMLU 基准分数(值越高越好)。我从每个模型的官方研究论文中收集了此图的分数。
1.2 Qwen 2 预训练
Qwen 2 团队在 7 万亿个训练 token 上训练了 15 亿、70 亿和 720 亿个参数模型,这是一个合理的规模。作为比较,Llama 2 模型是在 2 万亿个 token 上训练的,而 Llama 3.1 模型是在 15 万亿个 token 上训练的。
有趣的是,5 亿个参数的模型是在 12 万亿个 token 上训练的。然而,研究人员并没有在更大的 12 万亿个 token 数据集上训练其他模型,因为他们在训练过程中没有观察到任何改进,而且额外的计算成本也是不合理的。
重点领域之一是改进数据过滤流程以删除低质量数据并增强数据混合以增加数据多样性------我们稍后在研究其他模型时将重新讨论这个主题。
有趣的是,他们还使用 Qwen 模型(虽然他们没有具体说明细节,但我认为他们指的是上一代 Qwen 模型)来合成额外的预训练数据。
此外,他们分两个阶段进行训练:常规预训练,然后是长上下文训练。后者在预训练的最后阶段使用"高质量、长数据"将上下文长度从 4,096 个 token 增加到 32,768 个 token。
Qwen 2 预训练技术总结。"持续预训练"是指 2 阶段预训练,研究人员从常规预训练开始,然后进行长上下文持续预训练。
1.3 Qwen 2 后训练
Qwen 2 团队采用了流行的两阶段后训练方法,首先是监督指令微调 (SFT),该方法应用于 2 个时期的 500,000 个示例。此阶段旨在提高模型在预定场景中的响应准确性。
在 SFT 之后,他们使用直接偏好优化 (DPO) 使 LLM 与人类偏好保持一致。(有趣的是,在他们的术语中将其称为从人类反馈中强化学习,RLHF。)正如我在几周前的 LLM 预训练和评估奖励模型的技巧文章中所讨论的那样,SFT+DPO 方法似乎是目前最流行的偏好调整策略,因为与其他方法(例如带有 PPO 的 RLHF)相比,它易于使用。(如果您想了解 DPO 的工作原理,我最近在这里从头开始实现了它。)
对齐阶段本身也分为两个阶段。首先,在现有数据集上使用 DPO(离线阶段)。其次,使用奖励模型形成偏好对(在线)。在这里,模型在训练期间生成多个响应,奖励模型"实时"(即在训练期间)为优化步骤选择首选响应。这也通常被称为"拒绝抽样"。
在构建数据集时,他们利用现有语料库并辅以人工标注来确定 SFT 的目标响应,并确定 DPO 所必需的首选和拒绝响应。研究人员还合成了人工标注的数据。
此外,该团队还利用 LLM 生成专门针对"高质量文学数据"的指令-响应对,以创建高质量的问答对进行训练。
1.4 结论
Qwen 2 是一个相对强大的模型,与前几代 Qwen 类似。在参加 2023 年 12 月的 NeurIPS LLM 效率挑战赛时,我记得大多数获胜方法都涉及 Qwen 模型。
关于 Qwen 2 的训练流程,最突出的是合成数据已用于训练前和训练后。此外,专注于数据集过滤(而不是收集尽可能多的数据)是 LLM 培训的显著趋势之一。在这里,我想说,越多越好,但前提是它符合一定的质量标准。
从头开始将 LLM 与直接偏好优化相结合
直接偏好优化 (DPO) 已成为使 LLM 与用户偏好更加紧密结合的首选方法之一,您将在本文中多次看到它。
用于 LLM 对齐的直接偏好优化 (DPO)(从头开始)。
DPO 与 LLM 对齐的概述
2. Apple 的 Apple Intelligence Foundation 语言模型(AFM)
我很高兴在 arXiv.org 上看到 Apple 的另一篇技术论文,其中概述了他们的模型训练。出乎意料但绝对是积极的惊喜!
2.1 AFM 概述
在Apple Intelligence Foundation 语言模型论文(可在此处获取)中,研究团队概述了两种主要模型的开发,这些模型旨在用于 Apple 设备上的"Apple Intelligence"环境。为简便起见,本节中这些模型将简称为 AFM,即"Apple Foundation Models"。
具体来说,该论文描述了 AFM 的两个版本:一个是用于部署在手机、平板电脑或笔记本电脑上的 30 亿参数设备模型,另一个是功能更强大的 30 亿参数服务器模型。
这些模型是为聊天、数学和编码任务而开发的,尽管本文没有讨论任何特定于编码的训练和能力。
与 Qwen 2 一样,AFM 是密集的 LLM,并且不采用混合专家方法。
2.2 AFM 预训练
我想向研究人员致以两点敬意。首先,除了使用公开数据和出版商授权的数据外,他们还尊重网站上的 robots.txt 文件,并避免抓取这些文件。其次,他们还提到他们使用基准数据进行了净化。
为了强调 Qwen 2 论文的要点之一,研究人员提到质量比数量更重要。(设备模型的词汇量为 49k 个标记,服务器模型的词汇量为 100k 个标记,词汇量明显小于使用 150k 个标记词汇的 Qwen 2 模型。)
有趣的是,预训练不是分为 2 个阶段,而是 3 个阶段!
核心(常规)预训练
继续进行预训练,其中网络爬取(低质量)数据的权重降低;数学和代码的权重增加
使用更长的序列数据和合成数据来延长上下文
AFM 模型经历的 3 步预训练过程概述。
让我们更详细地了解一下这 3 个步骤。
2.2.1预训练I:核心预训练
核心预训练描述了 Apple 预训练流程中的第一个预训练阶段。这类似于常规预训练,其中 AFM 服务器模型在 6.3 万亿个标记、批大小为 4096 的批大小和 4096 个标记序列长度上进行训练。这与在 7 万亿个标记中训练的 Qwen 2 模型非常相似。
然而,对于 AFM-on-device 模型来说,情况变得更有趣了,它是从更大的 64 亿参数模型(像上一段描述的 AFM-server 模型一样从头开始训练)中提炼和修剪出来的。(请注意,AFM-server 和 AFM-on-device 都是 30 亿参数模型。)
除了"通过用真实标签和教师模型的 top-1 预测的凸组合替换目标标签(为教师标签分配 0.9 的权重)"之外,蒸馏损失用于蒸馏过程,没有太多细节。
我觉得知识提炼正变得越来越普遍,并且对 LLM 预训练非常有用(Gemma-2 也使用它)。我计划有一天更详细地介绍它。现在,这里简要概述了这个过程在高层次上是如何工作的。
知识蒸馏概述,其中一个小型模型(此处为 AFM-device 3B 模型)在原始训练标记和较大的教师模型(此处为 6.4B
模型)的输出上进行训练。请注意,a) 中的交叉熵损失是用于预训练 LLM 的常规训练损失
如上所示,知识提炼仍然涉及对原始数据集的训练。但是,除了数据集中的训练标记之外,要训练的模型(称为学生)还会从更大的(教师)模型中接收信息,与没有知识提炼的训练相比,这提供了更丰富的信号。缺点是您必须:1)首先训练更大的教师模型,2)使用更大的教师模型计算所有训练标记的预测。这些预测可以提前计算(这需要大量存储空间)或在训练期间计算(这可能会减慢训练过程)。
2.2.2预训练二:继续预训练
持续的预训练阶段包括对包含 1 万亿个标记的数据集(核心预训练集大五倍)进行小规模的上下文扩展,从 4,096 个标记增加到 8,192 个标记。不过,主要重点是使用高质量数据组合进行训练,重点是数学和代码。
有趣的是,研究人员发现,在这种情况下,蒸馏损失并无益处。
2.2.3 预训练三:上下文延长
第三个预训练阶段仅涉及 1000 亿个标记(占第二阶段所用标记的 10%),但代表了更为显著的上下文扩展至 32,768 个标记。为了实现这一点,研究人员使用合成的长上下文问答数据扩充了数据集。
2.3 AFM 后训练
苹果似乎对后训练过程采取了与预训练类似的全面方法。他们利用人工注释和合成数据,强调数据质量优先于数量。有趣的是,他们并不依赖预先确定的数据比例;相反,他们通过多次实验对数据组合进行微调,以达到最佳平衡。
后期训练阶段涉及两个步骤:监督指令微调,然后进行几轮带有人工反馈的强化学习(RLHF)。
此过程中特别值得注意的是苹果为 RLHF 阶段引入了两种新算法:
-
Rejection Sampling Fine-tuning with Teacher Committee (iTeC)
-
RLHF with Mirror Descent Policy Optimization
鉴于本文的篇幅,我不会深入讨论这些方法的技术细节,但这里给出一个简要概述:
iTeC 算法将拒绝抽样与多种偏好调整技术相结合,具体来说,包括 SFT、DPO、IPO 和在线 RL。Apple 并不依赖单一算法,而是使用每种方法独立训练模型。然后,这些模型生成响应,由提供偏好标签的人员进行评估。这些偏好数据用于在 RLHF 框架中迭代训练奖励模型。在拒绝抽样阶段,模型委员会生成多个响应,奖励模型选择最佳响应。
这种基于委员会的方法相当复杂,但应该相对可行,特别是考虑到所涉及的模型规模相对较小(约 30 亿个参数)。使用更大的模型(如 Llama 3.1 中的 70B 或 405B 个参数模型)实施这样的委员会肯定会更具挑战性。
至于第二种算法,即带有镜像下降的 RLHF,之所以选择它,是因为它被证明比常用的 PPO(近端策略优化)更有效。
2.4 结论
苹果的预训练和后训练方法相对全面,可能是因为风险很高(该模型部署在数百万甚至数十亿台设备上)。然而,考虑到这些模型的规模很小,因此各种技术也变得可行,因为 3B 模型的大小还不到最小的 Llama 3.1 模型的一半。
其中一个亮点是,这不是在 RLHF 和 DPO 之间做出的简单选择;相反,他们以委员会的形式使用了多种偏好调整算法。
同样有趣的是,他们明确地使用问答数据作为预训练的一部分 - 我在上一篇文章《指令预训练 LLM》中讨论过这一点。
总而言之,这是一份令人耳目一新、令人愉快的技术报告。
3. Google 的 Gemma 2
Google 的 Gemma 模型最近在《 Gemma 2: Improving Open Language Models at a Practical Size》中进行了描述。
在讨论训练前和训练后过程之前,我将在下面的概述部分概述一些关键事实。
3.1 Gemma 2 概述
Gemma 2 模型有三种规模:20 亿、90 亿和 270 亿个参数。主要重点是探索不一定需要增加训练数据集大小的技术,而是开发相对较小且高效的 LLM。
值得注意的是,Gemma 2 的词汇量相当大,达到 256k 个词元。相比之下,Llama 2 的词汇量为 32k,而 Llama 3 的词汇量为 128k。
此外,Gemma 2 采用了与 Mistral 早期模型类似的滑动窗口注意机制,有望降低内存成本。有关 Gemma 2 架构的更多详细信息,请参阅我之前文章中的 Gemma 2 部分。
3.2 Gemma 2 预训练
Gemma 的研究人员认为,即使是小型模型也经常训练不足。然而,他们并没有简单地增加训练数据集的大小,而是专注于保持质量,并通过知识提炼等替代方法实现改进,类似于苹果的方法。
虽然 27B Gemma 2 模型是从头开始训练的,但较小的模型是使用类似于 Apple 之前解释过的方法的知识提炼进行训练的。
27B 模型在 13 万亿个 token 上进行训练,9B 模型在 8 万亿个 token 上进行训练,2B 模型在 2 万亿个 token 上进行训练。此外,与苹果的做法类似,Gemma 团队也优化了数据混合以提高性能。
3.3 Gemma 2 后期训练
Gemma 模型的后期训练过程涉及典型的监督微调 (SFT) 和带人工反馈的强化学习 (RLHF) 步骤。
教学数据涉及使用纯英语提示对,这些提示对是人工生成和合成生成内容的混合。具体而言,有趣的是,这些答案主要由教师模型生成,并且在 SFT 阶段也应用了知识提炼。
继 SFT 之后,他们的 RLHF 方法的一个有趣方面是,用于 RLHF 的奖励模型比策略(目标)模型大十倍。
Gemma 使用的 RLHF 算法相当标准,但有一个独特的变化:它们通过一种称为 WARP 的方法对策略模型进行平均,该方法是 WARM(加权平均奖励模型)的后继者。
3.4 结论
Gemma 团队似乎真的加倍重视知识提炼,他们在训练前和训练后都使用了这种方法,类似于苹果。有趣的是,他们并没有使用多阶段预训练方法,或者至少他们没有在论文中详细介绍它。
4. Meta AI 的 Llama 3.1
Meta 的 Llama LLM 的新版本发布总是一件大事。这次,发布伴随着一份长达 92 页的技术报告:The Llama 3 Herd of Models 。最后但并非最不重要的是,在本节中,我们将介绍上个月发布的第四篇大型模型论文。
4.1 Llama 3.1 概述
除了发布庞大的 4050 亿参数模型外,Meta 还更新了之前的 80 亿和 700 亿参数模型,略微提升了 MMLU 性能。
不同模型的MMLU基准性能。
虽然 Llama 3 像其他近期的 LLM 一样使用了组查询注意,但令人惊讶的是,Meta AI 拒绝了滑动窗口注意和混合专家方法。换句话说,Llama 3.1 看起来非常传统,重点显然是训练前和训练后,而不是架构创新。
与之前的 Llama 版本类似,权重也是公开可用的。此外,Meta 表示他们更新了 Llama 3 许可证,因此现在终于可以(允许)使用 Llama 3 进行合成数据生成或知识提炼,以改进其他模型。
4.2 Llama 3.1 预训练
Llama 3 是在 15.6 万亿个词法单元的海量数据集上进行训练的,这比 Llama 2 的 1.8 万亿个词法单元有了大幅提升。研究人员表示,它至少支持 8 种语言(而 Qwen 2 可以处理 20 种语言)。
Llama 3 的一个有趣方面是其词汇量为 128,000,这是使用 OpenAI 的 tiktoken 分词器开发的。(对于那些对分词器性能感兴趣的人,我在这里做了一个简单的基准比较。)
在训练前数据质量控制方面,Llama 3 采用基于启发式的过滤和基于模型的质量过滤,利用快速分类器(如 Meta AI 的 fastText 和基于 RoBERTa 的分类器)。这些分类器还有助于确定训练期间使用的数据组合的上下文类别。
Llama 3 的预训练分为三个阶段。第一阶段涉及使用 15.6 万亿个标记和 8k 上下文窗口进行标准初始预训练。第二阶段继续进行预训练,但将上下文长度扩展到 128k。最后阶段涉及退火,这进一步增强了模型的性能。让我们在下面更详细地研究这些阶段。
4.2.1预训练 I:标准(初始)预训练
在他们的训练设置中,他们从包含 400 万个标记的批次开始,每个标记的序列长度为 4096。这意味着批次大小约为 1024 个标记,假设 400 万这个数字四舍五入到最接近的数字。在处理完前 2.52 亿个标记后,他们将序列长度加倍至 8192。在进一步的训练过程中,在处理完 2.87 万亿个标记后,他们再次将批次大小加倍。
此外,研究人员并没有在整个训练过程中保持数据组合不变。相反,他们调整了训练过程中使用的数据组合,以优化模型学习和性能。这种动态数据处理方法可能有助于提高模型对不同类型数据进行泛化的能力。
4.2.2预训练 II:继续预训练以延长上下文
与其他一次性增加上下文窗口的模型相比,Llama 3.1 上下文延长采用更渐进的方法:在这里,研究人员通过六个不同的阶段将上下文长度从 8,000 个标记增加到 128,000 个标记。这种逐步增加可能使模型能够更平稳地适应更大的上下文。
此过程所使用的训练集涉及 8000 亿个标记,约占总数据集大小的 5%。
4.2.3预训练三:高质量数据退火
对于第三个预训练阶段,研究人员在少量但高质量的混合数据集上训练了模型,他们发现这有助于提高基准数据集上的性能。例如,对 GSM8K 和 MATH 训练集进行退火可显著提升 GSM8K 和 MATH 验证集的性能。
在论文第 3.1.3 节中,研究人员指出退火数据集的大小为 400 亿个 token(占整个数据集大小的 0.02%)。然而,在第 3.4.3 节中,他们指出退火仅针对 4000 万个 token(占退火数据的 0.1%)进行。
4.3 Llama 3.1 训练后
对于后期训练过程,Meta AI 团队采用了一种相对简单的方法,包括监督微调(SFT)、拒绝采样和直接偏好优化(DPO)。
他们发现,与这些技术相比,强化学习算法(如带有 PPO 的 RLHF)稳定性较差,扩展难度也更大。值得注意的是,SFT 和 DPO 步骤经过多轮迭代重复,同时结合了人工生成的数据和合成数据。
在描述进一步的细节之前,下图说明了它们的工作流程。
来自 Llama 3.1 论文的注释图,描述了训练后的过程
请注意,尽管他们使用了 DPO,但他们也开发了奖励模型,就像您在 RLHF 中所做的那样。最初,他们使用预训练阶段的检查点训练奖励模型,利用人工注释的数据。然后,该奖励模型用于拒绝采样过程,帮助选择适当的提示进行进一步训练。
在每一轮训练中,他们不仅将模型平均技术应用于奖励模型,还将其应用于 SFT 和 DPO 模型。这种平均技术涉及合并近期和之前模型的参数,以稳定(并提高)随时间推移的性能。
总而言之,从本质上讲,这是一个相对标准的 SFT + DPO 阶段。但是,这个阶段会在多轮中重复。然后,他们加入了一个用于拒绝采样的奖励模型(如 Qwen 2 和 AFM)。他们还使用了 Gemma 等模型平均法;然而,这不仅适用于奖励模型,还适用于所有相关模型。
Llama 3.1 后期训练技术总结。
4.4 结论
Llama 3 模型保持了相当标准的风格,与早期的 Llama 2 模型类似,但也有一些有趣的方法。值得注意的是,15 万亿个 token 的大型训练集使 Llama 3 有别于其他模型。有趣的是,与 Apple 的 AFM 模型一样,Llama 3 也实现了 3 阶段预训练过程。
与近期其他大型语言模型不同,Llama 3 没有采用知识蒸馏技术,而是选择了更直接的模型开发路径。对于后期训练,该模型采用了直接偏好优化 (DPO),而不是其他模型中流行的更复杂的强化学习策略。总的来说,这种选择很有意思,因为它表明了专注于通过更简单(但经过验证)的方法来改进 LLM 性能。
5. 主要要点
我们可以从本文讨论的四种模型中学到什么:阿里巴巴的 Qwen 2、苹果的基础模型(AFM)、谷歌的 Gemma 2 和 Meta 的Llama 3.1
这四种模型在预训练和后训练方面都采用了略有不同的方法。当然,方法论是重叠的,但没有哪一种训练流程完全相同。对于预训练,一个共同的特点似乎是所有方法都使用多阶段预训练流程,其中一般核心预训练之后是上下文延长步骤,有时是高质量退火步骤。下图再次一目了然地展示了预训练中采用的不同方法。
预训练技术概述
在训练后,也没有一个流程是完全相同的。似乎拒绝采样现在已成为训练后过程中的常见做法。然而,在 DPO 或 RLHF 方面,目前还没有达成共识或偏好(无意双关)。
后期训练所用技术的概述
因此,总而言之,培养高性能 LLM 并没有单一的秘诀,而是有很多途径。