强化学习训练
Hermes Agent 内置了一套基于 Tinker-Atropos 的 RL(强化学习)训练流水线。它允许你使用 GRPO 与 LoRA adapters,在特定环境任务上训练语言模型,并通过智能体工具接口来完成环境发现、训练与监控。
概览
系统由三部分组成:
- Atropos — 轨迹 API server,协调环境交互、rollout groups 与 advantage 计算
- Tinker — 训练服务,负责模型权重、LoRA 训练、采样 / 推理与优化器步骤
- Environments — Python 类,定义任务、打分与奖励函数
需求
RL training 需要:
- Python >= 3.11
- TINKER_API_KEY
- WANDB_API_KEY
- 位于 Hermes 根目录下的
tinker-atropos/子模块
hermes config set TINKER_API_KEY your-tinker-key
hermes config set WANDB_API_KEY your-wandb-key
可用工具
| Tool | Description |
|---|---|
rl_list_environments | 发现可用 RL 环境 |
rl_select_environment | 选择环境并加载配置 |
rl_get_current_config | 查看可修改与锁定字段 |
rl_edit_config | 编辑训练参数 |
rl_start_training | 启动训练 |
rl_check_status | 检查训练状态与指标 |
rl_stop_training | 停止训练 |
rl_get_results | 获取最终结果 |
rl_list_runs | 列出运行记录 |
rl_test_inference | 用 OpenRouter 做快速推理测试 |
工作流
1. 发现环境
List the available RL environments
rl_list_environments() 会扫描 tinker-atropos/tinker_atropos/environments/,查找继承 BaseEnv 的类。
2. 选择并配置环境
Select the GSM8K environment and show me the configuration
配置分为:
- 可修改字段:如
group_size、batch_size、wandb_name - 锁定字段:如
tokenizer_name、rollout_server_url、max_token_length、total_steps、learning_rate等
3. 启动训练
Start the training run
rl_start_training() 会:
- 生成 YAML 配置文件
- 创建唯一 run ID
- 启动三个进程:Atropos API、Tinker trainer 与 Environment 进程
4. 监控进度
rl_check_status(run_id) 会报告:
- 三个进程的运行状态
- 已运行时长
- WandB 指标(如 reward mean、accuracy 等)
- 日志文件路径
5. 停止或获取结果
rl_stop_training() 会按逆序终止三个进程;rl_get_results() 会返回最终 WandB 指标与训练历史。
推理测试
正式训练前,可使用 rl_test_inference 快速检查某个环境是否工作正常。它会用 OpenRouter 跑少量推理与打分流程,无需 Tinker API,只需要 OPENROUTER_API_KEY。
Tinker API 集成
训练器会通过 Tinker API 完成:
- 创建 training / sampling client
- 使用 importance sampling loss 做前向 / 反向传播
- 进行优化器更新
- 保存权重并切换采样权重
- 将指标写入 WandB
创建自定义环境
若要新增 RL 环境:
- 在
tinker-atropos/tinker_atropos/environments/新建 Python 文件 - 定义继承
BaseEnv的类 - 实现
load_dataset()、get_next_item()、score_answer()、collect_trajectories() - 如有需要,可自定义
BaseEnvConfig
WandB 指标
常见指标包括:
train/losstrain/learning_ratereward/meanlogprobs/meanlogprobs/diffadvantages/meanadvantages/std
日志文件
每次训练都会在 ~/.hermes/logs/rl_training/ 下产生日志,包括 API、trainer、environment 以及 inference test 结果文件。