Hugging Face Hub 上线强化学习环境筛选与跨框架加载
Welcome RL Environments to the hub
Hugging Face Hub 新增 RL Environments 筛选,带 rl-environment 标签的数据集仓库会集中出现在 huggingface.co/datasets?
强化学习环境以带标签数据集上架 Hub,Harbor、Verifiers、OpenEnv 与 NeMo Gym 可共用任务集并读取奖励。
强化学习环境为智能体 AI 系统带来新能力,也是衡量并提升智能体性能的好方法。因此,Hugging Face Hub 现在为 RL Environments 设立了专门的位置。
环境会给智能体一项任务,对其行动以观测作出响应,并对结果评分。所得奖励可在评估期间衡量智能体的性能,或在训练期间提供学习信号。关于这一交互循环的介绍,请参见 我们关于环境的博文。在环境中,智能体将执行一组以数据集表示的任务。因此,环境大致可分为两部分:任务集和运行时。本次发布聚焦于任务集。
Hub 上的 RL 环境是一个数据集仓库,会出现在新的 RL Environments 筛选器中。使用此数据集按钮会给出在该框架中运行它的命令。没有新的仓库类型,没有注册表,也无需注册。Harbor、Verifiers 和 NVIDIA NeMo Gym 中已经有环境。
停止搭建环境注册表
每篇 RL 论文或每个框架都用自己的方式查找环境。自定义 hub、运行时注册表、独立的任务数据集,或带自定义加载器的 GitHub 任务列表。这意味着许多已发布的环境彼此隔离:如果你为一个框架发布环境,另外三个框架的用户就无法加载它。如果你想在来自另一个框架或一篇新论文的环境上训练,就需要手动移植。
我们认为这种形态是错的。环境就是任务、测试、容器和奖励规则,也就是其上附有运行时的数据。Hub 已经能存储数据、为其做版本管理、进行门控、提供预览,并服务数以百万计的人。它不需要第二套系统来存放环境。它需要一种方式来表明:“这些数据是一个环境,以及如何运行它。”
框架继续做自己擅长的事。Hub 做自己擅长的事,即托管、发现和版本管理。不必由任何人拥有这份目录。事实上,目录也可以在其他平台上运行,由 hub 提供支持。
数据集仓库托管你的环境文件。框架在本地或受支持的云后端运行它们。Hugging Face Jobs 可以运行云工作负载,而基于 Jobs 构建的 Hugging Face Sandboxes 提供交互式命令执行。标签描述兼容性并生成加载命令;添加标签不会启动 job 或 sandbox。
已发布的内容
RL Environments 筛选器。前往 huggingface.co/datasets?other=rl-environment。带有 rl-environment 标签的每个数据集都会出现在那里,无论它适用于哪个框架。
框架标签。四个环境框架已注册为数据集库:
| 标签 | 框架 |
|---|---|
harbor |
Harbor |
verifiers |
Verifiers |
openenv |
OpenEnv |
nemo-gym |
NeMo Gym |
每个框架标签都会在数据集页面上放置该框架的图标,并在 使用此数据集 中添加一段生成的片段。
一个数据集可以带有多个框架标签。这正是关键所在。标签描述兼容性,而兼容性并非互斥。列出的每个框架都必须支持仓库中的文件;添加标签并不会转换这些文件。
运行一个环境并检查其奖励
选择适用于你的框架的示例,并在满足下文所列先决条件的独立 Python 环境中运行。
Harbor:运行参考解决方案
Harbor 可以从 Hub 仓库加载任务目录。oracle 智能体会运行该任务的参考解决方案,然后由 verifier 对结果评分。它不会调用模型。
uv tool install --python 3.13 'harbor==0.21.0'
harbor run \
--repo https://huggingface.co/datasets/harborframework/terminal-bench-2.1 \
--dataset terminal-bench-2.1@2.1.0 \
--include-task-name '*regex-log' \
--agent oracle --env docker --jobs-dir results/harbor
harbor view results/harbor
查看器会显示任务的奖励、verifier 输出和日志。这样可以在你尝试模型智能体之前,先检查任务及其参考解决方案。
Verifiers:在同一任务上运行模型
verifiers v1 的 Harbor 集成可以在不同运行时(例如 Docker)中运行相同的任务目录。它还支持不同的 harness,包括一个最小化的 bash harness。
uvx --python 3.13 --from 'verifiers[harbor]' eval harbor \
--env.taskset.repo https://huggingface.co/datasets/harborframework/terminal-bench-2.1 \
--env.taskset.dataset terminal-bench-2.1@2.1.0 \
--env.taskset.tasks '["regex-log"]' \
--env.agent.runtime.type docker \
--env.agent.harness.id bash \
--model "$MODEL" \
--client.base-url "$LLM_URL"
此处 repo 是完整的 Hugging Face Git URL,而 dataset 是该仓库 registry.json 中的名称和版本。此加载器使用 Harbor 的 registry 约定,因此单独的 Hub 仓库 ID 不能同时替代这两个值。
OpenEnv:运行智能体并检查其奖励
OpenEnv 的 Harbor 集成可以使用 OpenCode 等智能体运行相同的任务目录,并一并返回 verifier 的奖励和智能体的 trace。
pip install "openenv[harbor]==0.7.0"
openenv harbor rollout \
--llm-url "$LLM_URL" \
--model "$MODEL" \
--dataset harborframework/terminal-bench-2.1 \
--task-index 0 \
--harness opencode \
--sandbox docker \
--out rollout.json
该命令会下载数据集的 tasks/ 目录,在 Docker 中运行一个任务,并写入结果。默认连接使用临时的 Gradio 隧道,以便沙箱中的智能体能够访问 OpenEnv 的模型代理。读取 verifier 结果以及模型调用次数:
import json
from pathlib import Path
result = json.loads(Path("rollout.json").read_text())[0]
print("Reward:", result["reward"])
print("Model calls:", result["n_turns"])
print("Error:", result["error"])
奖励为 None 表示未产生 verifier 奖励;在将此次运行解读为模型失败之前,请先检查 error。此路径要求使用 Harbor 任务目录。
NeMo Gym:生成回复并检查奖励
NeMo Gym 支持评估和 RL 训练:其环境会收集轨迹并计算奖励,而训练框架则更新模型权重。例如,Structured Outputs 数据集将提示与 JSON schema 配对。其 verifier 奖励的是对 schema 的遵循;它不会检查生成内容在事实上是否正确。
最棒的是,这提供了一个仓库和一个讨论标签页,人们可以在其中报告来自所有主流框架的损坏任务。因此,当作者修复一个有问题的测试时,每个框架都会在下一次拉取时获得该修复。
为你的环境添加标签
打开你的数据集卡片,并将以下内容添加到 YAML 头部:
---
pretty_name: Terminal-Bench 2.0
tags:
- rl-environment
- harbor
- verifiers
---
这就是全部集成步骤。保留 rl-environment,然后列出所有能够加载你的文件的框架。如果你的环境适用于我们尚未登记的框架,请向受支持库列表提交一个 PR。
文档中有完整参考。
已在 Hub 上
我们提交了 PR,为人们已经在其上训练的一些环境添加标签。如果你维护其中之一,合并该 PR 后,你的环境就会出现在筛选器中。
Harbor
- BeyondSWE:以 Harbor 任务目录形式提供的 BeyondSWE 基准,每个实例一个文件夹。
- Terminal-Lego:基于真实 StackOverflow 问题构建的 Terminal-Bench 风格任务,仅在通过 Docker 往返验证后保留。
- Harbor-Mix:从 Harbor adapters 池中挑选的 100 个高难度智能体任务,运行成本低于完整的多基准扫描。
- NatureBench:为 Harbor 预构建的 90 个 NatureBench 任务。
Verifiers
- Reverse-Text-RL:prime-rl 在 CI 中用于调试 RL 训练的小型反转任务。
- Multi-SWE-RL-Verified:4,703 行 Multi-SWE-RL 中有 2,232 行通过了 gold-patch 验证,涵盖 C、Go、Java、JavaScript、Rust 和 TypeScript。
- R2E-Gym-Subset-Verified:一个经过验证的 R2E-Gym 子集。
- Scale-SWE-Verified:20,181 个 Python 问题修复任务中有 17,202 个能够端到端给出干净的奖励信号。
NeMo Gym
- Workplace Assistant:一个多步骤工具使用沙盒,包含五个数据库、26 个工具和 690 项业务任务。
- Structured Outputs:带结构化输出的指令遵循。
- CFBench:多语言约束遵循。
- SysBench:多轮系统消息遵循。
接下来
第一版会为每个框架生成一段 default 代码片段。接下来是按配置生成代码片段,这样包含多组任务集的仓库就能为每一组显示正确的命令。之后我们会研究针对布局严格的框架进行结构检测。构建自定义任务 UI 也会非常酷,我们一直在这里进行实验:
更大的目标是让框架打标签在各处自动完成。OpenEnv 已经在上传时做到了这一点。如果你维护 Harbor、Verifiers、Nemo Gym 或任何其他环境框架,请在推送路径中添加这些标签。只需几行代码,你的用户发布的每个环境就会对其他人可见。
如果你训练智能体,去浏览筛选器。如果你构建环境,请发布并标记它们,无论它们涵盖编程、工具使用、游戏、机器人还是其他任务。请包含文件、可运行的运行命令,以及产生奖励的规则,以便他人使用。如果你的框架缺失,请将其贡献到受支持库列表。
来源:Hugging Face Blog · huggingface.co