用 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 把这一步也省掉:它让另一个大模型读“系统提示 + 完整对话轨迹”,直接打分。

三步完成打分

  1. 在系统提示里描述任务,例如“帮助用户找到指定邮件”。
  2. ART 把智能体的完整对话(系统 / 用户 / 助手消息)打包。
  3. 调用 ruler_score_group(...),返回值就是奖励。

一句话总结:只要你会写提示词,就不需要写奖励函数。


十分钟跑通第一个示例:2048

前置条件

  • Python ≥ 3.9
  • 本地或云端有一台带 NVIDIA GPU 的机器(Colab 也行)

安装

pip install openpipe-art

启动训练(Colab 一键版)

  1. 打开 2048 示例 Notebook
  2. 按顺序运行所有 Cell。

    • 第一块自动下载 ART Server Docker 镜像并启动。
    • 第二块用 ART Client 生成 32 条并行 rollout。
    • 第三块调用 RULER 给每条轨迹打分。
    • 第四块触发 GRPO 更新 LoRA。
  3. 大约 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 把“训练多步智能体”这件事拆成三步:

  1. 像调用 OpenAI API 一样写代码;
  2. 用 RULER 或一行代码给轨迹打分;
  3. 让服务器自动跑 GRPO。

你不再需要成为强化学习专家,也能让大模型学会玩游戏、做检索,甚至完成更复杂的业务流程。下一步,把你的任务写进系统提示,打开 Notebook,跑起来。