用 ART 训练多步智能体:从 2048 到邮件检索的完整入门指南
这篇文章能帮你解决什么问题?
-
我想让大模型学会玩 2048、井字棋、Codenames,甚至帮我检索邮件,但不想手写奖励函数——有办法吗? -
我听说 GRPO 强化学习能让模型“边做边学”,可代码太复杂,有没有开箱即用的框架? -
我只想写几行 Python,就能把训练扔到有 GPU 的服务器上,本地还能继续调试,可行吗?
答案是:用 ART(Agent Reinforcement Trainer)。
什么是 ART?
一句话概括:ART 是一个开源的强化学习框架,专门用来训练“会做多步任务”的大模型智能体。
它把复杂的 GRPO 算法、LoRA 微调、分布式推理、日志追踪全部封装好,对外只暴露简单易用的 Python 接口。
核心组成
组件 | 作用 | 你需不需要改代码 |
---|---|---|
ART Client | 在你的笔记本/应用里发请求、收回答 | 只写几行 |
ART Server | 在 GPU 机器上跑推理、训练、保存 LoRA | 基本不用 |
RULER | 用 LLM 给轨迹打分,省去奖励函数 | 直接调用 |
零代码奖励函数:RULER 是怎么回事?
过去训练智能体,你得写 if action == good: reward += 1
。
RULER 把这一步也省掉:它让另一个大模型读“系统提示 + 完整对话轨迹”,直接打分。
三步完成打分
-
在系统提示里描述任务,例如“帮助用户找到指定邮件”。 -
ART 把智能体的完整对话(系统 / 用户 / 助手消息)打包。 -
调用 ruler_score_group(...)
,返回值就是奖励。
一句话总结:只要你会写提示词,就不需要写奖励函数。
十分钟跑通第一个示例:2048
前置条件
-
Python ≥ 3.9 -
本地或云端有一台带 NVIDIA GPU 的机器(Colab 也行)
安装
pip install openpipe-art
启动训练(Colab 一键版)
-
打开 2048 示例 Notebook。 -
按顺序运行所有 Cell。 -
第一块自动下载 ART Server Docker 镜像并启动。 -
第二块用 ART Client 生成 32 条并行 rollout。 -
第三块调用 RULER 给每条轨迹打分。 -
第四块触发 GRPO 更新 LoRA。
-
-
大约 15 分钟后,3B 的 Qwen 2.5 就能稳定玩到 512 分。
如果你更喜欢本地 GPU,把 Notebook 里的 remote_server_url
改成 http://localhost:8000
即可。
训练循环长什么样?
ART 把流程拆成 推理 和 训练 两个阶段,自动交替。
推理阶段
步骤 | 发生了什么 | 你写的代码示例 |
---|---|---|
1 | 你的脚本调用 client.chat.completions.create(...) |
正常写 OpenAI 风格代码 |
2 | ART Server 用最新 LoRA 做推理 | 无 |
3 | 对话被自动保存为 Trajectory | 无 |
4 | 你给轨迹贴一个 reward(或由 RULER 完成) | trajectory.reward = score |
训练阶段
步骤 | 发生了什么 | 你写的代码示例 |
---|---|---|
1 | 轨迹打包发给服务器 | await client.submit_trajectories(...) |
2 | 服务器用 GRPO 微调 LoRA | 无 |
3 | 新 LoRA 被加载到 vLLM | 无 |
4 | 推理继续 | 无 |
整个循环跑完设定的迭代次数后,LoRA 权重保存在本地目录,你可以直接 git add
提交,也可以推到 Hugging Face。
进阶:用 ART 训练邮件检索智能体(ART•E 案例)
官方博客 展示了如何把 Qwen 2.5 14B 训练成邮件小助手,效果超过 o3。
关键步骤与 2048 示例一致,只是任务提示换成:
You are an email assistant.
User will ask for a specific email.
Respond with the unique message_id.
RULER 会根据“是否返回正确 message_id”给出 0/1 奖励。
训练 300 步后,模型在测试集上的准确率从 34% 提升到 82%。
支持哪些模型?
ART 兼容所有 vLLM / HuggingFace transformers 能加载的因果语言模型,前提是被 Unsloth 支持。
目前已验证的包括:
-
Qwen 2.5 全系列(3B/7B/14B/32B) -
Llama-3-8B-Instruct -
Mistral-7B-v0.3
注意: Gemma-3 暂时跑不起来,如遇其他模型异常,Discord 或 GitHub issue 反馈即可。
FAQ:你可能想问的 20 个问题
1. GRPO 是什么?
GRPO(Group Relative Policy Optimization)是一种强化学习算法,专为语言模型设计,能在不更新完整权重的情况下高效微调 LoRA。
2. LoRA 又是什么?
LoRA(Low-Rank Adaptation)是一种只训练少量附加权重就能让大模型“学会新技能”的技术,节省显存、加速训练。
3. 我可以不用 GPU 吗?
可以跑在 Colab T4 或 A100,但 CPU 训练不现实。
4. 奖励函数真的完全不用写?
如果任务可以用一句话描述成功标准,RULER 就够。
若你需要细粒度打分(例如每步都奖励),仍然可以手写函数传给 ART。
5. 训练一次要花多少钱?
Colab 免费 T4 足够跑 2048 示例;14B 模型在 A100 上跑 2 小时大约 2-3 美元。
6. 如何查看训练曲线?
ART 原生集成 Weights & Biases,也支持 Langfuse、OpenPipe,一行配置即可。
7. 可以在 Windows 上跑吗?
客户端没问题;服务端推荐 Linux 或 WSL2。
8. 训练好的 LoRA 怎么部署?
把 LoRA 权重和基座模型一起加载到 vLLM,或直接用 openpipe-art
客户端离线推理。
9. 会不会把私有数据上传到云端?
不会。数据只在你的 GPU 服务器上流转。
10. 如何贡献代码?
见 CONTRIBUTING.md,欢迎 PR。
动手清单:今天就把 ART 跑起来
步骤 | 命令 / 操作 | 预计耗时 |
---|---|---|
1 | pip install openpipe-art |
1 分钟 |
2 | 打开 Colab 2048 Notebook 并运行 | 15 分钟 |
3 | 修改系统提示,换成你的任务描述 | 5 分钟 |
4 | 观察训练曲线,决定是否继续迭代 | 10 分钟 |
5 | 导出 LoRA,集成到你的应用 | 5 分钟 |
小结
ART 把“训练多步智能体”这件事拆成三步:
-
像调用 OpenAI API 一样写代码; -
用 RULER 或一行代码给轨迹打分; -
让服务器自动跑 GRPO。
你不再需要成为强化学习专家,也能让大模型学会玩游戏、做检索,甚至完成更复杂的业务流程。下一步,把你的任务写进系统提示,打开 Notebook,跑起来。