LeRobot documentation

LingBot-VA

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

LingBot-VA

LingBot-VA, Wan2.2 video-diffusion yığını üzerine kurulu bir otoregresif video-aksiyon dünya modeli politikasıdır. Gelecekteki video latentlerini ve robot aksiyonlarını (“VA” = Video-Aksiyon) tek bir otoregresif dizide iç içe geçirerek tahmin eder. LeRobot entegrasyonu, LingBot-VA'yı standart eğitim, değerlendirme ve işlemci arayüzlerine bağlar.

Model Genel Bakış

LingBot-VA, çift akışlı “mixture-of-transformers” mimarisine sahiptir: video/latent akışı (patch_embedding_mlp → blocks → proj_out) ve eylem akışı (action_embedder → blocks → action_proj_out), aynı 30 transformer bloğunu ve metin koşullandırmasını paylaşır.

BileşenSınıfRol
DiT omurgası (eğitilebilir)WanTransformer3DModel~5B parametreli çift akışlı transformer.
VAE (donmuş)AutoencoderKLWanWan2.2 VAE, z_dim=48. Kaynak depodan tembel çekilir.
Metin kodlayıcı (donmuş)UMT5EncoderModelUMT5-XXL, d_model=4096. Kaynak depodan tembel çekilir.

Çıkarım sırasında politika, parça başına otoregresif bir döngü çalıştırır: video-gizli akışını (CFG, ~20 adım) ve eylem akışını (~50 adım) iki bağımsız akış-eşleştirme zamanlayıcısıyla gürültüden arındırır ve parçalar arasında bir KV önbelleği sürdürür. Gerçek gözlemlenen ana kareler, parça çalıştırılırken KV önbelleğine geri beslenir (kapalı döngü dünya modellemesi).

LeRobot Entegrasyonunun Kapsamı

  • LeRobot üzerinden standart policy.type=lingbot_va yapılandırması.
  • Hub'da hazır LeRobot formatında kontrol noktaları (yayınlanan üst akışkilerden dönüştürülmüş).
  • Standart select_action arayüzünün arkasındaki otoregresif çift akışlı çıkarım (tek ortam değerlendirme, --eval.batch_size=1).
  • Değerlendirme / eğitim sırasında politikanın öngörülen (hayali) videolarının isteğe bağlı olarak kaydedilmesi.
  • LIBERO ve RoboTwin üzerinde lerobot-eval ile değerlendirme.
  • Çift akış akış eşleştirme kaybı (policy.forward) ile eğitim / ince ayar, aşağıya bakın.

Kurulum

  1. LeRobot'u Yükleme Kılavuzu'nu izleyerek yükleyin.
  2. LingBot-VA ek bileşenini yükleyin:
pip install -e ".[lingbot_va]"

Kontrol Noktaları

Yayınlanan upstream kontrol noktaları LeRobot formatına dönüştürüldü ve Hub'a gönderildi:

VaryantLeRobot kontrol noktası
LIBERO-Long post-eğitimlerobot/lingbot_va_libero_long
RoboTwin post-trainlerobot/lingbot_va_robotwin
Önceden eğitilmiş tabanlerobot/lingbot_va_base

LeRobot model.safetensors dosyasında yalnızca eğitilebilir ~5B transformer saklanır. Donmuş VAE + UMT5 + tokenizer (~20 GB), yükleme sırasında config.wan_pretrained_path konumundan çekilir (varsayılan olarak kaynak robbyant/* deposu kullanılır). UMT5-XXL metin kodlayıcı varsayılan olarak CPU üzerinde çalışır (config.text_encoder_device), böylece 5B transformer + VAE tek bir 24–32 GB GPU'ya sığar.

Değerlendirme (LIBERO)

lerobot-eval \
    --policy.path=lerobot/lingbot_va_libero_long \
    --policy.device=cuda \
    --env.type=libero --env.task=libero_10 \
    --env.observation_height=128 --env.observation_width=128 \
    --eval.n_episodes=50 --eval.batch_size=1 \
    --output_dir=outputs/eval/lingbot_va_libero

LingBot-VA’nın akış çıkarımı (KV önbelleği + gözlemlenen ana kare geri bildirimi) tek ortam değerlendirmesi için uygulanmıştır; --eval.batch_size=1 kullanın.

Değerlendirme (RoboTwin)

RoboTwin 2.0, SAPIEN + CuRobo simülatör yığınına ihtiyaç duyar. Benchmark Docker görüntüsünü kullanabilirsiniz (docker/Dockerfile.benchmark.robotwin, bu görüntü ayrıca warp-lang==1.3.1 ve GPU'nun hesaplama yeteneğinin TORCH_CUDA_ARCH_LIST içinde tanımlandığı bir CuRobo derlemesi gerektirir). RoboTwin uç efektor duruşu kontrolü kullandığı için --env.action_mode=ee ile çalıştırın: politika, her kol için xyz+quaternion+gripper delta değerlerini (robotwin_tshape latent düzeni) tahmin eder; bu değerler bölümün başlangıç eef duruşuna uygulanır ve CuRobo IK üzerinden yürütülür.

lerobot-eval \
    --policy.path=lerobot/lingbot_va_robotwin \
    --policy.device=cuda \
    --env.type=robotwin --env.task=beat_block_hammer --env.action_mode=ee \
    --eval.n_episodes=10 --eval.batch_size=1 \
    --output_dir=outputs/eval/lingbot_va_robotwin

Tahmin edilen (hayal edilen) videoların kaydedilmesi

Tahmin edilen video latentlerini VAE ile çözmek ve ortam tarafından oluşturulan eval_episode_*.mp4 videolarının yanına pred_episode_*.mp4 dosyalarını yazmak için --policy.save_predicted_video=true değerini ayarlayın. Aynı bayrak, lerobot-train sırasında periyodik değerlendirme için de geçerlidir.

Hayal edilen videoyu canlı olarak izleme

lerobot-rollout --display_data=true sırasında --policy.return_predicted_video=true ayarlayın; böylece her parçanın tahmin edilen videosu çözümlenir ve her eylem uygulandıkça, ait olduğu hayali kamera kareleri (her gerçek kameranın yanında prediction.images.<camera>) gösterilir. Bunun maliyeti parça başına bir VAE çözümlenmesidir.

Eğitim / ince ayar

LingBotVAPolicy.forward(batch), makaledeki çift akışlı flow-matching kaybını (latent_loss + action_loss, zaman adımı ağırlıklı, eylem maskeli) uygular: kamera kliplerini video latentlerine VAE ile kodlar, görevi UMT5 ile kodlar, her iki akışı da gürültüler, transformer’ın blok-sebebiyetli eğitim geçişini çalıştırır ve (loss, metrics) döndürür. Optimizer ön ayarı, doğrusal ısınma sonrası sabit zaman çizelgesiyle AdamW’dir (yukarı akışla uyumlu).

Gereksinimler:

  • Block-causal mask'ler PyTorch flex-attention kullanır, bu nedenle eğitim için politikayı --policy.attn_mode=flex ile oluşturun (varsayılan torch SDPA yalnızca çıkarım içindir).
  • Tam 5B DiT, AdamW altında tek bir 24–32 GB GPU'ya sığmaz; LoRA (--peft.method_type=LORA) ve/veya optimizer offload ile ince ayar yapın. get_optim_params yalnızca eğitilebilir (ör. adapter) parametreleri döndürür; VAE + UMT5 metin kodlayıcı donmuş kalır. PEFT desteğini etkinleştirmek için lerobot[peft] ekini yükleyin (bkz. PEFT eğitim kılavuzu).
lerobot-train \
  --policy.path=lerobot/lingbot_va_libero_long --policy.attn_mode=flex \
  --peft.method_type=LORA --peft.r=32 --peft.lora_alpha=32 \
  --peft.target_modules='transformer\.blocks\.\d+\.attn[12]\.(to_q|to_v)' \
  --dataset.repo_id=<your LeRobot-format dataset> \
  --batch_size=1 --steps=... --output_dir=outputs/train/lingbot_va

SmolVLA / π₀'dan farklı olarak LingBot-VA, yerleşik varsayılan LoRA hedefleriyle birlikte gelmez; bu nedenle --peft.target_modules parametresini açıkça iletmeniz gerekir. Sadece self.transformer (çift akışlı Wan transformer) eğitilebilir; yukarıdaki örnek, hem kendi dikkati (attn1) hem de çapraz dikkati (attn2) bloklarındaki sorgu/değer projeksiyonlarını uyarlar; bu, standart LoRA hedef kümesidir. Daha yüksek kapasiteli bir adaptöre ihtiyacınız varsa bu küme genişletilebilir (ör. to_k/to_out veya ffn katmanları ekleyerek). --peft.method_type parametresini iletmek PEFT'yi varsayar, bu yüzden --policy.use_peft=true gerekmez.

Veri seti, kamera kliplerini (kamera başına bir zaman penceresi, frame_chunk_size latent kareye VAE kodlanmış) ve her öğe için frame_chunk_size * action_per_frame eylem adımını sağlamalıdır.

Veri biçimi (aksiyon kanalları & kamera sırası)

LingBot-VA bir uç efektor (Kartezyen) duruşu politikasıdır; eklem konumları yerine EEF duruşları + kavrayıcıyı tahmin eder. Eylemler, sabit çok gövdeli 30 boyutlu bir düzen içinde yer alır; robotunuzun eylem boyutlarını bu kanallara eşleyin ve kalan kısımları 0 ile doldurun (used_action_channel_ids, belirli bir kontrol noktasının fiilen kullandığı kanalları seçer):

kanallaranlam
0–6Sol kol uç efektoru duruşu
7–13Sağ kol son ekleme durumu
14–20Sol kol eklemleri (yayınlanan kontrol noktaları tarafından kullanılmıyor)
21–27Sağ kol eklemleri (yayınlanan kontrol noktaları tarafından kullanılmıyor)
28Sol kavrama
29Sağ kavrama
  • LIBERO, 0–6 kanallarını kullanır: 6-DoF EEF delta (xyz + rotasyon) + gripper (tek kollu).
  • RoboTwin, [0–6, 28, 7–13, 29] kanallarını kullanır: sol EEF (xyz + kuaterniyon) + sol gripper + sağ EEF + sağ gripper (16 boyut). Ortam, bu pozları CuRobo IK aracılığıyla eklem yörüngelerine dönüştürür — eklemler asla tahmin edilmez.

Ortak uzay veri setleri (veya farklı bir EEF kuralı), bu kontrol noktalarının ince ayarı yapılmadan önce bu şemaya yeniden eşlenmelidir.

Kamera sırası sabittir ve sıraya duyarlıdır, kamera başına latentler obs_cam_keys sırasına göre uzamsal olarak birleştirilir, bu nedenle fiziksel kamera→slot eşlemesi eğitimle eşleşmelidir:

benchmarkobs_cam_keys (sırasıyla)camera_layout
LIBEROobservation.images.image (ajan görünümü / üçüncü şahıs), observation.images.image2 (el içi bilek)width_concat (genişlik yönünde birleştirilen latensler)
RoboTwinobservation.images.head_camera, observation.images.left_camera, observation.images.right_camerarobotwin_tshape (aşağıda tam çözünürlüklü baş, üstte iki yarım çözünürlüklü bilek)

İlk kamera dış/ön görünüm, diğerleri ise bilek görünümleridir.

Çıkarım Hiperparametreleri (LIBERO)

AnahtarDeğer
yükseklik × genişlik128 × 128
kameralarobservation.images.image (agentview), observation.images.image2 (eye-in-hand)
kullanılan eylem kanalları0–6 (7-DoF kol + kavrama)
action_per_frame / frame_chunk_size4 / 4
attn_window30
video / aksiyon gürültü azaltma adımları20 / 50
guidance_scale / action_guidance_scale5 / 1
snr_shift / action_snr_shift5.0 / 0.05

Bunlar LingBotVAConfig varsayılanlarıdır; bunlardan herhangi birini --policy.<name>=... ile geçersiz kılabilirsiniz.

Notlar

  • Dikkat arka ucu: çıkarım, torch SDPA arka ucunu kullanır (her zaman kullanılabilir). flashattn ve flex arka uçları isteğe bağlıdır; flex yalnızca eğitim için gereklidir.
  • Model boyutu: DiT ~5B parametreye sahipken dondurulmuş VAE+UMT5 ~20 GB ekler; çıkarım için yaklaşık 18–24 GB VRAM gerekir.

Lisans

LingBot-VA, Apache-2.0 lisansı altında yayınlanmıştır. yukarıdaki depoyu inceleyin.

Update on GitHub