Bili-Docs
技术工具AI 应用

Llama 3.1论文精读 · 1. 导言【论文精读·54】

李沐深度解读 Meta 发布的 Llama 3.1 论文,分析其 405B 稠密模型架构、预训练与后训练阶段及开源地位。

UP主: 跟李沐学AI · 时长: 18:53 · 🔗 B站原视频

发布: 2024-07-31 · 收录: 2024-07-31

标签: Llama 3.1 · 大语言模型 · 论文精读 · 人工智能 · Meta

回顾:从 GPT-4 到 Llama 3.1

上一期我们讲的是 OpenAI 的 GPT-4。当时讲的时候觉得,GPT-4 怎么那么厉害,跟 GPT-3.5 真的是天差地别。一转眼一年多就过去了。在过去的一年多里面,整个 AI 社区也在奋力追赶,不管是之前发布的 Claude 3 和 3.5 系列,还是这几天发布的 Llama 3.1 系列。

尤其是它的 405B,这个模型号称已经在很多地方赶上甚至超过了 GPT-4 的水平。我们过去几天也试了一下它新发布的模型,也在 405B 上进行了一定的微调。感觉下来确实比 70B 有很大的增长。当然这也是正常的,模型大了那么多。

但你说它一定跟 GPT-4 有那么好,也还没有那么觉得。不过反过来讲,Llama 3.1 系列的发布也坐实了 Llama 系列现在是目前开源模型里面“老大哥”的地位。我觉得在一段时间之内,这个地位不会发生变化。

今天我们给大家讲一讲 Llama 3.1 系列背后的一些技术。

为什么还要读预训练:更多是“饭后吹水”的价值

选这篇文章时我也想过,可能对绝大部分同学来讲,你可能根本不会去涉及到模型的预训练部分。你很有可能没有那么多资源,几万张 H100。就算你有这个资源,你也可能把它花在一些更有价值的地方。毕竟预训练模型用开源就行了。

但我觉得还是给大家讲一讲,大家就当做饭后能够吹水的话题。

论文与摘要:Dense 405B、128K、工具与安全

我们直接看论文:Llama 3 的技术报告,日期是 2024 年 7 月 23 号。团队现在已经好几百人了,所以作者就直接写 “Llama Team”,然后放在附录里。

摘要里比较重要的点大概几条:

第一,它的主要卖点是多语言、代码、推理和工具使用。

第二,最大的模型是一个 Dense(稠密)的 Transformer,规格是 405B 参数。Context Window 上下文长度是 128K。这里一个不同是,很多比较大的模型现在走的是 MoE 架构,但它这里还是选了稠密架构。128K 不算长,但对绝大部分够用了。你可以宣传做到 100 万甚至无限上下文窗口,但更多是宣传需要;实用上很多时候 32K 都够用了。

第三,它做了很多评估,说跟 GPT-4 打得有来有回。评估上号称到 GPT-4 水平比较容易,但在方方面面实用上还是比较困难一些。

第四,它开源了,同时发布了一个叫 Guard 3 的模型,主要对输入和输出做一些安全上的改写。

最后还提到模型加了图片、视频和语音能力,但通过的是一个 compositional 的方法,属于偏保守方案:先把文本能力拿到,再逐步加后面的东西。因为加多模态训练比较困难,特别是收敛。

整体看下来,它的主要卖点还是一个比较大的稠密模型,属于传统文本大语言模型的卖点。

导言:预训练与后训练两阶段

导言部分做了一点科普:现代的 foundation model 主要有两个阶段。

第一阶段是预训练:算法上比较简单,用大量数据做下一个词预测。

第二阶段是后训练:让模型能够按照指示做事情,或者对齐人的偏好,或者提升特定能力,比如写代码、推理能力。

如果大家还记得我们之前讲过的,你可以认为 GPT-1/2/3 主要干的是预训练;Instruct GPT 以及后面的 RLHF 是后训练过程。现在的说法更倾向于把后面那段都叫 post-training。

三个关键因素:堆数据、做大模型、尽量不改结构

它说有三个关键因素:

数据:15T,多语言,接近公开文本上限

Llama 系列喜欢堆数据,从 Llama 2 开始就这样。Llama 3 把数据堆到 15T,而且是多语言的。

15T 我觉得差不多是目前在公有网络上能够抓到的文本数据的一个上限。你当然还能抓更多,但与其把数值变得更大,不如把数据质量变得更好一点。所以 15T 是一个比较合理的值。

模型规模:最大 405B

第二个就是变大:直接上到 405B。

设计选择:最大化可 scale 的简单方案

第三个比较有意思,我觉得也可以说是这个系列的一个弱点,但它把弱点写成了 feature。

它的设计选择是最大化 scale:尽量不变东西,把它做大。用了非常标准的稠密 Transformer,原始 Transformer 基本没有什么改变,也没有用 MoE。

后训练也比较简单:SFT、reject sampling 和 DPO,这是一套比较常见的路线,没有用更复杂的 RLHF。我们之前讲 RLHF 的时候也提过,有些算法可能过于 fancy、过于复杂;现在业内也有类似倾向。

整体核心思想就是:我没用什么复杂的东西,模型结构没太变,后训练也没搞复杂算法,所以复杂度比较低。从工程和迁移角度可能确实有道理:上一代到下一代问题不大。

但从学术角度,你可能会期待它再“卷一卷”。

我还听到一些消息,说他们原本 Dense 和 MoE 同时训练了,但 MoE 没训练出来,所以最后发了 Dense。后训练也做了更复杂的,但效果不那么好,所以最后发了一个更简单的出来。毕竟是开源给大家用,简单一点也挺好的。

表格解读:405B 的收益在不同能力上不一样

导言后面主要是一个结构表:三个系列 8B、70B、405B 在不同评估上的数字。

说实话,这种数字看多了有点审美疲劳。横向跟别的模型比,大家总会挑对自己友好的设置,所以更值得看的是同一系列不同大小的变化。

知识类(MMLU 等):模型变大提升明显

比如 MMLU 系列,本质上考察知识面,核心是“记住了就猛”。可以看到 8B 到 70B、70B 到 405B 的提升都挺明显。模型越大确实记住东西越多,这类题更有优势。

指令遵循(IFEval 等):70B 已经不错,405B 增益没那么大

指令理解类的指标里,8B 到 70B 提升很大,但 70B 到 405B 差距不太明显。所以如果你关心的是按指示做事,70B 感觉已经挺不错。

MMU/推理类:设置上有“技巧空间”

它这里有两个 MMU 设定:一种是做 few-shot,给五道示例题;另一种是不做 few-shot,但加 CoT,让模型先“想一想”再输出答案。

我觉得这两种都有点取巧。正常情况下很多人希望是 zero-shot、不给 CoT,直接出答案。但评测里可以调:给多少 shot、要不要 CoT,你把对自己更占优的设定列出来就行。所以横向比较看看就好,更关注内部对比会更有意思。

从这些指标整体看:

  • 8B 到 70B 的差距普遍很显著。
  • 70B 到 405B 有些任务提升大,有些任务就一两个点。

如果应用很关心质量,70B 是个不错的选择;如果应用特别复杂,405B 可能更合适。但 405B 的训练和推理成本非常非常大。70B 的训练和推理成本目前都还算 OK。

Blog 演示:工具、多语言、推理、代码助手

在讲更多技术细节之前,我们再看他们 blog 里的一些演示。

工具使用:本质上是“会写代码 + 能执行”

工具使用的 demo 基本就是:让模型写代码,执行代码,把结果再返回,然后结果作为 prompt 的一部分继续往下跑。实际上这和模型会写代码并没有本质区别,你手动复制运行再贴回去也可以。

多语言:配图故事翻译

多语言 demo 给了一个图片,让你把故事翻译成西班牙语。这个 demo 里 405B 的速度大概是每秒 30 token,应该是 H100 在做 serving,所以成本也很贵。

推理:旅行收纳这类问题

另一个是推理:给一些物品图片,比如三件衬衣、五条短裤、一副太阳镜,旅行十天怎么用。它会输出一段比较详细的 reasoning。但这个我觉得也不算特别惊艳。

代码助手:速度偏慢

还有一个代码助手,比如写迷宫算法。它生成速度比较慢,写完几分钟过去了。我觉得这个是不能忍的,因为现在用 OpenAI 或者 GitHub Copilot,代码生成速度快很多。

Mistral 的“对标”:Large Enough 与命名条款八卦

值得一提的是,Mistral 团队在 Llama 3 发布之后第二天就发了自己的模型,名字很有针对性,叫 “Large Enough”。核心意思是:我发布了 Mistral Large 2,大概 120B,虽然没你 400B 那么大,但已经够好了。

它给了两张图,一张讲代码:X 轴是参数大小,Y 轴是代码正确率。对比里 Llama 3.1 70B 在一个位置,Mistral Large 在另一个位置,比它好一点。它的卖点是:我跟你 405B 差不多,但比你小很多;红框表示“性能随规模线性增长才舒服”,暗示 Llama 405B 性价比不行。

数学也类似:120B 比 70B 好,甚至比 405B 还好。整体评测就是对着 Llama 来的。

两家也有些恩怨:Mistral 团队里有不少人来自 Llama 早期团队,出来创业后就基本对着干,相互有点“互黑”。

之前还有个旧事:Llama 2 出来时,Mistral 早期发过一个模型,后来被发现更像是拿 Llama 2 做了 continue pretrain 或 fine-tune。这可能让 Meta 很不爽。

所以到了 Llama 3,Meta 更新了用户协议,加了一句:如果你用了 Llama 3 的材料去训练或发布别的模型,甚至发布某些东西,你必须要把 “Llama 3” 放在你的名字里。感觉有点“霸王条款”,我觉得也不至于,毕竟都开源了。

前几天我还碰到一个 Llama 团队成员,我问他怎么看 Mistral 发的结果。他说他们那个模型代码和数据还行,别的都不行。反正大家相互黑。

这一期到这:后面技术细节还很长

我们讲 Llama 3 的一些结果、在干什么事、以及一些八卦,已经讲了二十分钟了。接下来的技术细节还很漫长,估计至少一个小时。

过去一年半在创业,时间比较碎片,但我还是想把能用的时间用起来,每天录几分钟也可以。

这一期先讲一些通用内容,后面技术细节录完了再发下一期。

On this page