ART (Agent Reinforcement Trainer) - 强化学习框架训练多步任务智能体
项目标题与描述
ART (Agent Reinforcement Trainer) 是一个开源的强化学习框架,专注于训练能够处理多步任务的智能体。项目核心价值在于:
- 采用GRPO算法进行智能体训练
- 创新的RULER系统自动生成奖励函数
- 支持真实世界复杂任务的训练场景
- 提供云端(SkyPilot)和本地训练选项
项目状态活跃,最新版本持续更新中。
功能特性
核心功能
-
RULER自动奖励系统:
- 使用LLM作为评判者自动评分轨迹
- 无需手工设计奖励函数
- 支持多任务通用评分
-
灵活的训练部署:
- 支持云端集群训练(SkyPilot)
- 本地开发环境支持
- VSCode远程开发集成
-
多领域任务支持:
- 零售领域任务(订单处理、退换货等)
- 航空领域任务(机票预订、改签等)
- 自定义任务扩展
-
强化学习工具链:
- 轨迹收集与评估
- 模型训练与部署
- 性能监控(W&B集成)
独特价值
- 开发效率提升:相比传统RL方法节省2-3倍开发时间
- 通用性强:同一套系统可应用于不同领域任务
- 性能优越:在基准测试中超越手工设计奖励函数
安装指南
系统要求
- Python 3.8+
- CUDA 11.7+ (GPU训练需要)
- UV包管理器(推荐)
安装步骤
- 克隆仓库:
git clone https://github.com/OpenPipe/ART.git
cd ART
- 安装依赖:
uv sync
- 设置环境变量:
cp .env.example .env
# 编辑.env文件配置您的设置
可选组件
- 树形解析器支持:
pip install 'tree-sitter==0.21.3'
pip install 'tree-sitter-languages'
使用说明
基础示例
启动训练集群(SkyPilot):
./scripts/launch-cluster.sh
运行2048示例:
import art
model = art.TrainableModel(
name="qwen2.5-14b-instruct",
project="demo",
base_model="Qwen/Qwen2.5-14B-Instruct"
)
await model.register(backend)
典型工作流
- 收集轨迹:
trajectories = await gather_trajectories(model, env)
- 训练模型:
await model.train(trajectories)
- 评估性能:
results = await evaluate_model(model, test_env)
API概览
主要组件:
TrainableModel
: 可训练模型封装LocalBackend
: 本地训练后端Trajectory
: 智能体轨迹数据类RULER
: 自动奖励评分系统
核心代码
RULER自动评分系统
async def ruler_score_group(group, model_name):
"""使用LLM自动评分轨迹组"""
prompt = build_scoring_prompt(group.trajectories)
response = await llm_completion(prompt, model_name)
return parse_scores(response)
def build_scoring_prompt(trajectories):
"""构建评分提示"""
return f"""
评估以下轨迹,根据任务完成度打分(0-1):
{json.dumps([t.to_dict() for t in trajectories])}
"""
智能体训练循环
async def train_loop(model, env, steps=1000):
for step in range(steps):
# 收集轨迹
trajectories = await gather_trajectories(model, env)
# 使用RULER评分
scored = await ruler_score_group(trajectories, "o3")
# 训练步骤
await model.train(scored)
# 定期评估
if step % 10 == 0:
eval_results = await evaluate(model, test_env)
log_to_wandb(eval_results)
云端部署
async def deploy_to_cloud(model, step):
"""部署模型到云端推理服务"""
deployment = await deploy_model(
deploy_to="together",
model=model,
step=step,
wait_for_completion=True
)
return deployment.endpoint
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
公众号二维码