WheatField
WheatField

Meta 开源业界最强模型 Llama 3.1

July 25, 20241379 words, 7 min read
Authors

终于,开源模型第一次真正意义上跟闭源模型平起平坐了。Meta 最新的开源模型Llama 3.1 近日开源了模型权重及训练细节,这次开源的模型是 Llama 3.1,是 Llama 3 系列的最新版本,相比 Llama 2,Llama 3.1 在模型大小、训练数据、性能上都有了质的飞跃。本次模型三兄弟参数量分别是:8B,70B,405B。

其中 405B 的版本支持 128K 文本大小,根据官方的评测结果,已经超越了 GPT-4-0125,基本达到顶尖闲源模型 Claude-3.5-sonnet 和 GPT-4-omni 的水平; 且 8B, 70B 的小模型相比其他同规模型优势也比较明显。

模型

结构上保持不变

总体模型仍然是 Decoder only Transformer,结构上跟前两代没有本质的差异。选择 transformer 架构而没有使用市面上常见的混合专家模型(MoE),也是为了最大限度的提高训练的稳定性。

与上一代相比最主要的差异是数据质量、多样性的改进以及训练规模的提升。Llama2 训练使用了 1.8T tokens,而 405B 版本的模型训练使用了 15T 的 tokens,训练的过程仍然是两阶段:

  • 预训练阶段,next-word prediction 或者 captioning;
  • 后训练阶段,监督微调(SFT)、直接偏好优化(DPO)。

后训练阶段,为了提高模型的性能,Meta 采用了多轮对齐的方式,每一轮预训练完成之后,后训练先来一轮监督微调,紧跟着进行直接偏好优化。

与 Llama 3 相比,有几处较小的修改:

  • 使用分组查询注意力(GQA)机制,配合8个键值头,以提高推理速度并在解码过程中减少键值缓存的大小。
  • 训练时使用 document mask,防止各个文档关注到序列中拼接的其他无关文档。
  • RoPE 基频参数增加到 500,000,这个数据足够支持 32,768 长度的窗口。
  • 使用了 128K 大小的词表,其中 100K 来源于 tiktoken,另外 28k 用于支持多语言内容; 更大的词表可以提供更的压缩率,平均每 token 字符数从 3.17 提升到 3.94。

预训练过程

预训练包含三个阶段:1、初始预训练;2、长上下文预训练;3. 退火(Annealing)。

  • 初始预训练,批大小从 4M 逐渐增加到 16M,序列长度从 4096 增加到 8192,学习率从 8e-5 逐渐降低到 8e-7。
  • 长上下文预训练,序列长度从 8192 增加到 128K。
  • 在预训练的最后 40M tokens 期间,线性地将学习率退火至 0,同时保持上下文长度为 128K。在退火阶段,调整了数据混合配比,以增加高质量数据比如代码、数学内容的影响。最后,把退火期间模型 checkpoints 取均值,作为最终的预训练模型。

说说训练数据

Llama3 训练中 使用的数据及处理方式一样,总计是 15T tokens。清洗过程过程无怪乎:安全性过滤、文本提取及去重、低质量内容过滤等。一些操作有现成的工具,另一些操作借助于 Llmma2 或者是训练一个新的模型。

例如,以低质量内容过滤这一步来说,目的是去除一些重复内容(如日志信息)、脏话以及以及异常数据(比如乱码字符串)。实施的时候可以使用用多种方式逐层过滤,就是一个漏斗模型。使用重复 n-gram 收敛率(duplicated n-gram coverage ratio)移除重复的行,用关键词黑名单、正则过滤成人文本,训练一个 DistilRoberta 对文档进行打分,DistilRoberta 的训练数据是使用 Llama2 进行标注的。得益于 Llama2 强大的多语言能力,不同语言文本的质量打分系统可以使用一个多语言 DistilRoberta 处理。

过滤完之后要考虑的一个问题是,如何平衡训练数据。不同领域的信息量不一样,娱乐、体育类的内容势必会比代码、数学探讨类的信息要多,直接全部丢给模型去训练肯定不行的。数据不平衡会导致模型在一些领域表现出色,但在另一领域表现不佳。

如何合理分配比例

一个直观的想法是对文章按类别分类,分成通用、数学、代码等类别,然后按比例采样。那下一个问题,比例又如何决定呢?简单粗暴一点,就是雨露均沾,各类别等比例分配,这样方式也不是不可以,但未必能达到最佳效果。

更合理的方法是先做个小测试,训练一个小模型,看看什么样的比较好,有点像我们在训练决策树通过网络搜索查找最佳参数类似。

LLama3.1 最终的按 token 数拆分的比例是:

  • 通用知识 50%
  • 数学及推理 25%
  • 代码 17%
  • 多语言 8%

小结

Llama3.1 在结构与训练数据上其实没有特别大的变化,也就在训练阶段通过退火、长文本的 curriculum learning 等技巧提高了总体效果,这也是为什么还是 Llama 3.x 系列。期待一下 Llama 4。

参考