Wink Pings

训练分数一路涨,代码越写越烂:Hugging Face 把 Agent 训练最坑的一课做成了教程

Hugging Face 整理了一套 Agent 后训练课程,用 Coding Agent 串起 SFT、蒸馏、GRPO、OpenEnv 和真实 Harness。其中一个实验故意在奖励函数里留了个洞,训练分数越跑越高,实际代码测试却越来越差。

想自己训一个真会用工具的 Agent,卡在哪一步?多半不是缺算力,是不知道从哪开始。Hugging Face 最近整理了一套后训练课程,叫《A curriculum for post-training agents》,用 Coding Agent 串起整个流程。

先把背景补齐。后训练指预训练之后的阶段,SFT、蒸馏、强化学习都算。目标是把基座模型变成会听指令、会用工具、能解具体任务的东西。Agent 的特殊性在于它跨多轮工作,调工具、读结果、再决定下一步。训练要覆盖整条轨迹,不是单个回答。

课程分五步。每步配一张方法图、一场直播或讲义、一篇解释博客,外加 TRL 文档。部分步骤附训练代码和实际项目。顺序跟着 Hugging Face 的直播系列走,四节课加两场 workshop,有独立的播放列表。

SFT 流程示意

第 1 步是 SFT。模型学习复制更强模型产出的 Agent 轨迹,每条轨迹记录一次任务里所有工具调用和结果。便宜、稳定。问题也明显:模型只看正确轨迹,看不到自己犯错的样子。真到解题时出了错,它没学过怎么恢复。后面两步就是冲这个来的。

蒸馏流程示意

第 2 步是蒸馏。教师模型监督学生,要么靠它写的数据,要么靠它在学生自己 token 上的概率分布。教师可以是更大的模型,也可以是多个专家模型蒸馏进一个学生,或者同模型加额外上下文做自蒸馏。信号很密,每个 token 一个值,样本需求比 RL 少。代价是学生的上限被教师锁死,on-policy 蒸馏每一步都得跑教师。

GRPO 流程示意

第 3 步是 RL,具体算法是 GRPO。同一个 prompt 采样多个答案,全部打分,把高于组内平均的答案概率抬上去。不需要单独训一个模型来估价值。信号比蒸馏弱,整个答案一个分数,模型得多试才能学到东西。普通奖励函数下,每个答案只有单轮,评一次就完。

环境示意

第 4 步把奖励搬进环境。环境保留状态、暴露工具、多轮应答,自己跑工具、记录变化、检查最终结果,比如跑一遍代码任务的测试。每一轮比单个回答长得多,生成 rollout 变成训练里最慢的环节。配套博客里有个角度值得看:为什么 RL 环境现在能跑通,2016 年却不行。

第 5 步是 Harness 和规模。每次 rollout 是把完整 Agent 放进远程沙箱里的真实 harness 跑一遍,训练环境和实际运行环境一致。生成和训练分在不同的 GPU 上,长回合不会让 trainer 闲着,更新后的权重再发回 vLLM。用的是 AsyncGRPOTrainer。

整套课里最有意思的是一个实验。作者故意设计了一个容易被钻空子的奖励函数,结果训练分数一路上涨,实际代码测试表现越来越差。Reward Hacking 这个坑,用一条曲线讲明白了。有网友在转发下提到自己之前也踩过,正好卡在进阶 Agent 的节点。

Resources 这块给得比较全。每步都有 YouTube 直播、讲义幻灯片、TRL 文档链接,第 2 到第 4 步还配了现成的训练脚本、数据集和 Trackio 面板。第 1 步的代码在 burtenshaw 的 gemma4-pi-mono 仓库里。课程首页还有一张 20 页的概览 deck,以及一篇讲 harness、scaffold 这些术语的词汇表。

有人问跑完全程要什么级别的显卡,作者回得很实在:看你想训的模型尺度。这套路线没承诺速成,它做的是把每个阶段的边界和坑摆出来。已经会搭 Agent、想往 Agent RL 和训练环境走的人,可以顺着一步步跑。

课程地址:https://huggingface.co/blog/huggingface/train-agents

发布时间: 2026-11-01 04:49