LeRobot documentation

Wall-OSS-0.5

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.7.0).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Wall-OSS-0.5

Wall-OSS-0.5 — это модель зрения, языка и действий объёмом 4B от XSquare Robot. Она объединяет базовую модель зрения и языка Qwen2.5-VL с непрерывным экспертом действий на основе flow-matching.

LeRobot предоставляет Wall-OSS-0.5 через тип политики wall_oss_05 и контрольную точку lerobot/wall-oss-0.5.

wall_oss_05 и существующая политика wall_x нацелены на разные релизы WALL. Используйте wall_oss_05 с чекпоинтом Wall-OSS-0.5.

Обзор модели

Wall-OSS-0.5 формирует действия на основе наблюдений камеры, состояния робота и задачи, заданной на естественном языке. Политика предсказывает блок непрерывных действий с помощью flow matching. Её vision-language-эксперт также может генерировать текст для подписей, визуального вопросно-ответного взаимодействия, привязки объектов и языковых подзадач.

Использованная в релизе модель:

  • каноническое представление состояния и действия размерностью 26;
  • 32-шаговые блоки действий;
  • нормализация по диапазону q01/q99;
  • 10-шаговый флоу-сэмплер;
  • Qwen2.5-VL для визуальных и языковых входных данных.

Базовая контрольная точка предназначена для дообучения на целевом роботе и наборе данных задачи перед развёртыванием.

Что охватывает интеграция LeRobot

  • Стандартная конфигурация policy.type=wall_oss_05 и загрузка контрольной точки с Hub.
  • Нативная обработка данных зрения и языка в Qwen2.5-VL и эксперты по действиям Wall.
  • Непрерывное обучение потока с x-предсказанием и 10-шаговая выборка методом Эйлера.
  • Текстовая кросс-энтропия и совместная дообучение текста и действий на основе рецептов.
  • Нативная генерация текста для VQA, привязки к объектам, подписей и языковых подзадач.
  • Прямая генерация текста через интерактивный rollout в LeRobot.
  • Канонические входные данные состояния и действия 26D с использованием процессоров LeRobot q01/q99.
  • Довыучивание с помощью lerobot-train и инференс через стандартные API политик.

Требования к установке

Wall-OSS-0.5 требует NVIDIA GPU с поддержкой CUDA. Установите LeRobot с зависимостями для политики:

pip install "lerobot[wall_oss_05]"

Для исходного кода LeRobot:

uv sync --extra wall_oss_05

Политика реализована нативно в LeRobot. Единственной зависимостью, специфичной для этой политики, является Transformers; отдельное клонирование Wall-X не требуется. Обработка, основанная на рецептах, также требует установки дополнительных компонентов датасета. Для языковых запросов или обучения установите uv sync --extra wall_oss_05 --extra training (обучение включает поддержку датасета). Для обработки только действий без дополнительных компонентов датасета установите --policy.recipe=null.

Чекпоинты

ВариантЧекпоинт LeRobotПредназначение
Base 4Blerobot/wall-oss-0.5Каноническая дообучение и развёртывание 26D

Чекпоинт содержит конфигурацию политики, процессор и токенизатор Qwen, веса модели, сохранённые препроцессоры и постпроцессоры LeRobot, статистику нормализации и метаданные конвертации. Это базовый чекпоинт: перед публикацией результатов на уровне задачи выполните дообучение на целевом роботе и задаче.

Использование

Выберите политику с помощью:

--policy.type=wall_oss_05

Инициализация из контрольной точки LeRobot с помощью:

--policy.path=lerobot/wall-oss-0.5

Используйте --policy.path=your-org/your-finetuned-checkpoint при оценке или развёртывании сохранённого чекпоинта LeRobot.

Текст и VQA

Wall-OSS-0.5 использует общий контракт текста политики. Runtime передаёт query_kind и query_text, а затем запускает стандартный процессор входных данных политики:

request = {
    **observation,
    "query_kind": "vqa",
    "query_text": "Which object is closest to the right gripper?",
}
processed_batch = preprocessor(request)
answer = policy.generate_text(processed_batch)

vqa сохраняет вопрос вызывающей стороны. next_subtask применяет рецепт, принадлежащий WallOSS05Config. Политика наследует generate_text(processed_batch) и переопределяет supports_text_generation и generate_text. Генерация использует связанную головку словаря Qwen и эксперта зрительно-языковой модели из контрольной точки; она не вызывает отдельную VLM.

Языковой рантайм может сгенерировать подзадачу, а затем сделать предсказание действия Wall условным относительно неё:

lerobot-rollout \
  --policy.path=your-org/your-finetuned-wall-oss-0.5 \
  --policy.device=cuda \
  --task="clear the table" \
  --interactive=true

После /start используйте /vqa <question>, /autosteer <goal> или /subtask <text>.

Wall сохраняет полезные возможности по визуальному вопросно-ответному взаимодействию (VQA) и привязке к объектам (grounding), однако он специализирован для наблюдений робота и не предназначен для замены универсальных VLM.

Требования к данным

Wall-OSS-0.5 внутренне работает с канонической раскладкой состояния и действий размерностью 26D. Более узкие признаки состояния и действий нормализуются с использованием статистики их исходных наборов данных, а затем дополняются нулями до 26D для модели. Измерения действий, дополненные нулями, исключаются из функции потерь при обучении. Выходные данные обрезаются до ширины действий набора данных перед денормализацией: состояние 8D с действиями 7D возвращает действия 7D. postprocess_action_dim может применить дополнительную обрезку выходных данных. Дополнение нулями не переназначает координаты суставов или соглашения контроллера; предоставляйте совместимые значения.

Настройте входные изображения с помощью camera_key_mapping. Это сопоставление связывает каждую изображение-фичу LeRobot со слотом камеры Wall. В контрольной точке по умолчанию используются face_view и right_wrist_view.

Строка с задачей набора данных передаётся в политику в качестве языковой инструкции. Используйте согласованные описания задач при записи, обучении и оценке.

Нормализация состояний и действий q01/q99 обрабатывается сохранёнными препроцессором и постпроцессором LeRobot. Во время инференса восстанавливаются статистические данные, сохранённые вместе с чекпоинтом. При дообучении с помощью lerobot-train статистика обучающего набора данных заменяет статистику предобученного процессора и сохраняется вместе с новым чекпоинтом.

Опубликованный контрольный пункт использует словарь состояния нативной политики LeRobot и текущий формат пре/постпроцессора. Загрузка и сохранение весов выполняются через общий код персистентности политики, включая распределённые сборы и механизм записи на главном процессе. Конфигурация сохраняет стабильную ссылку на актив токенизатора и может быть загружена из любого рабочего каталога.

Обучение

Довыучите базовый контрольный пункт с помощью стандартной команды обучения LeRobot:

Пример команды обучения

lerobot-train \
  --dataset.repo_id=your-org/your-dataset \
  --policy.path=lerobot/wall-oss-0.5 \
  --policy.repo_id=your-org/wall-oss-0.5-your-task \
  --output_dir=outputs/train/wall_oss_05 \
  --job_name=wall_oss_05_finetune \
  --policy.device=cuda \
  --batch_size=1 \
  --steps=20000

Начните с небольшого размера батча, так как Wall-OSS-0.5 — это модель с 4 млрд параметров. Увеличивайте его в соответствии с доступной памятью GPU или используйте накопление градиентов через конфигурацию распределённого обучения.

Для наборов данных с различными именами камер сопоставьте их ключи признаков со слотами камер Wall. Например, добавьте следующий параметр для top и wrist:

--policy.camera_key_mapping='{"observation.images.top":"face_view","observation.images.wrist":"right_wrist_view"}'

Fine-tuning определяет формы камер и ширину состояний/действий из набора данных, в том числе при загрузке базовой контрольной точки с помощью --policy.path.

Обучение с языковыми аннотациями

Рецепт, принадлежащий WallOSS05Config, по умолчанию использует необязательные языковые столбцы LeRobot. Его рецепт для подзадач с суставами контролирует ответ ассистента и непрерывный блок действий в одной каузальной последовательности:

lerobot-train \
  --dataset.repo_id=your-org/your-language-annotated-dataset \
  --policy.path=lerobot/wall-oss-0.5 \
  --policy.use_language_recipe=true \
  --policy.text_loss_weight=0.1 \
  --policy.flow_loss_weight=1.0 \
  --policy.device=cuda \
  --batch_size=1 \
  --steps=20000

Потоки рецептов определяют, какие цели выполняются для каждого примера:

  • целевой ход ассистента получает кросс-энтропию следующего токена;
  • обход low_level получает непрерывное управление потоком-действием; и
  • Рецепт low_level с целевым ответом ассистента получает оба типа потерь, при этом токены действий обращаются к контролируемому тексту.

В качестве языковых меток используются только целевой payload ассистента и его токен <|im_end|>. Промпты пользователя, padding, изображения, проприоцепция и токены непрерывных action-query маскируются при вычислении text cross-entropy. Строки без аннотаций сохраняют исходный prompt и loss, содержащие только действия. Чтобы отключить рендеринг аннотаций, установите use_language_recipe=false, а чтобы отключить оба рендерера рецепта — recipe=null. Явно заданный recipe_path переопределяет встроенный рецепт. При новом fine-tuning процессоры пересобираются на основе этого рецепта и статистики обучения; при возобновлении обучения и rollout восстанавливаются сохранённые в checkpoint процессоры и статистика.

См. Языковые столбцы и рецепты для схемы аннотаций и структуры рецептов. recipe_path может указывать на явный внешний файл переопределения в формате YAML; LeRobot не предоставляет общих файлов рецептов по умолчанию.

Ключевые параметры конфигурации

ПараметрПо умолчаниюОписание
pretrained_name_or_pathlerobot/wall-oss-0.5Источник ресурсов токенизатора и обработчика изображений
tokenizer_revisionNoneНеобязательный фикс базового токенизатора, отдельный от ревизии весов
chunk_size32Количество предсказываемых действий на чанк
n_action_steps32Количество предсказанных действий, выполненных до повторного планирования
camera_key_mappingвиды лица и правой кистиСвязывает ключи признаков изображения со слотами камеры модели
use_language_recipetrueВключает рецепт, сохранённый в конфигурации политики
recipe_pathNoneНеобязательное явное переопределение внешнего рецепта
text_loss_weight0.1Вес для кросс-энтропии супервизированных токенов ассистента
flow_loss_weight1.0Вес для непрерывной потери потока-действия
tokenizer_max_length1000Максимальная длина последовательности токенов для совместной обработки зрения, языка и действий
deviceautoИспользуйте cuda для Wall-OSS-0.5

Оценка и инференс

Используйте дообученную контрольную точку в стандартных рабочих процессах оценки LeRobot или проигрывания на роботе, передав её репозиторий на Hub или локальный каталог в качестве пути к политике.

Wall-OSS-0.5 генерирует непрерывные последовательности действий с помощью своего flow-сэмплера. Текущая политика поддерживает ветвь непрерывного потока; ветвь авто-регрессивных действий не доступна.

Каждый фрагмент кодирует свои изображения с камеры и один раз заполняет префикс наблюдения/текста. Десять шагов Эйлера повторно используют ключи и значения префикса и декодируют только токены действия. Кэш пересоздаётся для каждого нового наблюдения.

Для поддерживаемого симулятора укажите дообученный контрольный пункт и параметры, специфичные для среды, с помощью lerobot-eval:

lerobot-eval \
  --policy.path=your-org/your-finetuned-wall-oss-0.5 \
  --policy.device=cuda \
  --env.type=<environment> \
  --env.task=<task> \
  --eval.batch_size=1 \
  --eval.n_episodes=10

Не оценивайте базовый контрольный пункт так, как если бы он был политикой, специфичной для задачи. Каноническое представление, статистика нормализации и распределение задач должны совпадать с контрольным пунктом, прошедшим дообучение.

Ссылки

Лицензия

Wall-OSS-0.5 и Wall-X распространяются по лицензии Apache 2.0.

Update on GitHub