您的位置:首页 > 互联网

北大硕士RLHF实践,基于DeepSpeed-Chat成功训练上自己的模型

发布时间:2023-08-30 22:16:55  来源:互联网     背景:


新智元报道

作者:ILikeShuhuaMilk

【新智元导读】本文关于基于人类反馈的强化学习(RLHF)进行了分析,结合DeepSpeed-Chat框架进行了成功的实践,同时也对实践过程中遇到的bug以及尝试trick进行了分享。

最近两月倒腾了一波RLHF,从ColossalAI到TRLX以及DeepSpeed-Chat,最后基于DeepSpeed-Chat成功训练上了自己的模型,最后效果也是肉眼可见的提升。对这一部分进行下总结,包括原理,代码以及踩坑与解决方案。

基本概念

首先还是解释一下一些概念,从NLP的角度举一些例子。

首先是RL中的Policy,State,Action。



RL概念图

接下来介绍Reward,Return,Q,V。


PS:这里要注意区分价值和奖励:价值是未来累计奖‍‍励的期望。奖励是我们做出该动作后立即获取的收益。

RLHF过程

整个过程主要是分为三步:SFT,Training Reward Model,RLHF。

这里主要介绍一下Training Reward Model和RLHF。

Step2:Training Reward Model数据

首先是这一部分数据的构成,每一条数据由query,chosen response, rejected response构成,chosen response相较于rejected response质量更高。我使用的数据来自Cohere/miracl-zh-queries-22-12,里面对于每条query包含了positive_passages和negative_passages两个部分,positive部分可以视为chosen,negative部分视为rejected,就可以采样构建我们训练Reward Model的数据了:

{
"query": "联合国总部在哪里?",
"chosen": "联合国总部大楼(亦称联合国大厦)是联合国总部的所在地,位于美国纽约市曼哈顿东侧,属于国际领土,因此只要是会员国国民持有护照就可以进入,包括与美国无邦交的联合国会员国。联合国总部大楼位于纽约市,其西侧边界为第一大道、南侧边界为东42街、北侧边界为东48街、东侧边界为东河,从联合国总部大楼可以俯瞰东河。此大楼于1949年和1950年间兴建,土地购自于当时的纽约房地产家,面积阔达17英亩(约6.87973公顷)。在此之前,洛克斐勒家族有意提供其在纽约州威斯特彻斯特郡洛克菲勒庄园的土地,但因距离曼哈顿遥远而作罢;之后,纳尔逊·洛克菲勒便协助新的土地的购买,其父小约翰·戴维森·洛克菲勒则捐助了850万美元协助兴建大楼。",
"rejected": "联合国的15个专门机构(如教科文组织)都没有设在总部。然而,有一些“自治附属机构”(如联合国儿童基金会)的总部设在联合国总部。"
}

模型结构

Reward Model相较于原始的SFT Model,在后面加上了一个value head,value head是一个Linear,输入维度为模型的hidden_dim,输出维度为1,输出表示模型预测每一字符获取的得分。DeepSpeed-Chat中使用最后一个字符的得分作为整个response的得分(当然也可以使用整个句子中每个字符的平均分作为整体的得分)。


Reward Model

训练目标

训练Reward Model是一个排序任务,针对query,输入chosen和rejected response,训练目标尽可能的使得chosen和rejected的差值更大,损失函数为:

以上就是第二步Training Reward Model的全部过程,基于rank loss训练了一个打分模型。在第三步强化学习中,reward模型将扮演环境的角色,针对模型预测的字符给出奖励分数。

51talk来看素质教育

中通快递寄件丢失赔偿

Step3:RLHF整体结构

首先来从整体上看一下这部分(这里就只介绍RL部分,PTX就是加上了预训练任务):


DeepSpeed-Chat RLHF

RLHF基于A2C方法,这一步包含了四个模型:

  • Actor Model:由SFT之后的模型初始化而来。作为策略(policy)模型,用于接收上文,做出动作,预测下一个字符。学习完毕之后,我们最终使用的就是这个模型。

  • Reference Model:和Actor Model同样初始化自SFT Model,训练过程中冻结参数,用于和Actor Model做对比,保证模型不要偏离原始SFT Model太多。

  • Reward Model:作为环境(env),训练过程中冻结参数,针对每一个状态,给出奖励分数。

  • Critic Model:由Reward Model初始化而来,用于近似价值函数,输入为状态s,估计当前状态的价值V。

训练过程

接下来梳理一遍训练过程。训练过程整体分为两步:maker experience和learn。

首先是make_experience,首先在训练数据中抽取一部分query,然后Actor Model生成答案。然后我们依据这条答案获取我们所需要的经验:

  • actor_logits:由Actor Model产生,包含对答案所有词的概率分布。

  • reference_logits:由Reference Model产生,包含对答案所有词语的概率分布,用于和actor logits进行对比,防止actor model偏离SFT Model太远。

  • reward_score: 由Reward Model产生,为当前句子状态下,立即获取的收益分数。

  • values:由Critic Model产生,估计当前句子状态下,到完成生成,可以获取的回报。

整体流程如下:


make experience

然后在learn的时候,通过所产生的经验进行学习。我们通过Actor Model与Critic Model近似策略函数和价值函数,整体流程如下:


learn

关于learn这部分,详细介绍下Critic Model训练和Actor Model训练过程。

Critic Loss

Critic Model估计当前状态可以获取的价值,也就是我们前面所说的V值。模型的输入为状态s,也就是当前模型生成的句子,输出为状态价值V(s)。


Actor Loss


举个例子,如果我们模型有「上,下,左,右」四个动作,分别有累计奖励「10,20,30,40」,我们做出任意动作,都会获取正向的累计奖励,因此模型也会向这个动作更新参数。而实际上,我们累计奖励的平均期望为25,对于动作「上,下」我们都应该受到惩罚。


以上就是第三步的核心内容,RL过程整体分为两步,make experience和learn。我们首先采样数据,然后生成结果,Reward Model给出环境的奖励,以及Critic Model对结果进行评判。之后我们依据所获取的经验来对模型进行更新。

DeepSpeed-Chat实践与踩坑

Step2 Training Reward Model

这个步骤基本就是全部按照DeepSpeed-Chat代码来了,使用cohere-zh的数据,大约构造了2w条chosen-rejected pair用于训练。最后训练训练了一个epoch,在验证集上准确率到了0.79左右。

***** Evaluating reward, Epoch 1/1 *****
step: 499/2287, chosen_last_scores (higher is better) : 5.074454307556152,reject_last_scores (lower is better) : 0.5599770545959473, acc (higher is better) : 0.812000036239624
step: 999/2287, chosen_last_scores (higher is better) : 5.084388732910156,reject_last_scores (lower is better) : 0.7938708662986755, acc (higher is better) : 0.7940000295639038
step: 1499/2287, chosen_last_scores (higher is better) : 5.106724262237549,reject_last_scores (lower is better) : 0.7971451878547668, acc (higher is better) : 0.7986666560173035
step: 1999/2287, chosen_last_scores (higher is better) : 5.0183587074279785,reject_last_scores (lower is better) : 0.672178328037262, acc (higher is better) : 0.7955000400543213
chosen_last_scores (higher is better) : 5.028912544250488,reject_last_scores (lower is better) : 0.7077188491821289, acc (higher is better) : 0.7936161160469055

Step3 RLHF

踩坑&解决方案

在这个步骤中,从跑通到收敛还是有不少麻烦,分享一些比较重要的点:

  • 训练过程中发现make experience的时候,model.generate()产生的答案全是重复的无意义字。这里就很奇怪了,最后发现是开启了DeepSpeed Hybrid Engine所导致的,查看了issue之后,也发现了有类似的问题。

苹果14黄牛今年还会加价吗

不过目前DeepSpeed-Chat也没有解决,需要关闭Hybrid Engine进行训练。

surface laptop studio 预售

  • DeepSpeed-Chat还有一个很严重的问题就是,在make experience的时候,强制Actor Model生成到最大长度(设置max_length=min_length=max_min_length),这样子导致模型生成偏差很大。对于一个简单的问题,模型可能本来生成简单的一句话就可以完美回答了,但是却必须强制生成到最大长度,这样训练的模型和我们实际用起来的模型是有区别的。

对于这个问题,可以通过修改generate中的参数eos_token_id来解决。设置一个虚假的结束符,然后模型就可能生成正常的结束符。然后我们在构建attention_mask来遮蔽掉结束符后面的回答。例如:
seq = [0,0,0,0, prompt, answer, eos_token, other_word]
mask = [0,0,0,0,1(prompt),1(answer),1(eos_token),0(other_word)]

通过以上两步基本就可以跑通流程了,但是训练过程中还遇到了一个比较大的问题,就是Critic Loss并不收敛,越来越大。

具体的原因是:训练后期,随着模型输出答案越来越好,我们的reward值也会越来越高,导致我们最终累计回报return的区间也会越来越大。而前面说过,我们Critic Loss是一个MSE损失,因此训练后期,随着return的估计范围越来越大,Critic Model就越难估计。在我训练的过程中,一开始return的范围是在3-4左右,训练后期涨到了18-20,因此我们需要想点办法来约束一下我们的return。

首先的超参的调节,γ参数为折扣回报率,DeepSpeed-Chat中初始设置为1,可以将其调小一些来缓解。其次的话,使用reward scale这一trick帮助也非常大。

通过以上这些步骤,基本上我们正常训练了,模型最后也能看到一些效果,但是需要取得更好的效果,我们就需要引入一些trick了。

Trick

trick方面主要参考了The 37 Implementation Details of Proximal Policy Optimization以及影响PPO算法性能的10个关键技巧(附PPO算法简洁Pytorch实现)。对于部分trick,进行了尝试。

  • Normalization of Advantages

    • 将Advantage进行归一化:adv=(adv-mean)/std

    • 在mini-batch上进行

    • 没有指标的量化,从我个人看结果而言,感觉提升不大

  • Overall Loss and Entropy Bonus

    • 为了提高算法的探索能力,在actor的loss中增加一项策略熵,并乘以一个系数entropy_coef,使得在优化actor_loss的同时,让策略的熵尽可能大。一般我们设置entropy_coef=0.01

    • 总体损失变为:loss = policy_loss - entropy * entropy_coefficient + value_loss * value_coefficient

    • 没有指标的量化,从我个人看结果而言,感觉没有太多提升

  • Reward Scale

    • 对reward进行缩放,将reward除以标准差

    • 从训练log来看,对稳定critic loss效果很好,毕竟将reward 进行缩放之后,降低了return的估计区间。

    • 没有指标的量化,从我个人看结果而言,提升很大,推荐使用。

关于其他的一些trick,如学习率衰减、梯度裁剪、Value Clipping等,本身框架就包含了,就不进行特别说明了。当然,这些trick在不同的数据或者模型上都会有不同的效果,需要自己进行探索。

通过以上这些方法,最后也顺利的完成了训练,希望对大家能有所帮助,也希望大家能分享自己有用的经验与理解,关于RL自己了解的也很少,还需要更多的学习。

参考资料:

https://zhuanlan.zhihu.com/p/635569455


返回网站首页

本文评论
金色算力专注提供优质存储服务器,为企业提供完善服务(金色算力官网)
  5G时代的到来,中国数字经济出现了快速的发展。在这个大的时代背景下。与之相关的储存和硬件产品以及其相关的服务领域。也都如火如荼的发展着。各类的新兴产业也如如雨...
日期:01-08
Paronym的TIG软件技术引领2019上海MWC视频互动技术创新风潮
  2019年上海世界移动通信大会刚落下帷幕,基于物联网和人工智能的发展,世界各地的移动科技爱好者都依然沉浸在本次盛会带来惊叹与喜悦之中。   在此次移动科技盛会中,Paro...
日期:11-06
Twitter将上线离谱新规:非会员甚至无法参与投票_twitter会员能干嘛
去年,马斯克在收购Twitter后,推出了Twitter Blue订阅服务作为平台新的盈利方向。今天,马斯克在自己的账号上发布内容,称从4月15日起,只有经过认证的账号的内容才有资格出现在为您...
日期:03-28
2021年后创业「2022,我为什么还在创业?」
声明:本文来自于微信公众号 深燃(ID:shenrancaijing),作者 | 王敏 编辑 | 向小园,授权转载发布。“无风可乘、无浪可借”,2022年,被很多人认为是创业最难的年份。这一年,疫情反复,国...
日期:09-28
微软:目前不打算将 XGP 带到 Switch 等其他封闭平台,因为对方不想要
  8 月 13 日消息 几年前,关于微软 Xbox 应用程序和 Xbox Game Pass 即将登陆 Switch 的谣言四起,但并没有任何官方确认。   近日,在接受 GamesRadar 的新采访时,微软 Xbox...
日期:07-17
在抖音直播,我看了场让陈丹青向往40年的展览
  上世纪80年代初   身在纽约的画家陈丹青   看到了山西娄睿墓壁画的照片图像   他被这幅画仪仗图深深震撼   “当时我们美术界的人都非常震惊,   因为它填补...
日期:07-14
睡莲分布「浙江现罕见睡莲:一半浓艳一半清雅」
7月18日消息,近日,浙江金华武义十里荷花物种园,开出双色睡莲,一半粉一半白,一半浓艳一半清雅,极其罕见。据悉,双色睡莲属于芽变现象,也就是指这朵睡莲在最初形成时,其梢端组织分生层...
日期:07-18
edge后退快捷键_Edge Canary新特性:页面导航新增回退/前进快捷方式
  基于 Chromium 的 Microsoft Edge 浏览器近日获得了页面导航的两个快捷方式,使用“Backspace”按键能够回退到此前页面,使用“Shift-Backspace”快捷方式能够前进。值得...
日期:07-14
英特尔推出新款游戏显卡,以性价比挑战英伟达_英伟达发布入门级GPU争抢笔记本显卡市场,起售价2499元
记者 | 彭新9月28日,英特尔在其技术峰会上宣布,将于下个月开始销售面向游戏玩家的新款游戏显卡。该举动有望打破英伟达和AMD对于游戏图形处理器(GPU)市场的垄断。英特尔即将发售...
日期:10-10
iPhone15机型基本敲定 入门款机型有望搭载4800万主摄「ios15上手体验」
iPhone15 要到 9 月才会发布,但是现在已经开始引起人们的兴趣了。苹果没有正式公布其下一代旗舰手机的存在,但是有很多可信度高的iPhone15传闻让我们可以期待一下。目前已知的...
日期:05-15
杀毒软件哪个好?遭遇勒索病毒首选360安全卫士极速版_杀毒软件能杀勒索病毒吗
不知道大家有没有过遭遇勒索病毒的经历呢?遭遇勒索病毒又应该怎么应对呢?勒索病毒是什么呢?杀毒软件哪个好呢?这种臭名昭著的病毒使得每年都有大量的个人电脑用户和企业中招。今...
日期:05-23
人力资源的裁员策略「不满员工工作效率低下?Salesforce CEO暗示或将加大裁员力度」
  讯 北京时间1月9日早间消息,据报道,知情人士透露,美国商业软件公司Salesforce联合创始人、即将成为公司唯一CEO的马克·贝尼奥夫(Marc Benioff)在上周四举行的全体员工会议上...
日期:01-09
双模智能手机价位「双模双待智能手机推荐」
现如今,随着通信技术的不断发展,越来越多的智能手机可以同时支持多张SIM卡,实现双模双待的功能,让用户可以用一部手机同时管理两个电话号码。这种智能手机的出现,不仅方便了用户...
日期:05-30
特斯拉建新厂_特斯拉新工厂选址已有眉目:马斯克在这个国家早有部署
全球电动汽车龙头特斯拉已开始游说加拿大安大略省政府,有意在该地区建立一个新的电动汽车工厂。财联社8月9日讯(编辑 赵昊)综合多家外国科技媒体报道,全球电动汽车龙头特斯拉已...
日期:08-20
GPT机器人快来了?OpenAI领投挪威人形机器人公司1X
3月28日消息,挪威机器人制造商1X Technologies宣布完成A2轮融资,融资规模达到2350万美元。据悉,此次融资由OpenAI创业基金领投,老虎环球和一个由Sandwater、Alliance Ventures和...
日期:03-28
iphone12比pro电池容量大「iPhone 14 Pro电池成绩仅排第7名」
DXOMARK官方公布了iPhone14Pro的电池评分为119分,在高端机型中排名第7,略高于上一代iPhone13Pro。DXO表示,虽然电池容量很小,但iPhone14Pro的续航表现仍然高于平均水平,尤其是在...
日期:11-16
董明珠称格力研发人员全部来自中国高校「董明珠格力之前的履历」
10月9日消息,格力电器董事长董明珠近日在接受媒体采访时谈到研发团队,她表示,格力是非常特殊的一个企业,没有外资、没有外国所谓的国际人才,格力所有的一万几千个研发人员全部来...
日期:10-18
消息称苹果计划在更多iPhone应用程序中投放广告_iPhone应用广告
据报道,苹果公司可能会将广告投放扩大到iPhone上的更多第一方应用程序中,以增加收入。该报道称,该公司目前的广告业务年收入约为40亿美元,但希望将该细分市场增长到“百亿级别”...
日期:08-19
华为Mate 60 Pro首发卫星通话:目前仅电信卡支持 每月200元可通话200分钟
快科技8月29日消息,今日华为Mate 60 Pro正式上线华为商城开售,售价6999元(目前仅售12 512GB版本)。新机最大的一个亮点就是全球首发卫星通话,即使在没有地面网络信号的情况下,也可...
日期:08-29
媒体如何驾驭ChatGPT等生成式AI?
声明:本文来自于微信公众号 德外5号(ID:dewaiwuhao),作者:德外5号,授权转载发布。据《福布斯》报道,数字媒体公司BuzzFeed继2022年年底宣布将裁员约12%一个月后,官宣计划使用ChatG...
日期:02-25