Главная/Блог/Обзор/RL-окружения на Hugging Face Hub:…
Обзор3 мин чтения · 5 октября 2026 г.

RL-окружения на Hugging Face Hub: запуск, бенчмарки и интеграция

Hugging Face Hub внедрил фильтр RL-окружений. Разбираем, как запускать Harbor, Verifiers, OpenEnv и NeMo Gym на одном датасете, экономя время на портировании.

RL-окружения на Hugging Face Hub: запуск, бенчмарки и интеграция

Раньше каждое фреймворк для обучения с подкреплением (RL) хранил свои окружения в изолированных репозиториях. Это создавало фрагментацию: датасет для Harbor не работал в Verifiers без ручного портирования. Hugging Face Hub решил эту проблему, внедрив тег rl-environment. Теперь любое датасет-репо с этим тегом становится доступным для всех основных фреймворков через единый интерфейс. Это не новый тип репозитория, а способ маркировки существующих датасетов, где данные (задачи) отделены от логики выполнения (рантайма).

01Архитектура: Данные vs Рантайм

Ключевое изменение — разделение ответственности. Hugging Face Hub хранит только данные: задачи, тесты и метаданные. Логика выполнения (верификация, награды, взаимодействие с моделью) остается в фреймворках. Это позволяет автору опубликовать окружение один раз, а использовать его в Harbor, Verifiers, OpenEnv или NeMo Gym одновременно. Совместимость определяется тегами в YAML-заголовке датасета.

💡
Единая точка правки. Если задача в датасете сломана, автор исправляет её в одном месте. Все фреймворки, использующие этот тег, автоматически получают исправление при следующей загрузке.

02Настройка окружения

Для работы с большинством примеров ниже требуется актуальная версия Python. Рекомендуется использовать uv для быстрого управления зависимостями. Убедитесь, что у вас установлен Docker, так как большинство агентов запускаются в изолированных контейнерах для безопасности и воспроизводимости.

03Harbor: Запуск reference-решений

Harbor позволяет запускать задачи без участия LLM, используя "orakle-agent" (reference-решение). Это идеальный способ проверить корректность задачи и верификатора перед тем, как запускать тяжелые модели. Команда ниже загружает датасет и запускает тест на задаче, содержащей "regex-log".

terminalbash
uv tool install 'harbor'

harbor run \
    --repo https://huggingface.co/datasets/harborframework/terminal-bench \
    --dataset terminal-bench \
    --include-task-name '*regex-log' \
    --agent oracle \
    --env docker --jobs-dir results/harbor

harbor view results/harbor

Команда harbor view откроет локальный веб-интерфейс, где можно увидеть награду (reward), вывод верификатора и логи выполнения. Если награда положительная, задача работает корректно.

04Verifiers: Оценка моделей через Docker

Фреймворк Verifiers поддерживает запуск агентов через различные хосты, включая Docker. Ниже приведен пример запуска модели через API (указанное в переменных окружения $MODEL и $LLM_URL) на той же задаче из Terminal-Bench.

terminalbash
uvx --from 'verifiers[harbor]' eval \
    harbor \
    --env.taskset.repo https://huggingface.co/datasets/harborframework/terminal-bench \
    --env.taskset.dataset terminal-bench \
    --env.taskset.tasks '["regex-log"]' \
    --env.agent.runtime.type docker \
    --env.agent.harness.id bash \
    --model $MODEL \
    --client.base-url $LLM_URL
⚠️
Важно про пути. Аргументы --env.taskset.repo и --env.taskset.dataset требуют полного Git-URL и имени датасета. Просто ID репозитория (например, user/dataset) здесь не сработает, так как загрузчик опирается на структуру registry.json.

05OpenEnv: Интеграция с агентами

OpenEnv предоставляет удобный интерфейс для запуска агентов (например, OpenCode) и получения детальной статистики, включая количество токенов/вызовов модели. Результат сохраняется в JSON.

terminalbash
pip install "openenv[harbor]"

openenv harbor rollout \
    --llm-url $LLM_URL \
    --model $MODEL \
    --dataset harborframework/terminal-bench \
    --task-index 0 \
    --harness opencode \
    --sandbox docker \
    --out rollout.json

После выполнения проверьте файл rollout.json с помощью Python:

terminalpython
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"])

Если reward равен None, проверьте поле error. Это может означать сбой верификатора или ошибку сети, а не просто плохую работу модели.

06NeMo Gym: Структурированные выводы

NeMo Gym ориентирован на RL-обучение и сбор траекторий. Пример с датасетом Structured Outputs показывает, как верификатор оценивает соответствие JSON-схеме. Важно понимать: верификатор проверяет только структуру (валидность JSON), а не фактическую правильность контента.

07Кому подойдёт / что запустится

Эта интеграция полезна для:

  • Исследователей RL: для быстрого бенчмаркинга новых моделей на стандартизированных наборах задач (Terminal-Bench, SWE-bench) без написания кастомных загрузчиков.
  • Инженеров ML: для отладки пайплайнов обучения. Возможность запустить "oracle" (reference) решение через Harbor позволяет убедиться, что среда работает, прежде чем тратить GPU-время на обучение модели.
  • Разработчиков агентов: для тестирования агентов в изолированных Docker-средах с гарантией воспроизводимости.

На Hub уже доступны для тегирования популярные датасеты: BeyondSWE, Terminal-Lego, NatureBench (для Harbor) и Multi-SWE-RL-Verified, Scale-SWE-Verified (для Verifiers). Для использования достаточно добавить теги rl-environment и имя фреймворка (например, harbor, ve

Источник: Hugging Face ↗