reasoning-gym
程序化生成无限推理题库,为 LLM 强化学习提供可验证奖励信号
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
程序化生成无限推理题库,为 LLM 强化学习提供可验证奖励信号
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
图1:Reasoning Gym 覆盖的多种推理任务类型(代数、几何、逻辑、游戏等)
训练大语言模型(LLM)的推理能力,核心难题是数据。传统做法是收集固定数据集(如 GSM8K 数学题、MATH 竞赛题),但存在三个根本性问题:
数据泄露风险。当模型在公开题库上训练后,再拿同类题测试,模型可能「背下答案」而非真正学会推理。2024 年的多个研究揭示了 benchmark 数据污染的严重性,这让整个领域陷入信任危机。
规模受限。人工标注高质量推理题成本极高,一个数学奥赛题需要专家花 30 分钟出题 + 验证答案,一个 10 万题的数据集耗资轻易超过百万。而且即使花了钱,数量仍然有限,无法支撑模型「做 1 亿道题」的Scaling需求。
答案难以验证。很多开放性推理任务(比如「写一段Python代码解决此问题」)没有唯一正确答案,靠人工打分既慢又不一致,无法为强化学习提供可靠的奖励信号。
Reasoning Gym 的出现,直接从工程层面解决这三个问题:让数据「程序化生成」,理论上无限供给;让每道题都有可验证的正确性证明,强化学习奖励信号绝对可靠。
Reasoning Gym 由 Open-Thought 社区发起,核心作者包括 Zafir Stojanovski、Oliver Stanley、Joe Sharratt 等研究者,代码库于 2025 年 1 月上线 GitHub。该项目在 2025 年 5 月被 NeurIPS 2025 录用为 Spotlight(Spotlight 级别在 NeurIPS 中约 Top 5%,意味着论文质量和创新性受到国际顶会高度认可)。
论文 arXiv 地址为 2505.24760,引用量在论文上线后快速增长,成为 2025 年 LLM 推理训练领域的重要参考文献之一。项目作者也与 NVIDIA、MILA、Nous Research、FAIR at Meta 等机构的研究者展开合作,产出了一系列基于 Reasoning Gym 的衍生工作。
Reasoning Gym 的设计哲学是「让算法生成题目,让算法验证答案」。
程序化生成(Procedural Generation)。每个数据集本质上是一个 Python 类,继承自 ProceduralDataset 基类。调用 reasoning_gym.create_dataset('leg_counting', size=10, seed=42) 时,底层会基于 seed 确定性生成题目——相同 seed 永远产生相同题目,换一个 seed 就得到完全不同的题目集。这就像一个「参数化题库生成器」,通过调整 max_animals、difficulty 等参数,可以控制题目复杂度。
项目目前提供 100+ 种任务,涵盖以下领域:
可验证奖励(Verifiable Reward)。与开放式生成不同,Reasoning Gym 的每道题都有客观的「正确」答案。以 leg_counting 为例:生成题目时 metadata 会记录 {'total_legs': 42},模型给出答案后,score_answer() 方法对比字符串、数字或符号级别的答案,给出 0~1 的精确分数。
为了处理格式差异(如 LaTeX 包装 ext{42} vs 纯文本 42),项目实现了 Cascade Scorer:先做字符串精确匹配,失败则降级为数值匹配,再失败则用 SymPy 做符号级数学比较,逐级宽松降低误判率。
项目代码结构清晰,522 个文件分布在以下核心目录:
reasoning_gym/
__init__.py # 统一导出:12个子模块 + 工厂函数
factory.py # create_dataset / register_dataset / get_score_answer_fn
dataset.py # ProceduralDataset 基类
composite.py # 复合数据集(多任务加权采样)
scoring.py # cascade_score / string_match / math_match
algebra/ # 代数任务集(多项式、方程、积分)
algorithmic/ # 算法任务集(图着色、旅行商、布尔电路)
arc/ # ARc 几何推理任务
games/ # 游戏任务(魔方、Countdown、2048)
... # 其他领域
tools/
cli/rgc/ # 命令行工具 rgc(Typer + Rich)
server/ # FastAPI 服务端(支持远程 API 调用)
examples/
trl/ # HuggingFace TRL 集成示例
unsloth/ # Unsloth 加速 LoRA + GRPO 训练
veRL/ # veRL 分布式训练框架集成
verifiers/ # Verifiers 库(NVIDIA ProRL 也在用)
training/ # 论文实验配置(curriculum learning、generalization 测试)
工厂注册机制。通过 register_dataset(name, DatasetClass, ConfigClass),新任务只需继承 ProceduralDataset 并调用注册函数,就自动纳入 create_dataset() 的支持范围。这种松耦合设计让社区贡献新任务变得极其简单——无需修改核心代码。
复合数据集(CompositeDataset) 支持多任务加权混合采样。例如想让「几何任务占总数据的 60%,代数占 40%」,只需配置权重参数,系统在 __getitem__ 时根据权重随机选择任务类型,保证训练数据分布可控。这对于训练「全能型推理模型」非常重要。
Reasoning Gym 的数据格式与主流 RL 训练框架高度兼容。项目中 examples/ 目录提供了完整的接入示例:
HuggingFace TRL:GRPO(Group Relative Policy Optimization)训练脚本,支持 DeepSpeed ZeRO-2 分布式训练,配置示例在 examples/trl/config/grpo.yaml。
Unsloth:集成 LoRA + GRPO,通过 examples/unsloth/train_grpo_lora.py 演示如何在消费级 GPU(24GB显存)上微调 7B 参数模型。
veRL:分布式 RL 训练框架,NVIDIA ProRL 论文背后的训练基础设施。
Verifiers 库:专门为 RG 任务设计的 RL 框架,可直接使用 get_score_answer_fn() 获取评分函数,将 RG 评分作为强化学习的奖励信号,这是最简单的上手方式。
训练流程的核心思想是:模型对题目生成响应 → RG 的 score_answer() 给出精确奖励 → 奖励信号驱动策略更新。由于答案可精确验证,训练过程中不存在「奖励黑客」(reward hacking)问题。
Reasoning Gym 自 2025 年 1 月发布以来,已形成相当活跃的生态:
从增长数据看,项目在 NeurIPS Spotlight 之后 star 增速明显加快(2026-06 当前 1444★, forks 120),issue 数量极少(仅 5 个 open),说明核心代码质量稳定。
安装极简:一行 pip install reasoning-gym,Python >= 3.10 即可,无 CUDA 依赖。生成一道题目只需 3 行代码,不要求 GPU。
局限性需要正视:
任务难度上限。虽然 100+ 任务覆盖多个领域,但复杂推理任务(如需要多步证明的数学定理证明)仍有局限,生成有挑战性的高难度题目本身是一个开放问题。
评估泛化性存疑。即使使用程序化生成,模型的「超参数化泛化」能力(同一生成逻辑换参数后的泛化)仍需更多 benchmark 验证。
无 Web UI。纯 Python 库,需要一定的代码能力才能使用,对非技术用户不够友好。
多模态缺失。当前版本仅支持文本任务,不支持图像推理(如 VQA)或音频推理。
Reasoning Gym 的出现代表了 2025 年 LLM 训练的一个重要趋势:从「固定数据集」到「可验证环境」的范式转变。随着 GPT-4、Claude、DeepSeek 等模型在标准 benchmark 上趋近饱和,评估和训练的真正挑战变成了「如何创造模型没见过且无法背住的题目」。程序化生成 + 算法验证是当前最优雅的解法。
从更宏观的视角看,Reasoning Gym 是开源社区在 LLM 推理训练领域的一次重要协作:Open-Thought 社区定义了数据格式标准,各研究机构(NVIDIA、MILA、Meta 等)在此基础上构建训练 pipeline,形成了类似「Linux 生态」的分层协作模式。这种模式让资源有限的团队也能参与到前沿研究中来。