Hugging Face Hub 上线 RL Environments 专区
Welcome RL Environments to the hub
Hugging Face Hub 为 RL Environments 推出专门入口,环境以带 rl-environment 标签的数据集仓库形式托管,无需新仓库类型、注册表或注册。
原文说明 RL 环境以数据集形式托管在 Hub 上,并给出 Harbor、Verifiers、OpenEnv、NeMo Gym 四个框架的运行命令,可据此跨框架复用环境。
强化学习环境为智能体 AI 系统赋予了新的能力,也是衡量和提升智能体性能的绝佳方式。因此,Hugging Face Hub 现在为 RL 环境设立了一个专门的区域。
环境为智能体分配任务,用观测结果回应其动作,并对结果进行评分。由此产生的奖励既可以在评估中衡量智能体的表现,也可以在训练中提供学习信号。关于这一交互循环的介绍,请参阅我们关于环境的博客文章。在环境内部,智能体会执行一组以数据集形式呈现的任务。因此,环境大体上可以分为两部分:任务集和运行时。在本次发布中,我们聚焦于任务集。
Hub 上的 RL 环境是一个数据集仓库,会出现在新的RL Environments 筛选器中。Use this dataset 按钮会给出在该框架中运行它的命令。没有新的仓库类型,没有注册表,也不需要注册。Harbor、Verifiers 和 NVIDIA NeMo Gym 中已经有一些环境了。
别再自建环境注册表了
每一篇 RL 论文或每一个框架都用各自的方式查找环境。自建 hub、运行时注册表、独立的任务数据集,或者带有自定义加载器的 GitHub 任务列表。这意味着许多已发布的环境是彼此孤立的:如果你为一个框架发布了环境,其他三个框架的用户就无法加载它。如果你想用另一个框架或某篇新论文中的环境进行训练,就得手动移植。
我们认为这种形态是错的。环境是任务、测试、容器和奖励规则,本质上是数据加上一层运行时。Hub 已经能够存储数据、对其进行版本管理、门控、预览,并服务于数百万人。它不需要第二套系统来承载环境。它需要的只是一种方式来说明“这些数据是一个环境,下面是运行它的方法”。
框架继续做它们擅长的事。Hub 做它擅长的事,即托管、发现和版本管理。没有人需要拥有这个目录。事实上,目录也可以在其他平台上运行,由 hub 提供支持。
数据集仓库托管你的环境文件。框架在本地或受支持的云后端上运行它们。Hugging Face Jobs 可以运行云端工作负载,而构建于 Jobs 之上的 Hugging Face Sandboxes 提供交互式命令执行。标签描述兼容性并生成加载命令;添加标签不会启动任务或沙箱。
本次发布内容
RL Environments 筛选器。前往 huggingface.co/datasets?other=rl-environment。每个带有 rl-environment 标签的数据集都会出现在那里,无论它适用于哪个框架。
框架标签。四个环境框架已注册为数据集库:
| 标签 | 框架 |
|---|---|
harbor |
Harbor |
verifiers |
Verifiers |
openenv |
OpenEnv |
nemo-gym |
NeMo Gym |
每个框架标签都会在数据集页面上显示该框架的图标,并在 Use this dataset 中添加一段生成的代码片段。
一个数据集可以带有多个框架标签。这正是重点所在。标签描述兼容性,而兼容性并非排他的。每个列出的框架都必须支持该仓库中的文件;添加标签并不会转换这些文件。
运行环境并检查其奖励
选择适用于你的框架的示例,并在单独的 Python 环境中运行它,同时安装下面列出的前置依赖。
Harbor:运行参考解决方案
Harbor 可以从 Hub 仓库加载任务目录。oracle agent 运行任务的参考解决方案,然后由验证器对结果进行评分。它不会调用模型。
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
查看器会显示任务的奖励、验证器输出和日志。这会在你尝试模型 agent 之前检查任务及其参考解决方案。
验证器:在同一任务上运行模型
verifiers v1 的 Harbor 集成可以在不同的运行时(例如 Docker)中运行相同的任务目录。它还支持不同的测试框架,包括一个最小的 bash 测试框架。
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 的注册表约定,因此仅凭裸 Hub 仓库 ID 无法同时替代这两个值。
OpenEnv:运行 agent 并检查其奖励
OpenEnv 的 Harbor 集成 可以使用 OpenCode 等 agent 运行相同的任务目录,并返回验证器的奖励以及 agent 的轨迹。
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 隧道,以便沙箱中的 agent 可以访问 OpenEnv 的模型代理。读取验证器结果和模型调用次数:
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 意味着没有产生验证器奖励;在将此次运行解释为模型失败之前,请检查 error。此路径需要 Harbor 任务目录。
NeMo Gym:生成响应并检查奖励
NeMo Gym 支持评估和 RL 训练:其环境收集轨迹并计算奖励,而训练框架则更新模型权重。例如,Structured Outputs 数据集 将提示与 JSON schema 配对。其验证器奖励对 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 适配器池中挑选的 100 个高难度 agentic 任务,比完整的多基准扫描运行成本更低。
- NatureBench:为 Harbor 预构建的 90 个 NatureBench 任务。
Verifiers
- Reverse-Text-RL:prime-rl 在 CI 中用于调试 RL 训练的小型反转任务。
- Multi-SWE-RL-Verified:Multi-SWE-RL 的 4,703 行中通过 C、Go、Java、JavaScript、Rust 和 TypeScript 金标补丁验证的 2,232 行。
- 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