从3篇论文回顾2024年基础大语言模型的进展
2024 年,大语言模型(LLM)领域依旧保持着高速发展,坏消息和好消息并存。坏消息是大模型的规模Scaling Law在可预见的未来将结束,可以从下面的证据里管中窥豹:
- OpenAI的GPT-5一再跳票。发布的GPT-4.5调用成本非常高,但却只能从高情商而不是AGI去宣传。
- Ilya在NIPS 2024上的演讲中指出"pre-training as we know it will end(我们所知的预训练将会结束)"。
- Meta训练的巨型LLM——Llama 3 405B也没有展现出在开源领域的绝对统治、
- Claude
3.5及未来迭代版本都没有在超大杯
opus
上迭代了。
这些对超大规模大语言模型探索的失败为LLM后续发展也蒙上了一层阴霾,其原因Ilya也指出了:
因为计算机通过更好的硬件、更好的算法和逻辑集群不断增长,所有这些事情都在不断增加你的计算能力,而数据没有增长,因为我们只有一个互联网。
新数据的枯竭使得超大规模大语言模型训练的边际效应递减,看来靠超大规模的预训练走向AGI短时间应该是难有突破了。尽管预训练遭遇瓶颈,仍然有一些非常有前景的好消息,本篇博文专注于基础大语言模型领域(区别于新兴的推理大模型),选取了3篇有代表性的论文(或者说是技术报告,都统称叫论文好了)回顾2024年基础大模型的突破,希望能承前启后,将前人做的这些优秀突破应用到下游任务上,借用《战国策》的一句话开始整篇博客:
前事不忘,后事之师。
——刘向《战国策·赵策一》
论文概述
选择了《The Llama 3 Herd of Models》、《DeepSeek-V3 Technical Report》和《MiniMax-01: Scaling Foundation Models with Lightning Attention》这3篇论文,它们在数据处理、模型构建、模型训练、模型评估等多个维度上都提出了自己的一些有参考价值的见解,并且更重要的是都开放了预训练模型的权重以保证模型效果的真实可靠。在本节中先简单回顾一下它们各自的优点。
The Llama 3 Herd of Models
论文链接:https://arxiv.org/abs/2407.21783
简要介绍:
Llama 3的论文,在2024年4月是相当震撼的一篇论文,系统性地提及了大语言模型的预训练和后训练细节,留下了Llama 3 405B的伏笔,并且还向多模态大模型展开探索。Llama 3有其保守的一面,比如没有使用MoE结构、在偏好对齐阶段不使用OpenAI提出的PPO而使用更加简单的DPO以简化后训练流程。但同时也有大胆的一面,比如积极地向巨大预训练数据规模、超长上下文、超大规模的密集模型以及多模态大模型方向探索。汇聚了Meta在LLM领域思考结晶,也揭示了Meta对于大模型后续发展的期待。
DeepSeek-V3 Technical Report
论文链接:https://arxiv.org/abs/2412.19437
简要介绍:
DeepSeek推出的性能对标GPT-4o的基础大模型,其671B参数量和它的巨鲸Logo很相衬,让人感觉规模十分庞大。但同时37B的激活参数量以及相对便宜的API调用价格又让下游任务领域看到了大但高效的曙光。最让人惊讶地是它靠从V2版本继承过来的MLA(Multi-Head Latent Attention,多头潜在注意力)和DeepSeek MoE架构,再加上FP8的训练框架,将这个671B庞然大物的训练成本控制在了550万美元,推理成本控制在8元/百万token。DeepSeek V3确实切中了大模型应用时非常关心的成本问题,并在控制成本的基础上将大模型的性能做到了第一梯队,其中的原理确实值得学习。
MiniMax-01: Scaling Foundation Models with Lightning Attention
论文链接:https://arxiv.org/abs/2501.08313
简要介绍:
Minimax是大模型六小龙之一,这一次的Minimax-01也是拥抱了开源了。说起Minimax-01就不得不提到Transformer的Softmax注意力机制,二次方的注意力复杂度使得模型在长上下文上的训练和推理都变得吃力。而Minimax-01首次将线性注意力应用到471B这样大规模LLM的训练,通过混合Minimax设计的线性注意力机制——闪电注意力(Lightning Attention)和传统Softmax注意力,实现了高效处理长上下文能力。还进行后训练以解锁模型的视觉能力。Minimax-01将线性注意力大规模应用于LLM上,从结构上降低了传统Transformer在长上下文情况下的劣势,觉得也是基础大模型领域一次非常有价值的探索。
对这3篇论文基本介绍过后,后续章节将从预训练数据收集、模型结构、预训练阶段、后训练数据收集、模型评估、infra优化等方面分别介绍这3者的设计亮点和设计思路。为方便后续表述,分别将这三篇论文指代为Llama 3、DeepSeek v3和Minimax-01。
预训练数据收集与处理
预训练数据收集
在预训练数据收集方面,可能因为要减少版权风险,3家都没有特别详细地介绍怎么去收集数据的。
Llama 3中说大部分数据都来源于网络,整个预训练语料库包含16.55T个token。
DeepSeek v3这边基于DeepSeek v2的语料库提高了数学和编程样本的比例对预训练语料库进行了优化。那v2的预训练语料怎么来的呢?参考v2的论文是通过DeepSeek LLM(应该就是v1版本)的方式收集的,但扩大了收集的数据量,并且优化了清洗流程恢复了大量被误删除的数据。那v1又怎么收集的呢?它提到了从The Pile、LLaMA、Redpajama和RefinedWeb Dataset获得了宝贵见解,并且之后就开始介绍数据处理的流程了。从它提到的这些论文推断,数据应该也是来源于网络,主要应该也是基于CommonCrawl的快照去做了解析。v1版本的预训练语料为2T token,到v2时已经达到8.1T token,v3已经包含14.8T token了。
Minimax-01更是只提及:
MiniMax-Text-01 的预训练语料库包含一个全面且精心策划的数据集,涵盖了多种来源,包括学术 文献、书籍、网络内容和编程代码。
预训练语料库的Token数量没有明确提及。
总结来说,预训练语料收集涉及大规模语料管理,各家披露得都比较少,但可以大致猜测要训出媲美GPT-4o水平的模型,预训练语料库的token数目要达到10T这个量级了。
预训练数据处理
预训练数据处理大致可以分为去重、过滤、数据混合几个基本阶段,因为这都是LLM预训练中常见的处理流程了,主要介绍一下三个模型的预训练处理pipeline的设计亮点。
HTML内容提取
Llama 3提到一个有意思的点是他们有做HTML文本内容提取的模块,命名为自定义解析器,主要作用是在去除HTML中的模板内容并保证网页核心内容的召回。对于包含数学公式和代码的网页,进行更精细地设计以保留这些内容的结构。比如保留图像的 alt 属性文本,因为数学内容通常以预渲染图像的形式呈现,其中数学内容也会在 alt 属性中提供。
并且他们还发现,Markdown标记会给主要在网络数据上训练的模型带来不利影响,居然主动移除了预训练数据中的Markdown标记。Minimax-01也提到Markdown这样的格式化语言会引入固定模式,降低数据的多样性和质量。
移除掉HTML标记和Markdown标记后,剩下的预训练语料更接近于纯文本。可以推断说在预训练阶段更加注重现实知识的学习而不是格式,移除掉这些格式标记后模型能够在next token predict的预训练阶段更多关注预训练语料中蕴含的知识,而不是写作模板。对于结构标记的学习,可以推迟到后训练阶段去微调学会。
去重
Llama 3描述得很全,同时应用了以下去重策略:
URL 级别去重:在整个数据集中,对相同 URL 的页面仅保留最新版本,以减少冗余数据。
文档级别去重:采用全局 MinHash 去重方法,以移除近似重复的文档。
行级别去重:借鉴 ccNet 的策略,删除每个数据桶(包含3000万份文档)中出现超过 6 次的行。尽管行级别去重能够有效移除网站常见的模板内容(如导航菜单、Cookie 警告等),但也可能删除一些高质量的文本。然而,实证评估表明,该方法仍能显著提升数据质量。
过滤
这一块应该是各家提高数据质量的关键,去重大家都能做到大差不差,但怎么从海量数据中筛选高质量数据就靠过滤这关来把关。我们依旧以Llama 3作为基础说明,因为Llama 3介绍得相对全面,同时穿插一些DeepSeek v3和Minimax-01的做法。
过滤可以分为启发式过滤和基于模型的过滤。
启发式过滤主要可以分为以下几类:
重复 n 元语法覆盖比率:使用重复 n -gram 语法覆盖比率,识别并删除由重复内容(如日志或错误消息)组成的文本行。这类行通常较长且唯一,难以通过行级别去重去除。
“脏词”计数:参考“脏词”计数的策略,通过检测敏感词汇来过滤未在域名阻止列表中的成人网站。
Token分布的 KL 散度:对比训练语料库的分布,移除Token分布异常的文档,以减少数据中的异常噪声。
前两个都比较好理解。对于Token分布的KL散度过滤来说,首先要知道KL散度是衡量两个概率分布之间差异的方法。对两个离散概率分布\(P\)和\(Q\),KL散度定义为: \[ D_{KL}(P||Q) = \sum_{x}{P(x) \log{\frac{P(x)}{Q(x)}}} \] 其中:
- \(P(x)\)是参考分布。
- \(Q(x)\)是目标分布。
KL散度越大,表示两个分布之间的差异越大。因此,通过计算文档标记分布与目标语料库分布之间的KL散度,可以量化文档的“异常程度”。进而,我们可以从Token视角来度量现在的预训练文档和高质量训练语料库(这个高质量训练语料库需要预先挑好,比如可以使用维基百科数据库作为初始高质量语料库)的差异。将\(P(x)\)定义为高质量训练语料库的Token概率分布,也即计算每个token的频率作为概率分布;同时,将\(Q(x)\)定义为当前文档的Token概率分布,也统计每个token的频率作为概率分布。这样计算\(D_{KL}(P||Q)\)就能得到当前文档和高质量训练语料库的KL散度,通过设置一个阈值\(\theta\)来启发式过滤掉与高质量训练语料库分布差异很大的文档,也即“低质量文档”。
启发式规则一般是进行统计意义上的滤除,基于模型的方法则可以在模型内引入更多的人工先验。比如Llama 3的预训练语料就使用了判断给定文本是否会被维基百科引用的fasttext分类器。Llama 3还利用之前训好的Llama 2的模型来做预训练语料的质量过滤,具体做法是通过LLM的零样本学习能力,通过提示词描述质量要求,并通过Llama 2模型来判断文档是否符合质量要求。为了减少过滤所需的算力,Meta是创建了一个网页文档的训练集,用Llama 2离线打标后训一个DistilRoberta模型来为整个语料库打分。相当于把Llama 2的先验知识蒸馏到这个DistilRoberta模型中了。
Minimax-01也用LLM的零样本学习能力对预训练语料进行细粒度的质量评估,采用上一代模型作为奖励标注器,该模型具有 5B 激活参数和 60B 总参数的 MoE 结构(现在的大模型推理已经能支持用5B激活参数的LLM对预训练语料做细粒度过滤了吗,确实很夸张)。
最初,评估涵盖多个质量维度,包括:
- 连贯性
- 简洁性
- 教育价值
- 实用性
- 知识丰富性
- 类别相关性
通过全面分析,研究发现这些指标之间存在显著相关性,因此最终聚焦于 三个关键维度:
- 知识深度:衡量内容的专业性和信息量。
- 实际实用性:评估文本是否具有现实应用价值。
- 类别分布:确保数据涵盖多样化的主题领域。
其他质量指标仍被用于次要验证,以确保整体数据质量。知识深度、实际实用性和类别分布我们在下游任务上也可以借鉴,用来采样高质量、多样性强、难易均衡的SFT数据集。
DeepSeek v3则没有透露更多关于预训练语料构建的信息,因此怎么做的也就不得而知。
总结来说,现在LLM的预训练数据过滤主要依赖启发式方法和基于模型的方法,启发式方法主要从词或者token的角度入手,通过n-gram、KL散度等特征粗粒度地去过滤低质量文档。而基于模型的方法则可以给出更细粒度的文档质量评估分数,一般籍由LLM的零样本能力实现细粒度标注。通过粗粒度、细粒度配合来筛选出符合要求的文档放入预训练语料库。