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 有用。因此,作者进行了以下操作:
- 使用基础策略(未微调的 Qwen3.8-27B)对每个候选任务进行 n 次探测。
- 使用 Jeffreys 后验 Beta 分布对成功概率进行建模:
Beta(k+0.5, n‑k+0.5),其中 k 是成功次数。 - 将后验质量分桶为五个区间(0-0.08、0.08-0.40、0.40-0.60、0.60-0.90、0.90-1)。
- 保留位于中间三个桶(困难、中等、频繁解决)的任务,丢弃几乎总是成功或几乎总是失败的任务。
- 最终固定任务池包含 187 个任务,用于报告中的运行。
“难度是策略相对的:一个任务对当前模型来说很难,直到该模型学会它为止。”
训练循环与基础设施
该技术栈运行在 24 块 H100 GPU(3 个节点 × 8 块 GPU)上,并遵循六个阶段(帖子中的图 5):
- 候选任务导入。
- 离线探测与难度过滤。
- 生成 rollout(每组 8 个回合)。
- 终端状态评分。
- GRPO 奖励计算(组内居中)。
- 参数更新。
关键实现细节:
- 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 的分布式训练启动脚本。
给从业者的启示
- 训练前先探测。 估算任务池的策略相对难度分布;只保留产生混合成功的任务。
- 保持训练和评估解析器的一致性。 工具调用提取的任何不匹配都会奖励错误的行为。
- 同时报告覆盖率和可重复性。 仅依赖 pass@1 会隐藏可靠性;请包括观察到的 20/20(或类似指标)以传达可靠的性能。
作者强调,核心贡献是训练循环和数据整理,而非单个检查点。该方法应可推广到任何操作持久状态(数据库、文件系统等)的智能体。
参考资料与资源
- ThinkingBox-Training GitHub:https://github.com/microsoft/thinkingbox-training
- ThinkingBox-Bench 数据集:https://huggingface.co/datasets/microsoft/ThinkingBox-Bench
- 原始基准博客:https://huggingface.co/blog/microsoft/thinkingbox
- 相关论文(arXiv 2608.19741):https://arxiv.org/abs/2608.19741
- OpenEnv 集成:https://huggingface.co/docs/openenv/environments/thinkingbox
代码采用 MIT 许可;基准数据采用 CDLA-Permissive-2.0 许可。