大模型训练核心技术RLHF

news2025/2/12 11:16:04

本文此次的主要内容是使用强化学习训练语言模型的过程,特别是通过人类反馈的强化学习(RLHF)技术来微调大语言模型。本文先介绍了预训练模型的使用,然后重点介绍了RLHF的第二阶段,即将下游任务以特定数据集的形式交给大模型,以及第三阶段,即训练奖励模型。同时,文章还讨论了微调语言模型时使用的SFT方法和奖励模型的重要性,以及PPO在迭代更新参数中的作用。最后,本文提醒用户注意数据准备和奖励模型训练等额外工作的重要性,并强调了SFT过程中奖励模型RM的概念。

ChatGPT大模型训练核心技术

从GPT-3到ChatGPT的大模型训练技术演进

大模型训练技术演进
GPT 系列模型的技术演变分成两个部分,通过虚线和实现加以区分。在此,实线表示两个模型之间的演化路径存在明确的证据(例如,官方声明新模型是在基础模型的基础上开发的),而虚线表示演化关系相对较弱。从上图可以看出,第一条虚线发展路线更多从语料的规模出发,逐步引入代码并训练算力来强化模型的推理能力。第二条核心路线是从模型的基础编码能力的逐步优化,再引入RLHF和chat等技术的迭代实现ChatGPT的模型综合能力。
基于RLHF训练大模型的三个阶段

RLHF技术概述与应用

  1. RLHF(基于人类反馈的强化学习)是一种新兴技术,旨在提高大语言模型的通用性和与人类价值观的对齐。
  2. 技术起源于利用强化学习训练语言模型,以解决大模型训练中的成本高、通用性不足等问题。
  3. Chat GPT等模型采用RLHF技术,展示了其在提高模型性能和通用性方面的潜力。

基于RLHF训练大模型的三个阶段

  • 特定领域预训练: 使用因果语言建模目标在原始文本上微调预训练的 LLM。其中,domain adaptive pretrain是一个领域适配的可选步骤。
  • 监督微调: 在特定任务和特定领域(提示/指令、响应)对上微调特定领域 LLM。
  • RLHF
    • 奖励模型训练:训练语言模型,将回应分为 “好 ”或 “坏”(竖起大拇指或摁下大拇指)
    • RLHF 微调: 在由人类专家标注的(提示、好回答、坏回答)数据上使用奖励模型训练,以调整 LLM 上的回答。

阶段一:万亿级Token预训练语言模型

阶段一的预训练,通常需要包含数十亿到数万亿个token的庞大文本语料库。这些文本内容来自于公开可获取的语料库,例如Common Crawl[15]、Refined Web[16](Penedo等[17],2023年)、The Pile(Gao等,2020年[18])等海量无标注文本预训练基础模型。但训练目标只是一个简单的【下一个单词预测任务】,模型需要根据提供的文本来预测后续单词或 token。
例如: AutoModelForCausalLM

  • 数据集:100B到 大于 5T tokens
  • 任务:在未标记文本上预测下一个标记词
  • 输出:基本模型/“基础模型”

难点: 千亿模型训练收敛

阶段一代表性语料库和模型: GPT-3

代表性的语料库:
GPT-3
语料库
代表性模型:使用Transformers量化库和推理自回归(因果)模型

  1. 使用AutoAWQ量化模型 ;
  2. 使用GTPQ量化模型;
  3. 支持的默认数据集来量化;
  4. PEFT库LoRA微调适配器并加载模型。

阶段二: 有监督指令微调(SFT)语言模型

阶段二:高质量人类标注的指令和文本精炼语言模型

阶段二的训练目标旨在获取更好的 Prompt 和生成质量。 一些公司已经确定了适合的prompt类型及其比例。比如:OpenAI的InstructGPT(Ouyang等,2022年[6]):文本内容生成(45.6%)、开放式问答(12.4%)、头脑风暴(11.2%)、聊天(8.4%)、文本改写(6.6%)、内容摘要(4.2%)、封闭式问答(2.6%)、文本内容分类(3.5%)、其他类型(3.5%)和关键词提取(1.9%)。
步骤
难点: 构造高质量的 Prompt-text pair。
原理图
在第一阶段的基础上,数据集的来源新增了人类扩增文本。这些构造好的Prompt-text pair以及扩增文本对,用来训练初始化后的大语言模型,从而提高大语言模型的生成质量。

获取高质量SFT数据集的渠道

  • Alpaca :Alpaca 是通过self-instruct框架,使用OpenAI的 text-davinci-003模型生成的包含52,000条指令和文本的数据集。用于对语言模型进行指令微调 ( InstructionTuning ),使大语言模型更好地响应Prompt。alpaca数据集地址
  • databricks-dolly-15k:databricks-dolly-15k是一个开源数据集,数千名 Databricks 员工按照 InstructGPT论文中概述的类别生成的Instruction 记录。这些行为类别包括头脑风暴、分类、封闭型问答、生成、信息提取、开放型问答和摘要。
    该数据集许可证为 Creative Commons Attribution-ShareAlike 3.0 Unported 。可用于任何目的,无论是学术还是商业。databricks-dolly-15k数据集地址
  • OpenAssistant/oasst2:OpenAssistant是 LAION (非营利性组织,因 Stable-Diffusion 数据集出名)发布的一个基于聊天的助手,它能理解任务、与第三方系统进行交互,并动态地检索信息来完成任务。
    OpenAssistant/oasst2 数据集的发布旨在让每个人都能建设和使用强大的chatbased的大语言模型,一共收集了来自超过13,000名人类的真实聊天数据,包含信息树和标签。oasst2数据集地址

阶段三:使用RLHF实现人类价值观对齐(Alignment)

阶段三:使用强化学习训练大语言模型

阶段三的目标是将模型生成结果与人类价值观/偏好/习惯等对齐(说人话),成功的关键便是使用了 RLHF 机制。
步骤
难点: 人类标注自带偏见、训练效率低

RLHF三步训练法

RLHF三步训练法

基于人类反馈的强化学习(RLHF)技术详解

技术拆解

RLHF 技术拆解:RLHF 是一项涉及多个模型和不同训练阶段的复杂概念,本文按三个步骤分解:

  1. 预训练一个语言模型 (LM) ;
  2. 训练一个奖励模型 (Reward Model,RM) ;
  3. 用强化学习 (RL) 方式微调 LM。

步骤一:使用SFT微调预训练语言模型

先收集一个提示词集合,并要求标注人员写出高质量的回复,然后使用该数据集以监督的方式微调预训练的基础模型。对这一步的模型,OpenAI 在其第一个流行的 RLHF 模型 InstructGPT 中使用了较小版本的 GPT-3; Anthropic 使用了1000万 ~ 520亿参数的 Transformer 模型进用训练;DeepMind 使用了自家的 2800 亿参数模型 Gopher。

步骤二:训练奖励模型(Reward Model)

RM 的训练是 RLHF 区别于旧范式的开端。这一模型接收一系列文本并返回一个标量奖励,数值上对应人的偏好。我们可以用端到端的方式用 LM 建模,或者用模块化的系统建模 (比如对输出进行排名,再将排名转换为奖励) 。这一奖励数值将对后续无缝接入现有的 RL 算法至关重要。
RM原理

步骤三:使用PPO优化微调语言模型

使用PPO优化微调语言模型
将微调任务表述为 RL 问题:
首先,该策略 (policy) 是一个接受提示并返回一系列文本 (或文本的概率分布) 的 LM。这个策略的行动空间 (action space) 是 LM 的词表对应的所有词元 (一般在 50k 数量级)。
观察空间 (observation space) 是可能的输入词元序列,也比较大 (词汇量 ^ 输入标记的数量) 。
奖励函数是偏好模型和策略转变约束 (Policy shift constraint) 的结合。
PPO 算法确定的奖励函数具体计算如下:
将提示 x 输入初始 LM 和当前微调的 LM,分别得到了输出文本 y1, y2,将来自当前策略的文本传递给 RM 得到一个标量的奖励 rθ 。将两个模型的生成文本进行比较计算差异的惩罚项KL散度。
这一项被用于惩罚 RL 策略在每个训练批次中生成大幅偏离初始模型,以确保模型输出合理连贯的文本。如果去掉这一惩罚项可能导致模型在优化中生成乱码文本来愚弄奖励模型提供高奖励值。

RLHF应用的工具

Hugging Face TRL 库
‌Hugging Face TRL(Transformer Reinforcement Learning)‌是由Hugging Face开发的一个开源项目,旨在通过强化学习(RL)技术来微调和优化大型语言模型。TRL项目专注于使用强化学习策略来提高任务导向对话系统(Task-Oriented Dialogue Systems, TODS)的性能,特别适用于多轮对话场景‌。
TRL地址
RLHF实现的步骤
TRL 是一个全栈库,其中提供了一套工具,用于使用强化学习训练Transformer 语言模型,包括从监督微调步骤(SFT)、奖励建模步骤(RM)到近端策略优化步骤(PPO)。
提供的API:

  1. SFTTrainer: 监督微调(简称 SFT)是 RLHF 的关键步骤。在 TRL 中,提供了一个易于使用的应用程序接口(API),用于创建 SFT 模型,并在数据集上用几行代码对其进行训练。
  2. RewardTrainer: RewardTrainer 需要一个隐式提示偏好数据集。这意味着数据集应只包含 “选择 ”和 “拒绝 ”列(而不是 “提示 ”列)。RewardTrainer 支持对话和标准数据集格式。如果提供的是会话数据集,训练器会自动将聊天模板应用到数据集。
  3. PPOTrainer: 使用 PPO 算法进一步微调监督微调模型。
  4. Best-of-N Sampling: 无需基于 RL 的微调即可获得更好模型输出的替代方法,使用 N 最佳采样作为从活动模型中采样预测的另一种方法。
  5. DPOTrainer: 使用DPOTrainer 进行直接偏好优化训练。
    第一步是训练 SFT 模型,以确保我们训练的数据符合 DPO 算法的分布要求。然后,通过 DPO 微调语言模型包括两个步骤,比 PPO 更简单:
    • 数据收集: 收集偏好数据集,根据提示,选择正向和反向的生成对。
    • 优化: 直接最大化 DPO 损失的对数概率。

DPOTrainer
DPO 优化人类偏好,同时避免强化学习。现有的利用人类反馈微调语言模型的方法,首先将奖励模型拟合到提示数据集和人类对成对回答的偏好上,然后利用 RL 找到能使学习到的奖励最大化的策略【摘自 DPO 论文】。

  1. 文本环境: 使用 RL 工具训练模型的文本环境。

使用 Hugging Face TRL 实现 PPO 流程图解
通过 PPO 对语言模型进行微调大致包括三个步骤:

  1. 推出:语言模型根据查询(可以是一个句子的开头)生成响应或续句。
  2. 评估: 使用函数、模型、人工反馈或它们的某些组合对查询和响应进行评估。重要的是,这一过程应为每个查询/响应对生成一个标量值。优化的目的就是使这个值最大化。
  3. 优化: 这是最复杂的部分。在优化步骤中,查询/响应对用于计算序列中标记的对数概率。这需要使用训练好的模型和参考模型,参考模型通常是微调前的预训练模型。两个输出之间的 KL发散被用作额外的奖励信号(可以理解为交叉熵,一种评估指标),以确保生成的反应不会偏离参考语言模型太远。然后使用 PPO 对主动语言模型进行训练。

整个过程如下图所示:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2250961.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python学习笔记之IP监控及告警

一、需求说明 作为一名运维工程师,监控系统必不可少。不过我们的监控系统往往都是部署在内网的,如果互联网出口故障,监控系统即使发现了问题,也会告警不出来,这个时候我们就需要补充监控措施,增加从外到内的…

联想YOGA Pro 14s至尊版电脑找不到独立显卡(N卡)问题,也无法安装驱动的问题

问题描述 电脑是联想YOGA Pro 14s至尊版,电脑上装的独立显卡是4060,一直是能够使用独立显卡的。然而有两次突然就找不到显卡了,NVIDIA CONTROL PANEL也消失了,而且也无法安装驱动。具体表现如下: 无法连接外接显示器…

【优先算法-滑动窗口——包含不超过两种字符的最长子串】

目录 1.题目解析 题目来源 测试用例 2.算法原理 1.入窗口 2.出窗口 3.更新结果 3.实战代码 代码解析 1.题目解析 题目来源 包含不超过两种字符的最长子串——牛客网 测试用例 2.算法原理 1.入窗口 这里的窗口限制条件为:窗口内不能超过两种字符,所以使用…

图片预处理技术介绍4——降噪

图片预处理 大家好,我是阿赵。   这一篇将两种基础的降噪算法。   之前介绍过均值模糊和高斯模糊。如果从降噪的角度来说,模糊算法也算是降噪的一类,所以之前介绍的两种模糊可以称呼为均值降噪和高斯降噪。不过模糊算法对原来的图像特征的…

Python蒙特卡罗MCMC:优化Metropolis-Hastings采样策略Fisher矩阵计算参数推断应用—模拟与真实数据...

全文链接:https://tecdat.cn/?p38397 本文介绍了其在过去几年中的最新开发成果,特别阐述了两种有助于提升 Metropolis - Hastings 采样性能的新要素:跳跃因子的自适应算法以及逆 Fisher 矩阵的计算,该逆 Fisher 矩阵可用作提议密…

cad软件打不开报错cad acbrandres dll加载失败

一切本来很顺利哒 但是,当我用快捷方式打开时,就出现了这个错误。进入文件路径,是有这个的; 在文件路径直接打开,也会提示错误 原因竟然是我改了个名字: 随便选的文件路径,空的,文件名为Acr…

HBU深度学习作业9

1. 实现SRN (1)使用Numpy实现SRN import numpy as npinputs np.array([[1., 1.],[1., 1.],[2., 2.]]) # 初始化输入序列 print(inputs is , inputs)state_t np.zeros(2, ) # 初始化存储器 print(state_t is , state_t)w1, w2, w3, w4, w5, w6, w7, …

泛化调用 :在没有接口的情况下进行RPC调用

什么是泛化调用? 在RPC调用的过程中,调用端向服务端发起请求,首先要通过动态代理,动态代理可以屏蔽RPC处理流程,使得发起远程调用就像调用本地一样。 RPC调用本质:调用端向服务端发送一条请求消息&#x…

纯Go语言开发人脸检测、瞳孔/眼睛定位与面部特征检测插件-助力GoFly快速开发框架

前言​ 开发纯go插件的原因是因为目前 Go 生态系统中几乎所有现有的人脸检测解决方案都是纯粹绑定到一些 C/C 库,如 ​​OpenCV​​ 或 ​​​dlib​​​,但通过 ​​​cgo​​​ 调用 C 程序会引入巨大的延迟,并在性能方面产生显著的权衡。…

基于SpringBoot实现的编程训练系统(代码+论文)

🎉博主介绍:Java领域优质创作者,阿里云博客专家,计算机毕设实战导师。专注Java项目实战、毕设定制/协助 📢主要服务内容:选题定题、开题报告、任务书、程序开发、项目定制、论文辅导 💖精彩专栏…

【Spring】Spring IOCDI:架构旋律中的“依赖交响”与“控制华章”

前言 🌟🌟本期讲解关于Spring IOC&DI的详细介绍~~~ 🌈感兴趣的小伙伴看一看小编主页:GGBondlctrl-CSDN博客 🔥 你的点赞就是小编不断更新的最大动力 🎆那么…

webpack(react)基本构建

文章目录 概要整体架构流程技术名词解释技术细节小结 概要 Webpack 是一个现代 JavaScript 应用程序的静态模块打包工具。它的主要功能是将各种资源(如 JavaScript、CSS、图片等)视为模块,并将它们打包成一个或多个输出文件,以便…

mysql--二进制安装编译安装yum安装

二进制安装 创建用户和组 [rootlocalhost ~]# groupadd -r -g 306 mysql [rootlocalhost ~]# useradd -r -g 306 -u 306 -d /data/mysql mysql 创建文件夹并添加所属文件用户和组 [rootlocalhost ~]# mkdir -p /data/mysql [rootlocalhost ~]# chown mysql:mysql /data/mysql …

DRM(数字权限管理技术)防截屏录屏----ffmpeg安装

提示:ffmpeg安装 文章目录 [TOC](文章目录) 前言一、下载二、配置环境变量三、运行ffmpeg四、文档总结 前言 FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的…

MongoDB集群分片安装部署手册

文章目录 一、集群规划1.1 集群安装规划1.2 端口规划1.3 目录创建 二、mongodb安装(三台均需要操作)2.1 下载、解压2.2 配置环境变量 三、mongodb组件配置3.1 配置config server的副本集3.1.1 config配置文件3.1.2 config server启动3.1.3 初始化config …

小程序-基于java+SpringBoot+Vue的乡村研学旅行平台设计与实现

项目运行 1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可 4.硬件环境&#xff1a…

Ubuntu 包管理

APT&dpkg 查看已安装包 查看所有已经安装的包 dpkg -l 查找包 apt search <package_name>搜索软件包列表&#xff0c;找到与搜索关键字匹配的包 dpkg与grep结合查找特定的包 dpkg -s <package>&#xff1a;查看某个安装包的详细信息 安装包 apt安装命令 更新…

mac访达打开终端

选择文件夹打开 选中文件夹&#xff0c;然后右键即可&#xff1a; 在当前文件夹打开 在访达的当前文件夹长按option键 左下角出现当前文件夹路径 右键即可打开终端

数据结构--二叉树的创建和遍历

目录 引入 定义 性质 二叉树的创建 迭代法 注意事项&#xff1a; 递归法 注意事项&#xff1a; 二叉树的遍历 深度优先 广度优先 先序遍历&#xff08;前序遍历&#xff09; 中序遍历 后序遍历 层序遍历 查找树结构中是否存在某数值 方法一&#xff1a; 方法…

Linux零基础入门--Makefile和make--纯干货无废话!!

Makefile的概念与使用 Makefile其实是linux中的一种包含构建指令的文件&#xff0c;用于自动化构建 一个工程中的源文件不计数&#xff0c;其按类型、功能、模块分别放在若干个目录中&#xff0c;makefile定义了一系列的 规则来指定&#xff0c;哪些文件需要先编译&#xff0c;…