为开启新的一年,我终于完成了这篇《2024年AI研究亮点》文章的初稿。内容涵盖广泛,从混合专家模型到关于精度的大语言模型新缩放定律。
若要回顾2024年所有重大研究亮点,恐怕得写一整本书。即便是对于这样一个快速发展的领域,这一年也格外高产。为了保持简洁,我决定今年只聚焦于大语言模型研究。但即便如此,在如此成果丰硕的一年中,如何挑选出一批论文呢?我能想到的最简单方法,就是每月重点推荐一篇:从2024年1月到12月。
因此,在这篇文章中,我将分享我个人觉得引人入胜、影响深远,或两者兼备的研究论文。但请注意,本文仅为第一部分,聚焦于2024年上半年,即1月至6月。本系列的第二部分(涵盖7月至12月)将于1月下旬发布。
选择标准难免主观,基于今年最令我印象深刻的内容。我也力求多样性,所以并非只关注大语言模型发布。
如果你在寻找更广泛的AI研究论文列表,欢迎查阅我之前的文章(《大语言模型研究论文:2024年列表》)。
对于阅读过我上一篇文章的读者,我很高兴地告诉大家,我的身体状况已有所好转,正在稳步恢复中!同时,衷心感谢所有温暖的祝福与支持。这对我意义重大,帮助我度过了艰难的日子!
新年快乐,阅读愉快!
2024年1月刚过几天,Mistral AI团队就分享了《Mixtral of Experts》论文(2024年1月8日),其中描述了Mixtral 8x7B,一个稀疏混合专家模型。
这篇论文和模型在当时都极具影响力,因为Mixtral 8x7B是首批性能令人印象深刻的开源权重MoE大语言模型之一:它在多项基准测试中超越了Llama 2 70B和GPT-3.5。
MoE,即混合专家模型,是一种集成模型,它在类似GPT的解码器架构内结合了多个较小的“专家”子网络。每个子网络被认为负责处理不同类型的任务,或更具体地说,不同的词元。其理念是,通过使用多个较小的子网络而非一个大型网络,MoE旨在更高效地分配计算资源。
具体来说,在Mixtral 8x7B中,是将Transformer架构中的每个前馈模块替换为8个专家层,如下图所示。

在“稀疏混合专家模型”的语境中,“稀疏”指的是在任何时刻,只有部分专家层(例如在Mixtral 8x7B模型中,通常8个专家层中只有1或2个)被激活用于处理某个词元。
如上图所示,子网络取代了大语言模型中的前馈模块。前馈模块本质上是一个多层感知机。用类似PyTorch的伪代码表示,其核心结构如下:
class FeedForward(torch.nn.Module):
def __init__(self, embed_dim, coef):
super().__init__()
self.layers = nn.Sequential(
torch.nn.Linear(embed_dim, coef*embed_dim),
torch.nn.ReLU(),
torch.nn.Linear(coef*n_embed, embed_dim),
torch.nn.Dropout(dropout)
)
def forward(self, x):
return self.layers(x)
此外,还有一个路由器模块(也称为门控网络),负责将每个词元嵌入重定向到8个专家前馈模块,且每次只有部分专家处于激活状态。
由于本文还需涵盖另外11篇论文,我对Mixtral模型的描述将尽量简洁。不过,你可以在我的上一篇文章《模型合并、专家混合与更小的大语言模型》中找到更多细节。
年初时,我曾以为开放权重的MoE模型会比现在更受欢迎和广泛使用。虽然它们并非无关紧要,但许多最先进的模型仍依赖密集(传统)大语言模型而非MoE,例如Llama 3、Qwen 2.5、Gemma 2等。当然,我们无法确定GPT-4、Gemini和Claude等专有架构的基础;它们很可能在底层使用了MoE。
无论如何,MoE架构仍然具有重要意义,尤其是它们通过仅激活每个输入的部分模型参数,高效扩展大语言模型,从而在不牺牲模型容量的前提下降低计算成本。
顺便一提,在撰写本文后,2024年12月发布的性能出色的DeepSeek-V3模型带来了惊喜,它采用了MoE架构。所以,是的,MoE依然非常重要!
如果你正在微调开放权重的大语言模型,很可能在某个阶段使用过低秩适配(LoRA),这是一种参数高效的大语言模型微调方法。
如果你是LoRA新手,我此前写过一篇《使用LoRA(低秩适配)微调大语言模型的实用技巧》,或许对你有帮助;此外,在我的《从头构建大语言模型》一书的附录D中,也有从零开始的代码实现。
鉴于LoRA是一种广受欢迎且广泛使用的方法,并且我在实现和探索其新变体时获得了极大乐趣,我二月份的选择是刘等人于2024年2月发表的《DoRA:权重分解低秩适配》。
在介绍DoRA之前,先快速回顾一下LoRA:
全量微调通过计算一个大型权重更新矩阵 ΔW 来更新大语言模型中的每个大型权重矩阵 W。LoRA 则将 ΔW 近似为两个较小矩阵 A 和 B 的乘积。因此,我们得到的是 W + A.B 而非 W + ΔW。这极大地减少了计算和内存开销。
下图并排展示了全量微调(左)和 LoRA(右)的公式。

在 DoRA:权重分解的低秩适配(2024 年 2 月)中,Liu 及其同事扩展了 LoRA,他们首先将预训练权重矩阵分解为两部分:一个幅度向量 m 和一个方向矩阵 V。这种分解基于一个思想:任何向量都可以用其长度(幅度)和方向(朝向)来表示,这里我们将其应用于权重矩阵的每个列向量。得到 m 和 V 后,DoRA 仅对方向矩阵 V 应用 LoRA 风格的低秩更新,同时允许幅度向量 m 单独训练。

这种两步法使 DoRA 比标准 LoRA 具有更大的灵活性。与 LoRA 倾向于统一缩放幅度和方向不同,DoRA 可以在不必然增加幅度的情况下进行细微的方向调整。结果是性能和鲁棒性得到提升,因为 DoRA 即使使用更少的参数也能优于 LoRA,并且对秩的选择不那么敏感。
再次强调,我在此处保持简洁,因为后面还有 10 个部分要讲,但如果你对更多细节感兴趣,我今年早些时候专门写了一篇文章介绍这种方法:改进 LoRA:从头实现权重分解的低秩适配(DoRA)。
DoRA 是对原始 LoRA 方法的一个小而合理的改进。虽然它尚未被广泛采用,但其增加的复杂性极小,值得在你下次微调大语言模型时考虑。总的来说,我预计 LoRA 及类似方法仍将保持流行。例如,苹果最近在 Apple Intelligence 基础语言模型 论文中提到,他们使用 LoRA 进行设备端的大语言模型任务特化。
据我所知,指令微调是大语言模型从业者最常用的微调形式。其目标是让开源大语言模型更好地遵循指令,或将这些大语言模型特化到特定子集或新指令上。
然而,当涉及吸收新知识时,持续预训练(有时也称为持续预训练)才是正确的方法。
在本节中,我想简要总结一下 Ibrahim 及其同事在 2024 年 3 月发表的论文 简单且可扩展的持续预训练大语言模型策略,该论文直截了当,令人耳目一新。
这份24页的《持续预训练大型语言模型》论文报告了大量实验,并附有无数图表,以当今标准来看非常详尽。
成功应用持续预训练的主要技巧是什么?
- 简单地对学习率进行重新预热和重新衰减。
- 在数据集中加入一小部分(例如5%)原始预训练数据,以防止灾难性遗忘。注意,像0.5%和1%这样更小的比例也同样有效。
关于第一点,重新预热和重新衰减,更具体地说,这意味着我们采用与LLM初始预训练阶段完全相同的学习率调度,如下图所示。

据我所知,重新预热和重新衰减,以及向新数据中添加原始预训练数据,或多或少是常识。然而,我非常欣赏研究人员在这份非常详细的24页报告中花时间正式测试了这种方法。
如果您对更多细节感兴趣,我在之前的文章《LLM预训练和评估奖励模型的技巧》中更深入地讨论了这篇论文。
我没有理由相信这些方法在未来对LLM不再有效。但需要注意的是,近几个月来,预训练流程变得更加复杂,包含多个阶段,包括短上下文和长上下文预训练。(我在《新的LLM预训练和后训练范式》中有更多介绍。)
因此,为了获得最佳结果,本文建议的方法可能需要在某些情况下进行调整。
四月是个艰难的选择。例如,Kolmogorov-Arnold网络在那个月引起了巨大轰动。但据我所知,这股热潮很快就消退了。这很可能是因为它们的理论保证在实践中难以实现,缺乏有竞争力的结果或基准,而且其他架构的可扩展性要好得多。
因此,我选择四月的一篇更实用的论文:Xu及其同事的《DPO在LLM对齐中是否优于PPO?一项综合研究》(2024年4月)。
在总结这篇论文之前,先概述一下近端策略优化(PPO)和直接偏好优化(DPO),这两种都是通过基于人类反馈的强化学习(RLHF)来对齐LLM的流行方法。RLHF是对齐LLM与人类偏好的首选方法,既能提高响应质量,也能增强安全性。

传统上,RLHF-PPO 一直是训练 InstructGPT 和 ChatGPT 等模型及平台所用大语言模型的关键步骤。然而,DPO 因其简洁性和有效性,自去年开始逐渐受到关注。与 RLHF-PPO 不同,DPO 不需要单独的奖励模型,而是直接使用类似分类的目标函数来更新大语言模型。目前许多大语言模型都采用了 DPO,尽管缺乏与 PPO 的全面比较。
以下是我今年早些时候开发并分享的两份关于 RLHF 和 DPO 的资源:
Is DPO Superior to PPO for LLM Alignment? A Comprehensive Study 是一篇撰写精良的论文,包含了大量实验和结果。其关键结论是:PPO 往往优于 DPO,并且 DPO 在处理分布外数据时表现较差。
这里所说的分布外数据,是指语言模型先前通过监督微调在指令数据上训练,而该数据与 DPO 所使用的偏好数据不同。例如,一个模型可能先在通用的 Alpaca 数据集上训练,然后在一个不同的偏好标注数据集上进行 DPO 微调。(不过,改善 DPO 在此类分布外数据上表现的一种方法是,先使用偏好数据集进行监督指令微调,然后再进行 DPO 微调。)
主要发现总结在下图中。

PPO 在最终大语言模型的原始建模性能方面可能略占优势。然而,DPO 实现起来要简单得多,计算效率也更高(毕竟无需训练和使用单独的奖励模型)。因此,据我所知,DPO 在实际应用中的使用范围远比 RLHF-PPO 广泛。
一个有趣的例子是 Meta AI 的 Llama 模型。Llama 2 使用 RLHF-PPO 进行训练,而更新的 Llama 3 模型则采用了 DPO。
有趣的是,近期的一些模型甚至同时使用了 PPO 和 DPO。最近的例子包括 Apple 的基础模型 和 Allen AI 的 Tulu 3。
今年我还发现另一篇关于 LoRA 的论文特别有趣(我保证,这是这 12 篇论文选集中最后一篇关于 LoRA 的论文!)。我不会说它具有开创性,但我非常喜欢它,因为它将使用(和不使用)LoRA 微调大语言模型的一些常识进行了系统化:LoRA Learns Less and Forgets Less(2024 年 5 月),作者为 Biderman 及其同事。
LoRA Learns Less and Forgets Less 是一项实证研究,比较了低秩适配(LoRA)与全参数微调在大语言模型上的效果,重点关注两个领域(编程和数学)和两个任务(指令微调和继续预训练)。如果你需要先回顾一下 LoRA,请查看上面二月份的部分。
LoRA学得更少,忘得更少的研究表明,LoRA的学习效果明显低于全参数微调,尤其是在需要获取新知识的任务(如编程)中。当仅进行指令微调时,两者差距较小。这表明,在新数据上进行预训练(学习新知识)时,全参数微调比将预训练模型转化为指令遵循模型获益更多。

不过,其中还有一些细微差别。例如,在数学任务中,LoRA与全参数微调之间的差距缩小了。这可能是因为数学问题对LLM来说更熟悉,它们在预训练期间很可能遇到过类似的问题。相比之下,编程涉及一个更独特的领域,需要更多新知识。因此,新任务与模型预训练数据的差距越大,全参数微调在学习能力方面的优势就越明显。
在考察先前获取的知识丢失了多少时,LoRA始终遗忘得更少。这在适应远离源领域的数据(例如编程)时尤为明显。在编程任务中,全参数微调会导致显著的遗忘,而LoRA则保留了更多原始能力。在数学领域,模型原有的知识与新任务更为接近,因此差异不那么明显。

总体而言,存在一个权衡:全参数微调更擅长吸收来自更远领域的新知识,但会导致更多先前学习任务的遗忘。LoRA通过改变更少的参数,学习的新信息较少,但保留了更多原始能力。
该研究主要比较了LoRA与全参数微调。在实践中,LoRA之所以流行,是因为它比全参数微调在资源效率上高得多。在许多情况下,由于硬件限制,全参数微调根本不可行。此外,如果你只需要处理专门的应用程序,仅使用LoRA可能就足够了。由于LoRA适配器可以与基础LLM分开存储,因此在添加新能力的同时,很容易保留原始能力。另外,还可以将两种方法结合使用:用全参数微调进行知识更新,再用LoRA进行后续的专门化。
简而言之,我认为这两种方法在未来几年内仍将非常重要。关键在于针对手头的任务使用正确的方法。
FineWeb数据集:从网络中提取最优质文本数据(2024年6月)由Penedo及其同事撰写的论文,描述了一个包含15万亿token的数据集的创建过程,该数据集专为大型语言模型(LLM)设计,并已公开提供,包括数据集下载链接和用于复现数据集准备步骤的代码仓库(datatrove/examples/fineweb.py)。
既然已有多个用于LLM预训练的大型数据集,这个数据集有何特别之处?其他数据集相对较小:RefinedWeb(5000亿token)、C4(1720亿token)、Dolma 1.6中基于Common Crawl的部分(3万亿token)及1.7版本(1.2万亿token)、The Pile(3400亿token)、SlimPajama(6270亿token)、RedPajama的去重版本(20万亿token)、Matrix中的英语CommonCrawl部分(1.3万亿token)、英语CC-100(700亿token)、Colossal-OSCAR(8500亿token)。
例如,约3600亿token仅适用于小型LLM(根据Chinchilla缩放定律,例如17亿参数模型)。另一方面,根据Chinchilla缩放定律,FineWeb数据集中的15万亿token应能支持高达5000亿参数的模型。(注意:RedPajama包含20万亿token,但研究人员发现,由于应用了不同的过滤规则,在RedPajama上训练的模型质量低于FineWeb。)

简而言之,FineWeb数据集(仅限英语)在理论上使研究人员和从业者能够训练大规模LLM。(附注:Llama 3模型(8B、70B和405B参数)同样使用了15万亿token进行训练,但Meta AI的训练数据集并未公开。)
此外,该论文还包含了原则性的消融研究,以及关于如何制定和应用过滤规则以得到FineWeb数据集(从CommonCrawl网络语料库开始)的见解。简而言之,对于他们尝试的每条过滤规则,他们从原始数据和过滤后的数据中各抽取一个3600亿token的随机样本,然后训练一个小的17.1亿参数类Llama模型,根据模型在HellaSwag、ARC、MMLU等标准基准上的表现来判断该过滤规则是否有益。

总体而言,尽管预训练数十亿参数的LLM对大多数研究实验室和公司来说可能仍遥不可及,但该数据集是朝着普及LLM研究和开发迈出的重要一步。总之,这篇论文代表了值得称赞的努力,并为推进LLM预训练引入了一项宝贵的公共资源。
希望这些研究总结对你有用!由于我仍在从伤病中恢复,而且这篇文章本身篇幅过长,我决定将今年的综述文章分为两部分。
第二部分(七月至十二月)实际上更加精彩(就我个人而言),因为我将讨论关于缩放定律、复现O1以及合成数据在LLM训练中作用的最新论文。此外,我还会分享对2025年的展望以及我预期即将出现的新动向。敬请期待!
这本杂志是我的个人热情之作。对于希望支持我的读者,请考虑购买一本我的《从零构建大语言模型》书籍。(我相信你会从这本书中收获良多,因为它以其他地方找不到的详细程度解释了LLM的工作原理。)
如果你读过这本书并有一些空闲时间,我非常感激你能留下简短评价。这对我们作者帮助很大!
你的支持意义重大!非常感谢!