专栏名称: Datawhale
一个专注于AI领域的开源组织,汇聚了众多顶尖院校和知名企业的优秀学习者,聚集了一群有开源精神和探索精神的团队成员。愿景-for the learner,和学习者一起成长。
目录
相关文章推荐
51好读  ›  专栏  ›  Datawhale

用极小模型复现R1思维链失败后的感悟

Datawhale  · 公众号  ·  · 2025-03-10 21:36

正文

Datawhale分享
作者:林正,来源:知乎
知乎:https://zhuanlan.zhihu.com/p/27699656438 

前言

投完 ICML 之后火急火燎的入门 RL,花了一些时间把 RLHF 学了。后来在知乎上看到了很多优秀的开源 R1 复现项目,于是手痒痒啃了下比较火的两个开源项目准备自己实践一下,一个是 Huggingface 的 Open-R1,一个是 Logic-RL。由于 Logic-RL 基于 Verl,模型推理和训练过程都是shard到不同显卡上的,Huggingface 的GRPOTrainer是单独用一张显卡做vllm推理,所以我在浅尝 Open-R1 做数学题的训练之后转移到了 Logic-RL 上面。

因为是民科,手上只有四张降了功率的 3090,我就拿 0.5B 的千问做的实验,中间遇到了不少问题。

探索 0.5B 模型在 KK 数据集上的强化学习训练

我使用了 qwen-0.5B 的 instruct 模型实验,我看 logic-rl 论文中 instruct 模型也可以复现出思维链增长。但这里选用 instruct 模型主要还是因为base模型很难训练。

1. 多余的 reward 会让模型变懒

我首先是使用了 Logic-RL 中原来配置的 reward 规则,在原版规则中,模型学会格式后会得到一定奖励,但很快模型的输出就变得很短

The reasoning process here involves understanding the characteristics of knights and knaves, analyzing the statements made by each person, and determining who is a knight and who is a knave.  
Ethan is a knight, David is a knave, Samuel is a knight.

然后模型几乎不 care 回答是否正确,输出长度急剧下降到只有几十个的长度。于是我尝试更改规则, 仅当模型格式正确且回答正确的时候才有 reward,其余情况都是最低分。

但令人没想到的模型依然只是水一下思考内容,然后在 answer tag 里输出答案,似乎只要遵循 的格式就会让模型放弃思考过程。我后来将格式 reward 中有关 的要求去掉了,在训练过程中就能顺利保留下来模型的思考过程。

2. 模型很难直接学习 3ppl 以上的问题

0.5B 模型可能是太小了,直接混合 3ppl-7ppl 的数据集训练会导致 reward 一直在最低分附近震荡,然后一会就开始输出胡言乱语。训练开始没多久我就看到输出长度爆炸增长,我以为是长思维链的出现,但其实是模型错误预测 token 导致输出大段胡言乱语。

于是,我转换了 2ppl 的数据集,让模型在2ppl数据集上先进行 10 个 step 的学习,然后在 3ppl 数据集上进行 20 个 step 的学习,再换到 4ppl 上进行 10 个 step,5ppl 上训练 10step,最后换到 6ppl 上进行长的 RL 训练。这类似于课程学习,但在训练结束后我是保存了模型之后在新的训练中加载保存的模型,所以相当于 reference model 被更新了。

这个过程中确实观察到了一些有意思的现象,例如

错误检查

2. ****Avery's statement****: If Jacob is a knight, then Avery must be a knave, regrettably (vice versa). 
Since Jacob is not a knight, there'
s a contradiction here, indicating a **mistake** in our reasoning. 
Alternatively, if Jacob is a knight, Avery must be a knave, meaning Jacob cannot be the perfect knight according to her statements.

Recheck

So, the contradiction here comes from Scarlett being a knight. 
This means the first term is misleading. Let's **recheck the clues**.

虽然感觉推理过程好像不是很对。。。

还有一些输出我没有保存,例如语言混杂,使用数学来解逻辑问题,以及使用什么蕴含树?来解决问题的过程也是有的。

3. 模型总是会收敛到一个极短的推理过程

这也是为什么说复现是失败的,虽然通过前面的修改模型能顺利学到 6ppl 的问题上,但是模型的推理过程总是会变得极为简单,我分别多次尝试了在预热训练(前面提到的课程学习)后在 5ppl 和 6ppl 的数据集,或者混合的数据集上训练,都会出现思维链随着准确度越来越高下降的过程







请到「今天看啥」查看全文