跳到主要内容

强化学习训练

Hermes Agent 内置了一套基于 Tinker-Atropos 的 RL(强化学习)训练流水线。它允许你使用 GRPO 与 LoRA adapters,在特定环境任务上训练语言模型,并通过智能体工具接口来完成环境发现、训练与监控。

概览

系统由三部分组成:

  1. Atropos — 轨迹 API server,协调环境交互、rollout groups 与 advantage 计算
  2. Tinker — 训练服务,负责模型权重、LoRA 训练、采样 / 推理与优化器步骤
  3. 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

可用工具

ToolDescription
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_sizebatch_sizewandb_name
  • 锁定字段:如 tokenizer_namerollout_server_urlmax_token_lengthtotal_stepslearning_rate

3. 启动训练

Start the training run

rl_start_training() 会:

  1. 生成 YAML 配置文件
  2. 创建唯一 run ID
  3. 启动三个进程: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 环境:

  1. tinker-atropos/tinker_atropos/environments/ 新建 Python 文件
  2. 定义继承 BaseEnv 的类
  3. 实现 load_dataset()get_next_item()score_answer()collect_trajectories()
  4. 如有需要,可自定义 BaseEnvConfig

WandB 指标

常见指标包括:

  • train/loss
  • train/learning_rate
  • reward/mean
  • logprobs/mean
  • logprobs/diff
  • advantages/mean
  • advantages/std

日志文件

每次训练都会在 ~/.hermes/logs/rl_training/ 下产生日志,包括 API、trainer、environment 以及 inference test 结果文件。