【LLM】Openai-o1及o1类复现方法
note
- 可以从更为本质的方案出发,通过分析强化学习的方法,看看如何实现o1,但其中的核心就是在于,如何有效地初始化策略、设计奖励函数、实现高效的搜索算法以及利用强化学习进行学习和优化。
文章目录
- note
- 一、Imitate, Explore, and Self-Improve: A Reproduction Report on Slow-thinking Reasoning Systems
- 二、QwQ-32B-Preview模型
- 三、综述:Scaling of Search and Learning: A Roadmap to Reproduce o1 from Reinforcement Learning Perspective
- 1. 策略初始化
- 2. 奖励设计
- 3. 搜索
- 4. 学习
- 四、o1类相关项目
- 相关数据和模型资源
- Reference
一、Imitate, Explore, and Self-Improve: A Reproduction Report on Slow-thinking Reasoning Systems
开源了在技术报告Imitate, Explore, and Self-Improve: A Reproduction Report on Slow-thinking Reasoning Systems中使用的训练数据和模型。
- 训练数据包括3.9K数学领域和1K混合领域(代码、科学和自然语言谜题)的长程思维链。其中3.9K数学领域数据有2.3K来自DeepSeek-R1,1.6K来自于QwQ(经过我们的模型改写成与R1同样的格式,详情参考论文);1K混合领域数据均来自于R1。
- 模型在选取的基准测试集达到了与o1-preview整体接近的效果。
通过使用模仿,探索,再自我改进的方式,我们发现:
- 通过使用少量高质量的示范数据进行训练,可以有效引导长时间思考的能力。一旦建立,这种能力似乎能够自然地跨领域泛化。
- 数学领域的示范数据特别适合提升大语言模型的长时间思考能力,而包含较长思考过程的数据在提升模型解决复杂问题的能力方面显得尤为有效。
- 与大语言模型在快速思考模式下生成的正式回应不同,思考过程通常以灵活、非正式的方式表达,旨在引导模型走向正确的解决路径。
- 通过探索和自我改进,可以有效增强慢思考能力,而离线学习方法的改进似乎主要发生在初始迭代中,尤其是在处理复杂任务时。
MATH-OAI | AIME2024 | GPQA | |
---|---|---|---|
o1-preview | 85.5 | 44.6 | 72.3 |
SKILL-2 (3.9K imitate) | 90.2 | 46.7 | 55.1 |
SKILL-2 (1.1K imitate + 1.8K explore) | 89.8 | 40 | 56.1 |
二、QwQ-32B-Preview模型
试用链接:https://huggingface.co/spaces/Qwen/QwQ-32B-preview
模型链接:https://huggingface.co/Qwen/QwQ-32B-Preview
官方博客:https://qwenlm.github.io/zh/blog/qwq-32b-preview/
GPQA: 测试模型在常识问答和通用知识理解上的能力。
AIME: 检验模型对高难度数学竞赛题目的解题能力。
MATH-500: 测评模型在广泛数学领域中解决复杂问题的表现。
LiveCodeBench: 测试模型生成、调试和实现代码的编程能力。
可以看到,QwQ-32B-preview综合表现优异,并且各项能力比较均衡,没有“偏科”情况。在MATH-500测评中甚至超过了OpenAI的2个o1模型。作为一个推理模型,QwQ-32B-preview的综合表现已全面超越常规模型,如GPT-4o和Claude 3.5 Sonnet。
三、综述:Scaling of Search and Learning: A Roadmap to Reproduce o1 from Reinforcement Learning Perspective
《Scaling of Search and Learning: A Roadmap to Reproduce o1 from Reinforcement Learning Perspective》(https://arxiv.org/abs/2412.14135)
一个是采用强化学习这条路,所包括的四个关键组件,策略初始化、奖励设计、搜索和学习。
1. 策略初始化
一个是策略初始化,策略初始化使模型具备基本推理行为,能够有效探索复杂问题的解空间。预训练和指令微调是策略初始化的两个主要阶段。预训练通过大规模文本语料库学习基本的语言理解和推理能力;指令微调则将预训练的语言模型转化为面向任务的代理。
2. 奖励设计
一个是奖励设计,奖励设计为搜索和学习提供指导信号。过程奖励模型(PRM)比结果奖励模型(ORM)更适合复杂的推理任务,因为它不仅奖励最终结果,还奖励中间步骤。也可以将稀疏的结果奖励转化为密集的过程奖励。
3. 搜索
一个是搜索,搜索在训练和测试阶段都起着重要作用。训练时搜索生成高质量的训练数据,测试时搜索通过迭代改进模型的策略。树搜索算法如蒙特卡罗树搜索(MCTS)和束搜索(Beam Search)在生成高质量解决方案方面表现出色。
4. 学习
一个是学习,学习利用搜索生成的数据进行策略改进。策略梯度方法和行为克隆是两种主要的学习方法。策略梯度方法如近端策略优化(PPO)和直接策略优化(DPO)通过梯度上升更新策略,行为克隆则通过监督学习逼近专家策略。
四、o1类相关项目
如k0-math、skywork-o1、Deepseek-R1、QwQ和InternThinker,但这些模型尚未开源
- g1可能是最早尝试重新实现o1的项目,采用的方法是提示工程。提示大型语言模型自我反思并提出多种解决方案来克隆o1的行为。
- Thinking Claude的工作方式与g1类似,它通过更复杂和细粒度的动作提示大型语言模型,如问题分析和进度跟踪。g1和思考克洛德都能重塑大型语言模型的行为,使其类似于o1,但尚未在推理基准测试中验证的提示。
- Open-o1提供了一个安全函数训练(SFT)数据集,其中每个回应都包含长长的上下文。但目前尚不清楚这些数据来自何处,可能来自人类专家或一个强大的大型语言模型。开放-o1发现,在的数据集上训练 llama-3-8b 和 qwen-7b 不仅能够塑造模型回应的风格以模仿o1,还能提高模型在推理基准测试上的表现。
- o1 Journey在第一部分通过束搜索生成的树状数据被遍历,特定节点由GPT-4进行精炼,然后用于监督式微调。论文中呈现的例子突出了模型的自我反思能力,这来自于GPT-4的精炼。第1部分采用的方法可以描述为专家迭代,其中SFT应用于通过搜索生成的数据。第1部分还将o1-mini注释的PRM与数学牧羊人进行了比较。在一篇2024年的研究中,发现o1-mini的性能优于Math-Shepherd。在第二部分引入了一种截然不同的方法。第一部分侧重于强化学习,而第二部分则尝试蒸馏o1-mini。尽管o1-mini隐藏了思维链(CoT)并且只输出CoT的摘要,第二部分则尝试通过提示o1-mini来增强摘要,从而恢复隐藏的CoT。通过蒸馏,发现在AIME上Qwen-72B的性能优于o1-preview。然而,这并不意味着蒸馏使得学生模型能够超越教师模型,因为o1-mini在AIME上也超越了o1-preview。
- Open-Reasoner的框架类似于AlphaGo,利用强化学习来提升模型性能。在测试阶段,采用蒙特卡洛树搜索(MCTS)来确定最优解。这个搜索算法仅在测试期间应用,而训练数据则是通过当前策略进行采样得到的。此外,采用了与Math-Shepherd类似的方法来训练奖励模型。
- Slow Thinking with LLMs与o1 Journey类似,第一部分与Open-Reasoner类似,结合了强化学习和测试时搜索。但与开放式推理器不同的是,它在训练期间采用了DPO算法而不是PPO算法。在测试阶段,它还采用MCTS算法进行搜索。第2部分从QwQ和Deepseek-R1蒸馏出知识,并尝试了两种强化学习方法:DPO和SFT,使用来自拒绝采样的数据进行训练。发现,通过从QwQ和Deepseek-R1中蒸馏成千上万个例子,可以在具有挑战性的推理任务上显著提高性能,而基于蒸馏的强化学习可以带来进一步的改进。Marco-o1整合了Open-o1的数据和模型自身生成的数据,通过MCTS算法进行SFT训练。
- Marco-o1展示了在每一步MCTS过程后提示模型进行自我反思,增强了搜索的有效性。
- o1-coder尝试在代码生成上重新实现o1。训练一个生成器来生成测试用例以提供结果奖励。有了结果奖励,使用MCTS算法生成代码解决方案,然后用于通过SFT改进策略模型。按照Wang等人(2024c)的方法训练了一个PRM,该方法随着策略的改进而更新。
相关数据和模型资源
STILL-1: https://arxiv.org/abs/2411.11694
STILL-2: https://arxiv.org/abs/2412.09413
Github仓库(内含数据模型等相关资源): https://github.com/RUCAIBox/Slow_Thinking_with_LLMs
Reference
[1] OpenAI o1复现——清华大学提出 ReST-MCTS*
[2] OpenAI o1复现(数据蒸馏)的一点点心得
[3] 类O1复现项目数据和模型开源啦
[4] 两个值得一读的技术总结:OpenAI o1模型复现复现思想及多模态大模型用于数学推理
[5] 《A Survey of Mathematical Reasoning in the Era of Multimodal Large Language Model: Benchmark, Method & Challenges》多模态LLM在数学推理上应用:https://arxiv.org/abs/2412.11936