从零实现 REINFORCE/GRPO —— 大模型推理强化微调实践

一文吃透:不依赖成熟 RL 库,如何实现 REINFORCE、REINFORCE-baseline 与 GRPO;数理推理模型的强化学习微调实践;训练/参考/采样模型的多卡调度。

引言

你是否也遇到过:模型“会思考”,但少数题正确,格式还常常不合规?我在 Qwen/Qwen2.5-Math-1.5B 上亲历这一痛点——zero-shot 在 GSM8K 只有约 1%。本文分享我从零实现的llm-from-scratch 仓库中的 alignment 模块,从零实现 REINFORCE、带基线的 REINFORCE 与 GRPO,把准确率稳定拉升到 63.4%,并把训练策略模型、参考模型与采样模型拆到不同 GPU 上高效协同。

读完你将掌握:奖励设计与计算、方差降低的工程化做法、GRPO 的分组偏好更新与裁剪、以及一套可复现的多卡调度与评估 pipeline。

阅读本文前,强烈建议先阅读我的前一篇介绍 SFT 的文章:从 1.56% 到 62.9%:SFT 推理微调优化实战

如果你对强化学习的知识还不熟悉的话,可以参考我之前的文章:强化学习从入门到放弃 —— 跟着 OpenAI 学强化学习

我的其他系列文章:

问题与目标

  • 问题:zero-shot 推理准确率极低(~1%),且格式不稳定,难以可靠评估与训练。
  • 目标:设计严格且高召回的奖励函数,配合从零实现的策略梯度与 GRPO,逐步把 Qwen2.5-Math-1.5B 在 GSM8K 的 zero-shot 准确率提升到 63.4%。

我只在必要处简述 SFT,上文已分析过;本文将把重点落在强化学习微调(RLFT)的训练循环与实现细节。


奖励与格式:答案正确 + 格式遵循的双指标

本仓库采用 R1 风格的格式约束与数学习题的严格判定。核心在 alignment/drgrpo_grader.pyr1_zero_reward_fn

  • 格式要求:必须出现 </think> <answer></answer>。不合格式直接奖励为 0。
  • 答案正确:借助多种规范化与符号等价检查(含 LaTeX 解析、Sympy 简化、数值近似),保障较高召回率。
  • 组合奖励:format_rewardanswer_reward 都满足则总奖励 reward=1,否则为 0。评估脚本会统计三者的平均值。

代码摘录(路径与作用标注):

  • 文件:llm-from-scratch/alignment/drgrpo_grader.py
  • 作用:计算 GSM8K 的格式与正确性奖励
  • 完整代码参考:llm-from-scratch
def r1_zero_reward_fn(response, ground_truth, fast=True):
    # We are strict about format to evaluate our models.
    if "</think> <answer>" in response and "</answer>" in response:
        model_answer = response.split("<answer>")[-1].replace("</answer>", "")
        if "\\boxed" in model_answer:
            model_answer = extract_answer(model_answer)
            if model_answer is None:
                return {
   
   "format_reward": 1.0, "answer_reward": 0.0, "reward": 0.0}
        # 严格的数学等价判断(字符串规范化、Sympy、可选 math_verify)
        is_correct = grade(model_answer, str(ground_truth), fast)
        if is_correct:
            return {
   
   "format_reward": 1.0, "answer_reward": 1.0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值