RLHF模型训练-PPO拆解

news/2026/1/18 16:20:15/文章来源:https://www.cnblogs.com/wildkid1024/p/19498680

零、基本概念

在一个RLHF的流程中,包含了trainer 和 rollout两个过程,其中trainer是训练强化学习的部分,而rollout则是执行模型推理的部分。

在PPO策略中,trainer的主要目的则是为了训练策略模型,它包括了策略模型、RM奖励模型、价值模型,其中RM是人工手动标签离线训练好的模型。rollout阶段是生成数据标签阶段。

1. 策略模型

策略模型是优化的关键,也是待优化的模型。
在rollout阶段会通过前向操作输出问题的答案,基于用户指令生成回复样本,并记录每个 token 生成的概率。
在trainer过程是待优化的参数,通过 PPO 损失函数更新权重,学习 “生成高奖励回复” 的能力。

2. 价值模型

价值模型也是critic/value模型,是评估模型输出是否高出平均标准的模型,输入用户指令 + 生成的回复上下文(状态 st​),输出一个标量值 V(st​),代表该状态下的期望平均奖励

在verl中采用权重共享 + 独立预测头的方式运行,也就是说,一般和策略模型共享相同的transformers权重,但是在头上添加了预测头,来预测平均奖励。
作用:

  • 如果没有价值模型,PPO 会直接用奖励值 r 指导策略更新,容易因奖励波动导致训练震荡;
  • 价值模型通过拟合 “平均奖励水平”,让优势值 At​ 更平稳,大幅降低策略更新的风险。

核心计算公式:

\(A_t​=r−V(st​)\)

这里A_t是模型要预测的值,其中r是奖励模型给出的结果,V(St)是价值模型对状态 st​ 的预测期望值,A_t则是模型输出比期望多多少的值。

3. 奖励模型

奖励奖励模型是一个与策略模型Qwen7B类似的模型,不过不输出连续的字段,而只生成对多个问答的分数。
输入:模型关于输入的多个回答,输出:每个回答对应的分数,以下是AceCodeRM的分数。
一般训练时模型是经过人为标签训练而成的,在一些代码的场景中,奖励模型也可以是沙箱运行的结果。

输入:

question = """\
Given an array of numbers, write a function runningSum that returns an array where each element at index i is the sum of all elements from index 0 to i (inclusive).
For example:
Input: nums = [1,2,3,4]
Output: [1,3,6,10]
"""program_with_3_errors = """\
def runningSum(nums):result = []current_sum = 0for i in range(1, len(nums)):result.append(nums[i])current_sum += nums[i]return result
"""program_with_2_errors = """\
def runningSum(nums):result = []current_sum = 0for i in range(0, len(nums)):result.append(nums[i])current_sum += nums[i]return result
"""program_with_1_errors = """\
def runningSum(nums):result = []current_sum = 0for i in range(0, len(nums)):result.append(current_sum)current_sum += nums[i]return result
"""
program_correct = """\
def runningSum(nums):result = []current_sum = 0for num in nums:current_sum += numresult.append(current_sum)return result
"""program_chats = [[{"content": question,"role": "user",},{"role": "assistant","content": program}] for program in [program_with_3_errors, program_with_2_errors, program_with_1_errors, program_correct]
]

输出:

print("RM Scores:", rm_scores)
print("Score of program with 3 errors:", rm_scores[0].item())
print("Score of program with 2 errors:", rm_scores[1].item())
print("Score of program with 1 errors:", rm_scores[2].item())
print("Score of correct program:", rm_scores[3].item())
"""
RM Scores: tensor([-20.5058,  -1.7867,   0.4395,  23.0689], device='cuda:0',grad_fn=<SqueezeBackward0>)
Score of program with 3 errors: -20.505754470825195
Score of program with 2 errors: -1.7866804599761963
Score of program with 1 errors: 0.43949759006500244
Score of correct program: 23.068859100341797

与预期值越接近,便得到越高的分数。

壹、PPO训练流程

在 Verl 中,PPO 的优化目标是让策略模型生成高奖励回复,核心约束是 “策略更新幅度不能过大”,避免训练崩溃。

  • 优化对象:策略模型(如 Qwen-7B)的权重 \(θ\)
  • 核心约束:新旧策略的概率比值 \(rt​(θ)=πθold​​(at​∣st​) / πθ​(at​∣st​)\)​ 被限制在 [1−ϵ,1+ϵ](ϵ 默认为 0.2)
  • 损失函数\(L_{PPO} ​= L_{clip}​+L_{vf​}+βL_{ent}\)​(策略损失 + 价值损失 + 熵损失)

PPO的训练流程可分为4个阶段:1. Rollout 数据生成 2. 优势函数计算 3. PPO 策略更新 4. 迭代闭环

0. RM奖励模型训练

RM模型训练的目的是根据用户的单个输入和多个输出,给多个输出打分,倾向性更好的模型将得到更好的分数,输出的是一个分数向量。
在有些场景下,奖励模型也可以是实时运行的沙箱,比如代码场景。

1. Rollout数据生成

rollout目标是产出 PPO 训练所需的带标签数据,是RLHF训练的前置操作。

输入:用户指令集 + 旧策略模型 (优化前的 7B 模型) + 奖励模型
流程:

  1. 策略模型基于指令生成回复样本(token 序列 a0:T​),同时记录每个 token 的生成概率 \(πθold​​(at​∣st​)\)(st​ 是生成到第 t 个 token 时的上下文)。
  2. 奖励模型对 “指令 + 回复” 完整样本打分,输出标量奖励 r。
    输出:训练批次数据 \(batch=\{st​,at​,πθold​​(at​∣st​),r\}\)

这个过程可以视为是收集训练片段的过程,可以认为是训练的离线标签收集过程,得到的是每个token在上下文的情况下的执行概率,得到的回报等。

2. 优势函数计算

在 Trainer 模块中执行,目标是计算 优势值 At—— 衡量 “当前动作的奖励是否优于平均水平”,是 PPO 策略更新的核心依据。

输入:Rollout 产出的 batch 数据 + 价值模型 \(Vϕ\)
流程:

  1. 价值预测:价值模型对每个状态 st​ 输出预测值 V(st​)(代表该状态的期望平均奖励)
  2. 优势计算:\(At​=r−V(st​)\)(实际奖励与平均奖励的差值)。
  3. 优势归一化:对 At​ 做标准化(减均值、除标准差),降低奖励波动对训练的影响。
    输出:归一化后的优势值 \(A_t​\)

这一步是根据训练数据,得到价值模型对每个状态的的回报预测值。

价值函数此时是否和策略函数是同步的?

3. PPO 策略更新

目标是通过 Clip 截断损失更新策略模型权重,同时优化价值模型。
输入: batch 数据 + 归一化优势值 \(A_t\)​ + 策略模型 \(π_θ​\) + 价值模型\(V_ϕ\)
流程:

3.1:计算策略损失 \(L_{clip}\),这一步的clip非常关键,它限定了策略的更新幅度​

  • 用新策略模型计算当前 token 的概率\(πθ​(at​∣st​)\)
  • 计算新旧策略概率比值 \(rt​(θ)=πθold​​(at​∣st​)πθ​(at​∣st​)​\)
  • 应用 Clip 截断:\(clip(rt​(θ),1−ϵ,1+ϵ)\)
  • 策略损失公式:\(L_{clip​}=−E[min(rt​(θ)A^t​, clip(rt​(θ),1−ϵ,1+ϵ)A_t​)]\)

3.2:计算价值损失 \(L_{vf}​\)

  • 价值损失是 MSE 损失,目标是让价值模型的预测值 V(st​) 贴近实际奖励 r: \(L_{vf​}=E[(V(st​)−r)^2]\)
  • 通过 vf_coef(默认 0.5)平衡价值损失与策略损失的占比。

3.3:计算熵损失 Lent​(鼓励回复多样性)

  • 熵损失是策略概率分布的熵值,熵越大代表回复越多样:\(L_{ent}​=−E[logπθ​(at​∣st​)]\)
  • 通过 ent_coef(默认 0.01)控制多样性强度,系数越大回复越多样。

3.4:总损失计算与反向传播

  • 总损失:\(L_{PPO}​=L_{clip}​+L_{vf}​+βL_{ent}\)
  • 反向传播:计算总损失对策略模型权重 θ 和价值头权重 ϕ 的梯度,用 AdamW 优化器更新权重。

输出:更新后的新策略模型 \(πθnew​\)

阶段 4:迭代闭环(多次优化直到收敛)

PPO 不是一次性更新,而是多轮迭代,流程如下:

  • 将更新后的新策略模型 \(πθ_{new}\)​​ 作为下一轮的旧策略 \(πθ_{old}​\)​;
  • 重复 阶段 1~ 阶段 3,直到达到预设的迭代轮数(num_epochs)或奖励收敛
  • 一次rollout可以供多次train使用,可设置为3-10epochs,太远的话会导致策略有偏差

两阶段的特点总结:1. 在rollout阶段要加载两个模型,此时模型的运行峰值极高,需要较大的显存和IO速度 2. 在trainer阶段则更多的是计算密集,峰值显存和对应的波动都比较小,但是因为有梯度计算,在计算耗费上会比较多。

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

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

相关文章

N-Sum 的算法思想与模板

终结 N-Sum 的算法思想与模板:以 3-Sum 和 4-Sum 为例 在算法面试和 LeetCode 中,N-Sum 问题是一个经典的考察点。无论是 3-Sum,还是 4-Sum,这些问题都是基于同一个核心思想:排序 + 双指针收缩。本文将通过 3-Sum…

2026最新贵州装修设计公司top5榜单发布!贵阳等地装修品牌及施工队综合实力测评,工艺与口碑双优助力品质家居生活 - 品牌推荐2026

引言 随着家居消费升级,消费者对装修设计的实用性、耐用性与个性化需求日益提升,但行业存在设计同质化、工艺不透明、售后无保障等问题,导致装修体验大打折扣。据中国建筑装饰协会2025年度报告显示,全国家装行业投…

哪一种辅酶Q10最好?2026辅酶q10十大热门排行榜,为心脏保驾护航 - 博客万

哪一种辅酶Q10最好?2026辅酶q10十大热门排行榜,为心脏保驾护航 打开购物软件,辅酶Q10的热门推荐刷不完,每款都标注“护心优选”“热门爆款”,评论区更是清一色好评。可真正买回家尝试,要么没感受到任何正向反馈,…

2026最新贵州大平层装修公司top5榜单发布!贵阳等地装修品牌及施工队综合实力测评 - 品牌推荐2026

引言 随着改善型住房需求持续增长,大平层装修市场迎来品质升级新浪潮,但行业存在设计同质化、工艺不透明、售后无保障等问题,消费者选择难度显著增加。据中国室内装饰协会2026年第一季度数据显示,全国大平层装修投…

探讨怎样在AI搜索上把企业推广出去,宁波国技互联案例分析 - 工业品牌热点

在AI技术重塑商业生态的今天,如何通过AI搜索为企业做推广、怎样在AI搜索上把企业推广出去,已成为中小企业突破增长瓶颈的关键命题。宁波国技互联作为深耕数字经济领域的先行者,凭借独创的GEO-AI搜索体系,为企业提供…

2026年剖析AI搜索优化广告,宁波国技互联独特优势大揭秘 - 工业品牌热点

在AI技术深度融入商业生态的今天,一套高效的AI搜索优化方案是企业打通智能营销链路、实现精准获客的核心抓手。面对市场上良莠不齐的AI搜索服务提供商,如何找到既懂技术又懂行业的合作伙伴?以下结合不同服务类型,为…

完整教程:从 C 链表到 Android Looper:MessageQueue 的底层原理一条线讲透

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

hdu1059 多重背包

import java.util.Scanner;public class hdu1059 {//01背包public static boolean bag(int[] weight,int[] value,int V){int[] res = new int[V+1];for (int i = 0; i < weight.length; i++) {for (int j = V; j &…

国产时序数据库 2026 图鉴:金仓的融合创新与赛道演进方向

前言 进入2026年&#xff0c;在“数字中国”与工业物联网浪潮的强劲推动下&#xff0c;国产时序数据库市场持续繁荣&#xff0c;竞争格局日趋清晰。本文将对当前主流的国产时序数据库进行梳理盘点&#xff0c;并特别聚焦于金仓数据库&#xff08;Kingbase&#xff09;&#xff…

hdu1059 多重背包

import java.util.Scanner;public class hdu1059 {//01背包public static boolean bag(int[] weight,int[] value,int V){int[] res = new int[V+1];for (int i = 0; i < weight.length; i++) {for (int j = V; j &…

RPM打包进阶:mock与rpmbuild的宏定义传递及spec文件自定义宏实践

在Linux软件包管理领域&#xff0c;RPM&#xff08;Red Hat Package Manager&#xff09;凭借其强大的构建和分发能力成为主流解决方案。本文将深入解析mock和rpmbuild工具中宏定义的传递机制&#xff0c;结合spec文件自定义宏的实践方法&#xff0c;为开发者提供系统化的RPM打…

2026食品级流量计优选:实力厂家质量保障指南,过热蒸汽流量计/插入式双文丘里/压力变送器,食品级流量计公司怎么选购 - 品牌推荐师

在食品饮料、生物制药、乳制品等关乎民生健康的行业中,流量计作为过程控制与物料计量的关键仪表,其重要性不言而喻。食品级流量计不仅需要满足基础的流量测量精度与稳定性,更需符合严格的卫生标准,如易于清洁、防止…

基于Python+django+vue3的高校大学生网上选课网站的设计与实现

目录摘要开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;摘要 随着信息技术的发展&#xff0c;高校教务管理逐步向数字化、智能化转型。传统的线下选课方式存在效率低、资源分配不均等问题&…

2026年宁波地区AI搜索推广公司排名,这些靠谱企业值得关注 - 工业品牌热点

2026年,浙江AI+产业融合发展进入攻坚阶段,AI搜索推广与智能引流系统已成为中小企业破解获客难、转型慢痛点的关键抓手。无论是生成式引擎优化(GEO)驱动的精准获客,还是AI智能体全场景赋能,优质AI搜索推广公司的专…

2025年市面上评价高的汽车微动开关实力厂家哪里有,电动推杆微动开关/小型微动开关/防水微动开关直销厂家哪里有 - 品牌推荐师

新能源赛道下的微动开关技术竞争与市场格局 随着新能源汽车渗透率突破40%,汽车电子系统对高可靠性微动开关的需求呈现爆发式增长。作为汽车座椅调节、车窗控制、电池管理系统等核心模块的关键组件,微动开关的性能直接…

2026最新贵州实景还原家装公司top5榜单发布!贵阳等地装修品牌及施工队综合实力测评,实景还原工艺助力品质家居生活 - 品牌推荐2026

引言 随着居住需求升级,家装行业已从单纯装修转向"所见即所得"的实景还原时代,但设计与落地脱节、工艺标准缺失等问题仍普遍存在。据中国建筑装饰协会2025年度报告显示,全国家装实景还原达标率仅58%,超6…

收集自己的每日早餐类型(包子,豆浆,面包),统计各类型的食材占比,输出营养早餐搭配建议

1. 实际应用场景描述场景某上班族希望改善早餐习惯&#xff0c;记录每日早餐类型&#xff08;如包子、豆浆、面包等&#xff09;&#xff0c;并统计各类型的食材占比&#xff0c;从而分析营养结构&#xff0c;获得科学的早餐搭配建议。痛点- 手动记录早餐种类繁琐- 难以量化不同…

学习unigui【45】UnimDatePicker等按钮汉化崩溃

学习unigui【45】UnimDatePicker等按钮汉化崩溃UnimDatePicker等按钮汉化会导致程序崩溃。1 function afterCreate(sender)2 {3 try{4 var pkr = sender.getPicker && sender.getPicker();5 if(!pkr) retu…

压箱底的华润万家购物卡别浪费!3 个靠谱渠道盘活沉睡资产 - 可可收

你家是不是也有一张被遗忘的华润万家购物卡?明明是实打实的消费额度,却被搁置成了 “沉睡资产”。超 68% 的消费者手中至少躺着 1 张闲置购物卡,人均年均闲置金额高达 800 元。其实不用愁,选对回收渠道,这些卡就能…

宏智树 AI:ChatGPT 学术版驱动的全流程学术创作智能引擎

在人工智能深度赋能学术研究的新时代&#xff0c;如何高效攻克论文写作从选题构思到答辩定稿的全链路难题&#xff0c;成为科研人、高校师生的核心诉求。宏智树 AI&#xff08;官网www.hzsxueshu.com&#xff0c;微信公众号搜一搜 “宏智树 AI”&#xff09;应势而生&#xff0…