新型大语言模型的预训练与后训练范式,Meta的Llama 3.1语言模型

前言:大型语言模型(LLMs)的发展历程可以说是非常长,从早期的GPT模型一路走到了今天这些复杂的、公开权重的大型语言模型。最初,LLM的训练过程只关注预训练,但后来逐步扩展到了包括预训练和后训练在内的完整流程。后训练通常涵盖监督指导微调和对齐过程,而这些在ChatGPT的推广下变得广为人知。
自ChatGPT首次发布以来,训练方法学也在不断进化。在这几期的文章中,我将回顾近1年中在预训练和后训练方法学上的最新进展。
关于LLM开发与训练流程的概览,特别关注本文中讨论的新型预训练与后训练方法
每个月都有数百篇关于LLM的新论文提出各种新技术和新方法。然而,要真正了解哪些方法在实践中效果更好,一个非常有效的方式就是看看最近最先进模型的预训练和后训练流程。幸运的是,在近1年中,已经有四个重要的新型LLM发布,并且都附带了相对详细的技术报告。
在本文中,我将重点介绍以下模型中的Meta的 Llama 3.1语言模型 预训练和后训练流程:
• 阿里巴巴的 Qwen 2
• 苹果的 智能基础语言模型
• 谷歌的 Gemma 2
• Meta AI 的 Llama 3.1
我会完整的介绍列表中的全部模型,但介绍顺序是基于它们各自的技术论文在arXiv.org上的发表日期,这也巧合地与它们的字母顺序一致。
4. Meta AI的Llama 3.1
Meta发布的Llama LLM新版本总是大事。这次发布伴随着一份92页的技术报告:《Llama 3模型群》。最后,在本节中,我们将查看上个月发布的第四份重要模型论文。
4.1 Llama 3.1概述
除了发布一个巨大的4050亿参数模型,Meta还更新了他们之前的80亿和700亿参数模型,使它们在MMLU性能上略有提升。

MMLU基准测试不同模型的表现。
虽然Llama 3像其他最近的LLM一样使用群组查询注意力,但令人惊讶的是,Meta AI拒绝使用滑动窗口注意力和混合专家方法。换句话说,Llama 3.1看起来非常传统,重点显然放在预训练和后训练上,而非架构创新。
与之前的Llama版本相似,它的权重是公开可用的。此外,Meta表示他们更新了Llama 3的许可证,现在终于可以(被允许)使用Llama 3进行合成数据生成或知识蒸馏以改善其他模型。
4.2 Llama 3.1预训练
Llama 3在庞大的15.6万亿标记数据集上进行训练,这比Llama 2的1.8万亿标记有显著增加。研究人员表示,它支持至少八种语言(而Qwen 2能处理20种语言)。
Llama 3的一个有趣方面是它的词汇量为128,000,这是使用OpenAI的tiktoken分词器开发的。(对于那些对分词器性能感兴趣的人,我在这里做了一个简单的基准比较。)
在预训练数据质量控制方面,Llama 3采用了基于启发式的过滤以及基于模型的质量过滤,利用像Meta AI的fastText和基于RoBERTa的分类器这样的快速分类器。这些分类器还有助于确定训练期间使用的数据混合的上下文类别。
Llama 3的预训练分为三个阶段。第一阶段涉及使用15.6万亿标记进行标准的初始预训练,上下文窗口为8k。第二阶段继续预训练,但将上下文长度扩展到128k。最后一个阶段涉及退火,进一步提高模型的性能。让我们更详细地看看这些阶段。
4.2.1 预训练I:标准(初始)预训练
在他们的训练设置中,他们开始使用由4096个序列长度的400万标记组成的批次。这意味着批量大小大约为1024标记,假设400万这个数字是四舍五入得到的。在处理了首批252百万标记后,他们将序列长度增加到8192。在训练过程中,处理了2.87万亿标记后,他们再次将批量大小翻倍。
此外,研究人员并没有在整个训练过程中保持数据混合不变。相反,他们调整了训练过程中使用的数据混合,以优化模型学习和性能。这种动态处理数据的方法可能有助于改善模型跨不同类型数据的泛化能力。
4.2.2 预训练II:继续预训练以延长上下文
与其他一步增加其上下文窗口的模型相比,Llama 3.1的上下文延长是一个更渐进的方法:在这里,研究人员通过六个不同阶段将上下文长度从8000增加到128000标记。这种分步增加可能让模型更平滑地适应更大的上下文。
此过程使用的训练集涉及8000亿标记,约占总数据集大小的5%。
4.2.3 预训练III:在高质量数据上退火
对于第三阶段预训练,研究人员在一个小但高质量的混合上训练模型,他们发现这有助于改善基准数据集上的性能。例如,在GSM8K和MATH训练集上退火提供了在相应的GSM8K和MATH验证集上的显著提升。
在论文的3.1.3节中,研究人员表示退火数据集大小为400亿标记(总数据集大小的0.02%);这400亿退火数据集用于评估数据质量。在3.4.3节中,他们表示实际的退火只在4000万标记上进行(退火数据的0.1%)。

Llama 3.1预训练技术总结。
4.3 Llama 3.1后训练
在后训练过程中,Meta AI团队采用了一种相对简单的方法,包括监督微调(SFT)、拒绝采样和直接偏好优化(DPO)。
他们观察到,像带PPO的RLHF这样的强化学习算法与这些技术相比,稳定性较低且更难扩展。值得注意的是,SFT和DPO步骤在多轮中反复迭代,融合了人工生成和合成数据。
在描述更多细节之前,他们的工作流程如下图所示。

来自Llama 3.1论文的带注释的图表,描述了后训练过程。
请注意,尽管他们使用了DPO,但他们也开发了一个奖励模型,就像在RLHF中一样。起初,他们使用预训练阶段的一个检查点训练奖励模型,利用人工标注数据。这个奖励模型随后被用于拒绝采样过程,帮助选择适当的提示进行进一步训练。
在每一轮训练中,他们不仅对奖励模型,还对SFT和DPO模型应用了模型平均技术。这种平均涉及合并最近和以前模型的参数,以稳定(并改善)随时间的性能。
对于那些对模型平均的技术细节感兴趣的人,我在我早期文章《理解模型融合和权重平均》的部分中讨论了这个话题,文章标题为《模型融合、专家混合,以及向更小LLM的迈进》。
总之,核心是一个相对标准的SFT + DPO阶段。然而,这个阶段在多轮中重复。然后,他们在拒绝采样中加入了一个奖励模型(像Qwen 2和AFM那样)。他们还使用了像Gemma那样的模型平均;然而,这不仅适用于奖励模型,而是涉及所有模型。

Llama 3.1后训练技术总结。
4.4 结论
Llama 3模型保持相当标准,与早期的Llama 2模型类似,但采用了一些有趣的方法。值得注意的是,庞大的15万亿标记训练集使Llama 3与其他模型区别开来。有趣的是,像苹果的AFM模型一样,Llama 3也实施了三阶段预训练过程。
与其他最近的大型语言模型不同,Llama 3没有采用知识蒸馏技术,而是选择了一条更直接的模型开发路径。在后训练中,模型使用了直接偏好优化(DPO)而不是其他模型中流行的更复杂的强化学习策略。总的来说,这种选择很有趣,因为它表明了通过简单(但经过验证的)方法精炼LLM性能的重点。
5. 主要收获
从本文讨论的这四个模型中我们可以学到什么:阿里巴巴的Qwen 2,苹果的基础模型(AFM),谷歌的Gemma 2,以及Meta的Llama 3?
这四个模型在预训练和后训练上采取了略有不同的方法。当然,方法论有所重叠,但没有哪个训练流程是完全相同的。在预训练方面,一个共有的特征似乎是所有方法都使用了多阶段预训练流程,其中一般的核心预训练之后是上下文延长,有时还有高质量的退火步骤。下面的图表再次一览无余地显示了预训练中使用的不同方法。

预训练所用技术概述
在后训练方面,也没有哪个流程是完全相同的。看来拒绝采样现在已经成为后训练过程中的常见要素。然而,当谈到DPO或RLHF时,还没有共识或偏好(无意中的双关语)。

后训练所用技术概述
因此,总的来说,没有单一的配方,而是有许多路径可以开发出高性能的LLM。
最后,这四个模型的表现大致相当。不幸的是,其中几个模型还没有进入LMSYS和AlpacaEval排行榜,所以我们还没有直接的比较,除了在MMLU和其他多项选择基准上的得分。
相关文章:
新型大语言模型的预训练与后训练范式,Meta的Llama 3.1语言模型
前言:大型语言模型(LLMs)的发展历程可以说是非常长,从早期的GPT模型一路走到了今天这些复杂的、公开权重的大型语言模型。最初,LLM的训练过程只关注预训练,但后来逐步扩展到了包括预训练和后训练在内的完整…...
硬菜3道+馒头
硬菜3道 1、可乐鸡翅 》鸡翅滑刀酱油耗油胡椒粉盐》 搅拌腌制3-5分钟 》油锅,直到2面煎黄 》倒入可乐,到大火收汁,出锅 2、洋葱牛肉 》冻牛肉切薄酱油耗油胡椒粉盐 》手指摇匀 》加入生粉水,继续摇匀》直到粘稠 》油锅牛肉炒半熟&…...
YOLO系列论文综述(从YOLOv1到YOLOv11)【第14篇:YOLOv11——在速度和准确性方面具有无与伦比的性能】
YOLOv11 1 摘要2 改进点3 模型性能4 模型架构 YOLO系列博文: 【第1篇:概述物体检测算法发展史、YOLO应用领域、评价指标和NMS】【第2篇:YOLO系列论文、代码和主要优缺点汇总】【第3篇:YOLOv1——YOLO的开山之作】【第4篇ÿ…...
【Spring】聊聊@EventListener注解原理
1.一个Demo出发 在平时的开发中,其实编写同步线程代码是比较容易的,但是如何将一些操作和另外一些操作进行解除耦合,而事件方式 是一种很好的解耦合方式,比如当一个用户注销一个APP之后,需要发送一些短信 让他引流回来…...
LangChain——HTML文本分割 多种文本分割
Text Splitters 文本分割器 加载文档后,您通常会想要对其进行转换以更好地适合您的应用程序。最简单的例子是,您可能希望将长文档分割成更小的块,以适合模型的上下文窗口。 LangChain 有许多内置的文档转换器,可以轻松地拆分、组…...
梯度爆炸与消失
梯度爆炸和梯度消失 一、概念解析 (一)梯度爆炸 定义 在深度神经网络训练的反向传播过程中,梯度爆炸是指梯度的值过大的现象。这会使模型的参数更新出现异常。 产生原因 深层网络与链式法则:深度神经网络按链式法则计算某层权重…...
关于扩散方程的解
1-D 扩散方程的形式 Cauchy齐次方程 这个解无积分无级数,很简单的形式 美其名曰:基本解。 把基本解和初值做卷积,就得到cauchy方程的解。...
如何监控Elasticsearch集群状态?
大家好,我是锋哥。今天分享关于【如何监控Elasticsearch集群状态?】面试题。希望对大家有帮助; 如何监控Elasticsearch集群状态? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 监控 Elasticsearch 集群的状态对于确保…...
关于音频 DSP 的接口种类以及其应用场景介绍
在音频系统中,DSP(数字信号处理器)扮演着重要角色,通常会通过不同的接口与音频系统中的其他组件(如功放、扬声器、音频源等)进行连接。以汽车应用场景为例,以下是一些常见的接口类型分类及其介绍…...
arkTS:持久化储存UI状态的基本用法(PersistentStorage)
arkUI:持久化储存UI状态的基本用法(PersistentStorage) 1 主要内容说明2 例子2.1 持久化储存UI状态的基本用法(PersistentStorage)2.1.1 源码1的相关说明2.1.1.1 数据存储2.1.1.2 数据读取2.1.1.3 动态更新2.1.1.4 显示…...
css—动画
一、背景 本文章是用于解释上一篇文章中的问题,如果会动画的小伙伴就不用再次来看了,本文主要讲解一下动画的设定规则,以及如何在元素中添加动画,本文会大篇幅的讲解一下,动画属性。注意,这是css3的内容&am…...
YOLO系列论文综述(从YOLOv1到YOLOv11)【第12篇:YOLOv9——可编程梯度信息(PGI)+广义高效层聚合网络(GELAN)】
YOLOv9 1 摘要2 改进点3 网络架构 YOLO系列博文: 【第1篇:概述物体检测算法发展史、YOLO应用领域、评价指标和NMS】【第2篇:YOLO系列论文、代码和主要优缺点汇总】【第3篇:YOLOv1——YOLO的开山之作】【第4篇:YOLOv2—…...
【ETCD】etcd简单入门之基础操作基于etcdctl进行操作
这里将使用etcdctl命令行工具来进行演示, 1、使用put命令向etcd写入kv对 使用etcdctl put命令来设置键值对。put命令接受两个参数:键和值 使用方法: NAME:put - Puts the given key into the storeUSAGE:etcdctl put [options] <key&g…...
第六届国际科技创新(IAECST 2024)暨第四届物流系统与交通运输(LSTT 2024)
重要信息 会议官网:www.lstt.org 大会时间:2024年12月6-8日 大会地点:中国-广州 简介 第六届国际科技创新暨第四届物流系统与交通运输国际(LSTT 2024)将于2024年12月6-8日在广州举办,这是一个集中探讨…...
20241127 给typecho文章编辑附件 添加视频 图片预览
Typecho在写文章时,如果一次性上传太多张图片可能分不清哪张,因为附件没有略缩图,无法实时阅览图片,给文章插入图片时很不方便。 编辑admin/file-upload.php 大约十八行的位置 一个while 循环里面,这是在进行html元素更新操作,在合…...
vue3使用monaco编辑器(VSCode网页版)
vue3使用monaco编辑器(VSCode网页版) 文章说明参考文章核心代码效果展示实践说明源码下载 文章说明 一直在找网页版的编辑器,网页版的VSCode功能很强大,这个monaco就是VSCode样式的编辑器,功能很强大,可以直…...
Spark优化--开发调优、资源调优、数据倾斜调优和shuffle调优等
针对Spark优化,我们可以从多个角度进行,包括开发调优、资源调优、数据倾斜调优和shuffle调优等。以下是一些具体的优化方法: 1. 开发调优 避免创建重复的RDD:对于同一份数据,只应该创建一个RDD,避免创建多…...
Day1 生信新手笔记
生信新手笔记 生信学习第一天笔记打卡。 转录组学中: 上游分析-基于linux,包括质控、过滤、比对、定量; 下游分析-基于R语言,包括差异分析、富集分析、可视化。 1. 级别标题 一个井号加空格 就是一级标题,两个井号加…...
Python的秘密基地--[章节2]Python核心数据结构
第2章:Python核心数据结构 Python中的数据结构提供了强大的工具来存储和操作数据。理解这些数据结构是Python编程的基础。 2.1 列表(List) 2.1.1 什么是列表 列表是一种有序的可变序列,用于存储一组数据。它支持多种类型的数据…...
【Electron学习笔记(三)】Electron的主进程和渲染进程
Electron的主进程和渲染进程 Electron的主进程和渲染进程前言正文1、主进程2、渲染进程3、Preload 脚本3.1 在项目目录下创建 preload.js 文件3.2 在 main.js 文件下创建路径变量并将 preload.js 定义为桥梁3.3 在 preload.js 文件下使用 electron 提供的contextBridge 模块3.4…...
地震勘探——干扰波识别、井中地震时距曲线特点
目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...
Cursor实现用excel数据填充word模版的方法
cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...
智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...
【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...
智能在线客服平台:数字化时代企业连接用户的 AI 中枢
随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...
基于matlab策略迭代和值迭代法的动态规划
经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能
1. 开发环境准备 安装DevEco Studio 3.1: 从华为开发者官网下载最新版DevEco Studio安装HarmonyOS 5.0 SDK 项目配置: // module.json5 {"module": {"requestPermissions": [{"name": "ohos.permis…...
怎么让Comfyui导出的图像不包含工作流信息,
为了数据安全,让Comfyui导出的图像不包含工作流信息,导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo(推荐) 在 save_images 方法中,删除或注释掉所有与 metadata …...
十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建
【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建 前言准备工作第一部分:回顾 Django 内置的 `User` 模型第二部分:设计并创建 `Role` 和 `UserProfile` 模型第三部分:创建 Serializers第四部分:创建 ViewSets第五部分:注册 API 路由第六部分:后端初步测…...
