LeRobot documentation

Long-WAM

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Long-WAM

Makalah · Proyek dan demo · Kode

Long-WAM adalah model dunia-aksi berkonteks panjang: ia menggunakan instruksi bahasa, status robot, dan riwayat visual untuk memprediksi dinamika masa depan dan menghasilkan aksi.

Ringkasan model

  • Belajar menggunakan riwayat. Pra-pelatihan video autoregressive LongLive2.0-Robot mempelajari ketergantungan dari riwayat ke masa depan sebelum adaptasi ke aksi robot.
  • Prediksi, lalu bertindak. IDM mengondisikan generasi aksi pada riwayat yang diamati dan latens masa depan yang diprediksi, tanpa mendekode gambar RGB masa depan.
  • Skalakan konteks temporal. Jendela observasi yang lebih panjang menangkap gerakan dan kemajuan tugas; panjang riwayat dipisahkan dari cakupan aksi.

LeRobot mendukung baik IDM maupun co-denoising video/aksi bersama (COD), dengan pemuatan checkpoint native, fine-tuning, dan inferensi chunk aksi sinkron. Backbone Wan berasal dari Diffusers dan encoder teks UMT5 berasal dari Transformers.

Hasil

Hasil lerobot-eval yang dilaporkan untuk checkpoint IDM dan COD LeRobot-native yang dipublikasikan:

SuiteTingkat keberhasilan IDMTingkat keberhasilan CODEpisode per model
libero_spatial99.4%98.6%500
libero_object99.8%99.6%500
libero_goal97.8%98.2%500
libero_1099.0%97.4%500
Rata-rata99.00%98.45%2000

Lihat Evaluation untuk contoh perintah dan batas episode. Perintah diuji pada NVIDIA GB200 dengan BF16 dan inferensi sinkron.

Instal

Dari checkout sumber LeRobot:

pip install -e ".[longwam]"

Checkpoint

Checkpoint asli LeRobot mencakup bobot model lengkap dan pre/post-processor yang disimpan. Tokenizer dimuat dari google/umt5-xxl.

ModeInferensiCheckpoint
IDMBayangkan video masa depan, lalu hilangkan derau pada aksiLIBERO IDM
CODDenoise video dan aksi secara bersama-samaLIBERO COD

Keduanya menggunakan riwayat P48 (2,4 s pada 20 Hz), dua tampilan kamera 224×224, aksi 7-D, dan status robot 8-D. Gunakan checkpoint yang sesuai dengan mode denoising yang diinginkan; bundle model.pt asli Long-WAM tidak dapat dimuat secara langsung.

Kebutuhan data

Gunakan dataset LeRobot dengan kamera RGB, observation.state, action, dan instruksi tugas. Kunci kamera LIBERO yang dirilis adalah observation.images.image dan observation.images.image2, dalam urutan tersebut. Sediakan tensor RGB dalam [0, 1]; pemroses akan mengubah ukuran dan memotong tengah setiap tampilan, dan kebijakan akan menggabungkan tampilan secara horizontal. Pastikan urutan kamera dan konvensi aksi/keadaan selaras dengan checkpoint.

Inferensi

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)))

Panggil select_action pada setiap control tick, termasuk saat action chunk sedang dieksekusi, agar riwayat tetap mutakhir. predict_action_chunk mengembalikan [batch, prediction_steps, action_dim]; setiap panggilan mencatat frame saat ini yang diberikan. reset() dan drop_queued_actions() membersihkan kedua riwayat dan action yang antre. Async/RTC generik belum divalidasi dalam integrasi ini.

Secara default, inference_seed=1 memulai ulang generator noise video/aksi yang terpisah dengan seed yang sama untuk setiap chunk, sehingga mempertahankan perilaku inferensi yang dirilis. Atur inference_seed=None di Python (--policy.inference_seed=null di CLI) untuk menggunakan RNG global yang maju; reset() tidak mengatur ulang seed untuk stream tersebut. Pelatihan selalu mengambil sampel noise baru.

Evaluasi

Instal tambahan benchmark dan evaluasi checkpoint native:

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

Gunakan libero_object atau libero_goal untuk suite pendek lainnya. Untuk LIBERO-Long, setel --env.task=libero_10 --env.episode_length=600. Ganti IDM dengan COD di path checkpoint untuk mengevaluasi co-denoising.

Riwayat dan pengelompokan aksi

ParameterArtiNilai LIBERO yang dirilis
past_obs_stepsTick kontrol masa lalu yang dipertahankan48
video_strideKontrol tick di antara bingkai video yang disampel4
future_video_stepsHorizon pengawasan video masa depan32
action_horizonPanjang chunk aksi pelatihan32
inference_action_horizonPanjang chunk aksi yang diprediksi80
n_action_stepsAksi yang dieksekusi sebelum prediksi baru10

Durasi riwayat adalah past_obs_steps / control_frequency. Riwayat awal diisi dengan observasi pertama. Gunakan checkpoint yang dilatih untuk riwayat yang dimaksud; mengubah jendela pada saat inferensi bukanlah pelatihan penskalaan konteks.

Fine-tuning

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 memilih penyimpanan parameter sebelum dimuat; gradien dan momen AdamW native menggunakan dtype tersebut. --accelerator.mixed_precision mengontrol autocast, bukan bobot master FP32. Contoh ini menggunakan BF16 untuk keduanya, sesuai dengan dtype parameter asli. Untuk parameter/gradien/momen FP32 dengan autocast BF16, gunakan --policy.dtype=float32 --accelerator.mixed_precision=bf16; VAE beku dan text encoder juga menggunakan FP32, sehingga meningkatkan memori. Pilih ini sebelum memuat: mengkast bobot yang dimuat sebagai BF16 ke FP32 tidak dapat memulihkan presisi yang hilang.

Postprocessor gripper yang dirilis mengubah dimensi aksi terakhir dari [0, 1] menjadi perintah bertanda. Gunakan --policy.toggle_action_dimensions=[] jika data fine-tuning Anda sudah menggunakan konvensi buka/tutup bertanda dari lingkungan. Pengaturan aktif juga berlaku untuk prosesor yang disimpan; postprocessor_overrides yang eksplisit memiliki prioritas lebih tinggi. Statistik normalisasi yang disimpan tetap dipertahankan kecuali di-override, sehingga selaraskan dengan data fine-tuning Anda.

Pelatihan mengawasi chunk video dan aksi masa depan; inferensi hanya menerima observasi masa lalu/saat ini. Sesuaikan --batch_size sesuai memori GPU dan pertahankan urutan kamera checkpoint, definisi aksi/keadaan, serta mode denoising.

Sitasi

@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