技巧精选

多框架强化学习训练指南

精选理由

HuggingFace和LiquidAI教你如何让模型在多个框架同时训练,小模型性能提升12%,工具调用减少31%,还不改一行框架代码。

HuggingFace与LiquidAI发布多框架强化学习训练方法,使LFM2.5-2.6B模型在SWE-bench Pro上从42%提升至54%,工具调用减少31%。研究发现同一模型GLM-5.2在不同框架上表现差异巨大,从23%到52%。OpenEnv解决方案通过capture proxy技术统一四种API方言,构建rollout图解决black-box训练难题。

原文 · shao__meng

多 Harness 强化学习训练指南 @huggingface × @liquidai Agent 的能力一半在模型、一半在 Harness 里,而模型只在某一个框架里训练过就会“水土不服”。HuggingFace 和 LiquidAI 团队给出的方案是:不改任何一行框架代码,在框架与模型之间放一个记录代理,让同一个模型同时在四个真实框架里做 RL,小模型 LFM2.5-2.6B 从 42% 提升到 54%,且工具调用减少 31% huggingface.co/spaces/FineEnv… 问题:Harness 是被忽视的变量 · 同一模型 GLM-5.2,在 SWE-bench Pro 上一个框架 23%、另一个 52%;Claude Opus 4.5 同权重下 Scale 榜 45.9%,Claude Code 里 55.4%。 · 一项研究中,换框架让 GLM-5.1 波动 13 分,而在固定框架里换模型只波动 2.5–5 分;框架的影响比模型排名差异还大。 · 更严重的是“框架过拟合”:OpenSWE-32B 离开原生框架后,在 SWE-bench Verified 上从正常水平暴跌 58.8 分到 3.6%,Terminal-Bench 上直接归零;模型输出的工具调用格式别的框架根本解析不了。 原因 ( @KwaiAICoder 团队归纳) 是单框架 RL 会让模型学到“这个框架的接口习惯”而非任务本身,具体过拟合在三处:动作格式、上下文结构、控制流。前沿实验室已经开始有意识地做 “harness scaling”(Kimi K3、Qwen3-Coder-Next、Liquid AI 等),但缺一个开放、通用、不需要 frontier 预算的做法。 方法:不改框架,改“听”的位置 技术难点在于:传统 Agentic RL 中训练器拥有循环 (white-box),能看到每个 token;而在真实框架里 (black-box),循环归框架所有,训练器只能看到一串 API 请求-响应。而策略梯度算法需要每个 token 的精确 ID 和采样时的 logprob,只有文本是不够的,因为: · 重新分词可能得到不同的 token 序列; · 框架会编辑文本(修 JSON、改空白、加角色标记),拿编辑后的文本训练等于在学一个模型从没生成过的回复; · 异步 RL 中模型权重已更新,事后重算 logprob 无法还原采样时的概率,importance ratio 会失真。 OpenEnv 的解法是一个 capture proxy:框架把它当模型服务 (填个 base URL + API key,key 就是每次 rollout 独有的 session id)。它自动识别四种 API 方言 (OpenAI Chat Completions、OpenAI Responses、Anthropic Messages、Gemini),统一转成 chat completions 再以原格式回复。同时它向推理引擎 (vLLM) 要求返回精确的 prompt token ids、采样 token ids 和逐 token logprob,从完整分布采样 (把 top_p 提到 1.0 后,importance ratio 从 0.985–0.993 修到 0.9984–0.9999)。 由此构建“rollout 图”:每次模型调用是一个节点,按最长 token 前缀链接;每条根到叶的路径成为一条训练序列——上下文 token loss mask 为 0,模型采样的 token 为 1。工具链的其他部分:Harbor 提供容器化任务和沙箱(40+ 框架适配器),TRL 的 HarnessRolloutWorker(已合并进 TRL)消费这些 trace 做 async GRPO。 实验设置 · 模型:LFM2.5-2.6B(Liquid AI 的小开源模型) · 任务:SmolDataEnvs,来自真实 Kaggle notebook 的 5000 个数据分析任务;1000 个训练 / 250 个留出测试 · 两组对照:只在 OpenCode 里训 vs. 在 OpenCode、Claude Code、Codex、Mini-SWE-Agent 四个框架同时训(GRPO 每组 8 条 rollout,同一组的 rollout 用同一框架,保证 advantage 比较的是动作而非框架) · 奖励:正确性 1/0 + 一个最多 0.1 的工具效率奖励(答对且调用更少才有) · 算力:仅 2 张 H100(一张训练一张推理),每 rollout 一个 E2B 沙箱,训练 32–46 小时 基线本身就说明了问题:同一个未训练模型,Mini-SWE-Agent 下 62%,Claude Code 下只有 33%。 实验结果 多框架 RL (核心结果):留出集平均 42.2% → 54.2%,四个框架全部提升;已解任务的工具调用减少 31%(Codex 下省了一半调用)。效率奖励的来源很巧妙:Qwen 预实验中纯正确性奖励让工具调用从 13 次膨胀到 41 次;而 GRPO 靠组内对比学习,当 8 条 rollout 全对时,调用次数差异是唯一的奖励对比来源(多框架运行中 22.6% 的组处于这种情况)。 单框架 vs 多框架:只训 OpenCode 让 OpenCode 从 34% 冲到 58% (超过多框架模型在 OpenCode 下的 50%),但在 Claude Code 下反而用更多的调用和 token(生成 token 最多多 62%),又一种形式的过拟合。多框架模型在所有框架下都省调用。总准确率上两者只差 1.9 分(在噪声范围内)。 SFT 对照 (最反直觉的发现):用大模型 Qwen3.8-27B 在同四个框架跑出 3189 条成功轨迹做模仿学习,多框架 SFT 只到 43.1% (甚至低于基线附近),OpenCode SFT 47.5%,都明显低于 RL 的 54.6%。多框架 SFT 还让 Mini-SWE-Agent 从 62% 跌到 45%。抄大模型的答案不如让小模型自己练。(注意作者自己也声明:SFT 与 RL 在 token 量、步数、目标函数上都不对等,这是观察而非严格的方法排序。) Hugging Face @huggingface The same model, with the same weights, scores 62% in one agent harness and 33% in another. @adithya_s_k and the @huggingface team just released the ultimate guide to multi-harness RL, and it's one of the most practical RL write-ups this year, and everything open! The trick is simple. Don't touch the harness. Point it at a proxy instead of the model. The proxy speaks all four API formats coding agents use (OpenAI Chat Completions, OpenAI Responses, Anthropic Messages, Gemini). It records the exact token ids and logprobs vLLM sampled, and you train on that. You don't change a single line of Claude Code, Codex or OpenCode. Results: 🔹 Trained across 4 harnesses at once, LFM2.5-2.6B by @liquidai went from 42% to 54% 🔹 31% fewer tool calls, thanks to a small bonus for solving tasks in fewer steps 🔹 Training in OpenCode alone took OpenCode from 34% to 58%, but the multi-harness model improved everywhere They also tried the shortcut everyone reaches for: fine-tune on 3,189 successful rollouts from Qwen3.8-27B. Imitation plateaued at 47.5%, below both RL runs. Copying a bigger model doesn't get you there. Practice does. The best part is that everything is open: the capture proxy in OpenEnv, the trainer in TRL, the tasks, the SFT data, the training code and all seven trained models. Agents will run in dozens of harnesses. Now open models can be trained for each of them, by anyone. Read it here huggingface.co/spaces/FineEnv… 9SLS 🔗 View Quoted Tweet 💬 2 🔄 4 ❤️ 26 👀 2524 📊 8 ⚡