在这些基准测试中,我们发现Claude Sonnet 3.7在设定6.4万个token的情况下表现最佳,DeepSeek R1的表现几乎与OpenAI的o1和o3 - mini不相上下。然而,未经调优的Qwen 2.5 Instruct模型在相比之下就稍显逊色了。
一个关键问题是:我们能否将这些较小型的开放权重模型训练到前沿水平的表现?答案是肯定的,只要用对方法。
三、训练
为了训练出一个具有前沿水平的推理模型,我们采用了强化学习方法。我们首先让大语言模型针对每个谜题生成多个回复,以此探索问题的各种可能性,从而引导它们学习。对得出正确答案的推理过程给予正向强化,而对误导模型的推理过程则进行惩罚。
在众多强化学习的方法中,我们选用了DeepSeek模型的GRPO运算规则。与PPO等传统方法相比,GRPO不仅表现出色,还简化了训练过程。
从宏观层面来看,我们的训练遵循以下几个基本步骤:
针对谜题任务生成模型回复
对回复进行评分,并为每组聊天回复估算优势值
利用这些优势值估算结果引导的裁剪策略梯度对模型进行微调
用新的谜题和模型的最新版本重复上述步骤,直至达到最佳性能
在生成回复环节,我们使用了热门的vLLM推理引擎,并对参数选择进行了调优。我们发现,向vLLM发送过多请求会导致正在处理的请求被抢占。为解决这一问题,我们使用了一个信号量来限制请求数量,该信号量经过调优,能够在尽量减少换出的同时保持较高的键值缓存利用率。
采样完成后,我们使用 HuggingFace Transformers AutoTokenizer 对回复进行处理。它的聊天模板功能可将消息对象渲染为提示字符串,其中包含一个助手掩码,用于确定哪些标记是由大语言模型生成的。我们发现这些模型在其默认模板中缺少必要的 “生成” 标签,于是在token步骤中对模板进行了修改。最终得到的助手掩码被纳入用于调优的张量字典中,用以标识哪些位置需要进行损失计算。
在获得助手掩码后,我们对信息进行打包以便调优。除了在每个打包序列中包含多个提示和回复之外,我们还识别出共享的提示标记,并为每个标记分配一个父ID,同时附上标准的组ID。对于像 “时空谜题” 这类平均每个谜题超过1000个标记的任务,我们针对每个任务生成多个回复并高效打包张量,显著减少了冗余。一旦将所有必要信息打包完毕,我们就能以二维形式直观呈现训练信息集,每一行都是一个可能包含多个提示和回复的标记序列 。
有了信息后,我们开始调优。模型已经完成了预训练和指令微调,具备一定的智能水平。虽然它们还无法稳定地解决谜题,但是偶尔也能成功。通过提高正确推理的概率,我们逐步引导模型朝着 “神探” 的水平迈进。对于计算损失和调整权重,我们采用了策略梯度的方法。
在训练过程中,我们使用了由 PyTorch 团队提供的Torchtune库,其中包括Llama、Gemma、Phi等热门模型。我们在这个项目中除了使用Qwen模型,也用80亿参数和700亿参数的Llama模型进行了实验。Torchtune还提供了一些节省内存和提升性能的工具,包括:
激活检查点(Activation Checkpointing)
激活卸载(Activation Offloading)
量化(Quantization)
参数高效微调(PEFT),例如LoRA
此外,Torchtune支持多设备和多节点训练,还可以结合全分片信息并行(FSDP)和张量并行(TP)训练。他们提供了十多个训练配方,鼓励客户复制并根据自己的用例进行定制。他们完整微调配方的修改版支持以下功能:
多设备和单设备训练
参考模型加载和权重交换以计算KL散度
使用组和父ID进行高级因果掩码计算
GRPO损失集成和组件日志记录
强化学习训练过程涉及超参数的选择。在训练模型期间,我们对各种配置进行了测试,最终确定了以下参数:
模型:Qwen 2.5 Instruct 140亿参数版和320亿参数版
每次迭代的任务数:32
每个任务每次迭代的样本数:50
每次迭代的总样本数:32×50 = 1600
学习率:6×10⁻⁶
微批次大小:对于140亿参数模型为4个序列,对于320亿参数模型为8个序列
批次大小:可变,取决于序列数量
批次大小之所以可变,是因为训练过程中回复长度不同。每次迭代的序列打包效率会有波动,优势为零的回复会被丢弃。在一次实验中,我们尝试将学习率与批次大小成反比动态调整,但这会导致小批次的学习率过高。经过上限处理后的版本与使用恒定学习率相比没有明显差异,但调整批次大小和学习率仍是未来值得探索的方向。
我们还进行了简短的实验,在每次迭代的任务数和每个任务的样本数之间进行反向调整(即一个增加另一个减少),同时保持每次迭代的总样本数大致相等。在较短的训练周期内,这些变化没有产生明显差异,这表明训练配方对任务数量与单任务样本量之间的不同配比具有强鲁棒性。
四、结果
经过100+次迭代训练,我们的模型成功达到前沿级推理水平。
我们的模型能够在准确率下降之前迅速改进。最佳状态下,140亿参数、1.6万个token的模型已接近于ClaudeSonnet 3.7的性能。320亿参数、6.4万个token的模型更是几乎达到了Sonnet的结果。
在训练期间,性能提升遵循幂律规律,在图表上形成线性关系(在恶化之前)。
下一步,我们将探索多样化回应的方法,逐步构建能力的方法,或者能够激励出彻底探索的方法。
此外,我们注意到在训练期间输出长度呈现出有趣的规律。最初回复变长,随后趋于稳定,在训练接近尾声时出现分化,其中140亿参数模型的回复变得更长,而320亿参数模型的回复长度则缩短(尤其是在达到最佳性能之后)。
为了从定性角度评估逻辑推理能力的提升,我们让最先进的模型Claude Sonnet 3.7对Qwen 32B模型所做出的推论进行识别,并评估其合理性。Sonnet从基础模型中识别出6个推论,除了一个被判定为正确外,其余均被判定为错误。相反,从经过训练的模型中识别出7个推论,除了一个错误之外,其余均被判定为逻辑合理。
最后,在假设按需部署具有足够吞吐量的情况下,我们根据Fireworks AI的无支持器定价层级估算了Qwen模型的成本。我们绘制了一张准确性和推理成本的关系图,并发现在未经调优的模型中存在一条清晰的线性帕累托前沿线,极大地改善了成本与准确性之间的权衡关系。
五、结语
在我们的调查研究中,我们探索了较小型的开源语言模型能否通过强化学习实现前沿水平的演绎推理能力。对时间线索谜题进行训练时,我们使用了超参数和GRPO方法来训练Qwen 14B和32B模型,显著低提升了性能。这些改进使开源模型在推理性能方面达到了最前沿的水平,并大幅度低降低了成本。我们的研究结果凸显了强化学习在高效训练开源模型处理复杂演绎任务方面的巨大潜力。
此外,最后还有一个惊喜。我们发现,仅需16个训练样本就能实现高达10 - 15% 的性能提升,这意味着我们无需大量信息就能进行推理。
原文链接:https://openpipe.ai/blog/using-grpo-to-beat-o1-o3-mini-and-r1-on-temporal-clue
雷峰网(公众号:雷峰网)
雷峰网原创文章,未经授权禁止转载。详情见转载须知。
主题测试文章,只做测试使用。发布者:iwc,转转请注明出处:https://www.sljmk.com/article/56e799936.html