AREX Feed Article
微软与 Hugging Face 开源 ThinkingBox-Training:用数据库终态判分当奖励,自报 Qwen3.8-27B pass@1 从 51.70% 升至 60.78%
北京时间 10 月 23 日清晨(UTC 时间 10 月 22 日 22:24),微软与 Hugging Face 发布,宣布把 ThinkingBox-Training 训练栈开源到 GitHub 仓库 。这套代码的做法是:智能体每跑完一集任务,沙箱提取后端里实际发生的变化,多数任务由任务自带的确定性检查直接返回 1 或 0 的奖励。发布方用这个信号在 ThinkingBox-Bench 之外的 187 个任务上,对 Qwen3.8-27B 做了 50 步 GRPO(Group Relative Policy Optimization,组相对策略优化)微调。
按发布方口径,微调后模型在 ThinkingBox-Bench 上的 pass@1(507 个任务各跑 20 次的平均成功率)从 51.70% 升至 60.78%,20 次全部做对的任务从 38 个涨到 107 个;但至少做对一次的任务从 453 个降到 446 个。这些基准构成与训练效果数字均出自发布方自己的评测流水线,截至发稿尚未见第三方独立核实的报道。
ThinkingBox 的运行结构:沙箱给智能体隔离的工具会话,结束后由可执行判分器核对最终数据库状态、副作用与对话记录;论文注明同一判定既支撑基准评估与失败分析,也支撑智能体训练(图源:)。
从判卷器到奖励函数:同一个终态检查的两种身份
ThinkingBox-Bench 的 507 个任务都这样运行:每个任务起一个真实后端,交给智能体一组 MCP 工具(Model Context Protocol,模型可调用的工具接口)和一个带着私有上下文的模拟 LLM 用户,任务结束时对最终数据库状态运行可执行检查。按联合博客的说法,检查的对象是「需要正确的后端记录」,而不是具体的工具调用序列,为的是鼓励模型找出新的解法路径,而不是复现人工设计的解法。
这套判分方式来自双方 10 月 3 日(UTC)发布的。那里的例子是一台 745 美元的厨房电器:包裹在纳什维尔配送中心卡进承运商的「例外」状态,超过预计送达日 15 天。智能体拉订单、查物流、翻退款政策,九次工具调用条理清楚,最后把工单关成 resolved,而任务要求的终态是 on hold。判工具调用的评分器看到九次合格调用,数据库看到的却是一行错误的记录。
新用途来自发布方对这套判分的重新审视:对多数任务,一个可执行检查能直接从终态返回 1 或 0——「这不只是判卷器,也能是奖励函数」。训练中的奖励因此有两条路径:大多数情况由确定性终态检查给出,不需要任何模型打分;少数数据库状态表达不了的窄口径要求,由配置的裁判模型(博客称训练中用 GPT-5 Chat)就预设的二元评分细则(rubric)回答是或否。
难度是相对于策略的:训练任务池怎么挑出来
把检查当奖励之后,博客认为关键变量不在模型或优化器,而在哪些候选任务进入固定的训练池。理由从 GRPO 的一条算术事实开始:一组 8 条 rollout(一次从头到尾的完整任务运行)若全部失败,奖励向量是 8 个 0;全部成功则是 8 个 1——两种情况下组内中心化都产生不出任何优势信号。只有像 [0, 0, 0, 1, 1, 1, 1, 1] 这样的混合组才有对比可学。而有状态智能体的每次 rollout 都要新起一个隔离后端、跑一遍真实工具会话、再调用一个单独的模型扮演用户,零方差组的每条 rollout 在被丢弃前都已按全价跑过一遍。
双方的解法是一套他们称为 offline policy-relative difficulty(离线策略相对难度)的筛选:训练前用基础策略模型对每个候选任务探针 n 次、成功 k 次,用 Jeffreys 后验 Beta(k+½, n−k+½) 估计这个任务的真实成功率,再按 0.08、0.40、0.60、0.90 四条边界分成五档。总是失败的([0, 0.08))和几乎总是成功的([0.90, 1])直接丢弃,中间三档保留。博客强调难度是相对于策略的——一个任务只对当前的模型难,模型学会它就不难了。
以 Qwen3.8-27B 的全参数训练池为例:候选任务先由 GPT-5.4 做可解性筛查,再用基础模型探针。博客举了一个例子:某任务 8 次探针成功 3 次,得到 Beta(3.5, 5.5) 后验,54.0% 的最大质量落在 Difficult 档;它进入训练后产出了混合奖励组 [0, 0, 0, 0, 1, 1, 1, 1]。最终挑出的训练池有 187 个任务,整个训练期间固定不变。
边界也写在明处:博客声明没有任何 ThinkingBox-Bench 任务进入训练池,基准只留给评测。但训练池与基准共享 ThinkingBox 框架、模拟用户机制、终态判分方式、少数共同工具和相似的任务风格,博客自己写明「这些共同元素限制了迁移结论的范围」。
涨幅落在哪里:领域拆解与模型对照
评测口径沿用基准协议:507 个任务各跑 20 次,共 10,140 次尝试。pass@1 是全部尝试的平均成功率;pass@20 是至少成功一次的任务占比;observed 20/20 是每次记录在案的尝试都通过的任务占比。按发布方在博客中公布的对照:pass@1 从 5,242 次(51.70%)升到 6,163 次(60.78%),提高 9.08 个百分点;observed 20/20 从 38 个(7.50%)涨到 107 个(21.10%),接近原来的三倍;pass@20 反而从 453 个(89.35%)降到 446 个(87.97%)。
这批数字的披露时间有先后。 10 月 1 日更新的第 4 版已在表中报告全参数微调的 Qwen3.8-27B 达到 60.78%±1.68;GitHub 仓库的 README 说明,38 对 107 这类重复次数指标是论文发表后用公开的 tb agg 工具从同一批 507×20 评测汇总出来的,与本次开源一同出现在仓库里。
分领域看,零售、车险、旅行、neobank(数字银行)、咨询五个领域的 pass@1 和 observed 20/20 全部上涨;pass@20 涨跌互现——neobank 和咨询上升,零售、旅行、车险下降,其中车险的覆盖面损失最大(−7.0 个百分点),零售的 20/20 增益最大(+24.5 个百分点)。博客把整体模式称为 sharpening(锐化),并称它与一致:概率分布向能稳定复现的轨迹移动,一些低概率路径随之消失。
放进博客给出的精选模型对照表里,60.78% 的 pass@1 高于 GPT-6 Astra(58.31%)和 Kimi-K3(57.37%),低于 GPT-5.6 Sol(61.91%);但在 20/20 口径下,107 个任务高于 GPT-5.6 Sol 的 82 个,与 pass@1 更低的 Claude Sonnet 4.6(59.19%、102 个)相近,Claude Opus 5.5 以 241 个(47.53%)领先。博客的结论是两个指标给出不同的排序,单独看任何一个都讲不全。
博客还给出了单个任务的对照:出差旅客要求降房型,公司政策要求先经经理审批。微调前,20 次里有 15 次智能体未经审批就改了订单并退款;微调后,20 次全部保住了预订和支付状态,其中 19 次所有预期记录都匹配。
每个可靠任务的成本从 24.36 美元降到 8.00 美元
成本算法沿用首篇博客:把 507 个任务各跑 20 次的估算成本,除以 20 次全部通过的任务数,得到「每个可靠任务的成本」。按发布方对微调前后同一模型的测算:全程评估成本从 925.80 美元降到 855.58 美元(−7.6%),每次成功尝试的成本从 0.177 美元降到 0.139 美元(−21.4%),每个可靠任务的成本从 24.36 美元降到 8.00 美元(−67.2%)。
论文绘制的 18 个模型成本对比(其中四个模型超出图面范围):微调前的 Qwen3.8-27B 位于约 0.18 美元一次成功尝试、51.70% pass@1 的位置;博客称微调后该点移至 60.78%、0.139 美元(图源:)。
按 8.00 美元这个口径,微调后的 Qwen3.8-27B 已接近 GPT-5.4(6.80 美元)、GPT-6 Astra(7.45 美元)和 Claude Opus 5.5(7.80 美元)。博客同时给这组数字画了界:它们是「比较用的服务指数,不是账单或云报价」,只含模型推理成本,不含训练运行和挑选任务池的探针开销;微调前后模型的服务成本本身相同,降下来的是每次可靠结果的分摊价。
开源栈要 24 张 H100,样例任务不等于训练池
开源的 包含数据选择、rollout、奖励计算与 Verl 训练框架的集成,README 之外附了三份指南,分别覆盖任务池准备、Qwen3.8 参考配置和评测流程。复现参考运行需要 Linux 或 WSL(Windows 下的 Linux 子系统)、Python 3.12、Verl 0.9.0、本地 Qwen3.8-27B 权重、给模拟用户和裁判用的 OpenAI 兼容端点,参考配置是 3 个节点各 8 张 H100,共 24 卡。
参考运行本身也有一套固定参数:全参数微调,token-mean GRPO,每次更新生成 18 组、每组 8 条 rollout,即 144 次完整任务运行(episode);AdamW 学习率 1e-6、零权重衰减;训练中零方差组按 DAPO 的替换补充;后端超时不记为智能体失败,受影响的组补跑而不是按 0 分计。博客另外提醒:训练与评测必须用同一套代码解释模型输出的推理、工具调用和参数类型,否则奖励衡量的就不是被评测的那个智能体,对应的共享解释代码随仓库发布。
想直接上手的人要注意一条边界:仓库公开的样例任务列表只有 39 个公共开发任务,用于验证接口,并不是那次运行使用的 187 个私有训练任务;README 要求使用者自行提供与公开基准不相交的授权任务源。许可方面,代码为 MIT,基准数据为 CDLA-Permissive-2.0。博客尾注写明 ThinkingBox 由 Microsoft Copilot Studio 团队与 Toloka 合作构建,参与者包括曾在微软实习的匹兹堡大学、西北大学、哥伦比亚大学和 UC Irvine 学生;本次博客致谢了微软的 Mirco Milletari、Xiang Jiang 和 Hugging Face 的 Sergio Paniego,以及前实习生、论文一作 Zhuochun Li。
博客在结尾给同行留了三条操作建议:训练前先用基础策略探一遍自己任务集的难度分布,检查训练与评测的解释代码是否一致,以及同时报告覆盖面和可重复性——「一个偶尔找到解法的模型,不一定是能始终复现它的模型」。评测文档里写明了从合并 checkpoint 到跑完 507×20 评测的步骤;60.78% 和 107 这两个自报数字能否在别人的环境里复现,是目前还没走完的一步。
参考链接
- ](streamdown:incomplete-link)