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

Makale · Proje ve demolar · Kod

Long-WAM, uzun bağlam dünyası-aksiyon modelidir: gelecekteki dinamikleri tahmin etmek ve aksiyonlar üretmek için dil talimatı, robot durumu ve görsel geçmişten yararlanır.

Model genel bakış

  • Tarih kullanımını öğrenin. LongLive2.0-Robot otoregresif video ön eğitimi, robot eylemlerine uyarlanmadan önce geçmişten geleceğe bağımlılıkları öğrenir.
  • Önce tahmin et, sonra eylemde bulun. IDM, gelecekteki RGB görüntülerini çözmeksizin eylem üretimini gözlemlenen geçmişe ve tahmin edilen gelecekteki gizli değişkenlere (latents) koşullandırır.
  • Zamansal bağlamı ölçekleyin. Daha uzun gözlem pencereleri hareketi ve görev ilerlemesini yakalar; geçmiş uzunluğu, eylem ufkuyla ayrıdır.

LeRobot, IDM ve ortak video/aksiyon ortak gürültü azaltma (COD) yöntemlerini destekler; yerel checkpoint yükleme, ince ayar ve senkron aksiyon parçası çıkarımı sağlar. Wan omurgaları Diffusers'tan, UMT5 metin kodlayıcısı ise Transformers'tan gelir.

Sonuçlar

Yayınlanan LeRobot yerel IDM ve COD kontrol noktaları için raporlanan lerobot-eval sonuçları:

SuiteIDM başarı oranıCOD başarı oranıModel başına bölümler
libero_spatial99.4%98.6%500
libero_object99.8%99.6%500
libero_goal97.8%98.2%500
libero_1099.0%97.4%500
Ortalama99.00%98.45%2000

Örnek komutlar ve bölüm sınırları için Değerlendirme bölümüne bakın. Komutlar, BF16 ve senkron çıkarım ile NVIDIA GB200 üzerinde test edildi.

Yükle

LeRobot kaynak kodundan:

pip install -e ".[longwam]"

Kontrol Noktaları

LeRobot yerel kontrol noktaları, tam model ağırlıklarını ve kaydedilmiş ön/son işlemcileri içerir. Tokenizör google/umt5-xxl adresinden yüklenir.

ModÇıkarımKontrol Noktası
IDMGelecekteki videoyu hayal edin, ardından eylemleri gürültüden arındırınLIBERO IDM
CODVideoyu ve eylemleri birlikte gürültüden arındırınLIBERO COD

Her ikisi de P48 geçmişini (20 Hz'de 2,4 sn), iki 224×224 kamera görünümünü, 7 boyutlu eylemleri ve 8 boyutlu robot durumunu kullanır. İstenen gürültü azaltma moduyla eşleşen kontrol noktasını kullanın; orijinal Long-WAM model.pt paketleri doğrudan yüklenemez.

Veri gereksinimleri

RGB kameralar, observation.state, action ve görev talimatları içeren bir LeRobot veri seti kullanın. Yayınlanan LIBERO kamera anahtarları sırasıyla observation.images.image ve observation.images.image2'dir. RGB tensörlerini [0, 1] aralığında sağlayın; işlemci her görünümü yeniden boyutlandırır ve merkezden kırpma yapar, politika ise görünümleri yatay olarak birleştirir. Kamera sırasını ve eylem/durum sözleşmelerini kontrol noktasıyla uyumlu tutun.

Çıkarım

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

her kontrol tikinde select_action çağrın; böylece geçmiş güncel kalır. predict_action_chunk, [batch, prediction_steps, action_dim] döndürür; her çağrı, sağlanan mevcut kareyi kaydeder. reset() ve drop_queued_actions(), hem geçmişi hem de kuyruktaki eylemleri temizler. Genel asenkron/RTC, bu entegrasyonda henüz doğrulanmadı.

Varsayılan olarak, inference_seed=1, yayınlanan çıkarım davranışını korumak için her parça için ayrı video/aksiyon gürültü üreteçlerini aynı tohumla yeniden başlatır. Bunun yerine ilerleyen küresel RNG'yi kullanmak için Python'da inference_seed=None (CLI'da --policy.inference_seed=null) ayarlayın; reset() bu akışı yeniden tohumlamaz. Eğitim her zaman taze gürültü örnekler.

Değerlendirme

Benchmark ekini yükleyin ve yerel bir kontrol noktasını değerlendirin:

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

Diğer kısa test setleri için libero_object veya libero_goal kullanın. LIBERO-Long için --env.task=libero_10 --env.episode_length=600 ayarlayın. Kodenoize etmeyi değerlendirmek için checkpoint yolundaki IDM ifadesini COD ile değiştirin.

Geçmiş ve eylem parçalama

ParametreAnlamYayınlanan LIBERO değeri
past_obs_stepsTutulan geçmiş kontrol tikleri48
video_strideÖrnekleme yapılan video kareleri arasındaki tikleri kontrol edin4
future_video_stepsGelecekteki video denetimi ufku32
action_horizonEylem parçası uzunluğunu eğitme32
inference_action_horizonTahmini eylem parçası uzunluğu80
n_action_stepsYeni bir tahminden önce yürütülen eylemler10

Geçmiş süresi past_obs_steps / control_frequency'dir. Erken geçmiş, ilk gözlemle doldurulur. Belirtilen geçmiş için eğitilmiş bir kontrol noktası kullanın; çıkarım sırasında pencereyi değiştirmek, bağlam ölçeklendirme eğitimi değildir.

İnce ayar

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, parametre depolama tipini yüklemeden önce seçer; yerel AdamW gradyanları ve momentleri bu dtype’ı kullanır. --accelerator.mixed_precision, FP32 ana ağırlıkları değil, autocast’i kontrol eder. Örnek, orijinal parametre dtype’ıyla uyumlu olacak şekilde her ikisi için de BF16 kullanır. BF16 autocast ile FP32 parametre/gradyan/momentler için --policy.dtype=float32 --accelerator.mixed_precision=bf16 kullanın; dondurulmuş VAE ve metin kodlayıcısı da FP32 kullanır, bu da bellek kullanımını artırır. Bunu yüklemeden önce seçin: BF16 olarak yüklenen ağırlıkları FP32’ye dönüştürmek, kaybedilen hassasiyeti geri getiremez.

Yayınlanan gripper postprocessor, son eylem boyutunu [0, 1] aralığından işaretli komutlara dönüştürür. İnce ayar verileriniz zaten ortamın işaretli aç/kapat sözleşmesini kullanıyorsa --policy.toggle_action_dimensions=[] kullanın. Aktif ayar, kaydedilen işlemciler için de geçerlidir; açıkça belirtilen postprocessor_overrides önceliklidir. Kaydedilen normalizasyon istatistikleri, üzerine yazılmadıkça korunur; bu nedenle bunları ince ayar verilerinizle hizalayın.

Eğitim, gelecekteki video ve eylem parçalarını denetler; çıkarım yalnızca geçmiş/güncel gözlemleri alır. --batch_size değerini GPU belleğine göre ayarlayın ve kontrol noktasının kamera sırasını, eylem/durum tanımlarını ve gürültü azaltma modunu koruyun.

Atıf

@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