DeepMath: 基于 smolagents 的轻量级数学推理 Agent

DeepMath 是一个基于 Qwen3-4B Thinking 构建的数学推理代理,并通过 Group Relative Policy Optimization (GRPO) 微调。它通过在安全沙箱中执行简洁的 Python 代码片段来替换冗长的思维链迹象,从而改进数学问题求解,将输出长度降低多达 66%,同时经常提高准确率。

技术架构与工作流程

DeepMath 将小型语言模型与 Python 执行器相结合,以卸载确定性计算并减少迹象冗余。该系统使用 smolagents 库实现,并使用 vLLM 作为推理引擎。

核心组件

  • 基础模型:Qwen3-4B Thinking.
  • 代理框架:使用 smolagents 构建,以允许模型输出普通标记或包含 Python 代码片段的特殊代理调用。
  • 执行环境:一个沙盒环境,包含导入模块的允许列表和每个代码片段的超时,以确保安全并防止任意代码执行(例如,无文件 I/O 或网络访问)。

推理过程

在推理过程中,模型为中间计算步骤生成简短的 Python 代码片段。这些代码片段在沙箱中执行,结果被折叠回推理迹象,为后续步骤提供确定性结果。

使用 GRPO 的训练方法

DeepMath 通过 TRL 库使用 Group Relative Policy Optimization (GRPO) 进行微调。训练过程侧重于奖励准确性和简洁性,而非冗长。

奖励结构

  • 准确性奖励:正确最终答案得 +1。
  • 代码片段奖励:生成代码片段得 +1,相对于准确性奖励权重为 10:1。
  • 长度惩罚:通过将 GRPO 完成候选限制为 5,000 个标记来鼓励更短的输出。

训练优化

  • 温度调度:使用线性调度(T=1.2 到 T=0.7)以平衡初始探索与后期稳定性。
  • 上下文学习:模型提供四个包含代理调用和执行器输出的已解示例,以学习所需的语法和响应模式。
  • 数据集:使用 OpenMathReasoning 数据集的 Tool-Integrated Reasoning (TIR) 子集,专注于那些特别受益于外部工具使用的问题。

评估与性能

DeepMath 在四个数据集上进行了基准测试:MATH500、AIME、HMMT 和 HLE。评估使用 majority@16 来确保鲁棒性,并测量平均输出长度以评估简洁性。

关键发现

  • 效率:代理方法显著降低输出长度,相比基线最多可降低 66%。
  • 协同效应:消融研究表明,尽管单独的代理推理可以降低长度,但当 GRPO 训练和代理推理结合使用时,可获得最佳效果。
  • 准确性:与基线 Qwen3-4B-Thinking-2507 模型相比,DeepMath 在具有挑战性的数据集上展示了更高的准确性,同时保持更短的迹象。

含义与局限性

将计算卸载到沙箱可以减少算术错误,并由于输出更短而提高推理速度。然而,研究者指出以下几个限制:

  • 范围:当前重点仅限于小型模型和数学推理。
  • 泛化能力:该模型在竞赛风格的数学上进行了评估,可能无法迁移到形式证明或开放式的数学创造。
  • 安全性:尽管有严格的沙箱和资源限制,但执行生成的代码仍然存在固有风险,需要谨慎的部署管理。

Sources