LeRobot documentation

Long-WAM

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

and get access to the augmented documentation experience

to get started

Long-WAM

Статья · Проект и демо · Код

Long-WAM — это модель мира-действия с длинным контекстом: она использует языковую инструкцию, состояние робота и визуальную историю для прогнозирования будущей динамики и генерации действий.

Обзор модели

  • Научитесь использовать историю. Авто регрессионное предобучение видео LongLive2.0-Robot изучает зависимости от истории к будущему до адаптации к действиям робота.
  • Сначала предсказание, затем действие. IDM формирует действие на основе наблюдаемой истории и предсказанных будущих латентов, без декодирования будущих RGB-изображений.
  • Масштабируйте временной контекст. Более длинные окна наблюдений позволяют фиксировать движение и прогресс в задаче; длина истории отделена от горизонта действия.

LeRobot поддерживает как IDM, так и совместное видео/действие-коденузинг (COD), с нативной загрузкой контрольных точек, дообучением и синхронным инференсом чанков действий. Базовые модели Wan поступают из Diffusers, а текстовый энкодер UMT5 — из Transformers.

Результаты

Результаты lerobot-eval для опубликованных нативных для LeRobot чекпоинтов IDM и COD:

SuiteУровень успешности IDMУровень успешности CODЭпизоды на модель
libero_spatial99.4%98.6%500
libero_object99.8%99.6%500
libero_goal97.8%98.2%500
libero_1099.0%97.4%500
Среднее99.00%98.45%2000

См. раздел Оценка для примеров команд и ограничений по эпизодам. Команды были протестированы на NVIDIA GB200 с BF16 и синхронным выводом.

Установка

Из исходного кода LeRobot:

pip install -e ".[longwam]"

Чекпоинты

Чекпоинты, созданные в LeRobot, содержат полные веса модели и сохранённые препроцессоры и постпроцессоры. Токенизатор загружается из google/umt5-xxl.

РежимВыводЧекпоинт
IDMПредставьте себе будущее видео, а затем выполните удаление шума из действийLIBERO IDM
CODСовместное шумоподавление видео и действийLIBERO COD

Обе используют историю P48 (2,4 с при 20 Гц), два вида камеры 224×224, действия размерности 7 и состояние робота размерности 8. Используйте контрольную точку, соответствующую желаемому режиму денойзинга; исходные пакеты model.pt Long-WAM не могут быть загружены напрямую.

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

Используйте набор данных LeRobot с RGB-камерами, observation.state, action и инструкциями к задаче. Ключи камер в выпущенном LIBERO — это observation.images.image и observation.images.image2, в указанном порядке. Передавайте RGB-тензоры в диапазоне [0, 1]; процессор изменяет размер и центрирует обрезку каждого вида, а политика склеивает виды по горизонтали. Убедитесь, что порядок камер и соглашения об действиях/состояниях соответствуют контрольной точке.

Вывод

from lerobot.policies import make_pre_post_processors
from lerobot.policies.longwam.modeling_longwam import LongWAMPolicy

checkpoint = "Efficient-Large-Model/Long-WAM-LIBERO-IDM-LeRobot"
policy = LongWAMPolicy.from_pretrained(checkpoint).to("cuda").eval()
preprocess, postprocess = make_pre_post_processors(
    policy.config,
    pretrained_path=checkpoint,
    preprocessor_overrides={"device_processor": {"device": "cuda"}},
)
policy.reset()
# observation contains both current camera images, observation.state, and task.
# Repeat on every control tick, including ticks that consume queued actions.
action = postprocess(policy.select_action(preprocess(observation)))

Вызывайте select_action на каждом такте управления, в том числе во время выполнения блока действий, чтобы история оставалась актуальной. predict_action_chunk возвращает [batch, prediction_steps, action_dim]; каждый вызов фиксирует переданный текущий кадр. reset() и drop_queued_actions() очищают и историю, и очередь действий. Универсальная асинхронная/RTC-обработка пока не проверена в этой интеграции.

По умолчанию inference_seed=1 перезапускает отдельные генераторы шума для видео/действий с тем же seed для каждого чанка, сохраняя поведение при инференсе, описанное в релизе. Установите inference_seed=None в Python (--policy.inference_seed=null в CLI), чтобы использовать глобальный RNG, который продолжает сдвигаться; reset() не пересевает этот поток. Во время обучения всегда генерируется новый шум.

Оценка

Установите дополнительный пакет для бенчмаркинга и оцените нативную контрольную точку:

pip install -e ".[longwam,libero]"

lerobot-eval --policy.path=Efficient-Large-Model/Long-WAM-LIBERO-IDM-LeRobot \
  --policy.device=cuda --policy.dtype=bfloat16 \
  --env.type=libero --env.task=libero_spatial \
  --env.observation_height=256 --env.observation_width=256 \
  --env.episode_length=300 \
  --eval.batch_size=1 --eval.n_episodes=50 --seed=1

Для других коротких наборов используйте libero_object или libero_goal. Для LIBERO-Long установите --env.task=libero_10 --env.episode_length=600. Замените IDM на COD в пути к контрольной точке, чтобы оценить co-denoising.

История и чанкинг действий

ПараметрЗначениеОпубликованное значение LIBERO
past_obs_stepsСохранённые прошлые контрольные отметки48
video_strideУправление тиками между отобранными кадрами видео4
future_video_stepsГоризонт будущего видеонаблюдения32
action_horizonДлина обучающего блока действий32
inference_action_horizonДлина предсказанного фрагмента действий80
n_action_stepsДействия, выполняемые перед новым предсказанием10

Длительность истории равна past_obs_steps / control_frequency. Ранние данные истории дополняются первым наблюдением. Используйте контрольную точку, обученную для целевой истории; изменение окна при выводе не является обучением с масштабированием контекста.

Доработка

lerobot-train --policy.path=Efficient-Large-Model/Long-WAM-LIBERO-IDM-LeRobot \
  --policy.device=cuda --policy.dtype=bfloat16 \
  --accelerator.mixed_precision=bf16 \
  --dataset.repo_id=YOUR_ORG/YOUR_DATASET \
  --output_dir=outputs/longwam --batch_size=1 --steps=30000 \
  --policy.push_to_hub=false

--policy.dtype определяет тип данных для хранения параметров до загрузки; нативные градиенты и моменты AdamW используют этот тип данных. --accelerator.mixed_precision управляет autocast, а не мастер-весах FP32. В примере для обоих используется BF16, что соответствует исходному типу данных параметров. Для параметров/градиентов/моментов FP32 с autocast BF16 используйте --policy.dtype=float32 --accelerator.mixed_precision=bf16; замороженные VAE и текстовый энкодер также используют FP32, что увеличивает потребление памяти. Выберите это до загрузки: преобразование весов, загруженных в BF16, в FP32 не позволяет восстановить утраченную точность.

Выпущенный постпроцессор захвата преобразует последнее измерение действия из [0, 1] в знаковые команды. Используйте --policy.toggle_action_dimensions=[], если данные для дообучения уже используют знаковую конвенцию открытия/закрытия среды. Активная настройка также применяется к сохранённым процессорам; явные postprocessor_overrides имеют приоритет. Сохранённая статистика нормализации сохраняется, если не переопределена, поэтому приведите её в соответствие с данными дообучения.

Обучение контролирует будущие фрагменты видео и действий; при инференсе используются только прошлые/текущие наблюдения. Настройте --batch_size под объём памяти GPU и сохраняйте порядок камер в контрольной точке, определения действий/состояний и режим денойзинга.

Цитирование

@misc{huang2026longwamscalingcontextworldaction,
  title={Long-WAM: Scaling the Context of World-Action Models},
  author={Wei Huang and Bohan Zhang and Chenzhi Liu and Isabella Liu and
          Shuai Yang and Weian Mao and Luozhou Wang and Yicheng Xiao and
          Weifeng Lin and Qixin Hu and Bryan Chu and Sifei Liu and
          Linxi Fan and Xiaojuan Qi and Song Han and Yukang Chen},
  year={2026},
  eprint={2610.10528},
  archivePrefix={arXiv},
  primaryClass={cs.RO},
  url={https://arxiv.org/abs/2610.10528},
}
Update on GitHub