【转载】新型大语言模型预训练与后训练范式

原文地址:New LLM Pre-training and Post-training Paradigms,by Sebastian Raschka, on 2024-08-17

新型大语言模型预训练与后训练范式

现代大语言模型训练方式一览

大语言模型(LLM)的发展已经走过了漫长的道路——从早期的GPT模型,到如今我们拥有的各类先进的开源权重大语言模型。最初,大语言模型的训练流程只聚焦于预训练,但此后已经扩展为同时包含预训练与后训练两个阶段。后训练通常涵盖有监督指令微调与对齐,这一技术因ChatGPT而普及。

自ChatGPT首次发布以来,训练方法论一直在不断演进。在本文中,我将回顾预训练与后训练两方面的最新进展,尤其是近几个月来出现的新方法。

figure01

大语言模型开发与训练流程概览,重点介绍本文讨论的新型预训练与后训练方法论

每个月都有数百篇大语言模型相关论文提出新的技术与方法。不过,要了解哪些方法在实践中真正有效,最好的途径之一就是研究最新前沿模型的预训练与后训练流水线。幸运的是,近几个月发布了四款主流的全新大语言模型,同时附带了相对详尽的技术报告。

在本文中,我将重点介绍以下模型的预训练与后训练流水线:

  • 阿里巴巴通义千问2(Qwen 2)
  • 苹果智能基础语言模型(Apple Intelligence Foundation Language Models)
  • 谷歌Gemma 2
  • Meta AI的Llama 3.1

这些模型按照其各自技术论文在arXiv.org上的发布时间排序,恰好也和字母顺序一致。

本文是我利用空闲时间与周末完成的个人兴趣项目。如果您觉得它有价值,愿意支持我的工作,欢迎购买我的著作并推荐给同事。如果您能在亚马逊上留下书评,我也会非常感激!

figure02

http://mng.bz/M96o , https://nostarch.com/machine-learning-and-ai-beyond-basics , 以及 https://www.amazon.com/Machine-Learning-PyTorch-Scikit-Learn-scikit-learn-ebook-dp-B09NW48MR1/dp/B09NW48MR1/

1. 阿里巴巴通义千问2(Qwen 2)

我们先从https://arxiv.org/abs/2407.10671 开始介绍,这是一个性能非常强劲的大语言模型系列,竞争力不输其他主流大语言模型。但出于某种原因,它的知名度不如Meta AI、微软和谷歌的开源权重模型。

1.1 Qwen 2概述

在介绍https://arxiv.org/abs/2407.10671 中讨论的预训练与后训练方法之前,我们先简要总结一些核心参数。

Qwen 2系列共有5个版本。其中包括4款常规(稠密)大语言模型,参数量分别为0.5B、1.5B、7B和72B。此外还有一款混合专家(Mixture-of-Experts)模型,参数量为57B,其中同时激活的参数为14B。(由于架构细节不是本次的重点,我不会过多展开混合专家模型;简而言之,它与Mistral AI的Mixtral类似,但激活的专家数量更多。想要高层级的概览,可以参考我发表在https://magazine.sebastianraschka.com/p/research-papers-in-january-2024 中的https://magazine.sebastianraschka.com/i/14113005/mixtral-architecture 章节。)

Qwen 2大语言模型最突出的特点之一,是它具备30种语言的优秀多语言能力。它们还拥有规模惊人的151642个token的词表(作为参考,Llama 2使用3.2万词表,Llama 3.1使用12.8万词表);根据经验,词表大小扩大一倍,输入token数量就会减少一半,因此我们可以在相同的输入长度中容纳更多文本。这对多语言数据和代码场景尤其有帮助,可以覆盖标准英语词表之外的词汇。

下面是它与后文其他大语言模型的MMLU基准简要对比。(注意MMLU是一项多项选择基准,因此有其局限性;但它仍然是最常用的大语言模型性能报告方法之一。)

figure03

最新开源权重模型的MMLU基准得分(数值越高越好)。本图数据均收集自各模型官方研究论文。

(如果您不熟悉MMLU,我在https://www.youtube.com/watch?v=kPGTx4wcm_w 中做过简要介绍。)

1.2 Qwen 2预训练

Qwen 2团队在7万亿训练token上训练了1.5B、7B和72B参数模型,这一数据规模是合理的。作为对比,Llama 2模型的训练数据为2万亿token,Llama 3.1模型为15万亿token。

有趣的是,0.5B参数模型是在12万亿token上训练的。但研究人员没有在更大的12万亿token数据集上训练其他模型,因为他们在训练中没有观察到性能提升,额外的计算成本并不划算。

研究的重点方向之一,是改进数据过滤流水线以去除低质量数据,同时强化数据混合以提升数据多样性——这一主题我们在后续考察其他模型时还会反复提到。

有意思的是,他们还使用了Qwen模型(虽然没有说明细节,我推测是上一代Qwen模型)来合成额外的预训练数据。并且预训练中加入了“多任务指令数据……以增强上下文学习与指令遵循能力”。

此外,他们分两个阶段进行训练:常规预训练,随后是长上下文训练。后者在预训练末期阶段,使用“高质量的长文本数据”将上下文长度从4096提升至32768个token。

figure04

Qwen 2预训练技术总结。“持续预训练”指的是两阶段预训练:研究人员先进行常规预训练,再进行长上下文持续预训练。

(遗憾的是,技术报告的另一个共性是数据集相关细节很少,所以如果我的叙述看起来不够详尽,那是因为公开可获取的信息有限。)

1.3 Qwen 2后训练

Qwen 2团队采用了主流的两阶段后训练方法,首先是有监督指令微调(SFT),在50万个样本上训练了2个epoch。该阶段旨在优化模型在预设场景下的回答准确率。

figure05

典型的大语言模型开发流程。

在SFT之后,他们使用直接偏好优化(DPO)让大语言模型对齐人类偏好。(有意思的是,他们的术语中称之为基于人类反馈的强化学习,即RLHF。正如我几周前在《大语言模型预训练与奖励模型评估技巧》一文中讨论的,SFT+DPO方案目前似乎是最主流的偏好调优策略,因为相比带PPO的RLHF等其他方法,它使用起来更简便。如果您想了解DPO的工作原理,我最近从零实现了它:https://github.com/rasbt/LLMs-from-scratch/blob/main/ch07/04_preference-tuning-with-dpo/dpo-from-scratch.ipynb 。)

对齐阶段本身也分两步完成。第一步是在现有数据集上使用DPO(离线阶段)。第二步是使用奖励模型生成偏好对(在线阶段)。在这一阶段,模型在训练过程中生成多个回答,由奖励模型为优化步骤选择更优的回答,实现“实时”(即训练过程中)优化。这也常被称为“拒绝采样”。

在数据集构建方面,他们使用现有语料库,辅以人工标注来确定SFT的目标回答,并识别DPO所需的偏好回答与拒绝回答。研究人员还合成了人工标注数据。

此外,团队还利用大语言模型生成专门针对“高质量文学数据”的指令-回答对,为训练打造高质量问答对。

figure06

Qwen 2后训练技术总结。

1.4 结论

Qwen 2是一款性能相当不错的模型,和前几代Qwen模型一脉相承。我记得2023年12月参加NeurIPS大语言模型效率挑战赛时,大多数获奖方案都用到了Qwen模型。

在Qwen 2的训练流水线中,最突出的一点是合成数据同时被用于预训练和后训练。此外,对数据集过滤的重视(而非一味收集更多数据)是大语言模型训练中值得关注的趋势之一。在这里我想说,数据越多越好,但前提是要满足一定的质量标准。


从零实现直接偏好优化对齐大语言模型

直接偏好优化(DPO)已经成为让大语言模型更贴合用户偏好的首选方法之一,在本文中你会多次读到它。如果您想了解它的工作原理,我在这里从零编写了实现代码:
https://github.com/rasbt/LLMs-from-scratch/blob/main/ch07/04_preference-tuning-with-dpo/dpo-from-scratch.ipynb

figure07

https://github.com/rasbt/LLMs-from-scratch/blob/main/ch07/04_preference-tuning-with-dpo/dpo-from-scratch.ipynb 内容概览

《Ahead of AI》是读者支持的出版物。想要获取新文章并支持我的工作,欢迎成为免费或付费订阅者。


2. 苹果智能基础语言模型(AFM)

看到苹果在arXiv.org上又发布了一篇概述其模型训练的技术论文,我非常欣喜。这是意料之外但绝对积极的惊喜!

2.1 AFM概述

https://arxiv.org/abs/2407.21075 这篇论文中,研究团队概述了为苹果设备上的“苹果智能”功能设计的两款主力模型的开发过程。为简洁起见,本节中将这些模型简称为AFM,即“苹果基础模型”。

具体来说,论文描述了两个版本的AFM:一款30亿参数的端侧模型,计划部署在手机、平板或笔记本电脑上;另一款性能更强的云端模型,参数规模未公开。

这些模型是为聊天、数学和代码任务开发的,不过论文没有讨论任何代码专项训练与能力相关的内容。

和Qwen 2一样,AFM属于稠密大语言模型,没有采用混合专家架构。

2.2 AFM预训练

我要为研究人员大大地点两个赞。首先,除了使用公开数据和出版商授权的数据外,他们遵守了网站的robots.txt协议,没有爬取这些网站。其次,他们还提到对基准数据做了去污染处理。

为了印证Qwen 2论文的一个结论,研究人员提到质量远比数量重要。(端侧模型词表大小为4.9万token,云端模型为10万token,明显小于Qwen 2模型的15万token词表。)

有意思的是,预训练不是分2步,而是分3步完成的!

  1. 核心(常规)预训练
  2. 持续预训练:降低网页爬取(低质量)数据的权重,提升数学与代码数据的权重
  3. 上下文拓展:使用更长序列数据与合成数据拓展上下文长度

figure08

AFM模型所采用的三步预训练流程概览

下面我们更详细地看看这三个步骤。

2.2.1 预训练I:核心预训练

核心预训练是苹果预训练流水线的第一个阶段,和常规预训练类似。AFM云端模型在6.3万亿token上训练,批次大小为4096,序列长度为4096个token。这和Qwen 2模型非常接近,后者的训练数据为7万亿token。

不过AFM端侧模型更有意思:它是从一个更大的64亿参数模型蒸馏裁剪而来(该64亿模型和上一段介绍的AFM云端模型一样,是从零训练的)。

关于蒸馏过程,除了“通过将目标标签替换为真实标签与教师模型top-1预测的凸组合(教师标签权重为0.9)来计算蒸馏损失”之外,没有太多细节。

我觉得知识蒸馏在大语言模型预训练中正变得越来越普遍,也越来越有用(Gemma-2也使用了它)。我打算以后专门写文章详细介绍。现在先做个高层级的简要概述。

figure09

知识蒸馏概览:小模型(此处为AFM端侧3B模型)在原始训练token + 更大教师模型(此处为6.4B模型)输出的基础上进行训练。注意a)中的交叉熵损失是预训练大语言模型的常规训练损失(关于常规预训练步骤的更多实现细节,可参考我的《https://www.manning.com/books/build-a-large-language-model-from-scratch》一书第5章)。

如上所示,知识蒸馏仍然需要在原始数据集上训练。但除了数据集中的训练token外,待训练模型(称为“学生”)还能从更大的(教师)模型中获取信息,相比不使用知识蒸馏的训练,能提供更丰富的信号。缺点是你必须:1)先训练更大的教师模型;2)用更大的教师模型计算所有训练token的预测。这些预测可以提前计算好(需要大量存储空间),也可以在训练过程中计算(可能会拖慢训练速度)。

2.2.2 预训练II:持续预训练

持续预训练阶段包含一小步上下文拓展,在1万亿token的数据集上将上下文从4096提升到8192个token(核心预训练集是它的五倍大)。不过主要重点是用高质量混合数据训练,侧重数学与代码。

有意思的是,研究人员发现在此场景下蒸馏损失并没有带来收益。

2.2.3 预训练III:上下文拓展

第三个预训练阶段仅使用1000亿token(是第二阶段token数的10%),但实现了更显著的上下文拓展,达到32768个token。为了实现这一点,研究人员在数据集中补充了合成的长上下文问答数据。

figure10

AFM预训练技术总结

2.3 AFM后训练

苹果在后训练流程上似乎采取了和预训练同样全面的方法。他们同时利用人工标注数据和合成数据,强调数据质量优先于数量。有意思的是,他们没有依赖预设的数据比例,而是通过多次实验微调数据混合比例,以达到最优平衡。

后训练阶段采用两步流程:有监督指令微调,随后进行多轮基于人类反馈的强化学习(RLHF)。

这个过程中特别值得注意的一点,是苹果为RLHF阶段引入了两种新算法:

  • 带教师委员会的拒绝采样微调(iTeC)
  • 带镜像下降策略优化的RLHF

鉴于本文篇幅,我不会深入这些方法的技术细节,只做简要介绍:

iTeC算法将拒绝采样与多种偏好调优技术相结合——具体包括SFT、DPO、IPO和在线RL。苹果没有依赖单一算法,而是分别用每种方法训练模型。这些模型随后生成回答,由人类进行评估并给出偏好标签。这些偏好数据被用于在RLHF框架中迭代训练奖励模型。在拒绝采样阶段,由一个模型委员会生成多个回答,再由奖励模型选出最优的一个。

这种基于委员会的方法相当复杂,但应该具备较高的可行性,尤其是考虑到涉及的模型规模相对较小(约30亿参数)。如果用大得多的模型来实现这样的委员会,比如Llama 3.1中的70B或405B参数模型,难度肯定会大得多。

至于第二种算法,带镜像下降的RLHF,它被选中是因为事实证明它比常用的PPO(近端策略优化)效果更好。

figure11

AFM后训练技术总结

2.4 结论

苹果的预训练与后训练方法相对全面,可能是因为应用场景极其重要(模型要部署在数百万甚至数十亿台设备上)。不过,由于这些模型本身规模不大,大量技术也变得可行——3B模型还不到最小的Llama 3.1模型的一半大。

亮点之一在于,他们没有简单地在RLHF和DPO之间二选一;相反,他们以委员会的形式使用了多种偏好调优算法。

同样有意思的是,他们明确将问答数据作为预训练的一部分——我在之前的文章https://magazine.sebastianraschka.com/p/instruction-pretraining-llms 中讨论过这一点。

总而言之,这是一篇令人耳目一新、非常精彩的技术报告。


3. 谷歌Gemma 2

谷歌的Gemma模型最近在https://arxiv.org/abs/2408.00118 中进行了介绍。

在讨论预训练与后训练流程之前,我先在概述部分介绍一些关键信息。

3.1 Gemma 2概述

Gemma 2模型有三种参数量:20亿、90亿和270亿。研究的核心重点是探索不一定需要扩大训练数据集规模的技术,转而开发相对小巧高效的大语言模型。

值得注意的是,Gemma 2拥有高达25.6万token的超大词表。作为对比,Llama 2使用3.2万token词表,Llama 3使用12.8万token词表。

此外,Gemma 2采用了滑动窗口注意力,和Mistral早期的模型类似,目的是降低内存开销。关于Gemma 2架构的更多细节,请参考https://magazine.sebastianraschka.com/i/146761957/gemma

3.2 Gemma 2预训练

Gemma的研究人员认为,即使是小模型也往往处于训练不足的状态。但他们没有简单地扩大训练数据集,而是专注于保证数据质量,并通过知识蒸馏等替代方法实现性能提升,和苹果的方法类似。

27B的Gemma 2模型是从零训练的,而更小的模型则采用了和前面介绍的苹果方法类似的知识蒸馏进行训练。

27B模型的训练数据为13万亿token,9B模型为8万亿,2B模型为2万亿。此外,和苹果的方法类似,Gemma团队也优化了数据混合比例以提升性能。

figure12

Gemma 2预训练技术总结

3.3 Gemma 2后训练

Gemma模型的后训练流程包含典型的有监督微调(SFT)和基于人类反馈的强化学习(RLHF)步骤。

指令数据使用纯英文的提示对,由人工生成与合成生成的内容混合组成。特别有意思的是,回答主要由教师模型生成,并且在SFT阶段也应用了知识蒸馏。

他们的RLHF方法有一个有趣的特点:在SFT之后,用于RLHF的奖励模型规模是策略(目标)模型的十倍。

Gemma采用的RLHF算法相当标准,但有一个独特的改动:他们通过一种名为WARP的方法对策略模型进行平均,这是WARM(权重平均奖励模型)的后继方法。我之前在文章https://magazine.sebastianraschka.com/i/14113005/warm-on-the-benefits-of-weight-averaged-reward-models 中详细讨论过这种方法。

figure13

Gemma 2后训练技术总结

3.4 结论

Gemma团队似乎非常重视知识蒸馏,和苹果一样,他们在预训练和后训练中都使用了这一技术。有意思的是,他们没有采用多阶段预训练方法,或者至少没有在论文中详细说明。

figure14

我很荣幸受邀在即将到来的https://events.linuxfoundation.org/pytorch-conference/ 上发表主题演讲。这将是我第一次参加PyTorch大会,我很期待见到社区同仁,一起聊聊最新的人工智能与大语言模型进展!


4. Meta AI的Llama 3.1

Meta发布新款Llama大语言模型向来是行业大事。这一次,同步发布了一份92页的技术报告:https://arxiv.org/abs/2407.21783 。最后,在本节中我们将看看上个月发布的第四篇重要模型论文。

4.1 Llama 3.1概述

除了发布高达4050亿参数的巨型模型外,Meta还更新了之前的80亿和700亿参数模型,让它们的MMLU性能有了小幅提升。

figure15

不同模型的MMLU基准表现

虽然Llama 3和其他近期大语言模型一样使用了分组查询注意力,但令人意外的是,Meta AI没有采用滑动窗口注意力和混合专家架构。换句话说,Llama 3.1看起来非常传统,重点显然放在了预训练与后训练上,而非架构创新。

和之前的Llama发布一样,模型权重是公开可用的。此外,Meta表示他们更新了Llama 3的许可证,现在终于允许使用Llama 3进行合成数据生成或知识蒸馏来改进其他模型。

4.2 Llama 3.1预训练

Llama 3的训练数据规模高达15.6万亿token,相比Llama 2的1.8万亿token有了大幅增长。研究人员表示它至少支持8种语言(而Qwen 2可以处理20种)。

Llama 3一个有意思的特点是它的词表大小为12.8万,是使用OpenAI的tiktoken分词器开发的。(对分词器性能感兴趣的读者,我做过一个简单的基准对比:https://github.com/rasbt/LLMs-from-scratch/blob/main/ch02/02_bonus_bytepair-encoder/compare-bpe-tiktoken.ipynb 。)

在预训练数据质量控制方面,Llama 3采用了基于启发式的过滤与基于模型的质量过滤,使用了Meta AI的fastText和基于RoBERTa的分类器等快速分类器。这些分类器还有助于确定训练时数据混合的上下文类别。

Llama 3的预训练分为三个阶段。第一阶段是标准初始预训练,使用15.6万亿token,上下文窗口为8k。第二阶段继续预训练,但将上下文长度拓展到128k。最后一个阶段是退火,进一步提升模型性能。下面我们更详细地看看这些阶段。

4.2.1 预训练I:标准(初始)预训练

在他们的训练设置中,初始批次由400万token组成,每个序列长度为4096。这意味着批次大小约为1024个序列(假设400万是四舍五入后的数字)。在处理完前2.52亿token后,他们将序列长度翻倍到8192。训练进行到2.87万亿token后,他们再次将批次大小翻倍。

此外,研究人员没有在整个训练过程中保持数据混合不变。相反,他们在训练过程中调整所用数据的混合比例,以优化模型的学习效果与性能。这种动态的数据处理方式,很可能有助于提升模型在不同类型数据上的泛化能力。

4.2.2 预训练II:上下文拓展持续预训练

和其他一步到位提升上下文窗口的模型相比,Llama 3.1的上下文拓展是一个更渐进的过程:研究人员通过六个不同的阶段,将上下文长度从8000逐步提升到128000个token。这种阶梯式增长让模型能够更平稳地适应更大的上下文。

这一过程使用的训练集包含8000亿token,约占总数据集规模的5%。

4.2.3 预训练III:高质量数据退火

在第三个预训练阶段,研究人员用小规模但高质量的混合数据训练模型,他们发现这有助于提升模型在基准数据集上的表现。例如,在GSM8K和MATH训练集上进行退火,能在对应的GSM8K和MATH验证集上带来显著提升。

在论文3.1.3节中,研究人员称退火数据集规模为400亿token(占总数据集的0.02%);这400亿的退火数据集被用于评估数据质量。在3.4.3节中,他们表示实际的退火只在4000万token上进行(占退火数据的0.1%)。

figure16

Llama 3.1预训练技术总结

4.3 Llama 3.1后训练

Meta AI团队的后训练流程采用了相对直接的方法,包括有监督微调(SFT)、拒绝采样和直接偏好优化(DPO)。

他们观察到,像带PPO的RLHF这类强化学习算法稳定性更差,也更难扩展,相比之下这些技术更有优势。值得注意的是,SFT和DPO步骤会多轮迭代重复,同时结合人工生成与合成数据。

在介绍更多细节之前,下图展示了他们的工作流程:

figure17

摘自Llama 3.1论文,描述后训练流程的示意图

注意,尽管他们使用了DPO,但也像RLHF中一样训练了一个奖励模型。最初,他们利用预训练阶段的一个检查点,结合人工标注数据来训练奖励模型。该奖励模型随后被用于拒绝采样流程,帮助筛选合适的提示用于后续训练。

在每一轮训练中,他们不仅对奖励模型使用了模型平均技术,对SFT和DPO模型也同样使用。这种平均是将近期与之前模型的参数进行融合,以稳定(并提升)长期性能。

对模型平均的技术细节感兴趣的读者,可以参考我之前的文章https://magazine.sebastianraschka.com/i/14113005/understanding-model-merging-and-weight-averaging 中的“理解模型合并与权重平均”章节。

总而言之,核心是相对标准的SFT+DPO阶段。但这个阶段会重复多轮。然后,他们加入了用于拒绝采样的奖励模型(和Qwen 2、AFM一样)。他们也像Gemma一样使用了模型平均;不过不只是针对奖励模型,而是所有涉及的模型都用。

figure18

Llama 3.1后训练技术总结

4.4 结论

Llama 3模型整体保持了相当标准的路线,和更早的Llama 2模型类似,但加入了一些有意思的方法。值得注意的是,15万亿token的庞大训练集是Llama 3区别于其他模型的地方。有意思的是,和苹果的AFM模型一样,Llama 3也采用了三阶段预训练流程。

和其他近期大语言模型不同的是,Llama 3没有使用知识蒸馏技术,而是选择了更直接的模型开发路径。在后训练方面,模型使用了直接偏好优化(DPO),而非其他模型中流行的更复杂的强化学习策略。总的来说,这一选择很有意思,因为它表明团队专注于通过更简单(但已被验证)的方法来优化大语言模型性能。


5. 核心要点

从本文讨论的四款模型——阿里巴巴Qwen 2、苹果基础模型(AFM)、谷歌Gemma 2和Meta的Llama 3——中,我们能学到什么?

四款模型在预训练与后训练上采取了略有不同的方法。当然,方法论上有重叠,但没有哪条训练流水线是完全相同的。在预训练方面,一个共同的特点是所有方法都采用了多阶段预训练流水线:先进行通用的核心预训练,然后是上下文拓展,有时还会加上高质量退火步骤。下图再次直观展示了预训练中采用的不同方法。

figure19

预训练所用技术概览

在后训练方面,同样没有哪条流水线是完全一样的。看起来拒绝采样现在已经成为后训练流程中的标配。不过在DPO还是RLHF的选择上,目前还没有共识。

figure20

后训练所用技术概览

所以总而言之,开发高性能大语言模型没有单一的秘诀,而是有很多条路径。

最后,这四款模型的性能处于同一梯队。遗憾的是,其中几款模型还没有进入LMSYS和AlpacaEval排行榜,所以我们还没有直接的对比,只有MMLU等多项选择基准的得分可以参考。


支持《Ahead of AI》

这本杂志是个人兴趣项目。如果您愿意支持我,欢迎购买我的著作https://amzn.to/4fqvn0D 。(我相信您一定会从这本书中收获良多,因为它对大语言模型工作原理的讲解深度是其他地方找不到的。)

figure21

《从零构建大语言模型》现已发售:https://amzn.to/4fqvn0D

如果您读过这本书,并且能抽出几分钟时间,我非常希望您能在https://www.amazon.com/Build-Large-Language-Model-Scratch/dp/1633437167 上留下评论。这对我们作者帮助很大!

另外,我最近也在Substack上开通了付费订阅选项,可以直接支持这本杂志。

《Ahead of AI》是读者支持的出版物。想要获取新文章并支持我的工作,欢迎成为免费或付费订阅者。

Leave a Reply

Your email address will not be published. Required fields are marked *

*