法官协助GRPO调优:海盗、骑士和维京人实验

社区文章 发布于 2025年3月22日

这是一个没人想要的模型!世界上第一个海盗对骑士对维京人模型。

image/webp

请记住

说实话,我没有受过任何正式的培训。我的工作主要凭直觉和发现的模式。是的,我阅读论文以了解要点,但这个项目呢?只是我随意尝试并将概念拼凑在一起。所以请享受这个疯狂的实验吧!

是时候放弃 <think>,拥抱 <competition> 标签了

pkv-r-preview 是一个具有我称之为智能构造的模型。智能构造是一种响应格式,允许大型语言模型(LLM)以不同结构的推理循环表达其答案。此外,构造中内置了一个判断器(Judge),用于验证和选择最佳答案。

这是我的“智能”构造或其他什么

<competition>
<pirate>
    Pirate's reasoning, roleplay and talk as a pirate the entire time battling the knight and viking for the answer. Show as much work as you can, write as much as possible.
</pirate>
<knight>
    Knight's reasoning, roleplay and talk as a knight the entire time battling the pirate and viking for the answer. Show as much work as you can, write as much as possible. You will be penalized if you copy the pirate directly.
</knight>
<viking>
    Viking's reasoning, roleplay and talk as a viking the entire time battling the knight and pirate for the answer. Show as much work as you can, write as much as possible. Do not copy the knight and pirate. You will be penalized if you copy the knight and pirate.
</viking>
<result>
    Roleplay as a sarcastic/funny very dry humor robot. Analyze all answers. Choose the winner of the competition based on the reasoning and answer. Verify the winner's work. You may only pick one winner. 
<winner>
    The winner of the competition, one of just string "pirate", "knight", or "viking"
</winner>
</result>
</competition>
In a professional tone, answer the question for the user using the information provided from the winning character.

你可以在这里与它聊天 https://huggingface.co/vkerkez/pkv-r-14b-preview。我推荐温度设置为0.5左右。使用上面的提示。

示例输出
<competition>
<pirate>
Arrr, me hearties, we be lookin' at a problem here! If 3 beehives be enough for 12 candles, how many hives do we need for 96 candles? Let's see now. If 12 candles be made from 3 hives, then 1 candle be made from 3/12 or 1/4 of a hive. But we want 96 candles, so that's 96 times 1/4 of a hive. That's 96/4, which is... *drum roll*...24 hives! Aye, it be as simple as that!
</pirate>
<knight>
Hark! The noble knight shall solve this puzzle with the grace of a true warrior. If three hives produce twelve candles, then one hive produces four candles. To find out how many hives are needed to produce ninety-six candles, we divide ninety-six by four. That gives us twenty-four hives. Thus, twenty-four hives are needed to produce ninety-six candles.
</knight>
<viking>
Viking Thorson here! If three beehives can make twelve candles, then to make ninety-six candles, we need to multiply the number of candles by eight (since ninety-six divided by twelve is eight). So we multiply three hives by eight, which gives us twenty-four hives. That's how many we need!
</viking>
<result>
Ahoy there, ye landlubbers and knights and vikings! Ye all did well in this competition. Ye all got the right answer of twenty-four hives. But let's see the work:
- Pirate: Correctly reasoned that one candle needs a quarter of a hive and multiplied by ninety-six.
- Knight: Divided ninety-six by four correctly.
- Viking: Multiplied three hives by eight correctly.
All ye did the work correctly but the pirate did it in a more detailed manner. So, the winner is...the pirate!
<winner>
pirate
</winner>
</result>
</competition>

The pirate provided a detailed explanation and reasoning process that was thorough and easy to follow, making it clear and understandable. Therefore, the pirate wins this competition with their answer of 24 hives needed to make 96 candles.  

这到底是什么鬼东西?

当被问到答案时,在这个模型中,海盗、维京人和骑士之间会开始一场竞争。最佳解决方案的赢家会在一个漫长的推理链中被判断和选择。用户只会看到一个专业的总结(或者应该如此)。

这是幕后的过程

image/gif

那更复杂的呢,比如一道大学数学题?是的。在训练期间,pkv-r-preview模型为了得到正确答案,所达到的最大标记链大约是 *11,000个标记*。

为什么?因为它是个绝妙的陷阱!

让我解释一下,归根结底,这是一个智能推理构造。在模型训练时,我可以按照自己喜欢的方式对整个构造进行评分。这包括提取骑士和海盗的推理轨迹来给它们评分。这让我能够某种程度上训练构造内部的行为,使其按照我希望的方式呈现答案。

格式奖励

点击展开评分详情
  • XML标签结构 (0-1.0):奖励正确使用竞赛格式标签的行为。

    • 每个正确放置的标签(competition、pirate、knight、viking、result、winner)+0.1分
    • 重复标签 -0.1分
    • 每个缺失的必需标签 -0.2分
  • 竞赛格式 (0-1.0):

    • 严格遵循确切的XML结构获得满分(1.0)
    • 所有标签顺序正确但格式有变动获得部分奖励(0.5)

角色奖励

  • 字符长度(0-1.0):每个字符部分因其彻底的推理而获得奖励

    • 线性扩展至最佳长度
    • 过长部分将被扣分
  • 自我反思(0-1.0):角色因展示其思维过程而获得奖励

    • 海盗根据其海盗特有的推理进行评分
    • 骑士必须展示高尚的问题解决方法
    • 维京人根据其独特的解决问题风格进行评估
  • 原创性(0-1.0):

    • 骑士因复制海盗的推理而被扣分(-0.5)
    • 维京人因复制海盗或骑士的推理而被扣分(-0.5)
    • 原创方法获得+0.5奖励

结果奖励

  • 赢家选择(0-1.0):

    • 如果赢家标签准确包含“pirate”、“knight”或“viking”,则+1.0分
    • 如果包含角色名称但有额外文本,则+0.5分
    • 如果未识别出有效角色,则0.0分
  • 答案正确性(0-1.0):

    • 最终答案正确获得+1.0分
    • 答案不正确获得0.0分
    • 如果XML标签出现在最终答案中(泄露竞赛格式),则-1.0分

这个评分系统确保模型学习保持竞赛格式,同时鼓励每个角色发展独特的个性和推理风格,最终产生更好的整体响应。

第一轮 GRPO 调优

选择你最喜欢的开放数学集,让我们开始吧。在训练的第一轮中,你将要求模型以你的格式回答数学问题。对于我的 14B 模型,它有 90% 的时间能正确返回软格式。GRPO 的工作原理是,它从模型中抽取一个样本大小并计算奖励。它利用奖励的差异进行学习。然后还有一堆复杂的数学,但在训练过程中模型最终会理解需要什么……稍后会详细介绍。

去看看大海,或者任何水体,或者一片森林吧

是时候出去走走了。这个过程花了我大约6-8个小时才真正掌握。给它一天左右的时间,它会变得非常出色。

从小思考到大思考

模型通常被训练成以我们能处理的适当大小的块来响应。我们如何鼓励模型生成更多标记来进行思考呢?当然是给它一个生成更多标记的奖励!对于每个结果,我们可以计算所有部分的标记数量并确定一个分数。它写得越多,模型就“吃”得越多。

数学是推理之王

我之所以使用数学数据集,是因为每个人都在使用数学数据集。为什么?当模型回答像32/4+5这样的问题时,它可能只是随机说一个数字,比如10。但是!由于我们奖励它写更长的思考过程,它开始分解问题。所以答案可能是“32除以4是8,加上5是13”而不是“10”。随着模型训练时间越长,写出的分解解决方案越长,它实际上学习了这种可以应用于其他领域的模式。所以你可能会问,“人类在未来10年内登陆火星会有什么影响?”它会以一种模式化的数学解决方案来分解这个问题……有点复杂。

捕捉著名的“Aha!”时刻!请记住,那是个陷阱。

我只想说,这是真的。随着模型不断生成内容,它开始自我纠正!它会说“不,那是个错误,让我更新一下”。这种行为非常重要,需要保留。当我把PKV当作一个玩笑来制作时,在训练过程中我意识到模型正在自我纠正。我想确保能够鼓励这种行为,很明显,<pirate> <knight> <viking>就是我的“Aha!”时刻。那个陷阱!

对于每个样本,我都可以单独评估其自我反思和纠正能力。这使我能够自信地进行修正和更正。我花了很多时间才把它弄对,而且可以说检测它需要大量的计算。如果答案被法官选中,那将是最好的奖励!这最终导致法官开始批评抄袭,并偏爱能够自我纠正的诚实答案。所以这个陷阱让我在一次尝试中以三种不同的方式尝试并评估自我反思。image/png

第二轮 GRPO:Aha 评分/复制标签评分

第二轮调优,我们将开始引入Aha时刻的评分。*对该模型而言,生成一个问题的三种不同解决方案非常重要*,我用全大写字母来强调这一点。我们将检查骑士是否抄袭了海盗,以及维京人是否抄袭了两者。维京人是最好的抄袭者,但通常会提供最优化的答案……稍后会详细介绍。否则,它们会互相重复,导致完全的标记浪费。

第三轮 GRPO:让内容更长

在这一轮中,模型所做的就是继续根据长度奖励进行评分。这就是一个数学问题达到11k标记并最终得到正确答案的原因。

法官协助 GRPO 部分是什么?

我做这个实验最大的遗憾就是没有让它更正常一点。在训练过程中,我注意到裁判做了很多有趣的事情,我很想指出:

  • 法官自动开始选择最佳和最优化的答案。这种行为是自然而然产生的,如果不对自我反思进行奖励,海盗、维京人和骑士将只给出优化后的答案。自我反思的数量随着时间的推移开始减少。
  • 法官会听从提示的指示,并最终按照你想要的方式行事。有一天晚上我检查日志,发现法官对骑士和维京人的回答非常不屑,导致海盗获胜。
  • 法官开始自行做出组合决策。在一个案例中,骑士利用了海盗犯的一个错误。尽管法官承认骑士复制了海盗的部分工作,但它仍然奖励骑士对解决方案的改进。

扩展到超长推理轨迹

通过128k的上下文窗口,您可以在单次前向传递中生成多个全面的推理轨迹

  1. 并行推理探索:同时生成2-3个完整的推理轨迹(每个轨迹最长可达32k标记),探索不同的解决方案路径。这使得模型能够以完整的深度追求多条思维线,而不是局限于单一的潜在缺陷方法。

  2. 法官优化训练:法官组件评估每个轨迹的正确性、彻底性和原创性——然后选择最佳轨迹。在GRPO训练期间,模型学习优化判决的最佳推理模式,从而提高问题解决能力。

  3. 大规模自我批评:当轨迹长达32k标记时,每个角色都有足够的空间进行复杂的多步推理,识别错误,回溯并探索替代方法——这些能力在较短上下文中受到限制。

双向训练方法

此框架提供了两种强大的训练配置:

  1. 生成轨迹判断:模型在内部生成多个推理轨迹 → 判决器选择最佳轨迹 → 仅对获胜轨迹进行微调。这会教导模型哪些推理模式最有效。

  2. 外部轨迹整合:独立地从不同模型/技术中获取高质量轨迹 → 让判决器选择最佳轨迹 → 对判决过程进行微调。这会创建一个专门用于推理元评估的模型。

第二种方法提供了卓越的灵活性——您可以从不同的基础模型、思维链方法甚至人类专家那里填充轨迹,然后训练一个能够识别各种来源中卓越推理模式的系统。

通过在这些方法之间循环,您创建了一个持续改进的循环,其中生成改进判断,判断改进生成,同时保持推理过程的完全透明。

社区

注册登录 发表评论