Meta-Llama-3.1
https://ai.meta.com/blog/meta-llama-3-1/
https://ai.meta.com/research/publications/the-llama-3-herd-of-models/
Llama 3.1 405B 是第一个公开可用的模型,在常识、可操纵性、数学、工具使用和多语言翻译等先进功能方面可与顶级 AI 模型相媲美。
使用了15 万亿个 token 训练,使用16000 个 H100 GPU。
效果上也是很强
erformance of finetuned Llama 3 models on key benchmark evaluations.
数据
在预训练15.6T个token之后,对模型进行后训练SFT和DPO,此时上下文从8K增加到128K。使用合成数据来生成绝大多数 SFT 示例,并进行多次迭代以生成涵盖所有功能的越来越高质量的合成数据。
Illustration of the overall architecture and training of Llama 3
由于使用了大量数据,为了获得高质量的语言模型,必须仔细确定预训练数据组合中不同数据源的比例。
确定这种数据组合的主要工具是知识分类和标度律实验。
-
知识分类。开发了一个分类器来对网络数据中包含的信息类型进行分类,以更有效地确定数据组合。使用此分类器对网络上过多呈现的数据类别(例如艺术和娱乐)进行下采样。
-
数据混合的缩放法则。为了确定最佳的数据混合,进行了缩放定律实验,在数据混合上训练几个小模型,并使用它来预测该混合上的大型模型的性能。针对不同的数据混合多次重复此过程,以选择新的数据混合候选。随后,在此候选数据组合上训练一个更大的模型,并在几个关键基准上评估该模型的性能。
-
数据混合摘要。最终数据组合包含大约 50% 对应于常识的token、25% 的数学和推理token、17% 的代码token和 8% 的多语言token。
经验发现对少量高质量代码和数学数据进行退火可以提高预训练模型在关键基准上的性能。Llama 3 8B 模型在 GSM8k 和 MATH 验证集上的性能分别提高了 24.0% 和 6.4%。然而405B 模型基本没有提升,这表明405B已经很强。
使用退火来评估数据质量。退火能够判断小型特定领域数据集的价值。通过将 50% 训练的 Llama 3 8B 模型的学习率在 40B 令牌上线性退火到 0 来衡量此类数据集的价值。在这些实验中,我们将 30% 的权重分配给新数据集,其余 70% 的权重分配给默认数据组合。使用退火来评估新数据源比对每个小数据集执行缩放定律实验更有效。
模型架构
1、全部使用GQA加速。
2、使用attention mask防止预训练时,不同上下文拼接在一起产生的影响。(拼接的上下文越长,影响越大)
3、使用了新分词器,此表包含128K tokens(包含tiktoken的100k+其他非英语的28K个token)。压缩率从每个标记 3.17 个字符提高到 3.94 个字符。且添加来自选定非英语语言的 28K 标记可以提高压缩率和下游性能,并且对英语标记化没有影响。
4、RoPE的base值增加到500k,支持超长上下文。
Overview of the key hyperparameters of Llama 3
Scaling Laws
现有的缩放法则通常仅预测下一个令牌的预测损失,而不是特定的基准性能。缩放法则可能存在噪音且不可靠,因为它们只使用了少量计算进行预测。
Llama3.1采用两阶段方法来开发准确预测下游基准性能的缩放法则:首先在下游任务的计算最优模型的负对数似然性与训练失败之间建立相关性。接下来利用缩放定律模型和使用更高计算 FLOP 训练的旧模型,将下游任务的负对数似然与任务准确性相关联。
具体来说,使用 FLOP 和 FLOP 之间的计算来预训练大小在 40M 到 16B 参数之间的模型。我们使用余弦学习率计划和 2,000 个训练步骤的线性预热。根据模型的大小,峰值学习率设置在 和 之间。我们将余弦衰减设置为峰值的 0.1。每一步的权重衰减设置为该步学习率的 0.1 倍。为每个计算规模使用固定的批量大小,范围在 250K 到 4M 之间。
Scaling law IsoFLOPs curves
最终得到模型loss如上图,由图可得到最佳计算FLOPs对应的token数目(在红点处)右边是总结后的线性图。那么当数据量为16.5T时,最佳模型参数量就是402B左右。
根据模型预测下游任务的性能:使用上面训练最久的小模型,在下游任务的基准测试上计算正确答案的归一化负对数似然。最终确定几个候选的模型型号。
Scaling law forecast for ARC Challenge
也不一定准,小模型的最佳不一定就是大模型的最佳,参考后的RegMix
最终405B训练了54天,中间断了N次,其中78%是硬件问题。
Root-cause categorization of unexpected interruptions during a 54-day period of Llama 3 405B pre-training
训练过程
整个过程包含预训练+后训练(SFT+DPO)两部分,整个流程重复6轮得到最终模型。
- 预训练阶段
使用余弦学习率对 Llama 3 405B 进行预训练,峰值学习率为 ,线性预热为 8,000 个步骤,并在 1,200,000 个训练步骤中衰减到 。在训练早期使用使用 4M 令牌的初始批量大小和长度为 4096 的序列来提高训练稳定性,并在预训练 252M 令牌之后将这些值加倍到 8,192 个令牌的 8M 序列的批量大小以提高效率。在 2.87T token上进行预训练后,将批量大小再次加倍至 16M。这种训练方法非常稳定:很少有损失峰值,并且不需要干预来纠正模型训练偏差。
在预训练的最后阶段,训练长序列以支持最多 128K 个标记的上下文窗口。
在对最终 40M 个 token 进行预训练期间,将学习率线性退火至 0,保持 128K token 的上下文长度。在此退火阶段,还调整了数据混合,以对非常高质量的数据源进行上采样。最后,对退火期间的模型权重取平均值以生成最终的预训练模型。
- 后训练阶段
后训练对模型进行微调和对齐。首先使用人工注释的偏好数据(在预训练后,部署多个模型(其他不同能力的模型)对prompt进行回答,每次选择两个结果,得到多样性的数据。注释者对数据进行评分得到偏好数据)在Base模型上训练奖励模型。然后使用SFT数据(2.4%人工注释、44.2%来自其他 NLP任务的数据、18.8%偏好拒绝采样数据、34.6%翻译推理数据)对Base模型进行微调。并通过DPO方法进行优化。
Illustration of the overall post-training approach for Llama 3
由于其中的很多数据都是模型生成的,因此需要进行精细的质量控制。例如过度使用表情符号或感叹号:使用了一系列基于规则的数据删除和修改策略来过滤或清理有问题的数据。例如为了缓解过度道歉的语气问题:识别过度使用的短语(例如“我很抱歉”或“我道歉”),并仔细平衡数据集中此类样本的比例。
405B生成的数据可以大幅提升8B/70B的模型性能,但提升不了自己的性能。
数据修剪:应用一系列基于模型的技术来删除低质量的训练样本并提高整体模型性能。
-
数据分类
-
质量评分
-
难度打分
-
语义重复数据删除
-
长上下文
只使用短上下文数据,导致预训练的长上下文能力显著回归,突出了将长上下文数据纳入SFT数据组合的必要性。先使用最强的Llama 3 8K上下文模型总结8K输入长度的块,然后总结摘要。在训练过程中,提供完整的文档,并提示模型总结文档,同时保留所有重要的细节。还根据文档的摘要生成QA对,并使用需要全局理解整个长文档的问题提示模型。
进一步基于序列长度(16K、32K、64K和128K)对这些合成生成的样本进行分类,以实现对输入长度的更细粒度的靶向。通过仔细的消融实验观察到,将0.1%的合成生成的长上下文数据与原始的短上下文数据混合,可以优化短上下文和长上下文基准测试的性能。
效果评测
在同级别的模型上,效果较为优秀。
Reading Comprehension和Code
Commonsense Understanding
Math and Reasoning
General
Mistral Large 2
https://mistral.ai/news/mistral-large-2407/
Mistral Large 2具有 128k 上下文窗口,支持多种语言。为单节点推理而设计,123B参数,8卡推理。
效果比刚刚发布的Llama 3.1 405B还要好(刚出来就被超越了。。。)
效果对比
MultiPL-E 上的性能准确度
RegMix:寻找最佳数据混合比例的方法
RegMix: Data Mixture as Regression for Language Model Pre-training
https://github.com/sail-sg/regmix
大型语言模型预训练的数据混合会显著影响性能,但如何确定有效的混合仍不清楚。REGMIX 涉及使用不同的数据混合物训练一组小模型,并拟合回归模型以预测其各自混合物的性能。通过拟合的回归模型,模拟了排名最高的混合物,并用它来训练具有更多数量级计算量的大型模型。 1、使用多种不同的数据组合训练一批小模型,文中采用了1M的模型训练了1B的token。然后对这些小模型进行评测。
2、使用混合数据的百分比作为特征,目标值作为输出结果,拟合出回归模型。包含线性回归和树回归等多种类型。文中使用了LightGBM回归模型。
3、在回归模型空间搜索具有最低目标值(文中实验目标值越低越好)的数据混合比例数据。4、根据最佳混合比例训练LLM。
评估
对上述N个在1B token上训练的1M小模型,测试在不同基准上的最差得分和最好得分如下所示,不同的数据比例最多可以相差十几分。
考虑到benchmark很多,那么以哪种损失作为优化目标?最直观的方法,也是以前的工作所采用的,是最小化所有域的损失。但是这个难度很大。本文选择优化 Pile-CC 验证损失以实现下游任务的总体性能改进。测试得Regmix方法选择的数据可以实现更低的Loss。
PINE
https://github.com/wzq016/PINE
Eliminating Position Bias of Language Models: A Mechanistic Approach
位置偏见是LLM中的一个普遍问题,比如RoPE由于存在长期注意力衰减问题,会倾向于相近的数据;而因果注意通常会导致模型更青睐远处的内容。因此比如对于A和B哪个好这样的问题,与B和A哪个好问题相比,模型更容易选择第一个选项。
提出PINE的动机
本文提出了PINE编码,使用分段间双向注意力,互相计算所有片段之间的相似性得分,重新排序将相似性高的token放到相邻的位置,以便得到最佳的效果。由于有相似度重排机制,因此无论输入的prompt如何设置都可以重排到更合适的位置从而得到最佳的效果。
原理
PCW通过attention mask遮蔽部分段间注意力,然后对多段分配相同的位置以相除位置偏差。
PCW
但这种方式会导致严重的性能下降。PINE利用双向注意的片段间位置不变原理。使用分段之间的注意力分数来计算它们的相似性。然后根据相似性对片段重新排序:相似性较高的片段被放置在较近的位置。
PINE
在PINE中,段内注意是因果性的,而段间注意是双向的。首先改变注意力屏蔽,以便各部分能够相互注意。其次,根据相似性确定其他片段的位置 ,由于片段长度不一致,需要进行长度归一化,防止将较高的相似性分配给较长的片段。
实验证明效果还不错
测试结果
代码实现
参考https://github.com/wzq016/PINE/blob/main/pine/models/llama/modeling_llama.py
首先进行mask处理
计算每个doc之间的相似性
根据相似性排序
相似度高的doc移动到近处的位置
Gemma2
Gemma 2: Improving Open Language Models at a Practical Size
Google开源了Gemma2系列小模型。
Gemma2架构
Gemma 2架构和Gemma 1类似。但有个别细节不同:
-
1、Gemma 2 使用了全局注意力(8192 token)和局部注意力(4096 token)的交替,这种方法在c.ai上也有提到,对模型质量并不会有太大影响。
-
2、logits限制,对每一层的logits结果限制在[-soft_cap, soft_cap]之间,映射公式为 ,其中设置为50,在最后一层设置为30。
-
3、使用RMSNorm进行Post-norm 和 Pre-norm以稳定训练。
-
4、全部使用GQA提升推理速度,其中groups=2(qhead是kvhead的2倍)。
训练过程
对27B使用了13万亿的token进行训练,9B使用了8万亿token,2B使用了2万亿token。最终的数据混合是通过类似于 Gemini 1.0 中的方法的消融来确定的。Tokenizer和Gemma 1 相同。
预训练结束后,使用纯文本、纯英语合成和人类生成的提示响应对进行微调。
使用纯英语数据训练奖励模型,进行RLHF处理。
最后对每个阶段后获得的模型进行平均,以提高其整体性能。
实验
1、预训练的2B模型和从7B蒸馏的2B模型对比,蒸馏的效果更好。
2、MHA和GQA的性能差不多,GQA速度更快。(之前一直有观点认为GQA会降低模型能力)
3、参数相同的情况下,模型深度对质量的影响更大。
4、sliding window size对模型质量基本没有影响
Gemma2 27B的性能优于LLaMA-3 70B。
蒸馏的2B和9B模型也优于同级别模型
A recipe for frontier model post-training
Llama 3.1 论文包含有关其后训练过程的大量细节。这些模型以及Nvidia 的 Nemotron 340B和Apple 的基础模型报告(以及某种程度上的Gemma 2 )已明确表明,存在一种用于执行高质量 RLHF 的新默认配方。新配方需要一些假设:
-
合成数据的质量可以比人类更高,特别是对于具有挑战性的任务的演示而言。
-
来自人类反馈的强化学习 (RLHF) 的扩展范围远大于指令调整。
-
需要多轮训练和生成才能达到最佳模型。
-
数据过滤是训练中最重要的部分。
SFT 数据专注于以前的模型都无法覆盖的特定领域,然后再进行RLHF。RLHF 是一个迭代过程,模型的生成让它不断变得更好。Llama 2 论文和 Nemotron 论文详细介绍了 5 轮训练,但我们不知道这是否有上限。Llama 3.1 有 6 轮偏好,Llama 2 有 5 轮,Nemotron 有 4 轮。之前有多个指令调整轮次。
Llama 3 有一个简单的训练后循环:拒绝采样、SFT 和 DPO。这不仅在经验上表现最佳;它还实现了可重复性
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。