LeRobot documentation
Long-WAM
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ı:
| Suite | IDM başarı oranı | COD başarı oranı | Model başına bölümler |
|---|---|---|---|
| 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 |
| Ortalama | 99.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ım | Kontrol Noktası |
|---|---|---|
| IDM | Gelecekteki videoyu hayal edin, ardından eylemleri gürültüden arındırın | LIBERO IDM |
| COD | Videoyu ve eylemleri birlikte gürültüden arındırın | LIBERO 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=1Diğ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
| Parametre | Anlam | Yayınlanan LIBERO değeri |
|---|---|---|
past_obs_steps | Tutulan geçmiş kontrol tikleri | 48 |
video_stride | Örnekleme yapılan video kareleri arasındaki tikleri kontrol edin | 4 |
future_video_steps | Gelecekteki video denetimi ufku | 32 |
action_horizon | Eylem parçası uzunluğunu eğitme | 32 |
inference_action_horizon | Tahmini eylem parçası uzunluğu | 80 |
n_action_steps | Yeni bir tahminden önce yürütülen eylemler | 10 |
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},
}