LeRobot documentation
Long-WAM
Long-WAM
Long-WAM은 장문맥 월드-액션 모델입니다. 언어 지시, 로봇 상태, 시각 히스토리를 사용하여 미래 동역학을 예측하고 액션을 생성합니다.
모델 개요
- 히스토리 사용법을 학습합니다. LongLive2.0-Robot 자기회귀 비디오 사전 학습은 로봇 동작에 적응하기 전에 과거에서 미래로의 의존성을 학습합니다.
- 예측한 후 행동합니다. IDM은 관찰된 과거와 예측된 미래 잠재 변수에 조건을 붙여 행동을 생성하며, 미래 RGB 이미지를 디코딩하지 않습니다.
- 시간적 컨텍스트 확장. 더 긴 관찰 윈도우는 움직임과 작업 진행 상황을 포착합니다. 히스토리 길이는 액션 호라이즌과 별개입니다.
LeRobot은 IDM과 joint video/action co-denoising(COD)을 모두 지원하며, 네이티브 체크포인트 로딩, 파인튜닝, 동기식 액션 청크 추론을 제공합니다. Wan 백본은 Diffusers에서, UMT5 텍스트 인코더는 Transformers에서 가져옵니다.
결과
공개된 LeRobot 네이티브 IDM 및 COD 체크포인트에 대한 lerobot-eval 결과를 보고합니다:
| Suite | IDM 성공률 | COD 성공률 | 모델당 에피소드 |
|---|---|---|---|
| libero_spatial | 99.4% | 98.6% | 500 |
| libero_object | 99.8% | 99.6% | 500 |
| libero_goal | 97.8% | 98.2% | 500 |
| libero_10 | 99.0% | 97.4% | 500 |
| 평균 | 99.00% | 98.45% | 2000 |
예제 명령어와 에피소드 제한에 대해서는 Evaluation을 참조하세요. 명령어는 NVIDIA GB200에서 BF16 및 동기 추론으로 테스트되었습니다.
설치
LeRobot 소스 체크아웃에서:
pip install -e ".[longwam]"체크포인트
LeRobot 네이티브 체크포인트에는 전체 모델 가중치와 저장된 전처리/후처리기가 포함됩니다.
토크나이저는 google/umt5-xxl에서 로드됩니다.
| 모드 | 추론 | 체크포인트 |
|---|---|---|
| IDM | 미래의 영상을 상상한 후, 동작을 디노이즈합니다 | LIBERO IDM |
| COD | 비디오와 액션을 함께 디노이즈 | LIBERO COD |
둘 다 P48 히스토리(20 Hz에서 2.4초), 224×224 카메라 뷰 2개, 7차원 액션, 8차원 로봇 상태를 사용합니다. 원하는 디노이징 모드에 해당하는 체크포인트를 사용하세요. 원래의 Long-WAM model.pt 번들은 직접 로드할 수 없습니다.
데이터 요구 사항
RGB 카메라, observation.state, action, 작업 지시문을 포함하는 LeRobot 데이터셋을 사용하세요. 공개된 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)))predict_action_chunk이 실행되는 동안 포함하여 모든 제어 틱마다 select_action을 호출하여 히스토리가 최신 상태를 유지하도록 하십시오. predict_action_chunk는 [batch, prediction_steps, action_dim]을 반환하며, 각 호출 시 제공된 현재 프레임을 기록합니다. reset() 및 drop_queued_actions()는 히스토리와 대기 중인 액션을 모두 초기화합니다.
일반적인 비동기/RTC는 이 통합에서 아직 검증되지 않았습니다.
기본적으로 inference_seed=1은 각 청크마다 동일한 시드로 독립적인 비디오/액션 노이즈 생성기를 재시작하여, 공개된 추론 동작을 유지합니다.
Python에서 inference_seed=None(CLI에서는 --policy.inference_seed=null)을 설정하면 대신 전진하는 전역 RNG를 사용합니다. reset()은 해당 스트림을 다시 시드하지 않습니다.
학습은 항상 새로운 노이즈를 샘플링합니다.
평가
benchmark 추가 항목을 설치하고 네이티브 체크포인트를 평가합니다:
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를 설정하세요. co-denoising을 평가하려면 체크포인트 경로에서 IDM을 COD로 교체하세요.
히스토리와 액션 청킹
| 매개변수 | 의미 | 발행된 LIBERO 값 |
|---|---|---|
past_obs_steps | 보관된 과거 제어 틱 | 48 |
video_stride | 샘플링된 비디오 프레임 사이의 틱을 제어합니다 | 4 |
future_video_steps | 미래 비디오 감독 지평선 | 32 |
action_horizon | 학습 액션 청크 길이 | 32 |
inference_action_horizon | 예측된 액션 청크 길이 | 80 |
n_action_steps | 새로운 예측 전에 실행되는 작업 | 10 |
History duration은 past_obs_steps / control_frequency입니다. 초기 history는 첫 번째 observation으로 padding됩니다. 의도된 history로 학습된 checkpoint를 사용하세요. 추론 시 window를 변경하는 것은 context-scaling 학습이 아닙니다.
파인튜닝
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는 로드 전의 파라미터 저장 dtype을 선택하며, 네이티브 AdamW의 그라디언트와 모멘트는 해당 dtype을 사용합니다. --accelerator.mixed_precision는 FP32 마스터 웨이트가 아닌 autocast를 제어합니다. 예제는 원래 파라미터 dtype과 일치하도록 둘 다 BF16을 사용합니다. BF16 autocast와 함께 FP32 파라미터/그라디언트/모멘트를 사용하려면 --policy.dtype=float32 --accelerator.mixed_precision=bf16를 사용하십시오. 이 경우 동결된 VAE와 텍스트 인코더도 FP32를 사용하여 메모리가 증가합니다. 로드 전에 이 사항을 결정하십시오. BF16으로 로드된 웨이트를 FP32로 캐스팅해도 손실된 정밀도를 회복할 수 없습니다.
공개된 gripper postprocessor는 마지막 action 차원을 [0, 1]에서 부호 명령으로 변환합니다. fine-tuning 데이터가 이미 환경의 부호 기반 open/close 규약을 사용하는 경우 --policy.toggle_action_dimensions=[]를 사용하세요.
활성 설정은 저장된 processor에도 적용되며, 명시적인 postprocessor_overrides가 우선합니다. 저장된 정규화 통계는 오버라이드되지 않는 한 유지되므로, fine-tuning 데이터와 일치하도록 조정하세요.
Training은 미래의 video와 action chunk를 감독하며, inference은 과거/현재의 관측값만 수신합니다. --batch_size를 GPU 메모리에 맞게 조정하고, 체크포인트의 카메라 순서, action/state 정의, denoising 모드를 유지하세요.
인용
@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},
}