首页 > 其他分享 >大模型中的RLHE剖析

大模型中的RLHE剖析

时间:2024-07-18 22:18:56浏览次数:11  
标签:训练 truncated chosen 模型 剖析 奖励 RLHE reward

该博文内容摘自:https://blog.csdn.net/chaishen10000/article/details/131232948

https://github.com/microsoft/DeepSpeedExamples/tree/master/applications/DeepSpeed-Chat

 

一、RLHF微调三阶段

  参考:https://huggingface.co/blog/rlhf

  1)使用监督数据微调语言模型,和fine-tuning一致。


  2)训练奖励模型    


  奖励模型是输入一个文本序列,模型给出符合人类偏好的奖励数值,这个奖励数值对于后面的强化学习训练非常重要。构建奖励模型的训练数据一般是同一个数据用不同的语言模型生成结果,然后人工打分。如果是训练自己领域的RLHF模型,也可以尝试用chatgpt打分,效果也不错。

  3)训练RL模型


  在训练强化学习模型时,需要搞清楚状态空间、动作空间、策略函数、价值函数这些东西,动作空间就是所有的token,状态空间就是输入的序列的分布,价值函数由第二步的奖励模型和策略约束结合,策略函数就是微调的大模型。
  从上图可以看出,给定一个输入x,会生成两个文本y11和y22,一个来自于初始的模型,另一个来自于微调的模型,微调的模型生成的文本还会进入到奖励模型中打分输出rθ,而初始模型和微调的模型生成的结果会用KL散度约束它们的分布,确保模型不会太偏离原来的模型,并且能输出高质量的回复。
  值得注意的是三个阶段的训练数据尽量是分布一致的,否则后面的训练会很不稳定。所以在第一步微调时不要一味地使用大量的训练数据(这一步的数据比较容易获得),尽量和后面两步的数据分布保持一致。

二 、训练奖励模型的解析
       其他步骤理解起来很简单,重点是要理解如何训练奖励模型。
  代码在training/step2_reward_model_finetuning文件夹下,奖励模型可以选择一个较小的模型,如opt-350M,在chosen和rejected这种样本对上训练。奖励模型的代码实现在training/utils/model/reward_model.py中。reward model的输出类似于回归任务,将大模型的输出,然后经过N ✖️ 1 的线性层,得到一个batch size ✖️ seq len ✖️ 1的输出。在训练过程中,使用到的loss是二元交叉熵,确保每个prompt 的 chosen分数都是要大于rejected。
  loss += -torch.log(torch.sigmoid(c_truncated_reward - r_truncated_reward)).mean()
  上面的代码中c_truncated_reward 和 r_truncated_reward 即给定一个prompt,对应的chosen和rejected获得的分数,而且是chosen 和 rejected所有token的分数差值。注意在这里因为chosen和rejected的长度不一致,而且还有padding的部分,所以c_truncated_reward和r_truncated_reward要做阶段,主要是截取chosen_id和rejected_id不等的部分出来,去除共同padding的部分。

标签:训练,truncated,chosen,模型,剖析,奖励,RLHE,reward
From: https://www.cnblogs.com/xmds/p/18310520

相关文章

  • 大模型预训练优化参数设置
    文章目录基于批次数据的训练学习率优化器稳定优化技术    与传统神经网络的优化类似,通常使用批次梯度下降算法来进行模型参数的调优。同时,通过调整学习率以及优化器中的梯度修正策略,可以进一步提升训练的稳定性。为了防止模型对数据产生过度拟合,训练中还......
  • 模型预训练任务
    文章目录语言建模去噪自编码混合去噪器    在进行模型的大规模预训练时,往往需要设计合适的自监督预训练任务,使得模型能够从海量无标注数据中学习到广泛的语义知识与世界知识。目前,常用的预训练任务主要分为三类,包括语言建模(LanguageModeling,LM)、去噪......
  • XGBoost模型构建+SHAP解析-Python代码——用XGBoost模型实现机器学习并进行黑箱过程解
    一、XGBoost模型简介1.1适用范围XGBoost(ExtremeGradientBoosting)是一个基于梯度提升(GradientBoosting)框架的增强算法,广泛应用于分类、回归、排序等任务。常见的应用包括:信用风险评估销售预测病毒检测图像识别1.2原理XGBoost是梯度提升树(GradientBoostedDecisionTree......
  • 决策树模型构建+调参Python代码——用决策树模型实现机器学习
    一、决策树模型简介1.1适用范围决策树模型(DecisionTree)可以用于分类和回归任务,广泛应用于以下领域:客户细分信用风险评估医疗诊断营销策略优化1.2原理决策树是一种树形结构的预测模型,通过一系列的特征测试(即节点的分裂)将数据集逐步划分,从而形成一个树状的决策路径。每个节......
  • 大型语言模型的 MOE 和 MOA
    AI生成   欢迎来到雲闪世界。大型语言模型(LLM)无疑席卷了科技行业。它们的迅速崛起得益于来自维基百科、网页、书籍、大量研究论文以及我们喜爱的社交媒体平台的用户内容的大量数据。数据和计算密集型模型一直在狂热地整合来自音频和视频......
  • Datawhale AI 夏令营——CPU部署大模型(LLM天池挑战赛)——Task2与3学习笔记
        Task2的任务是组队+寻找灵感,这里不作阐述;Task3的任务是实现RAG应用,阅读文档并观看卢哥的直播后,结合个人经验做个分享。    运行大语言模型,对LLM使用的加深,我们发现,在使用过程中,大模型会有很多幻觉出现。为了解决幻觉,科研人员提出了各种各样的方案......
  • 【大模型私有化部署:手把手教你部署并使用清华智谱GLM大模型】
    部署一个自己的大模型,没事的时候玩两下,这可能是很多技术同学想做但又迟迟没下手的事情,没下手的原因很可能是成本太高,近万元的RTX3090显卡,想想都肉疼,又或者官方的部署说明过于简单,安装的时候总是遇到各种奇奇怪怪的问题,难以解决。本文就来分享下我的安装部署经验,包括本地和租......
  • 【6!使用本地大模型调用代码,根本就是一场骗局!】
    通过大模型调用其他工具到底可不可行?ChatGPT或许能轻松搞定一切,但同样的需求落在本地大模型上,恐怕就要打个问号了。法国开发工程师EmilienLancelot尝试了多款号称具备工具调用功能的agent框架,来看看本地大模型到底能不能完成任务,但结果就像他总结的“一无所获”。是......
  • 模型训练中出现loss为NaN怎么办?
    文章目录一、模型训练中出现loss为NaN原因1.学习率过高2.梯度消失或爆炸3.数据不平衡或异常4.模型不稳定5.过拟合二、针对梯度消失或爆炸的解决方案1.使用`torch.autograd.detect_anomaly()`2.使用torchviz可视化计算图3.检查梯度的数值范围4.调整梯度剪裁......
  • AI Earth——基于决策树模型淮河流域冬小麦提取应用app
    应用介绍:本应用依据利用Landsat-8数据,基于潘力、夏浩铭、王瑞萌等研究论文(基于GoogleEarthEngine的淮河流域越冬作物种植面积制图)中提出的利用作物在不同物候期内卫星影像的光谱存在差异的特征,通过计算作物时间序列的皈依化植被指数(NDVI),选取越冬作物生长旺盛期NDVI最大......