ThinkingBox-Training:使用数据库状态奖励对 Qwen3.8-27B 进行强化学习微调

TL;DR

ThinkingBox-Training(已在 GitHub 上发布)将任务最终数据库状态的可执行检查转换为二进制强化学习奖励,并利用这些奖励对 Qwen3.8-27B 进行微调,将基准测试中全部 20 次尝试均成功的任务占比从 7.5% 提升至 21.1%,并将每项可靠任务的预计成本降低至 8.00 美元。


ThinkingBox-Training 的功能

ThinkingBox 最初用于通过比较最终数据库状态与预期结果来对智能体进行评分。作者意识到,同样的可执行检查可以作为强化学习(RL)训练的奖励信号,适用于原始 ThinkingBox-Bench 基准之外的任务。

  • 奖励是二进制的:如果最终数据库状态满足确定性检查,则为 1,否则为 0。
  • 少数任务使用 LLM 评判器处理狭窄的评分标准问题,但绝大多数任务依赖确定性检查。
  • 训练循环在精选任务池上运行全参数强化学习微调(GRPO),这些任务的难度是策略相对的——即基础模型有时成功、有时失败的任务。

离线策略相对难度选择

只有能够产生混合奖励结果的任务才对 GRPO 有用。因此,作者进行了以下操作:

  1. 使用基础策略(未微调的 Qwen3.8-27B)对每个候选任务进行 n 次探测。
  2. 使用 Jeffreys 后验 Beta 分布对成功概率进行建模:Beta(k+0.5, n‑k+0.5),其中 k 是成功次数。
  3. 将后验质量分桶为五个区间(0-0.08、0.08-0.40、0.40-0.60、0.60-0.90、0.90-1)。
  4. 保留位于中间三个桶(困难、中等、频繁解决)的任务,丢弃几乎总是成功或几乎总是失败的任务。
  5. 最终固定任务池包含 187 个任务,用于报告中的运行。

“难度是策略相对的:一个任务对当前模型来说很难,直到该模型学会它为止。”

训练循环与基础设施

该技术栈运行在 24 块 H100 GPU(3 个节点 × 8 块 GPU)上,并遵循六个阶段(帖子中的图 5):

  1. 候选任务导入。
  2. 离线探测与难度过滤。
  3. 生成 rollout(每组 8 个回合)。
  4. 终端状态评分。
  5. GRPO 奖励计算(组内居中)。
  6. 参数更新。

关键实现细节:

  • GRPO 使用 token 均值优势,学习率为 1e-6,权重衰减为零。
  • 零方差组使用 DAPO 风格的过采样策略进行替换。
  • 所有解析逻辑(工具调用、参数、推理提取)在训练和评估之间通过 trainer/core/tb_interpret.py 共享,以确保奖励与评估的一致性。

对 Qwen3.8-27B 的量化影响

该模型在分布外的 ThinkingBox-Bench(507 个任务,每次重复 20 次)上进行了评估。帖子中的表 1 报告如下:

指标 基础模型 RL 微调 Δ
观察到的 20/20(每次尝试都通过的任务) 38(7.50%) 107(21.10%) +69
pass@1(平均成功率) 5,242(51.70%) 6,163(60.78%) +9.08 个百分点
pass@20(至少一次覆盖) 453(89.35%) 446(87.97%) -7

强化学习微调提升了可靠性:可重复成功大幅上升,而至少一次的覆盖率略有下降。

领域层面的影响

Pass@1 和观察到的 20/20 在所有五个基准领域(零售、汽车保险、旅行、新型银行、咨询)均有提升。Pass@20 在新型银行和咨询领域有所增加,但在零售、旅行和汽车保险领域有所下降。零售领域观察到最大的 20/20 提升(+24.5 个百分点)。

成本效益

使用与第一篇文章相同的 token 用量估算,微调后的检查点降低了评估成本和每任务成本:

衡量指标 基础 RL 微调 Δ
活动成本(507 × 20 次运行) 925.80 美元 855.58 美元 -7.6%
每次成功尝试的成本 0.177 美元 0.139 美元 -21.4%
通过 20/20 的任务 38 107 2.8 倍
每项可靠任务的成本 24.36 美元 8.00 美元 -67.2%

以每项可靠任务 8.00 美元的成本,微调后的模型接近 GPT-5.4、GPT-6 Astra 和 Claude Opus 5.5 的成本效率。

自行运行技术栈

ThinkingBox-Training 在 github.com/microsoft/thinkingbox-training 开源。该仓库包括:

  • 数据准备(docs/data-preparation.md)——任务水合、策略探测、难度过滤、基准排除。
  • 参考训练配置(docs/reference-q38-run.md)——针对 Qwen3.8-27B 全参数训练的已验证 24 GPU 运行。
  • 评估指南(docs/evaluation.md)——合并检查点、使用 vLLM 提供服务,并通过 OpenEnv 运行完整的 507 × 20 基准。

该帖子提供了逐步的 Linux/WSL 设置说明(Python 3.12、uv、NVIDIA CUDA/NCCL)、环境创建、包安装以及基于 Ray 的分布式训练启动脚本。

给从业者的启示

  1. 训练前先探测。 估算任务池的策略相对难度分布;只保留产生混合成功的任务。
  2. 保持训练和评估解析器的一致性。 工具调用提取的任何不匹配都会奖励错误的行为。
  3. 同时报告覆盖率和可重复性。 仅依赖 pass@1 会隐藏可靠性;请包括观察到的 20/20(或类似指标)以传达可靠的性能。

作者强调,核心贡献是训练循环和数据整理,而非单个检查点。该方法应可推广到任何操作持久状态(数据库、文件系统等)的智能体。


参考资料与资源


代码采用 MIT 许可;基准数据采用 CDLA-Permissive-2.0 许可。

Sources