LeRobot documentation
Cosmos3
Cosmos3
Cosmos3, Cosmos 3 ailesi olan NVIDIA'nın omnimodal dünya modelleri üzerine inşa edilmiş, robot kontrolü için dünya eylem modelidir. Kamera gözlemlerinden ve bir dil talimatından yola çıkarak politika, gelecekteki video karelerini ve bir sonraki robot eylem bloğunu birlikte tahmin eder. LeRobot uygulaması, yerel cosmos-framework eylem politikasından uyarlanmıştır ve LeRobot formatına dönüştürülmüş, yayınlanan Cosmos3 Nano ve Edge modellerini çalıştırır.
- 📄 Cosmos 3 teknik raporu (arXiv:2606.02800)
- 💻 cosmos-framework ve Cosmos cookbook
- 🤗 Cosmos 3 model koleksiyonu
Model Genel Bakış
Cosmos 3, Transformer Karışımı (MoT) mimarisine sahiptir. Her decoder katmanı, kendi katman normlarına, dikkat projeksiyonlarına ve MLP'lerine sahip iki yola sahiptir ve bu iki yol yalnızca paylaşılan bir öz-dikkatte birleşir:
- Anlama yolu (reasoner), prompt'un metin tokenlarını ve isteğe bağlı olarak ViT görüntü tokenlarını nedensel dikkat (causal attention) ile okur.
- üretim yolu (üreteç), difüzyon alt dizisinin sürekli jetonlarını okur: videonun Wan2.2 VAE latentleri ve eylem jetonları. Her iki yola da çift yönlü dikkat uygular ve akış eşleştirmesiyle eğitilir.
Cosmos 3'ün Mixture-of-Transformers (MoT) mimarisi (teknik rapordaki Şekil 5). Sol: otoregresif (AR) alt dizisi reasoner'dan, difüzyon (DM) alt dizisi ise generator'dan geçer ve ikisi paylaşılan çok modlu dikkat (attention) katmanında buluşur. Sağ: dikkat maskesi; AR için nedensel (causal), difüzyon için tam (full).
Bir politika olarak Cosmos3, yerel eylem tariflerinin dünya eylem modeli modunda çalışır:
- Girdiler: kamera görünümleri tek bir video tuvalinde birleştirilir (bir görünüm olduğu gibi, iki görünüm yan yana, üç görünümde ilki üstte diğer ikisi altta). İstek, görevi, kare hızını, tuval çözünürlüğünü, tuval yerleşimi açıklamasını ve parçanın boşta kalan kare sayısını taşır.
- Eğitim: politika, mevcut klibin ve
chunk_sizegelecek karesinin VAE ile kodlanmasını, gelecek latentlere ve eylem parçasına gürültü eklenmesini ve her ikisinin de gürültüsüzleştirilmesini öğrenir. Kayıp, bir video kaybı ile bir eylem kaybının ağırlıklı toplamıdır. - Çıkarım: durum çerçevesi temizdir, gelecek video ve eylemler UniPC çözücüsüyle birlikte örneklenir ve politika eylem parçasını döndürür. Tahmin edilen video değerlendirme sırasında kaydedilebilir (bkz. Değerlendirme).
- Varsayılan olarak, yerel eğitim sonrası tariflerinde olduğu gibi yalnızca üretim yolu, etrafındaki katmanlar ve eylem modülleri eğitilir (
train_gen_stream_only=true,freeze_vision_encoder=true).
LeRobot, yayınlanan iki boyutu iki politika türü olarak sağlar:
| Cosmos3 Nano | Cosmos3 Edge | |
|---|---|---|
| Politika türü | cosmos3_nano | cosmos3_edge |
| Parametreler (varsayılan olarak eğitilir) | 16.5B (7.0B) | 4.6B (1.4B) |
| Backbone | Qwen3-VL'den başlatılan MoT, 36 katman, gizli boyut 4096 | Yoğun 2B'lik bir transformer'a sahip MoT, 28 katman, gizli boyut 2048 |
| Tokenizer | nvidia/Cosmos3-Nano | nvidia/Cosmos3-Edge |
| Temel kontrol noktası | lerobot/Cosmos3-Nano | lerobot/Cosmos3-Edge |
Kurulum Gereksinimleri
LeRobot'u Yükleme Kılavuzumuz’u takip ederek yükleyin.
Cosmos3 bağımlılıklarını yükleyin:
pip install -e ".[cosmos3]"PyPI'den LeRobot'u yüklediyseniz:
pip install 'lerobot[cosmos3]'İş akışınızın ek bileşenlerini ekleyin:
lerobot-trainiçintraining, LIBERO üzerinde eğitim veya değerlendirme içinliberove LoRA içinpeft. Örneğin:pip install -e ".[cosmos3,training,libero]"
Cosmos3 varsayılan olarak PyTorch ölçekli nokta çarpımı dikkat arka ucunu (sdpa) kullanır. Ortamınızda uyumlu bir flash_attn kurulumu varsa, --policy.attn_implementation=flash_attention_2 isteğinde bulunabilirsiniz. Bunu --policy.compile_model=true ile birleştirmeyin: derlenmiş decoder katmanları, flash attention ile her katman için yeniden derlenir ve yeniden derleme hatasıyla durur.
Kontrol Noktaları
| Kontrol Noktası | Sizin | Eğitim verisi | Kullan |
|---|---|---|---|
| lerobot/Cosmos3-Nano | Nano | nvidia/Cosmos3-Nano sürümü | İnce ayar için temel |
| lerobot/Cosmos3-Edge | Kenar | nvidia/Cosmos3-Edge sürümü | İnce ayar için temel |
| lerobot/Cosmos3-Nano-Policy-LIBERO | Nano | lerobot/LIBERO-Cosmos3 | LIBERO değerlendirmesi |
| lerobot/Cosmos3-Edge-Policy-LIBERO | Kenar | lerobot/LIBERO-Cosmos3 | LIBERO değerlendirmesi |
| lerobot/Cosmos3-Nano-Policy-LIBERO_10 | Nano | lerobot/LIBERO_10-Cosmos3 | LIBERO-10 değerlendirmesi |
| lerobot/Cosmos3-Edge-Policy-LIBERO_10 | Kenar | lerobot/LIBERO_10-Cosmos3 | LIBERO-10 değerlendirmesi |
- Temel denetim noktaları, yayınlanan ağırlıkları LeRobot biçiminde barındırır. Eylem modülleri (
action2llm,llm2action,action_modality_embed) henüz bir robot için eğitilmediğinden, ince ayara--policy.load_action_modules=falseile başlayın (bkz. LİBERO üzerinde ince ayar). - Taban kontrol noktalarının
config.jsondosyası, yerel DROID eğitim sonrası tarifini içerir ve politika türlerinin sınıf varsayılanları yerel LIBERO tarifidir. - LIBERO kontrol noktaları, eğitim çalışmasının EMA ağırlıklarını içerir.
- Ağırlıklar bfloat16 olarak saklanır.
config.jsonbilinçli olarakdtype: float32ayarlar: bu kontrol noktalarından karışık hassasiyetli eğitim, yerel eğitimde olduğu gibi float32 ana ağırlıkları korur. Çıkarım ve değerlendirme için--policy.dtype=bfloat16parametresini iletin.
Bir kontrol noktasından başlamak için iki yol vardır:
--policy.path=<checkpoint>komutu, kaydedilmiş yapılandırmayı, ağırlıkları ve işlemcileri yükler, ardından komut satırını bunların üzerine uygular.--policy.type=cosmos3_nano --policy.pretrained_path=<checkpoint>(veyacosmos3_edge) yalnızca ağırlıkları ve işlemcileri yükler ve yapılandırma, sınıf varsayılanları olan LIBERO tarifiyle başlar.
LIBERO üzerinde ince ayar
Sınıf varsayılanları, teknik raporun LIBERO tarifiyle aynıdır: 16 eylemlik parçalar, domain_id=5 vücut tipi, durum eylemi yok, eylemler için kantil normalizasyonu, çıkarım sırasında 30 adımla UniPC ve sınıflandırıcı-ücretsiz yönlendirme yok, ayrıca 500 ısınma adımı ve 16000. adımda sıfıra doğru doğrusal azalma ile 5e-5 öğrenme oranı. --policy.type ile bir temel denetim noktasından başlandığında, yalnızca --policy.load_action_modules=false gereklidir.
Tarif, Cosmos3 düzenine dönüştürülmüş LIBERO verisi üzerinde eğitim alır:
- lerobot/LIBERO-Cosmos3: dört dizi (Spatial, Object, Goal, 10), 1693 bölüm.
- lerobot/LIBERO_10-Cosmos3: yalnızca LIBERO-10, 379 bölüm.
Her ikisi de yerel tarife ait veriler olan nvidia/LIBERO_LeRobot_v3 kaynağından gelir. Aksiyonlar, LIBERO'nun 7D eksen açısı aksiyonları yerine 10D [delta position (3), rot6d (6), gripper] şeklindedir; iki kamera olan observation.images.image (üçüncü şahıs) ve observation.images.image2 (bilek) 256x256 çözünürlükte ve 20 FPS'dir ve aksiyon istatistikleri yerel tarifeye aittir. Değerlendirme sırasında LIBERO ortamı aksiyonları geri dönüştürür (bkz. Evaluation).
Eğitim komutu
Yerel LIBERO tarifi, LIBERO-10 üzerinde 2000 yineleme ve dört suite üzerinde 5000 yineleme boyunca 2048 örneklik küresel bir batch ile eğitim yapar (en iyi checkpoint 1500. yinelemenin yakınında, en iyi 4500'ün yakınında). Aşağıdaki komut, bunu 8 GPU'lu tek bir makinede yeniden üretir: 8 GPU üzerinde FSDP2, GPU başına 32 örnek ve 8 gradyan biriktirme adımı, böylece her optimizator güncellemesi için 32 x 8 x 8 = 2048 örnek. Her yerel yineleme sayısı, 8 biriktirme adımı ile çarpılır: 2000 yineleme --steps=16000 olur, 500 yinelemede bir checkpoint --save_freq=4000 olur ve 500'lik ısınma ile 16000'de biten azalma 4000 ve 128000 olur.
accelerate launch --num_processes=8 $(which lerobot-train) \
--policy.type=cosmos3_nano \
--policy.pretrained_path=lerobot/Cosmos3-Nano \
--policy.load_action_modules=false \
--policy.gradient_checkpointing=true \
--policy.repo_id=${HF_USER}/Cosmos3-Nano-Policy-LIBERO_10 \
--dataset.repo_id=lerobot/LIBERO_10-Cosmos3 \
--parallelism.dp_shard=8 \
--accelerator.fsdp.mixed_precision_policy.param_dtype=bfloat16 \
--accelerator.fsdp.mixed_precision_policy.reduce_dtype=bfloat16 \
--accelerator.fsdp.mixed_precision_policy.cast_forward_inputs=false \
--accelerator.gradient_accumulation.steps=8 \
--accelerator.gradient_accumulation.sync_each_batch=true \
--tf32=false \
--ema.type=power \
--ema.sigma_rel=0.1 \
--batch_size=32 \
--steps=16000 \
--save_freq=4000 \
--policy.scheduler_warmup_steps=4000 \
--policy.scheduler_decay_steps=128000 \
--output_dir=outputs/train/cosmos3_nano_libero_10 \
--job_name=cosmos3_nano_libero_10 \
--trackio.enable=trueDört suite için --dataset.repo_id=lerobot/LIBERO-Cosmos3 ve --steps=40000 (5000 iterasyon) kullanın. Cosmos3 Edge için --policy.type=cosmos3_edge --policy.pretrained_path=lerobot/Cosmos3-Edge kullanın.
Temel eğitim parametreleri
| Parametre | Açıklama |
|---|---|
--policy.load_action_modules=false | Yerel eğitim sonrası tariflerde yapıldığı gibi modülleri yüklemek yerine başlangıç durumlarından başlatır. Yalnızca bir temel kontrol noktasından ince ayar yaparken ayarlayın (aşağıdaki notlara bakın). |
--parallelism.dp_shard=8 | 8 GPU üzerinde FSDP2. Politika, FSDP2 sarma birimlerini beyan eder, bu nedenle --accelerator.fsdp.wrap_modules gerekmez. çoklu GPU eğitim kılavuzuna bakın. |
--accelerator.fsdp.mixed_precision_policy.* | Yerel eğitimde olduğu gibi, float32 ana ağırlıklarla bfloat16 hesaplama ve gradyan indirgeme. Varsayılan --policy.dtype (float32) değerini bununla birlikte koruyun: bfloat16 bir politika, bfloat16 ana ağırlıkları eğitecektir. |
--accelerator.gradient_accumulation.steps | Küresel batch, --batch_size x GPU sayısı x birikim adımlarıdır. sync_each_batch=true, gradyanları her mikro batch'ten sonra azaltır, böylece parçalı (sharded) kalırlar ve ek bir parçalanmamış kopyaya ihtiyaç duymazlar. |
--steps, --save_freq, --policy.scheduler_*_steps | LeRobot, optimizer güncellemeleri değil, döngü adımlarını (mikro toplamları) sayar. Yerel tarifin yineleme sayılarını (2000 veya 5000 yineleme, 500 ısınma, 16000 azalma, her 500 adımda bir checkpoint) birikim adımlarıyla çarpın. --steps değerini en fazla --policy.scheduler_decay_steps kadar tutun: bu değerin ardından öğrenme oranı sıfıra düşer. |
--ema.type=power --ema.sigma_rel=0.1 | Yerel tarifin EMA'sı. Her checkpoint, pretrained_model_ema/ içinde değerlendirme ve yayınlama için kullanılacak EMA ağırlıklarını da barındırır. |
--tf32=false | Yerel eğitimde olduğu gibi float32 matris çarpımlarını tam hassasiyette tutar. |
--policy.gradient_checkpointing=true | Arka yönde bellek tasarrufu sağlamak için decoder katmanlarının ve görsel blokların aktivasyonlarını yeniden hesaplar. |
--policy.compile_model=true | İsteğe bağlı: torch.compile ile decoder katmanları ve VAE encoder'ı. |
Tek bir GPU'da veya DDP ile, FSDP2 bayraklarını (--parallelism.dp_shard ve --accelerator.fsdp.mixed_precision_policy.*) --accelerator.mixed_precision=bf16 ile değiştirin. Örneğin, tek bir GPU'da Cosmos3 Edge, 2048'lik aynı global batch için adım başına 32 örnek ve 64 birikim adımı:
lerobot-train \
--policy.type=cosmos3_edge \
--policy.pretrained_path=lerobot/Cosmos3-Edge \
--policy.load_action_modules=false \
--policy.gradient_checkpointing=true \
--policy.repo_id=${HF_USER}/Cosmos3-Edge-Policy-LIBERO_10 \
--dataset.repo_id=lerobot/LIBERO_10-Cosmos3 \
--accelerator.mixed_precision=bf16 \
--accelerator.gradient_accumulation.steps=64 \
--tf32=false \
--ema.type=power \
--ema.sigma_rel=0.1 \
--batch_size=32 \
--steps=128000 \
--save_freq=32000 \
--policy.scheduler_warmup_steps=32000 \
--policy.scheduler_decay_steps=1024000 \
--output_dir=outputs/train/cosmos3_edge_libero_10
--policy.load_action_modules=false, checkpoint yüklendikten sonratrueolarak sıfırlanır; bu sayede kaydedilen çalışma, eğitilmiş eylem modüllerini yeniden yükler. Eylem modüllerinin yanlışlıkla başlangıç durumlarında kalmasına yol açan iki durum vardır:
--policy.pretrained_pathveya--policy.patholmadan bir politika oluşturulduğunda: hiçbir şey yüklenmez, bu nedenle bayrakfalseolarak kalır ve o çalıştırmanın sonraki bir değerlendirmesi veya devam ettirilmesi, eğitim görmüş eylem modüllerini atlar.--peft.full_training_modulesdışında kalan eylem modülleriyle PEFT: bu durumda eylem modülleri asla eğitilmez.
--policy.load_action_modules=falseparametresini yalnızca temel bir kontrol noktasından ince ayar yaparken ayarlayın. PEFT ile çalışırken, eylem modüllerini--peft.full_training_modulesiçinde (varsayılan) tutun.
Donanım gereksinimleri
Bu sayfadaki komutlar ve gradient checkpointing kullanılarak A800 80 GB GPU'larda ölçüldü:
| Kurulum | GPU'lar | GPU başına parti | GPU başına zirve bellek |
|---|---|---|---|
| Nano, tam ince ayar (FSDP2) | 8 | 32 | 38 GB |
| Nano, LoRA | 1 | 4 | 64 GB |
| Edge, tam ince ayar | 1 | 32 | 47 GB |
| Edge, LoRA | 1 | 8 | 21 GB |
| bfloat16, Nano ve Edge'de Değerlendirme | 1 | 10 ortam | 39 GB ve 15 GB |
- Cosmos3 Nano, tam ince ayar için 80 GB'lık GPU'lara ve en az 4 GPU'ya ihtiyaç duyar: FSDP2 modeli parçalara ayırmadan önce, her GPU tüm float32 modeli (yaklaşık 66 GB) barındırır.
- Yukarıdaki LIBERO komutu, 8 A800 GPU üzerinde optimizator güncellemesi başına yaklaşık 45 saniye sürer, bu da LIBERO-10 için yaklaşık 25 saate karşılık gelir.
Kendi verileriniz üzerinde ince ayar
Cosmos3, eğitim tarifini komut satırından ve veri setinden alır: politika, robota özgü hiçbir mantık içermez. Aşağıdaki maddelere uyduğu sürece herhangi bir LeRobot veri seti çalışır.
Veri seti gereksinimleri
- Kameralar: veri setinin
info.jsondosyasındaki sırasına göre bir ila üçobservation.images.*özelliği. Her görünüm--policy.view_sizeboyutuna yeniden boyutlandırılır (varsayılan olarak ilk kameranın boyutu) ve tek bir video tuvalinde birleştirilir: tek görünüm olduğu gibi, iki görünüm yan yana, üç görünümde ise ilk görünüm üstte, diğer iki görünüm onun altında yan yana yer alır. Kameraları bu yerleşim düzeninin sırasına göre yerleştirin, örneğin LIBERO için[third person, wrist]ve DROID için[wrist, exterior 1, exterior 2]. - Açıklamayı görüntüle:
--policy.view_description, tuval yerleşimini açıklayan istem cümlesidir. Varsayılanlar, LIBERO yerleşimini (sınıf varsayılanları) ve DROID yerleşimini (temelconfig.json) açıklar. Kendi yerleşiminizin cümlesini yazın: yanlış bir açıklama tespit edilmez ve yalnızca istemi zayıflatır. - Eylem gösterimi: politika, veri setindeki eylemleri olduğu gibi öğrenir ve bir dönüştürme adımı içermez. Eğitimden önce, eylemleri öğrenmek istediğiniz gösterime dönüştürün; LIBERO verisi rot6d dönmeleri için bunu yapar. Ortam başka bir gösterim bekliyorsa, eylemleri ortam işleyicilerinde (environment processors) geri dönüştürün (LIBERO ortamı Cosmos3 için bunu yapar).
- Eylem genişliği: en fazla
--policy.max_action_dim(64) kanal. Çıkış genişliği veri setinden gelir. - Kare hızı:
fps, veri seti meta verisinden gelir ve gerçek kontrol hızı olmalıdır: istemciye (prompt) yazılır ve video konumlarının zaman eksenini ile boşta (idle) karelerin eşiklerini belirler. - İstatistikler: varsayılan eylem normalizasyonu
QUANTILES'dir ve bunun içinmeta/stats.jsoniçindeki eyleminq01veq99istatistiklerine ihtiyaç duyar (LeRobot tarafından yazılan veri setlerinde bunlar mevcuttur). Yerel DROID tarifi bunun yerineIDENTITYkullanır. - Durum:
--policy.use_state=trueile mevcut durum, eylemlerin önüne temiz bir durum eylemi olarak yerleştirilir.observation.statebu durumda eylemle aynı genişliğe ve kanal anlamına sahip olmalıdır. Durum ve eylem, kendi istatistikleriyle normalize edilir. - Dil: Her karede
task, istemin talimatıdır. - Gövde:
--policy.domain_id, 32 seçenek arasından eylem projeksiyonlarının satırını seçer. Yerel tarifler LIBERO için 5, DROID için 8 ve RoboCasa için 30 kullanır. Eylem modülleri başlangıç durumlarından başlatıldığında (--policy.load_action_modules=false), her satır eğitilmemiş olarak başlar ve herhangi bir değer işe yarar. - Parça: parça başına
--policy.chunk_sizeeylem (LIBERO için 16, DROID için 32) ve parça başına yürütülen--policy.n_action_stepseylem.
None olarak bırakılan alanlar (fps, view_size) ve eylem kanal adları veri setinden gelir. Diğer tüm alanlar yapılandırmadan gelir, bu nedenle bunları komut satırında veya bir --config_path dosyasında ayarlayın.
Eylem ve durum kanal adları. İstem, chunk içindeki kaç kare boşta (idle) olduğunu (robotun hareket etmediği) belirtir ve
Cosmos3IdleFrameProcessorStep, bunlarımeta/info.jsoniçindeki eylem kanal adlarından sayar.[<prefix>_]<type>_<index>biçimindeki adlar, kanal türlerini belirtir:pos, bir rotasyon (rot6d,rot9d,axisangle,euler_xyz,quat_xyzw,quat_wxyz),gripperveyajoint, kolları ayırt etmek için bir önek ile (örneğinleft_rot6d_0). LIBERO verisipos_0..2, rot6d_0..5, gripper_0kullanırken, DROID yerleşimijoint_0..6, gripper_0kullanır.Bu adlandırma zorunlu değildir. Bu adlandırma yapılmadığında politika yalnızca bir uyarı kaydeder ve istem boşta kare saymaz; bu da LIBERO tarifi zaten gördüğü şeydir (yerel kural altında bölümlerinde boşta kare yoktur). Yerel DROID tarifinin boşta kare sayısını istiyorsanız yalnızca adlandırmayı takip edin.
DROID tarifi
Taban checkpoint'lerin config.json dosyası, yerel DROID eğitim sonrası tarifi (recipe)dir: domain_id=8 vücut (embodiment), 32 eylemlik parçalar (chunks), mevcut durumun bir durum eylemi olarak kullanılması ve bunun üzerinden sayılan boşta (idle) kareler (use_state=true, idle_state=true), normalizasyon yok (IDENTITY), çıkarım sırasında 4 adımlı UniPC ve 3 ölçekli sınıflandırıcı-ücretsiz yönlendirme (classifier-free guidance), ayrıca 8e-5 öğrenme oranı (yerel 2e-4'ün 0.4 çarpanıyla) ve ısınma (warmup) olmadan 100000. adımda sıfıra doğru doğrusal azalma. --policy.path ile başlamak, bu tarif ile eğitim yapar.
Yerel tarif, nvidia/Cosmos3-DROID verisindeki başarılı epizotlar üzerinde eğitim yapar. Cosmos3 yerleşimine sahip bir DROID veri setinde şunlar bulunur:
- Üç kamera
observation.images.wrist_left,observation.images.exterior_1_leftveobservation.images.exterior_2_left, bu sırayla (bilek üstte, onun altında iki dış görünüm), yerel veride 360x640 çözünürlüğünde. joint_0ilejoint_6vegripper_0adlı 8D eklem konumu eylemleri ve aynı yerleşime sahipobservation.state.- 15 FPS kare hızı.
Yerel tarif, 10000 yineleme boyunca 8192 örneklik küresel bir parti ile eğitim yapar ve her 1000 yinelemede bir kontrol noktası oluşturur. 8 GPU'lu tek bir makinede, GPU başına 8 örnek ve 128 birikim adımı aynı küresel partiyi verir (8 x 8 x 128 = 8192) ve her yineleme sayısı 128 ile çarpılır:
accelerate launch --num_processes=8 $(which lerobot-train) \
--policy.path=lerobot/Cosmos3-Nano \
--policy.load_action_modules=false \
--policy.gradient_checkpointing=true \
--policy.repo_id=${HF_USER}/Cosmos3-Nano-Policy-DROID \
--dataset.repo_id=${HF_USER}/DROID-Cosmos3 \
--parallelism.dp_shard=8 \
--accelerator.fsdp.mixed_precision_policy.param_dtype=bfloat16 \
--accelerator.fsdp.mixed_precision_policy.reduce_dtype=bfloat16 \
--accelerator.fsdp.mixed_precision_policy.cast_forward_inputs=false \
--accelerator.gradient_accumulation.steps=128 \
--accelerator.gradient_accumulation.sync_each_batch=true \
--tf32=false \
--ema.type=power \
--ema.sigma_rel=0.1 \
--batch_size=8 \
--steps=1280000 \
--save_freq=128000 \
--policy.scheduler_decay_steps=12800000 \
--output_dir=outputs/train/cosmos3_nano_droid \
--job_name=cosmos3_nano_droid \
--trackio.enable=trueThe native DROID recipe ran on 256 GPUs. On one machine with 8 A800 GPUs one optimizer update of this command takes about 33 minutes, so the full recipe needs many machines. Run the same command on every machine with the multi node flags of accelerate launch (or torchrun), shard within each machine and replicate across machines with --parallelism.dp_replicate=<number of machines> --parallelism.dp_shard=8, and divide --accelerator.gradient_accumulation.steps and the step counts by the number of machines. See HSDP in the multi GPU training guide.
Yeni bir robot
Yeni bir robot için --policy.type ile sınıf varsayılanlarından başlayın ve verilerinizin alanlarını komut satırında ayarlayın, örneğin:
lerobot-train \
--policy.type=cosmos3_edge \
--policy.pretrained_path=lerobot/Cosmos3-Edge \
--policy.load_action_modules=false \
--policy.domain_id=0 \
--policy.chunk_size=32 \
--policy.n_action_steps=32 \
--policy.view_description='The left half shows the front camera; the right half shows the wrist-mounted camera.' \
--dataset.repo_id=${HF_USER}/my_dataset \
...Backbone yapılandırması
Gövde yapılandırması --policy.mot_backbone tek bir komut satırı değeridir. Değiştirmek istediğiniz alanları içeren bir YAML sözlüğü iletin; örneğin, önceden eğitilmiş ağırlıklar olmadan hızlı bir test için daha az katmana sahip bir model:
--policy.type=cosmos3_edge --policy.mot_backbone='{text_config: {num_hidden_layers: 2}, vision_config: {num_hidden_layers: 1}}'Atlanan alanlar, boyutun varsayılanlarını veya --policy.path ile yüklenen yapılandırmanın değerlerini korur. Ondalıklı sayıları 1.0e-6 biçiminde yazın (YAML, 1e-6 değerini bir dize olarak okur) ve değeri bir sözlük olan alanları, örneğin rope_parameters, eksiksiz verin. Mimari alanlar, yüklediğiniz ağırlıklarla eşleşmelidir.
PEFT (LoRA) ile ince ayar
Cosmos3, LeRobot PEFT entegrasyonu (pip install -e ".[cosmos3,training,peft]") aracılığıyla LoRA’yı destekler. Varsayılan olarak LoRA, üretim yolundaki dikkat projeksiyonlarını (q_proj_gen, k_proj_gen, v_proj_gen, o_proj_gen) uyarlar ve eylem modülleri (action2llm, llm2action, action_modality_embed) tam olarak eğitilir ve adaptörle birlikte kaydedilir.
lerobot-train \
--policy.type=cosmos3_nano \
--policy.pretrained_path=lerobot/Cosmos3-Nano \
--policy.load_action_modules=false \
--policy.gradient_checkpointing=true \
--policy.repo_id=${HF_USER}/Cosmos3-Nano-Policy-LIBERO_10-LoRA \
--peft.method_type=lora \
--peft.r=16 \
--peft.lora_alpha=32 \
--policy.optimizer_lr=5e-4 \
--policy.optimizer_weight_decay=0 \
--dataset.repo_id=lerobot/LIBERO_10-Cosmos3 \
--accelerator.mixed_precision=bf16 \
--tf32=false \
--ema.type=power \
--ema.sigma_rel=0.1 \
--batch_size=4 \
--steps=16000 \
--output_dir=outputs/train/cosmos3_nano_libero_10_lora--peft.lora_alpha=32, öğrenme hızı ve ağırlık çürümesi, yerel Cosmos3 LoRA tarifinin değerleridir.--peft.lora_alphaolmadan PEFT 8 kullanır.--policy.load_action_modules=falseile eylem modülleri şekil değiştirebilir (--policy.max_action_dim,--policy.num_embodiment_domains). Bu yalnızca tam ince ayar (full fine-tuning) için geçerlidir: bir PEFT çalıştırmasını yeniden yüklemek, aynı şekillere ihtiyaç duyan taban modeli yükler.- PEFT ile
--policy.train_gen_stream_onlyve--policy.freeze_vision_encoderparametrelerinin bir etkisi yoktur: yalnızca adaptörler ve eylem modülleri eğitilir. - Eylem projeksiyonlarını (
action2llm,llm2action)--peft.target_modulesparametresine eklemeyin: bunlar, doğrudan gruplu matris çarpımı tarafından okunan, vücut (embodiment) başına tablolar olduğu için LoRA bunları değiştiremez. Zaten tam olarak eğitiliyorlar. - PEFT ile varsayılan float32
--policy.dtypedeğerini koruyun, böylece tam olarak eğitilen eylem modülleri float32 ana ağırlıkları korur. - Yerel tarifler, LoRA parti boyutu veya zamanlaması tanımlamaz. Komut, LIBERO zamanlamasını (16000. adımda sıfıra doğrusal azalma) ve adımda 4 örnek ile korur.
- Cosmos3 Nano, LoRA ile tek bir 80 GB GPU üzerinde, gradyan kontrol noktası (gradient checkpointing) kullanılarak eğitilir; GPU başına 4 örnek için yaklaşık 64 GB bellek gerektirir (bkz. Donanım gereksinimleri).
Değerlendirme
Dört suite üzerinde bir LIBERO checkpoint'ini değerlendirin:
lerobot-eval \
--policy.path=lerobot/Cosmos3-Nano-Policy-LIBERO \
--policy.dtype=bfloat16 \
--tf32=false \
--env.type=libero \
--env.task=libero_spatial,libero_object,libero_goal,libero_10 \
--env.observation_height=256 \
--env.observation_width=256 \
--eval.n_episodes=10 \
--eval.batch_size=10 \
--output_dir=outputs/eval/cosmos3_nano_libero- Kendi eğitim çalışmanızın bir kontrol noktası için EMA ağırlıklarını iletin:
--policy.path=outputs/train/cosmos3_nano_libero_10/checkpoints/last/pretrained_model_ema. --env.observation_height=256 --env.observation_width=256kameraları eğitim verisinin 256x256 çözünürlüğünde işler.- LIBERO ortamı, Cosmos3 eylem dönüşümünü işlemcilerine otomatik olarak ekler: 10D rot6d eylemleri, LIBERO'nun 7D eksen açısı eylemlerine geri dönüştürülür. Politikayı
lerobot-evaldışında çalıştırdığınızda, ortam işlemcilerini delerobot.envs.factoryiçindekimake_env_pre_post_processors(env_cfg, policy_cfg)ile oluşturun. - Değerlendirme protokolü ve diğer seçenekler için LIBERO kılavuzuna bakın.
Tahmin edilen video
Cosmos3, gelecek kareleri eylemlerle birlikte tahmin eder. Her parçanın tahmin edilen videosunu VAE ile çözmek ve pred_episode_*.mp4 dosyalarını, render edilmiş eval_episode_*.mp4 videolarının yanına yazmak için --policy.save_predicted_video=true parametresini geçirin.
Cosmos3 Edge, LIBERO-10 görevi “siyah kaseyi dolabın alt çekmecesine koy ve kapat” üzerinde. Sol: rollout’un üçüncü şahıs ve bilek gözlemleri. Sağ: politika tarafından tahmin edilen video, mevcut gözlemden her 16 aksiyonda bir yeniden örneklenmiştir.
Sonuçlar
LIBERO
| Modeller | Libero-Spatial | Libero-Object | Libero-Goal | Libero-10 | Ortalama |
|---|---|---|---|---|---|
| Cosmos3-Nano-Policy-LIBERO | 98.0% (490/500) | 99.4% (497/500) | 97.4% (487/500) | 96.8% (484/500) | 97.90% |
| Cosmos3-Edge-Policy-LIBERO | 98.6% (493/500) | 99.4% (497/500) | 97.2% (486/500) | 96.6% (483/500) | 97.95% |
| Cosmos3-Nano-Policy-LIBERO_10 | N/A | N/A | N/A | 97.6% (488/500) | 97.60% |
| Cosmos3-Edge-Policy-LIBERO_10 | N/A | N/A | N/A | 95.2% (476/500) | 95.20% |
| Cosmos-Nano-TechReport | N/A | N/A | N/A | 97.4% | 97.40% |
LIBERO'da kapalı döngü başarı oranları. Cosmos3-Nano-Policy-LIBERO ve Cosmos3-Edge-Policy-LIBERO, dört LIBERO setinde (lerobot/Cosmos3-Nano-Policy-LIBERO, lerobot/Cosmos3-Edge-Policy-LIBERO) eğitilmiştir. Cosmos3-Nano-Policy-LIBERO_10 ve Cosmos3-Edge-Policy-LIBERO_10 yalnızca LIBERO-10'da (lerobot/Cosmos3-Nano-Policy-LIBERO_10, lerobot/Cosmos3-Edge-Policy-LIBERO_10) eğitilmiştir ve Cosmos3-Nano-Policy-LIBERO_10'ın eğitim kurulumu, teknik raporda bildirilen LIBERO-10 tarifini takip eder. Cosmos-Nano-TechReport, yalnızca LIBERO-10'da eğitilen Cosmos3 Nano'nun LIBERO-10 başarı oranıdır; teknik raporun Tablo 20'sinde bildirildiği gibidir (MT-init, 2000 iterasyon, 500 rollout).
Atıf
@techreport{nvidia2026cosmos3,
title = {Cosmos 3: Omnimodal World Models for physical AI},
author = {{NVIDIA Cosmos Team}},
year = {2026},
url = {https://research.nvidia.com/labs/cosmos-lab/cosmos3/technical-report.pdf}
}Lisans
LeRobot uygulaması, LeRobot'un Apache 2.0 Lisansı'nı takip eder. Cosmos3 ağırlıkları ve yerel kod, OpenMDW-1.1 Lisansı altında yayınlanmıştır.
Update on GitHub