为了迎接新年的到来,我在 2024 的最后一天终于完成了【2024年AI研究亮点】的文章初稿。这篇文章涵盖了多个主题,从混合专家模型(Mixture-of-Experts)到新的 LLM 精度缩放定律。
全面回顾 2024 年所有的重大研究亮点,恐怕需要写一本书才行。即使对于这样一个发展迅猛的领域来说,也可谓是成果异常丰硕的一年。为了保持文章的简洁,我决定今年只聚焦于 LLM 的研究。但即便如此,在如此多的重要进展中,如何选择其中的一部分呢?我能想到的最简单方法就是每月重点介绍一篇论文。
因此,在这篇文章中,我将分享一些我个人认为既有趣又有影响力的研究论文。当然,这篇文章只是整个系列的第一部分,聚焦于 2024 年上半年(1 月至 6 月)。系列的第二部分将涵盖 7 月至 12 月的内容,预计会在 1 月晚些时候分享。
需要说明的是,这篇文章的选择标准难免带有一定的主观性,基于我 2024 年注意到的那些特别突出的研究。我尽量选择了多样化的内容,因此这篇文章不仅仅是关于 LLM 的发布。
如果你在寻找更全面的 AI 研究论文列表,不妨查看我之前的文章(【 LLM 研究论文:2024年度精选】https://magazine.sebastianraschka.com/p/llm-research-papers-the-2024-list)。
对于读过我之前文章的读者,我很高兴地告诉大家,我的身体状况已经有所好转,正在慢慢但稳步地恢复!同时,我想由衷地感谢大家的关心和支持。这些暖心的鼓励对我来说意义非凡,帮助我度过了一些艰难的日子!
祝大家新年快乐,阅读愉快!
一月 | Mixtral 的混合专家模型 (Mixture of Experts)
2024 年 1 月刚刚开始,Mistral AI 团队便在 1 月 8 日发布了 Mixtral of Experts 论文,该论文介绍了 Mixtral 8x7B,一种稀疏混合专家模型(Sparse Mixture of Experts,简称 SMoE)。
这篇论文和模型在当时都产生了很大的影响,因为 Mixtral 8x7B 是首批开放重量级 MoE LLM(之一),并且性能非常出色:在各种基准测试中都优于 Llama 2 70B 和 GPT-3.5。
1.1 理解混合专家模型(MoE)
MoE,即混合专家模型,是一种集成模型,它在 GPT 类解码器架构中结合了多个较小的“专家”子网络。每个子网络被认为负责处理不同类型的任务,或者更具体地说,处理不同的 token。其核心理念是,通过使用多个较小的子网络替代一个大型网络,MoE 模型能够更高效地分配计算资源。
具体来说,在 Mixtral 8x7B 中,用 8 个专家层替换变换器(Transformer)架构中的每个前馈模块(Feed-Forward Module)。如下图所示,这种设计极大地优化了计算效率。
带注释的转换器架构来自《Attention Is All You Need》 https://arxiv.org/abs/1706.03762
在“稀疏混合专家”(Sparse Mixture of Experts)模型中,“稀疏”(Sparse)指的是在任意时刻,只有专家层的子集(在 Mixtral 8x7B 中通常是 8 个中的 1 到 2 个)被激活,用于处理一个 token。
正如上图所示,这些子网络替代了 LLM 中的前馈模块。前馈模块本质上是一个多层感知器(MLP)。用类似 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)
此外,Mixtral 模型中还包含一个路由模块(Router Module,也称为门控网络,Gating Network),该模块将每个 token 嵌入重定向到 8 个专家前馈模块中的某一个。这 8 个专家前馈层的输出随后被汇总。
由于这篇文章还需要介绍另外11篇论文,因此我会对 Mixtral 模型的描述尽量简洁。不过,如果你想了解更多细节,可以参考我之前的文章【模型融合、混合专家以及面向小型LLM】https://magazine.sebastianraschka.com/i/141130005/mixtral-of-experts。
1.2 混合专家模型在当今的意义
2024 年年初,我原以为开放权重的 MoE 模型会比现在更加流行和广泛应用。虽然它们并非无关紧要,但许多当前最先进的模型仍然依赖于密集(传统)的LLM架构,而不是 MoE 模型。例如,Llama 3、Qwen 2.5、Gemma 2 等。然而,对于一些专有架构(比如 GPT-4、Gemini 和 Claude)的底层设计,我们无法得知是否使用了 MoE 结构,它们可能在内部采用了 MoE。
无论如何,MoE 架构仍然非常有意义,尤其是它提供了一种高效扩展大语言模型的方法。通过在每次输入时只激活模型参数的一部分,MoE 能够降低计算成本,同时不牺牲模型容量。
顺便一提,在撰写本文后,12月发布了一个令人惊喜的模型——表现非常优异的DeepSeek-V3,它采用了MoE架构。所以可以肯定的是,MoE模型依然非常重要!
二月 | 权重分解的 LoRA(Weight-Decomposed LoRA)
如果你曾对开放权重的 LLM 进行微调,那么很有可能某个时候你使用过低秩适配(LoRA, Low-Rank Adaptation),一种高效的参数微调方法。
如果你是 LoRA 的新手,我之前写过一篇文章《使用LoRA(低秩适配)微调LLM的实用技巧》https://magazine.sebastianraschka.com/p/practical-tips-for-finetuning-llms,可能对你有所帮助。此外,我的书《从零开始构建大模型》(Build A Large Language Model (From Scratch))的附录 D 中还提供了一段从头实现 LoRA 的代码。
我的《从零开始构建大模型》的中文版正在紧锣密鼓地准备中,出版社希望能在 3 月与大家见面(比最初预计出版时间提前了许多)。
由于 LoRA 是一种非常流行且广泛使用的方法,而我最近玩了一种新变体时特别有趣,因此我二月份的推荐论文是由 Liu 及其团队在 2024 年 2 月发布的 DoRA: Weight-Decomposed Low-Rank Adaptation(权重分解的低秩适配)。
2.1 LoRA 回顾
在介绍 DoRA 之前,先快速回顾一下 LoRA 的原理:
在完整微调中,我们会通过计算一个大的权重更新矩阵 ΔW 来更新 LLM 中的每个大型权重矩阵 W。而 LoRA 的基本思想是将 ΔW 近似为两个较小矩阵 A 和 B 的乘积。因此,我们得到的不是 W + ΔW,而是 W + A·B。这种方法极大地减少了计算和内存的开销。
下图并排展示了完整微调(左)和 LoRA(右)的公式和原理。
常规微调(左)和 LoRA 微调(右)的图示。
2.2 从 LoRA 到 DoRA
在 《DoRA:权重分解低秩自适应》(2024 年 2 月 https://arxiv.org/abs/2402.09353)中,Liu 等人对 LoRA(低秩适配)方法进行了拓展。他们首先将预训练的权重矩阵分解为两部分:一个是表示大小的向量 m(magnitude vector),另一个是表示方向的矩阵 V(directional matrix)。这种分解方法基于这样一个概念:任何向量都可以通过其长度(大小)和方向来表示。在这里,这一概念被应用于权重矩阵的每一列向量。
完成分解后,DoRA 仅对方向矩阵 V 进行 LoRA 风格的低秩更新,而大小向量 m 则单独进行训练。这种改进方法旨在更灵活地适配权重的更新,同时保留权重的大小信息和方向信息的独立性。留权重的大小信息和方向信息的独立性。
来自 DoRA 论文的注释插图(https://arxiv.org/abs/2402.09353)
这种两步方法使 DoRA 比标准的 LoRA 更具灵活性。与 LoRA 倾向于同时对大小和方向进行统一缩放的方式不同,DoRA 可以在不增加大小(magnitude)的情况下,进行更精细的方向(direction)调整。结果是,DoRA 在性能和稳定性上都有所提升:即使使用更少的参数,它也能超越 LoRA 的表现,并且对秩(rank)的选择不那么敏感。
这里我将这一部分简要说明,因为后面还有 10 个部分需要介绍。如果你对细节感兴趣,我早些时候专门写过一篇文章:【改进 LoRA:从零实现权重分解的低秩适配(DoRA)】https://magazine.sebastianraschka.com/p/lora-and-dora-from-scratch,其中详细讲解了这个方法。
2.3 LoRA 及其衍生方法的未来
DoRA 是对原始 LoRA 方法的一次小幅而合理的改进。虽然它还没有被广泛采用,但其引入的复杂性非常有限,因此在下一次微调 LLM 时,值得将其纳入考虑范围。总体而言,我预计 LoRA 及其类似方法将继续受到欢迎。例如,Apple 最近在其论文《Apple Intelligence Foundation Language Models》(https://arxiv.org/abs/2407.21075)中提到,他们使用 LoRA 来实现大语言模型在设备端的任务专用化。
三月 | 持续预训练大语言模型的实用技巧
据我所知,指令微调(instruction-finetuning)是 LLM 从业者中最常见的微调方式。这种方法目标是让公开可用的大语言模型更好地遵循指令,或者让这些模型专注于某些子集或新指令。
然而,如果目标是让模型吸收新知识,持续预训练(有时也称为连续预训练)才是更为有效的路径。
在本节中,我将简要总结 Ibrahim 等人在 2024 年 3 月发表的论文《简单且可扩展的持续预训练大语言模型的策略》(https://arxiv.org/abs/2403.08763) 中的内容。这篇论文以其清晰直接的思路令人耳目一新。
3.1 简单技巧也有效
这篇关于《持续预训练大语言模型》(https://arxiv.org/abs/2403.08763) 的论文长达 24 页,报告了大量实验,并配有无数图表,以当今的标准来看极其详尽。
那么,成功应用持续预训练的主要技巧是什么?
- 简单的重新热启动(re-warming)并重新衰减(re-decaying)学习率。
- 在新数据集中加入一小部分(例如 5%)原始预训练数据,以防止灾难性遗忘(catastrophic forgetting)。值得注意的是,更小的比例(例如 0.5% 和 1%)也被证明是有效的。
关于第 1 点的“重新热启动和衰减”,具体来说,这意味着我们在持续预训练阶段,采用与 LLM 初始预训练阶段完全相同的学习率调度策略,如下图所示。
持续预训练的时间表。图片基于《从头开始构建大型语言模型》,https://github.com/rasbt/LLMs-from-scratch/blob/main/appendix-D/01_main-chapter-code/appendix-D.ipynb
据我所知,重新热启动与衰减学习率,以及在新数据中加入部分原始预训练数据,这些方法或多或少已经是业内的常识。然而,我非常欣赏这篇论文的作者,他们用如此详尽的 24 页报告对这些方法进行了正式的验证和测试,体现了学术的严谨性。
如果你对更多细节感兴趣,可以参考我之前的文章【LLM 预训练与奖励模型评估的实用技巧】https://magazine.sebastianraschka.com/p/tips-for-llm-pretraining-and-evaluating-rms,其中对这篇论文进行了更深入的讨论。
3.2 这些简单技巧会继续有效吗?
我没有理由认为这些方法在未来的 LLM 中不会继续有效。然而,需要注意的是,近年来的预训练流程已经变得更加复杂,通常包含多个阶段,例如短上下文和长上下文的预训练。(关于这一点,我在【新 LLM 预训练与后训练范式】一文中有更详细的阐述 https://magazine.sebastianraschka.com/p/new-llm-pre-training-and-post-training 。)
因此,为了获得最佳效果,这篇论文中提出的策略可能需要根据具体情况进行调整和优化。
四月 | 用于 LLM 对齐的 DPO 或 PPO,抑或两者兼用?
四月的选择令人纠结。例如,Kolmogorov-Arnold 网络(https://arxiv.org/abs/2404.19756)在那个月引起了轰动。然而,就目前来看,这种热潮很快就消退了。这可能是因为其理论保证难以在实际中实现,同时缺乏具有竞争力的结果或基准测试,而其他架构则更具可扩展性。
因此,我更倾向于选择一篇更具实用性的论文:Xu 等人人于 2024 年 4 月发表的《DPO 是否优于 PPO 用于 LLM 对齐?一项综合研究》(https://arxiv.org/abs/2404.10719)。
4.1 RLHF-PPO 和 DPO:它们是什么?
在总结论文内容之前,先简要介绍一下近端策略优化(Proximal Policy Optimization, PPO)和直接偏好优化(Direct Preference Optimization, DPO)。这两种方法都是通过人类反馈强化学习(Reinforcement Learning with Human Feedback, RLHF)实现 LLM 对齐的热门选择。
RLHF 是一种旨在使 LLM 符合人类偏好的方法,不仅能提升模型响应的质量,还能提高其安全性。
典型的(简化的)LLM 培训生命周期。
传统上,RLHF-PPO 是 InstructGPT 和 ChatGPT 等模型及平台中训练 LLM 的关键步骤。然而,由于其简单性和高效性,DPO 从去年开始逐渐受到关注。与 RLHF-PPO 不同,DPO 不需要单独训练一个奖励模型,而是直接使用类似分类任务的目标来更新 LLM。如今,许多 LLM 已经开始采用 DPO,尽管目前仍缺乏与 PPO 的全面比较。
以下是我今年早些时候制作并分享的两篇关于 RLHF 和 DPO 的资源:
- 【LLM 训练:RLHF 及其替代方法】https://magazine.sebastianraschka.com/p/llm-training-rlhf-and-its-alternatives
- 【用于 LLM 对齐的直接偏好优化(DPO):从零实现】https://github.com/rasbt/LLMs-from-scratch/blob/main/ch07/04_preference-tuning-with-dpo/dpo-from-scratch.ipynb
4.2 PPO 通常优于 DPO
《DPO 是否优于 PPO 用于 LLM 对齐?一项综合研究》(https://arxiv.org/abs/2404.10719)是一篇结构清晰、实验详尽的论文。主要结论是:PPO 通常优于 DPO,尤其是在处理分布外数据时,DPO 表现不佳。
这里的“分布外数据”(out-of-distribution data)是指模型之前在指令数据上(通过监督微调)进行训练,而这些数据与 DPO 使用的偏好数据并不一致。例如,一个模型可能在通用的 Alpaca 数据集上完成训练后,再进行 DPO 微调,而此时所用的是另一个带有偏好标注的数据集。
改善 DPO 在分布外数据上的表现的一种方法是,首先使用偏好数据集进行监督式指令微调,然后再进行 DPO 微调。
论文的主要发现已总结在下图中。
注释表来自《DPO 是否优于 PPO 用于 LLM 对齐?一项综合研究》论文。
4.3 PPO 和 DPO 的现状
在生成的 LLM 模型的原始性能方面,PPO 可能略占优势。然而,DPO 实现起来更加简单,计算效率更高(毕竟无需单独训练和使用奖励模型)。因此,据我所知,DPO 在实际应用中比 RLHF-PPO 更为广泛。
一个有趣的例子是 Meta AI 的 Llama 模型:Llama 2 使用了 RLHF-PPO 进行训练,而更新的 Llama 3 则采用了 DPO。
有意思的是,现在一些最新的模型甚至同时使用 PPO 和 DPO。例如,Apple 的 Foundation 模型和 Allen AI 的 Tulu 3。
五月 | LoRA 学得更少,也忘得更少
我发现另一篇关于 LoRA 的论文特别有趣(我保证这是这 12 篇论文中最后一篇关于 LoRA 的!)。尽管这篇论文并非颠覆性突破,但我很喜欢它,因为它正式化了关于 LLM 微调(包括使用和不使用 LoRA)的某些常识。这篇论文是 Biderman 等人在 2024 年 5 月发表的《LoRA 学得更少,也忘得更少》(https://arxiv.org/abs/2405.09673)。
这项研究对比了低秩适配(LoRA)和完整微调在大语言模型(LLM)上的表现,重点关注两个领域(编程和数学)和两种任务(指令微调和持续预训练)。如果你需要回顾 LoRA 的基础知识,可以参考上文 2 月部分的介绍。
5.1 LoRA 学得更少
《LoRA 学得更少,也忘得更少》的研究表明,LoRA 在学习新知识时比完整微调明显逊色,尤其是在需要获取新知识的任务中(如编程)。当任务仅为指令微调时,这种差距会减小。这表明,与将一个预训练模型转换为一个指令跟随者相比,在新数据上进行预训练(学习新知识)更适合采用完整微调方法。
不过,这其中还有一些细微差别。以数学任务为例,LoRA 和完整微调之间的性能差距会缩小。这可能是因为数学问题对大语言模型(LLM)来说相对熟悉,在预训练期间模型很可能已经接触过类似的问题。而编程任务属于一个更加独特的领域,需要模型学习更多新的知识。因此,任务越偏离模型预训练时的数据分布,完整微调在学习能力上的优势就越明显。
5.2 LoRA 的遗忘更少
在考察模型丢失已有知识的程度时,LoRA 一贯表现出更少的遗忘。这一点在适应与源领域相距较远的数据(例如编程任务)时尤为明显。在编程任务中,完整微调会导致模型显著遗忘之前的能力,而 LoRA 能更好地保留原有的功能。而对于数学任务,由于模型原有的知识与新任务的距离较近,这种差异就不太明显。
在对编程数据进行训练后,对原始源任务进行全面微调,而不是 LoRA。
注释图来自《LoRA 学得更少,忘得更少》。
5.3 LoRA 的权衡
总体来看,LoRA 和完整微调各有权衡:完整微调在吸收来自陌生领域的新知识时表现更好,但也会导致更多已有任务能力的遗忘。而 LoRA 通过调整较少的参数,虽然学习新知识的能力较弱,但能够更好地保留原有的功能。
5.4 对未来 LLM 微调方法的展望
这项研究主要对比了 LoRA 和完整微调。在实际应用中,LoRA 因为相比完整微调更加节省资源而受到广泛欢迎。很多情况下,完整微调由于硬件限制根本无法实施。而如果只需要解决某些特定的专业化应用,LoRA 就可能已经足够了。
此外,LoRA 的适配器可以独立存储于基础模型之外,这使得在增加新功能的同时能够轻松保留模型的原有能力。而且,还可以结合两种方法:通过完整微调实现知识更新,然后使用 LoRA 进一步完成特定领域的专业化调整。
简而言之,我认为这两种方法在未来几年内都会非常重要。关键在于根据具体任务选择最合适的微调方式。
六月 | 15 万亿 Token 的 FineWeb 数据集
Penedo 等人发表的论文《FineWeb 数据集:从网络中提取高质量大规模文本数据》(2024 年 6 月,https://arxiv.org/abs/2406.17557),介绍了一个专为 LLM 打造的 15 万亿 token 数据集。该数据集已公开发布,包括下载链接(https://huggingface.co/datasets/HuggingFaceFW/fineweb)和一个代码仓库(datatrove/examples/fineweb.py
),供用户复现数据集的准备步骤。
6.1 与其他数据集的比较
当前已有多个大规模数据集可用于 LLM 的预训练,那么 FineWeb 数据集有何特别之处?与其相比,其他数据集规模较小,如:RefinedWeb(5000 亿 token),C4(1720 亿 token),基于 Common Crawl 的 Dolma 数据集 1.6(3 万亿 token)和 1.7(1.2 万亿 token),The Pile(3400 亿 token),SlimPajama(6270 亿 token),去重版本的 RedPajama(20 万亿 token),English CommonCrawl section of Matrix(1.3 万亿 token),English CC-100(700 亿 token),Colossal-OSCAR(8500 亿 token)。
例如,按照 Chinchilla 的缩放定律,大约 3600 亿 token 只能适用于较小规模的 LLM(如 17 亿参数模型)。相比之下,FineWeb 数据集的 15 万亿 token 则非常适合训练规模高达 5000 亿参数的模型(仍以 Chinchilla 缩放定律为参考)。
需要注意的是,虽然 RedPajama 数据集包含 20 万亿 token,但研究表明,由于两者在数据过滤规则上的不同,基于 RedPajama 训练的模型质量逊于基于 FineWeb 训练的模型。这进一步凸显了 FineWeb 数据集在数据质量上的优势。
多年来用于预训练 LLM 的数据集大小说明。请注意,这只是一个一般参考,与 FineWeb 论文或 Chinchilla 缩放定律论文没有直接关系。
简而言之,FineWeb 数据集(仅包含英文)为研究人员和开发者提供了训练大规模 LLM 的理论可能性。(附注:Meta AI 的 Llama 3 模型,包括 8B、70B 和 405B 参数规模的版本,同样使用了 15 万亿 token 进行训练,但其训练数据集并未公开。)
6.2 数据集开发的原则性方法
此外,这篇论文还包含系统的消融实验和关于过滤规则开发与应用的深入分析,展示了如何从 CommonCrawl 网络语料库中构建 FineWeb 数据集。简单来说,对于每条过滤规则,研究团队都会从原始数据和过滤后的数据中随机抽取 3600 亿 token 的样本,然后训练一个 17.1 亿参数规模、类似 Llama 的小型模型,通过模型在标准基准测试(如 HellaSwag、ARC、MMLU 等)上的表现,评估该过滤规则是否有助于提升模型性能。
6.3 FineWeb 数据集的现实意义
尽管目前训练拥有数十亿参数的大型语言模型(LLM)对于大多数研究机构和公司来说仍然难以实现,但 FineWeb 数据集在推动 LLM 研究与开发的普及化方面迈出了重要一步。总的来说,这篇论文是一项值得称赞的努力,同时也提供了一个宝贵的公共资源,有助于推动 LLM 预训练技术的发展。
七月至十二月
希望以上的研究总结对你有所帮助!由于我仍在从受伤中恢复,而且如果把所有内容写成一篇文章会过于冗长,我决定将今年的回顾文章分为两部分。
下半年的内容(七月至十二月)实际上更加令人期待(至少对我个人来说),因为我会讨论更多关于缩放定律、o1 模型复现,以及合成数据在 LLM 训练中的作用等最新论文。此外,我还会分享自己对 2025 年的预测以及未来可能的发展方向。敬请期待!
感谢你们的支持和关注!我很高兴地告诉大家,我的《从零开始构建大模型》的中文版正在紧锣密鼓地准备中,图灵希望能在 3 月与大家见面(比最初预计出版时间提前了)。