The Llama 3 Herd of Models 第4部分后训练的全文

Llama 3前三部分包括介绍、总体概述和预训练
https://blog.csdn.net/qq_51570094/article/details/140682445?spm=1001.2014.3001.5501
4 Post-Training 后训练
我们通过应用几轮后训练6或将模型与人类反馈对齐来生成对齐的Llama 3模型(Ouyang等人,2022;Rafailov等人,2024)在预先训练的检查点之上。每一轮训练后都包括监督微调(SFT),然后是直接偏好优化(DPO;Rafailov等人,2024)对通过人工注释或合成生成收集的示例进行了分析。我们的训练后建模和数据方法分别在4.1节和4.2节中描述。我们将进一步详细介绍自定义数据管理策略,以改进推理、编码、事实性、多语言、工具使用、长上下文和精确的指令。
4.1 Modeling 建模
我们的培训后策略的支柱是激励模型和语言模型。我们首先使用人工标注的偏好数据在预训练的检查点上训练激励模型(见第4.1.2节)。然后,我们用监督微调(SFT;参见4.1.3节),并进一步将检查点与直接偏好优化(DPO;参见4.1.4节)。这个过程如图7所示。除非另有说明,否则我们的建模过程适用于Llama 3 405b,为了简单起见,我们将Llama 3 405b称为Llama 3。
4.1.1 Chat Dialog Format 对话框格式
为了调整LLM进行人机交互,我们需要为模型定义一个聊天对话协议,以理解人类指令并执行会话任务。与其前身相比,Llama 3具有新的功能,例如工具使用(章节4.3.5),可能需要生成多个消息并发送在单个对话框中,将它们转移到不同的位置(例如,user, ipython)。为了支持这一点,我们设计了一个新的多消息聊天协议,它使用了各种特殊的头和终止tokens。标头tokens用于指示会话中每个消息的源和目的地。同样,终止tokens表示何时该在人类和AI之间交替发言。
4.1.2 Reward Modeling 激励模型
我们在预先训练的检查点上训练了一个激励模型(RM),涵盖了不同的能力。训练目标与Llama 2相同,除了我们删除了损失中的边际项,因为我们观察到数据缩放后的改进逐渐减少。在Llama 2中,我们在过滤掉具有相似反应的样本后,将所有偏好数据用于激励建模。除了标准的偏好对(选择,拒绝)响应之外,注释还为某些提示创建第三个“编辑响应”,其中从对中选择的响应被进一步编辑以进行改进(参见第4.2.1节)。因此,每个偏好排序样本都有两个或三个具有明确排序(编辑>选择>拒绝)的响应。在训练期间,我们将提示和多个响应连接到一行中,并随机打乱响应。这近似于将响应放在单独的行中并计算分数的标准场景,但在我们的实验中,这种方法提高了训练效率,同时又不损失准确性。
4.1.3 Supervised Finetuning 监督微调
然后使用激励模型对我们的人类注释提示执行拒绝抽样,其细节将在4.2节中描述。与此拒绝采样数据和其他数据源(包括合成数据)一起,我们使用目标标记上的标准交叉熵损失(同时屏蔽提示标记上的损失)来微调预训练的语言模型。关于数据混合的更多细节可以在4.2节中找到。我们把这个阶段称为监督微调(SFT;魏等,2022a;Sanh等,2022;Wang等人,2022b),尽管许多训练目标是模型生成的。我们最大的模型在8.5K到9K步的过程中被微调为1e-5的学习率。我们发现这些超参数设置在不同回合和数据混合中都能很好地工作。
4.1.4 Direct Preference Optimization 直接的偏好优化
我们进一步用直接偏好优化(DPO;Rafailov等人,2024)的人类偏好对齐。对于训练,我们主要使用最近一批的偏好数据,这些数据是使用前几轮校准中表现最好的模型收集的。因此,我们的训练数据更符合每轮正在优化的策略模型的分布。我们还探索了PPO (Schulman等人,2017)等策略算法,但发现DPO对于大规模模型需要更少的计算并且表现更好,特别是在IFEval等基准指令之后(Zhou等人,2023)。
对于Llama 3,我们使用1e-5的学习率,并将β超参数设置为0.1。此外,我们对DPO进行了以下算法修改:
•屏蔽DPO丢失中的格式化tokens:我们从丢失中的选择和拒绝响应中屏蔽特殊的格式化tokens,包括标头和终止tokens(见第4.1.1节),以稳定DPO训练。我们观察到,让这些tokens导致损失可能会导致不希望的模型行为,如尾部重复或突然生成终止tokens。我们假设这是由于DPO损失的对比性质——在被选择和被拒绝的响应中存在共同的tokens导致了一个相互冲突的学习目标,因为模型需要同时增加和减少这些tokens的可能性。
•使用NLL损失进行正则化:我们在所选序列上添加了一个额外的负对数似然(NLL)损失项,其缩放系数为0:2,类似于Pang等人(2024)。这有助于进一步稳定DPO训练,通过维持所需的生成格式和防止所选响应的对数概率下降(Pang等人,2024;Pal et al, 2024)。
4.1.5 Model Averaging 模型平均
最后,我们对每个RM、SFT或DPO阶段使用不同版本的数据或超参数从实验中获得的模型进行平均(Izmailov等人,2019;Wortsman等,2022;Li et al ., 2022)。

4.1.6 Iterative Rounds 迭代
在Llama 2 之后,我们将在6轮中应用上述方法。在每个周期中,我们收集新的偏好注释和SFT数据,从最新模型中采样合成数据。
4.2 Post-training Data 后训练数据
训练后的数据组合对语言模型的有用性和行为起着至关重要的作用。在本节中,我们将讨论人工标注过程和偏好数据收集(第4.2.1节),SFT数据的组成(第4.2.2节),以及数据质量控制和清理的方法(第4.2.3节)。
4.2.1 Preference Data 偏好数据
我们的首选项数据注释过程类似于Llama 2。我们在每一轮之后部署多个模型进行注释,并为每个用户提示从两个不同的模型中采样两个响应。这些模型可以使用不同的数据混合和校准方法进行训练,从而允许不同的能力强度(例如,代码专业知识)和增加的数据多样性。我们要求注释者通过将其分类为四个级别之一来评估他们偏好的强度,基于他们对选择的回答比拒绝的回答更喜欢的程度:明显更好,更好,稍好,或略好。我们还在偏好排序之后加入了编辑步骤,以鼓励注释者进一步改进首选响应。注释者直接编辑选择的响应,或者用反馈提示模型以改进它自己的响应。因此,我们的偏好数据的一部分有三个响应排序(编辑>选择>拒绝)。
在表6中,我们报告了用于Llama 3训练的偏好注释的统计信息。通用英语涵盖了多个子类,例如基于知识的问答或精确的指令遵循,这些都不在特定能力的范围内。与Llama 2相比,我们观察到Llama 3的平均提示和反应时间有所增加,这表明我们可以训练Llama 3完成更复杂的任务。此外,我们实施了质量分析和人工评估流程,以严格评估收集到的数据,使我们能够改进提示并向注释者提供系统的、可操作的反馈。例如,随着Llama 3在每一轮后的改进,我们会根据模型滞后的目标区域相应地增加提示复杂度。
在每一轮后训练中
相关文章:
The Llama 3 Herd of Models 第4部分后训练的全文
Llama 3前三部分包括介绍、总体概述和预训练https://blog.csdn.net/qq_51570094/article/details/140682445?spm=1001.2014.3001.5501 4 Post-Training 后训练 我们通过应用几轮后训练6或将模型与人类反馈对齐来生成对齐的Llama 3模型(Ouyang等人,2022;Rafailov等人,2024)在…...
MongoDB性能调优
文章目录 MongoDB性能调优MongoDB性能不佳原因影响MongoDB性能的因素MongoDB性能监控工具mongostatmongotopProfiler模块db.currentOp() MongoDB性能调优 MongoDB性能不佳原因 慢查询阻塞等待硬件资源不足 1,2通常是因为模型/索引设计不佳导致的 排查思路:按1-2…...
【Qt开发】调试log日志QDebug重定向输出到textEdit等控件(qInstallMessageHandler回调函数)
【Qt开发】调试log日志QDebug重定向输出到textEdit等控件(qInstallMessageHandler回调函数) 文章目录 Log输出方式qInstallMessageHandler回调函数线程安全textEdit控件附录:C语言到C的入门知识点(主要适用于C语言精通到Qt的C开发…...
【JavaEE精炼宝库】 网络编程套接字——UDP业务逻辑 | TCP流套接字编程及业务逻辑实现
文章目录 一、UDP业务逻辑实现二、TCP流套接字编程2.1 API 介绍:2.1.1 ServerSocket:2.1.2 Socket: 2.2 Java流套接字通信模型:2.3 代码示例:2.3.1 TCP Echo Server:2.3.2 TCP Echo Client:2.3.…...
前端过渡动画
前端过渡动画 vue3 1、组件进入视口时向上移动且渐显 1、创建js文件addViewportEffect.js function slideDownEffect(element) {console.log("执行");element.style.transform translateY(0);element.style.opacity 1; }/*** 添加视口效果到指定的类名元素上。…...
actual combat 38 ——vue
vue-cli脚手架 创建命令:vue create 项目名称 eslint 如何关闭? vue.config.js文件中加 module.exports {lintOnSave: false }文件全代码: const { defineConfig } require(vue/cli-service) module.exports defineConfig({transpile…...
测试面试宝典(四十七)— 功能测试用例一般包含哪些内容
首先,明确测试用例的编号和名称,以便于识别和管理。 其次,详细描述测试的目标和背景,让其他人能够清楚了解该测试用例的目的和适用场景。 接着是测试的步骤,需要清晰、准确地列出每一个操作步骤,包括输入…...
rust_mac环境安装
在 macOS 上安装 Rust 很简单。你可以使用 Rust 提供的安装工具 rustup。下面是安装步骤: 打开终端。 运行以下命令以安装 rustup 和 Rust: curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh按照提示进行操作: 这个命令将下载并…...
【前端面试】七、算法-递归
常考算法 排序算法:快速排序、归并排序、堆排序等。 查找算法:二分查找、哈希表查找等。 动态规划:解决最优化问题,如斐波那契数列、最长公共子序列等。 图论算法:最短路径(Dijkstra、Floyd-Warshall&am…...
CmsEasy逻辑漏洞--零元购
CmsEasy逻辑漏洞--零元购 选择购买MackBook 购买成功后会员中心发现多出8100快钱 然后就可以正常购买了...
Linux 内核源码分析---I/O 体系结构与访问设备
I/O 体系结构 与外设的通信通常称之为输入输出,一般都缩写为I/O。 在实现外设的I/O时,内核必须处理3个可能出现的问题: (1)必须根据具体的设备类型和模型,使用各种方法对硬件寻址; (…...
在cPanelWHM中如何重置 MySQL 用户帐户密码
更改MySQL用户账户密码非常简单。服务器管理员可以在WHM中编辑任何MySQL用户的帐户。cPanel用户可以编辑其帐户管理的数据库的密码。 在WHM中更改MySQL用户帐户密码 打开WHM,在侧边菜单中的SQL服务下选择“Change MySQLUser Password”。Hostease的服务器产品提供稳…...
软件测试基础1--功能测试
1、什么是软件测试? 软件是控制计算机硬件运行的工具。 软件测试:使用技术手段验证软件是否满足使用需求,为了发现软件功能和需求不相符合的地方,或者寻找实际输出和预期输出之间的差异。 软件测试的目的:减少软件缺陷…...
《计算机网络》(第8版)第9章 无线网络和移动网络 复习笔记
第 9 章 无线网络和移动网络 一、无线局域网 WLAN 1 无线局域网的组成 无线局域网提供移动接入的功能,可分为两大类:有固定基础设施的和无固定基础设 施的。 (1)IEEE 802.11 IEEE 802.11 是无线以太网的标准,是有固定…...
非负数、0和正整数 限制最大值且保留两位小数在elementpuls表单中正则验证
一、结构 <el-form-item label"单价:" prop"price"><el-inputv-model.trim"formData.price"placeholder"请输入"blur"formMethod.fixTwo"><template #append>(元)</template></el-i…...
Java多线程-----定时器(Timer)及其实现
目录 一.定时器简介: 二.定时器的构造方法与常见方法: 三.定时器的模拟实现: 思路分析: 代码实现: 在开发中,我们经常需要一些周期性的操作,例如每隔几分钟就进行某一项操作,这…...
【Linux修行路】进度条小程序
目录 ⛳️推荐 一、预备知识 1.1 回车换行 1.2 缓冲区 二、倒计时 2.1 注意事项 三、进度条 3.1 源代码 3.2 代码分析 3.2 实际使用场景 ⛳️推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家…...
网络安全入门教程(非常详细)从零基础入门到精通,看完这一篇就够了。
学前感言: 1.这是一条坚持的道路,三分钟的热情可以放弃往下看了.2.多练多想,不要离开了教程什么都不会了.最好看完教程自己独立完成技术方面的开发.3.有时多google,baidu,我们往往都遇不到好心的大神,谁会无聊天天给你做解答.4.遇到实在搞不懂的,可以先放放,以后再来解决. 基…...
【探索Linux】P.44(数据链路层 —— 以太网的帧格式 | MAC地址 | MTU | ARP协议)
阅读导航 引言一、认识以太网二、以太网的帧格式三、MAC地址四、MTU五、ARP协议温馨提示 引言 在深入探讨了网络层的IP协议之后,本文将带领读者进一步深入网络的底层——数据链路层。我们将详细解析以太网的帧格式,这是数据链路层传输数据的基本单元&am…...
<数据集>航拍行人识别数据集<目标检测>
数据集格式:VOCYOLO格式 图片数量:7482张 标注数量(xml文件个数):7482 标注数量(txt文件个数):7482 标注类别数:1 标注类别名称:[people, pedestrian] 序号类别名称图片数框数1people5226385602pedes…...
2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...
unix/linux,sudo,其发展历程详细时间线、由来、历史背景
sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...
Caliper 配置文件解析:config.yaml
Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...
基于 TAPD 进行项目管理
起因 自己写了个小工具,仓库用的Github。之前在用markdown进行需求管理,现在随着功能的增加,感觉有点难以管理了,所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD,需要提供一个企业名新建一个项目&#…...
免费PDF转图片工具
免费PDF转图片工具 一款简单易用的PDF转图片工具,可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件,也不需要在线上传文件,保护您的隐私。 工具截图 主要特点 🚀 快速转换:本地转换,无需等待上…...
C++.OpenGL (20/64)混合(Blending)
混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...
spring Security对RBAC及其ABAC的支持使用
RBAC (基于角色的访问控制) RBAC (Role-Based Access Control) 是 Spring Security 中最常用的权限模型,它将权限分配给角色,再将角色分配给用户。 RBAC 核心实现 1. 数据库设计 users roles permissions ------- ------…...
【Ftrace 专栏】Ftrace 参考博文
ftrace、perf、bcc、bpftrace、ply、simple_perf的使用Ftrace 基本用法Linux 利用 ftrace 分析内核调用如何利用ftrace精确跟踪特定进程调度信息使用 ftrace 进行追踪延迟Linux-培训笔记-ftracehttps://www.kernel.org/doc/html/v4.18/trace/events.htmlhttps://blog.csdn.net/…...
【版本控制】GitHub Desktop 入门教程与开源协作全流程解析
目录 0 引言1 GitHub Desktop 入门教程1.1 安装与基础配置1.2 核心功能使用指南仓库管理日常开发流程分支管理 2 GitHub 开源协作流程详解2.1 Fork & Pull Request 模型2.2 完整协作流程步骤步骤 1: Fork(创建个人副本)步骤 2: Clone(克隆…...
Selenium 查找页面元素的方式
Selenium 查找页面元素的方式 Selenium 提供了多种方法来查找网页中的元素,以下是主要的定位方式: 基本定位方式 通过ID定位 driver.find_element(By.ID, "element_id")通过Name定位 driver.find_element(By.NAME, "element_name"…...
