知识引擎/Hermes 知识引擎/RL Training(强化学习训练)

原文链接:RL Training sidebar position: 13 title: "RL Training" description: "Reinforcement learning on agent behaviors with Tinker-Atropos — environment discovery,

> 原文链接:RL Training


sidebar_position: 13 title: "RL Training" description: "Reinforcement learning on agent behaviors with Tinker-Atropos — environment discovery, training, and evaluation"

RL Training(强化学习训练)

Hermes Agent 包含一个基于 Tinker-Atropos 构建的集成 RL(Reinforcement Learning,强化学习)训练管道。这支持使用 GRPO(Group Relative Policy Optimization,组相对策略优化)配合 LoRA 适配器在特定环境任务上训练语言模型,完全通过 Agent 的工具接口进行编排。

概述

RL 训练系统由三个组件组成:

  1. Atropos — 轨迹 API 服务器,负责协调环境交互、管理 Rollout 组和计算优势值
  2. Tinker — 训练服务,负责处理模型权重、LoRA 训练、采样/推理和优化器步骤
  3. 环境 — 定义任务、评分和奖励函数的 Python 类(如 GSM8K 数学问题)

Agent 可以发现环境、配置训练参数、启动训练运行和监控指标——全部通过一组 rl_* 工具完成。

要求

RL 训练需要:

  • Python >= 3.11(Tinker 包要求)
  • TINKER_API_KEY — Tinker 训练服务的 API 密钥
  • WANDB_API_KEY — Weights & Biases 指标追踪的 API 密钥
  • tinker-atropos 子模块(位于 Hermes 根目录的 tinker-atropos/
# 设置 API 密钥
hermes config set TINKER_API_KEY your-tinker-key
hermes config set WANDB_API_KEY your-wandb-key

当两个密钥都存在且 Python >= 3.11 可用时,rl 工具集会自动启用。

可用工具

工具描述
rl_list_environments发现可用的 RL 环境
rl_select_environment选择一个环境并加载其配置
rl_get_current_config查看可配置和锁定的字段
rl_edit_config修改可配置的训练参数
rl_start_training启动训练运行(产生 3 个进程)
rl_check_status监控训练进度和 WandB 指标
rl_stop_training停止正在运行的训练任务
rl_get_results获取最终指标和模型权重路径
rl_list_runs列出所有活跃和已完成的运行
rl_test_inference使用 OpenRouter 快速推理测试

工作流程

1. 发现环境

列出可用的 RL 环境

Agent 调用 rl_list_environments(),该函数使用 AST 解析扫描 tinker-atropos/tinker_atropos/environments/,查找继承自 BaseEnv 的 Python 类。每个环境定义:

  • 数据集加载 — 训练数据的来源(如 HuggingFace 数据集)
  • 提示构建 — 如何为模型格式化条目
  • 评分/验证 — 如何评估模型输出并分配奖励

2. 选择和配置

选择 GSM8K 环境并显示配置

Agent 调用 rl_select_environment("gsm8k_tinker"),然后调用 rl_get_current_config() 查看所有参数。

配置字段分为两类:

可配置字段(可以修改):

  • group_size — 每个条目的补全数量(默认:16)
  • batch_size — 训练批次大小(默认:128)
  • wandb_name — WandB 运行名称(自动设为 {env}-{timestamp}
  • 其他环境特定参数

锁定字段(基础设施设置,不可更改):

  • tokenizer_name — 模型分词器(如 Qwen/Qwen3-8B
  • rollout_server_url — Atropos API URL(http://localhost:8000
  • max_token_length — 最大 Token 长度(8192)
  • max_num_workers — 最大并行工作数(2048)
  • total_steps — 总训练步数(2500)
  • lora_rank — LoRA 适配器秩(32)
  • learning_rate — 学习率(4e-5)
  • max_token_trainer_length — 训练器最大 Token 数(9000)

3. 启动训练

启动训练运行

Agent 调用 rl_start_training(),该函数会:

  1. 生成一个 YAML 配置文件,将锁定设置与可配置覆盖合并
  2. 创建唯一的运行 ID
  3. 产生三个进程:
    • Atropos API 服务器run-api)— 轨迹协调
    • Tinker 训练器launch_training.py)— LoRA 训练 + 端口 8001 上的 FastAPI 推理服务器
    • 环境environment.py serve)— 连接到 Atropos 的选定环境

进程以交错延迟启动(API 5 秒,训练器 30 秒,环境再等 90 秒)以确保正确的初始化顺序。

4. 监控进度

检查训练运行 abc12345 的状态

Agent 调用 rl_check_status(run_id),该函数报告:

  • 进程状态(3 个进程各自的运行/退出状态)
  • 运行时间
  • WandB 指标(步数、奖励均值、正确百分比、评估准确率)
  • 用于调试的日志文件位置

:::note 速率限制 状态检查限制为每个运行 ID 每 30 分钟一次。这可以防止在耗时数小时的长训练任务中过度轮询。 :::

5. 停止或获取结果

停止训练运行
# 或
获取运行 abc12345 的最终结果

rl_stop_training() 以相反顺序(环境 → 训练器 → API)终止所有三个进程。rl_get_results() 获取最终的 WandB 指标和训练历史。

推理测试

在提交完整的训练运行之前,你可以使用 rl_test_inference 测试环境是否正常工作。这使用 OpenRouter 运行几步推理和评分——不需要 Tinker API,只需要 OPENROUTER_API_KEY

用推理测试选定的环境

默认配置:

  • 3 步 × 16 次补全 = 每个模型 48 次 Rollout
  • 测试 3 个不同规模的模型以确保鲁棒性:
    • qwen/qwen3-8b(小型)
    • z-ai/glm-4.7-flash(中型)
    • minimax/minimax-m2.7(大型)
  • 总计:约 144 次 Rollout

这验证了:

  • 环境正确加载
  • 提示构建正常工作
  • 推理响应解析在不同模型规模下都鲁棒
  • 验证器/评分逻辑产生有效奖励

Tinker API 集成

训练器使用 Tinker API 进行模型训练操作:

  • ServiceClient — 创建训练和采样客户端
  • 训练客户端 — 处理带重要性采样损失的前向-后向传播、优化器步骤(Adam)和权重检查点
  • 采样客户端 — 使用最新训练权重提供推理

训练循环:

  1. 从 Atropos 获取一批 Rollout(Prompt + 补全 + 分数)
  2. 转换为带填充 logprobs 和优势值的 Tinker Datum 对象
  3. 运行带重要性采样损失的前向-后向传播
  4. 执行优化器步骤(Adam:lr=4e-5,β1=0.9,β2=0.95)
  5. 保存权重并为下一步推理创建新的采样客户端
  6. 将指标记录到 WandB

架构图

flowchart LR
    api["Atropos API<br/>run-api<br/>端口 8000"]
    env["环境<br/>BaseEnv 实现"]
    infer["OpenAI / sglang<br/>推理 API<br/>端口 8001"]
    trainer["Tinker 训练器<br/>LoRA 训练 + FastAPI"]

    env <--> api
    env --> infer
    api -->|"批次: tokens, scores, logprobs"| trainer
    trainer -->|"提供推理"| infer

创建自定义环境

创建新的 RL 环境:

  1. tinker-atropos/tinker_atropos/environments/ 中创建 Python 文件
  2. 定义一个继承自 BaseEnv 的类
  3. 实现必需的方法:
    • load_dataset() — 加载你的训练数据
    • get_next_item() — 向模型提供下一个条目
    • score_answer() — 对模型输出进行评分并分配奖励
    • collect_trajectories() — 收集并返回轨迹
  4. 可选地定义一个继承自 BaseEnvConfig 的自定义配置类

参考现有的 gsm8k_tinker.py 作为模板。Agent 可以帮助你创建新环境——它可以读取现有环境文件、检查 HuggingFace 数据集和编写新的环境代码。

WandB 指标

训练运行使用以下关键指标记录到 Weights & Biases:

指标描述
train/loss训练损失(重要性采样)
train/learning_rate当前学习率
reward/mean跨组的平均奖励
logprobs/mean平均参考 logprobs
logprobs/mean_training平均训练 logprobs
logprobs/diffLogprob 漂移(参考 - 训练)
advantages/mean平均优势值
advantages/std优势值标准差

日志文件

每次训练运行在 ~/.hermes/logs/rl_training/ 中生成日志文件:

logs/
├── api_{run_id}.log        # Atropos API 服务器日志
├── trainer_{run_id}.log    # Tinker 训练器日志
├── env_{run_id}.log        # 环境进程日志
└── inference_tests/        # 推理测试结果
    ├── test_{env}_{model}.jsonl
    └── test_{env}_{model}.log

这些日志在训练失败或产生意外结果时对于调试非常有价值。

Continue Exploring

继续探索

这不是课程式的上一篇下一篇,而是从当前节点向外继续漫游。

核心功能

工具与工具集 (Tools & Toolsets)

Tools are functions that extend the agent's capabilities. They're organized into logical toolsets that can be enabled or disabled per platform.

核心功能

记忆系统 (Memory System)

Hermes Agent has bounded, curated memory that persists across sessions. This lets it remember your preferences, your projects, your environment, and things it h

核心功能

技能系统 (Skill System)

技能是 Hermes 的可复用知识模块。每个技能都是一个 Markdown 文件,在激活时注入到 Agent 的上下文中——为其提供持久的工作流、领域知识和行为指南,而无需将这些内容塞入系统提示中。 技能是可热插拔的:你可以在会话中途安装、创建、编辑和切换技能。它们在 CLI、消息平台和 Gateway 后台任务中均可

核心功能

MCP 集成 (MCP Integration)

MCP 让 Hermes Agent 连接到外部工具服务器,使 Agent 能够使用 Hermes 本身之外的工具——GitHub、数据库、文件系统、浏览器栈、内部 API 等。 如果你曾想让 Hermes 使用一个已经存在于其他地方的工具,MCP 通常是最简洁的方式。 - 无需先编写原生 Hermes 工具即可访问外

核心功能

ACP 编辑器集成 (ACP Editor Integration)

Hermes Agent 可以作为 ACP 服务器运行,让 ACP 兼容的编辑器通过 stdio 与 Hermes 通信,并渲染: - 聊天消息 - 工具活动 - 文件差异 - 终端命令 - 审批提示 - 流式思考 / 响应片段 当你希望 Hermes 像编辑器原生的编程 Agent 一样工作,而不是独立的 CLI 或

核心功能

API 服务器 (API Server)

The API server exposes hermes-agent as an OpenAI-compatible HTTP endpoint. Any frontend that speaks the OpenAI format — Open WebUI, LobeChat, LibreChat, NextCha

Core Features

核心功能

Hermes 的能力核心:工具、记忆、技能、委派、自动化、语音、插件与浏览器控制。

31 篇文档30 个节点

当前节点

RL Training(强化学习训练)

同主题继续探索

工具与工具集 (Tools & Toolsets)

Tools are functions that extend the agent's capabilities. They're organized into logical toolsets that can be enabled or disabled per platform.

记忆系统 (Memory System)

Hermes Agent has bounded, curated memory that persists across sessions. This lets it remember your preferences, your projects, your environment, and things it h

技能系统 (Skill System)

技能是 Hermes 的可复用知识模块。每个技能都是一个 Markdown 文件,在激活时注入到 Agent 的上下文中——为其提供持久的工作流、领域知识和行为指南,而无需将这些内容塞入系统提示中。 技能是可热插拔的:你可以在会话中途安装、创建、编辑和切换技能。它们在 CLI、消息平台和 Gateway 后台任务中均可

MCP 集成 (MCP Integration)

MCP 让 Hermes Agent 连接到外部工具服务器,使 Agent 能够使用 Hermes 本身之外的工具——GitHub、数据库、文件系统、浏览器栈、内部 API 等。 如果你曾想让 Hermes 使用一个已经存在于其他地方的工具,MCP 通常是最简洁的方式。 - 无需先编写原生 Hermes 工具即可访问外

ACP 编辑器集成 (ACP Editor Integration)

Hermes Agent 可以作为 ACP 服务器运行,让 ACP 兼容的编辑器通过 stdio 与 Hermes 通信,并渲染: - 聊天消息 - 工具活动 - 文件差异 - 终端命令 - 审批提示 - 流式思考 / 响应片段 当你希望 Hermes 像编辑器原生的编程 Agent 一样工作,而不是独立的 CLI 或

API 服务器 (API Server)

The API server exposes hermes-agent as an OpenAI-compatible HTTP endpoint. Any frontend that speaks the OpenAI format — Open WebUI, LobeChat, LibreChat, NextCha

相关节点

工具与工具集 (Tools & Toolsets)

Tools are functions that extend the agent's capabilities. They're organized into logical toolsets that can be enabled or disabled per platform.

记忆系统 (Memory System)

Hermes Agent has bounded, curated memory that persists across sessions. This lets it remember your preferences, your projects, your environment, and things it h

技能系统 (Skill System)

技能是 Hermes 的可复用知识模块。每个技能都是一个 Markdown 文件,在激活时注入到 Agent 的上下文中——为其提供持久的工作流、领域知识和行为指南,而无需将这些内容塞入系统提示中。 技能是可热插拔的:你可以在会话中途安装、创建、编辑和切换技能。它们在 CLI、消息平台和 Gateway 后台任务中均可

MCP 集成 (MCP Integration)

MCP 让 Hermes Agent 连接到外部工具服务器,使 Agent 能够使用 Hermes 本身之外的工具——GitHub、数据库、文件系统、浏览器栈、内部 API 等。 如果你曾想让 Hermes 使用一个已经存在于其他地方的工具,MCP 通常是最简洁的方式。 - 无需先编写原生 Hermes 工具即可访问外

ACP 编辑器集成 (ACP Editor Integration)

Hermes Agent 可以作为 ACP 服务器运行,让 ACP 兼容的编辑器通过 stdio 与 Hermes 通信,并渲染: - 聊天消息 - 工具活动 - 文件差异 - 终端命令 - 审批提示 - 流式思考 / 响应片段 当你希望 Hermes 像编辑器原生的编程 Agent 一样工作,而不是独立的 CLI 或

API 服务器 (API Server)

The API server exposes hermes-agent as an OpenAI-compatible HTTP endpoint. Any frontend that speaks the OpenAI format — Open WebUI, LobeChat, LibreChat, NextCha