以为前些天是在炒作llama3.1泄露,没想到Meta在24号凌晨直接开源了,包括三个不同参数规模的模型(8B、70B、405B),三个模型上下文长度都是128K,其中超大杯拥有4050亿参数,从评测指标来看必是最强开源模型了,在闭源模型中也属于第一梯队,与 GPT-4/Claude 3.5 同级。(其实405B模型对于中小企业来说最大的价值是蒸馏了,根本跑不动)
加载模型检查点所需的 GPU VRAM
KV cache
Hugging Face下载链接:https://huggingface.co/collections/meta-llama/llama-31-669fc079a0c406a149a5738f
Meta官网下载链接:https://llama.meta.com/
小扎前段时间还说可能未来不会开源模型了,当时我以为LLM开源黄昏了,没想到现在直接来波王炸,还给写了一封"关于为什么他相信开源是前进的道路"的信,这波直接respect好吧。
Meta还发布了一本 92 页的 PDF技术报告,详细介绍了该模型。技术报告以及谷歌翻译后的中文版都放在文末链接了,有需要自取。
下面就对技术报告简单总结一下,还是推荐大家自己读一下,里面细节多(有挺多trick),毕竟这可是顶级企业花费巨大代价才有的经验,还免费共享出来,不学一波可说不过去了(这不白嫖)。
推上面Daniel Han大佬将该模型相较于以前Llama的变化总结为一张图:
张俊林画的模型结构图
简要概述:
- 大而好:405B参数直接对标GPT4 (Scaling law)
- 中杯(8B)和大杯(70B)的上下文直接干到128K了,超过目前同类参数模型一个等级。
- 15T的Token,强调数据的重要性!!!包括数据准备、数据处理、数据清洗、数据构造,数据配比等等,数据是基石,决定模型上限。
文章目录
训练语料的整理和筛选
- 训练语料里面95%都是英文,支持8种语言的多语言输入输出,包括英语、德语、法语、意大利语、葡萄牙语、印地语、西班牙语和泰语。(中文能力弱,等一波大佬们微调出来llama3.1-chinese)
- 知识截止到2023年12月,确保了模型知识的时效性。
- 8K token 的上下文窗口,在持续预训练阶段上下文窗口增加至128K
数据准备、数据处理:
- PII (个人可识别信息)和安全过滤,删除能包含不安全内容或大量 PII 的网站和成人内容(脱敏、去黄)。
- 自定义 HTML 解析器,维护数学和代码内容的结构 (工程)。
- 在 URL 级别、文档级别和行级别执行重复数据删除,目的是保留最新数据版本(去重)。
- 使用启发式过滤(n-gram算法、Kullback-Leibler),去除额外的低质量文档、异常值和重复过多的文档(清洗)。
- 各种基于模型的质量分类器来分选高质量的标记,比如说基于 fasttext 的模型将文档分类为 176 种语言(清洗)。
数据组合的缩放定律
- 在一个数据组合上训练几个小模型,并以此来预测一个大模型在该数据组合上的性能(常规操作)。
数据比例:
- 做细粒度的打标签工作,然后根据标签采样,配不同的量,最终敲定:50% 通用数据, 25% 数理数据, 17% 代码数据, 8%多语言数据。
数据退火Annealing Data:
- 作者发现在大模型训练的最后阶段,用高质量的数据学习能提高性能。于是在最后40B数据上,作者逐渐将学习率衰减到0。并且发现,数据退火方法,可以用来筛数据,量少,效果明显,实验更高效。这招对405B模型不怎么起作用,但是对8B小模型在逻辑代码能力方面有明显提升。
模型架构
- 模型架构与 llama 和 llama-2 大体相同,进行了细微的改动,没选择MoE混合专家模型,官方说是以最大限度地提高训练稳定性。
- 与之前的 Llama 版本相比,提高了用于训练前和训练后的数据的数量和质量。(数据决定上限)。
- 采用了迭代的post-training,其中每一轮使用supervised fine-tuning (SFT) 和 direct preference ptimization (DPO)。这样能够为每个回合创建最高质量的合成数据,并提高每个能力的性能。
- 采用 8 KV 头分组查询注意力(GQA)技术,提高了推理的可扩展性。
- RoPE 超参增加至 500000。
- 注意力掩码可防止同一序列中不同文档之间的自注意力。
- 128K 词汇量(100K 来自 tiktoken,28K 额外词汇用于除英语以外的语言)。
- 126 层、128 个注意力头和 16384 嵌入大小。
确定模型大小的相应比例法则(解释为什么选择405B)
FLOPs是一个衡量计算性能的指标,它表示计算机每秒可以执行的浮点运算次数。
- 在机器学习和深度学习中,FLOPs通常用来估计一个模型或算法在给定硬件上运行所需的计算资源。
- 一个模型的FLOPs越高,意味着它需要更多的计算资源,可能需要更长的时间来训练或推理。
Normalized NLL per Character是一种评估语言模型性能的指标,特别是在序列生成任务中,如机器翻译或文本生成。
- NLL,即负对数似然,是衡量模型预测概率分布与实际观测数据之间差异的一种方法。在语言模型中,NLL通常用来衡量模型生成文本的准确性。
- 将NLL除以序列中字符的数量,得到的就是Normalized NLL per Character,这个指标可以提供一个更公平的比较基准,特别是在不同长度的序列之间。
FLOPs关注的是模型的计算需求,而Normalized NLL per Character关注的是模型在特定任务上的性能表现。FLOPs是一个硬件相关的指标,而Normalized NLL per Character是一个模型性能的指标。
Meta 实施了两阶段方法来开发能够准确预测下游基准性能的缩放法则:首先建立计算最优模型在下游任务上的负对数似然与训练FLOPs之间的相关性;(这样可以了解模型在不同计算资源下的性能表现。如果一个模型需要大量的FLOPs但NLL降低不多,这可能意味着进一步增加计算资源的边际效益在减少)
接下来,利用缩放法则模型和使用更高计算FLOPs训练的旧模型,将下游任务上的负对数似然与任务准确性相关联。
AI Infra
- Llama 3 405B 使用 Meta 的 Grand Teton AI 服务器平台,在多达16000张H100 GPU 上进行训练,每个GPU的运行功耗为700W TDP,配备80G HBM3,累计使用了3930万GPU小时的计算时间。
- Tectonic,Meta 内部的分布式文件系统用于存储,240PB,7500 个 SSD ,吞吐量从 2TB/s 到 7TB/s
- 拓扑结构基于 RoCE 的 AI 集群由 24K GPU 组成,单口400Gb/s,通过三层网络连接
模型并行策略:并行维度的顺序【张量并行TP、上下文并行CP、流水线并行PP、数据并行DP】
张量并行将单个权重张量分割成不同设备上的多块。流水线并行将模型按层纵向划分为多个阶段,这样不同的设备可以并行处理整个模型流水线的不同阶段。上下文并行将输入上下文分为若干段,从而减少了超长序列长度输入的内存瓶颈。数据并行将模型、优化器和梯度分片,同时实现数据并行,在多个 GPU上并行处理数据,并在每个训练步骤后同步。
在Llama 3 405B模型54天的预训练期间,总共发生了419次意外中断,平均每天挂9次,可见各种优化手段上了依旧难搞定,万卡这盘棋不好操啊哈哈。
主要原因包括:
1、GPU故障: 148次 (30.1%)
2、GPU HBM3内存: 72次 (17.2%)
3、软件Bug: 54次 (12.9%)
4、网络交换机/线缆: 35次 (8.4%)
5、主机维护: 32次 (7.6%)
6、GPU SRAM内存: 19次 (4.5%)
7、GPU系统处理器: 17次 (4.1%)
8、NIC: 7次 (1.7%)
9、NCCL看门狗超时: 7次 (1.7%)
10、静默数据损坏: 6次 (1.4%)
11、GPU热接口+传感器: 6次 (1.4%)
预训练
预训练 Llama 3 405B 的方法包括三个主要阶段:(1) 初始预训练;(2) 长语境预训练;(3) 退火。
(1) 使用的初始批量大小为400 万个令牌和长度为4096的序列,在预训练2.52亿个令牌后,将这些值加倍到800万个序列和8192个令牌的批量大小。在对2.87T标记进行预训练后,我们再次将批量大小翻倍至1600万。损失峰值很少,而且不需要干预来纠正模型训练的偏差。
(2) 分六个阶段逐步增加上下文长度,从最初的 8K 上下文窗口开始,到最终的 128K 上下文窗口结束。这一长语境预训练阶段使用了大约800B 个训练标记。
(3) 在对最终 4000 万个词组进行预训练期间,学习率线性退火为 0,并保持 128K 词组的上下文长度。在退火阶段,对质量非常高的数据源进行了上采样;最后计算退火过程中模型检查点的平均值生成最终的预训练模型。
Post-Training
后期训练策略包括拒绝采样、监督微调和直接偏好优化。在人工标注的偏好数据上训练奖励模型(RM,和llama2差不多,只是去掉了损失的边界值),然后进行 SFT 和 DPO。每一轮后训练都包括监督微调(SFT),然后是直接偏好优化(DPO),训练数据是通过人类标志或模型合成数据(主要是生成的数据)。
- 聊天对话格式:为了配合Agent中Tools的使用 (在一个对话回合中,它们会被发送到不同的位置(如用户、ipython),定义了一个聊天对话协议,使用各种特殊的头标记和终止标记。头标记用于指示对话中每条信息的来源和目的地。终止标记用于指示何时是人类和人工智能交替发言的时间。
- 奖励模型:奖励模型用于对人工标注的提示进行拒绝采样。对于奖励模型,训练目标是相同的,只是由于收益递减而删除了损失中的边际项。每个偏好排序样本都有两到三个响应,排序如下:已编辑 > 选择 > 拒绝。
- 监督微调:使用标准交叉熵损失(同时屏蔽提示标记上的损失)对预训练语言模型进行微调。在405B模型 8.5K 到 9K 步的过程中以 1e-5 的学习率进行微调。
- 直接偏好优化DPO:至于为什么没用PPO,官方说发现 DPO 对大规模模型的计算要求更低,而且性能更好。还对 DPO 算法进行了如下修改:1.屏蔽 DPO 损失中的格式标记:屏蔽了诸如头和终止token之类的特殊token,以稳定训练。这些token的存在(无论是在接受的响应中还是在拒绝的响应中)都会导致学习目标发生冲突。2.负对数似然损失正则化:对所选序列应用额外的负对数似然 (NLL) 损失项,其缩放系数为 0.2
- 数据:使用了超过2500万个合成样本进行指令微调,进一步提升了模型的表现。
总结一下:关键还是数据,尽管可见Meta在各个部分都做了各自Trick,但基础还是优质数据,同时也说明了合成数据的重要性。
Meta的AI研究科学家Thomas Scialom在播客中分享了Llama 3.1的研发思路,并展望了Llama 4的更新方向。Llama 3.1扩展至405B参数规模,以平衡推理效率与硬件约束,增加训练token数和时长,使模型达到“过度训练”状态。Scialom指出,Transformer架构缺乏灵活性,未来可能会有更多改进。Llama 3.1完全依赖Llama 2的高质量合成数据进行训练,他对合成数据的潜力表示看好。在评估方法上,他们尝试了多种方法,包括奖励模型、model-as-a-judge和多样化的提示。Meta已开始训练Llama 4模型,重点放在agent技术上,强调优质指令模型对agent能力的重要性。
相关链接
官方博客链接:https://ai.meta.com/blog/meta-llama-3-1/
技术报告PDF链接: https://pan.baidu.com/s/17CuihZ1hafgwUv4ZIu0qtA?pwd=ds2y 提取码: ds2y
关于llama3.1真实评测可以看https://mp.weixin.qq.com/s/6KJgrpfrJsvne0vbaD2DLw
笔者水平有限(写的很米田共),大家可看下面好文:
-Meta Llama 3.1-405B AI 模型多项跑分超越 GPT-4o,如何评价该款模型? - 张俊林的回答 - 知乎
https://www.zhihu.com/question/662354435/answer/3572364267
包包算法笔记–LLama 405B 技术报告解读:https://mp.weixin.qq.com/s/8RYqgfuYga0YU8H8XqNNOA
Llama3 92页技术报告中文全文详解
https://mp.weixin.qq.com/s/FaFXAMbHeUNMss3dTNi2eA
版权归原作者 泽也AI 所有, 如有侵权,请联系我们删除。