告别人工标注!GRPO算法调教小模型全纪实


用强化学习调教小模型学会"动脑筋"——手把手带你用PyTorch训练GRPO推理模型
作者:Avishek Biswas

最近,大模型们(DeepSeek-R1、Gemini-2.5、OpenAI-o1、Claude、Qwen3……)都流行“先想后答”:先噼里啪啦写一段内心独白,再给答案。  

我就琢磨:能不能给只有 1.35 亿参数的“小不点”模型也教会这招?  
结果:想得太美!小模型脑容量太小,常识不够,纯靠算力硬灌行不通,得耍点“杂技”。

本文就是一篇“杂技说明书”,外加 50 分钟配套视频(文章末尾有链接)。  

———  
目录(5 大关卡)  
1. 新招式 RLVR:用“可验证答案”当奖励(大白话:答对给糖,答错打手心)  
2. 招式核心 GRPO:把 PPO 剪剪贴贴,省掉大模型才有的“价值网络”  
3. 代码走读:PyTorch 现场撸一个训练循环  
4. 热身赛:先让模型做“有答案的例题”(监督微调 SFT)  
5. 成绩单:小模型从 46% → 60% → 81% 的逆袭  

———  
关卡 1:RLVR——“答案能打分”的强化学习  
• 传统 RLHF:让人类老师打分,主观题如“哪部 iPhone 好?”  
• 新玩法 RLVR:让“标准答案”打分,客观题如“strawberry 里有几个 r?”  

示例:  
 
让我数一下 s-t-r-a-w-b-e-r-r-y …… 一共 3 个 r!  
 
3  

奖励函数简单粗暴:  

python
def 数字母(单词, 字母):
    return 单词.count(字母)

reward = +1  if 模型答案 == 数字母("strawberry", "r") else -1

 

只要最终答案对,中间推理过程不用人工管,模型自己会学着“脑内打草稿”。

———  
关卡 2:GRPO 算法——“组队比高低”  
把 PPO(Proximal Policy Optimization)剪成“迷你版”:  
1. 经验收集  
   • 环境发题(数学题、逻辑题)  
   • 小模型一次写 G 份答案(比如同一题写 6 种解法)  
   • 环境给每份答案打分  
   • 计算“相对优势”:在一组 6 份答案里,谁高谁低,内部 PK,不跟别组比  
   • 把题目、答案、分数塞进“记忆仓库”  

2. 训练阶段  
   • 从仓库里随机抓一把记忆  
   • 用 PPO 公式更新模型:把高分答案里每个 token 的出现概率抬高,低分答案压低  
   • 重复 N 次  

省掉大模型才用的“价值网络”,内存立省一半。

———  
关卡 3:代码现场秀(极简伪代码)  
1. 召唤小模型  

python
from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained("HuggingfaceTB/SmolLM-135M-Instruct")
tokenizer = AutoTokenizer.from_pretrained("HuggingfaceTB/SmolLM-135M-Instruct")

2. 召唤题库  

python
from reasoning_gym import create_dataset
dataset = create_dataset("propositional_logic", size=1000)

3. 生成 6 份答案  

python
inputs = tokenizer([题目], return_tensors="pt")
outs = model.generate(**inputs, num_return_sequences=6, temperature=0.7, max_new_tokens=300)

4. 打分两连击  
• 格式分:有没有乖乖写  
• 正确分:答案对不对  

5. 算优势、存记忆、刷 loss  
(详见 GitHub,文章末尾有链接)

———  
关卡 4:先热身——监督微调 SFT  
直接上 RL?小模型连格式都不会,奖励全是 0,训练信号 = 0。  
步骤:  
1. 用 GPT-4o-mini 生成 200 道带思考过程的“示范作业”  
2. 给小模型做“抄作业”训练(LoRA 低秩适配,显存友好)  
3. 结果:原本乱写,46% 能蒙对;抄完作业,60% 能答对,且格式稳了。

———  
关卡 5:成绩单 & 实战技巧  
• 135M 模型:46% → 60%(SFT)→ 再加 RL 小刷一波  
• 360M 模型:同上流程,再涨一点  
• 0.6B 模型:飙到 81%!  

调参小贴士(背下来考试加分):  
• 温度 0.7、top_p 0.95,保证答案多样性  
• 每题 6 份答案,太少没对比,太多算力爆炸  
• 学习率 1e-6~1e-7,步子小点不掉坑  
• 缓存 500 条经验再训练,稳!  
• 别忘了删 pad token,省显存  

———  
彩蛋:50 分钟手把手视频  
B 站/YouTube 搜 “Train Tiny Reasoning Models from Scratch” 或戳文末链接。  

———  
结语  
只要套路对,1 亿参数的小模型也能变身“推理小怪兽”。  
下次老师问你“AI 为什么能做题”,你就说:“先给它一堆能判分的题,让它自己刷经验升级,打完怪就学会啦!”

References
Author’s YouTube channel: https://www.youtube.com/@avb_fj
Author’s Patreon: www.patreon.com/NeuralBreakdownwithAVB
Author’s Twitter (X) account: https://x.com/neural_avb
Deepseek Math: https://arxiv.org/pdf/2402.03300DeepSeek R1: https://arxiv.org/abs/2501.12948DAPO: https://arxiv.org/abs/2503.14476Critical Perspectives on R1: https://arxiv.org/abs/2503.20783Reasoning Gym Library: github.com/open-thought/reasoning-gym
A good place to read about Reasoning: https://github.com/willccbb/verifiersA great place to study code: https://github.com/huggingface/trl/blob/main/trl/trainer/grpo_trainer.py