方法与实践 可动手 重点 10月25日 周日 #agent#fine-tuning#evaluation

微软 ThinkingBox:把数据库终态检查直接当作 RL 奖励训练 Agent

微软与 Hugging Face 10 月 22 日发文介绍 ThinkingBox-Training:ThinkingBox 基准原本用可执行检查比对 Agent 留下的数据库终态来打分,团队把这些检查直接当作二元奖励,用 GRPO 对 Qwen3.8-27B 做了 50 步全参数训练。训练只用基准之外的 187 个任务,训练前用基座策略反复试做每个任务,按 Jeffreys 后验估计难度,去掉几乎做不出和几乎总能做对的任务。

RL 后单次通过率和稳定性上升,pass@20 略降
Qwen3.8-27B 基座RL 微调后
pass@151.7%60.78%+9.08
20 次全对的任务7.5%21.1%+13.6
pass@2089.35%87.97%−1.38

数据来自 ThinkingBox 训练博客,507 个任务×20 次尝试

要点

  • 在全部 507 个基准任务、每题 20 次尝试上,pass@1 从 51.7% 升到 60.78%,20 次全对的任务占比从 7.5% 升到 21.1%
  • pass@20 从 89.35% 略降到 87.97%,作者认为模型变得「更稳定而不是更广」
  • 例:一个需要经理审批的酒店改订任务,基座模型 20 次中有 15 次未经审批就改了订单,训练后 20 次都保持了订单和支付状态
  • 训练代码、框架和基准数据已开源(代码 MIT,数据 CDLA-Permissive-2.0),187 个训练任务未公开
为什么值得关注

很多业务 Agent 的「做对了没有」可以落到数据库状态上检查,这套做法说明评测检查本身就能变成训练信号;训练前按难度筛题,可以少浪费没有学习信号的 rollout。

配套实验

已验证 检查 4/4 通过 GitHub Actions 实际运行 · Python 3.12.15 · 耗时 不到 0.1s
先探测、再筛题:用 Jeffreys 后验给 RL 训练任务估难度

受 ThinkingBox 训练博客启发,用模拟数据演示:训练前探测每个任务的成功率、用 Jeffreys 后验分桶并去掉过难和过易的任务,能显著减少 GRPO 中奖励全相同、没有学习信号的组。

结论模拟中按 Jeffreys 后验筛题后,零方差组从 48.9% 降到 19.1%,保留 49.8% 的任务

分桶结果: {'drop-hard': 172, 'hard': 124, 'medium': 37, 'easy': 138, 'drop-easy': 129}
METRIC: 保留任务比例 = 49.8 %
METRIC: 筛选前零方差组比例 = 48.9 %
METRIC: 筛选后零方差组比例 = 19.1 %
METRIC: 被丢任务中真实落在两端的比例 = 88.4 %
METRIC: 最大似然估计为 0 或 1 的任务比例 = 50.2 %
[PASS] 筛选后零方差(无学习信号)组的比例低于筛选前
[PASS] Jeffreys 后验均值不会给出 0 或 1 这样的极端估计
[PASS] 筛选只去掉两端,保留了相当一部分任务
[PASS] 被丢掉的任务多数确实是过难或过易的
RESULT: 模拟中按 Jeffreys 后验筛题后,零方差组从 48.9% 降到 19.1%,保留 49.8% 的任务
python main.py 查看代码与内网复现步骤 →

来源

Esc
↑ ↓ 选择Enter 打开

分享图

1080 × 1350,适合发到群聊或朋友圈
分享图预览

键盘快捷键

j / k
下一条 / 上一条
o
展开或收起当前条目
Enter
打开当前条目详情
c
复制当前条目链接
s
收藏 / 取消收藏当前条目
/ 或 ⌘K
搜索
1 2 3
切换密度:标题 / 摘要 / 完整
t
切换主题
?
显示本帮助