LeRobot documentation
OpenGalaxea G0.5
OpenGalaxea G0.5
G0.5, tek bir akışta gövdesel akıl yürütme ve eylemler üretebilen bir Qwen3.5-2B görme-dil-eylem modelidir. LeRobot, eylem aşamasını System 1 olarak, isteğe bağlı yerleşik düşünce zinciri (chain-of-thought) aşamasını ise System 2 olarak sunar. Bunlar ayrı modeller değildir: çalışma zamanı (runtime) her ikisini de tek bir çıkarım çağrısından alır ve eylem, akıl yürütme üzerinde koşullu olarak kalır.
Model Genel Bakış
Transformers, yerel multimodal Qwen3.5 omurgasını, görme kulesini ve işleyicisini içerir. G0.5, standart bir Qwen3_5ForConditionalGeneration kontrol noktası değildir: proprioception/action yolunu, action uzmanını, flow-matching başlığını, ActionCodec'i ve birleşik CoT/action çözümlemesini ekler. LeRobot, bu G0.5 bileşenlerini yerel olarak uygular ve dönüştürülmüş kontrol noktalarını OpenGalaxea Python paketi, Hydra veya OmegaConf olmadan yükler.
LeRobot Entegrasyonunun Kapsamı
- Standart
policy.type=g05yapılandırması ve Hub kontrol noktası yükleme. - Yerel sürekli akış ve ayrık ActionCodec eylem üretimi.
- Opsiyonel aynı geçişte System 2 akıl yürütme ve eylem üretimi.
- Seri hale getirilebilir kamera, durum, eylem, normalizasyon ve istem işleyicileri.
- İnce ayar
lerobot-trainile, çıkarımlerobot-rolloutile yapılır. - LIBERO, RoboTwin, SO-101 ve yayınlanan R1 Lite/Pro checkpoint sözleşmeleri.
G0.5 entegrasyon kodu (
src/lerobot/policies/g05) ve kontrol noktaları, ticari olmayan kısıtlamaları da içeren G0.5 Topluluk Lisansı'nı kullanır; Apache-2.0 bu materyaller için geçerli değildir. Dönüştürülen kontrol noktaları, bu lisansıLICENSEolarak veNOTICE'iyle birlikte içerir ve Galaxea tarafından onaylanmamıştır.
Kontrol Noktaları
Girdi ve Çıktı Sözleşmeleri
| Kontrol Noktası | Yayınlanan eylem yolu | Ham → politika yerleşimi | Kameralar | Tahmin Edilen | Çalıştırıldı | Normalizasyon |
|---|---|---|---|---|---|---|
g05_base | Açıkça seçilen AR ActionCodec veya akış | R1 Lite/Pro eklem noktaları → 27B tüm vücut yerleşimi | baş + her iki bilek, 6 adımlık geçmiş | 32 | 16 | adım adım z-puanı |
g05_libero | Sürekli akış | sağ EEF 6 + gripper 1 → 20D gruplu yerleşim | dış yüzey, sağ bilek | 32 | 10 | adım adım q01/q99 |
g05_robotwin20 | Sürekli akış | iki kol 6+pençe → 20B gruplu yerleşim | yüksek, sol bilek, sağ bilek | 32 | 8 | adım adım q01/q99 |
g05_so101 | Flow veya AR ActionCodec + yerel CoT | sağ kol eklemleri 6 → 20D gruplu yerleşim | dış yüzey, isteğe bağlı sol + sağ bilek | 32 | 16 | adım adım q01/q99 |
Her dönüştürülen checkpoint, çözümlenmiş model ve işlemci yapılandırmasını, ActionCodec meta verilerini, istatistikleri, tam istem şablonunu ve lisansı saklar.
Dönüştürülen Kontrol Noktaları
| Depo | Sözleşme |
|---|---|
lerobot/g05_base | 27D taban, R1 Lite işlemci |
lerobot/g05_libero | 20D LIBERO |
lerobot/g05_robotwin20 | 20D RoboTwin |
lerobot/g05_so101 | 20D SO-101 (so100 profili) |
Bu kontrol noktaları ticari olmayan G0.5 Topluluk Lisansı altında yayınlanmıştır; bkz. Lisans.
lerobot/g05_base, bu 27D model ağırlıklarını, her iki eylem başlığını, ActionCodec belirteçleyicisini ve yayımlanan altı adımlı R1 Lite işleyici/istatistik sözleşmesini sağlar.
Kurulum Gereksinimleri
G0.5 Transformers bağımlılığıyla LeRobot'u yükleyin:
uv sync --extra g05 --extra testEğitim ve çıkarım için GPU üzerinde
flash-linear-attentionpaketini yükleyin. Qwen3.5'in çoğu decoder katmanı Gated DeltaNet doğrusal dikkatidir ve bu paket olmadan Transformers, çok daha yavaş bir PyTorch çekirdeğine geri düşer ve “The fast path is not available” kaydını tutar. Saf Triton tabanlı olduğu için derleme gerektirmeden yüklenir:uv pip install flash-linear-attentionEğitim, bu yöntemle yaklaşık 1,5 kat daha hızlıdır ve daha az bellek kullanır; kayıplar ise aynıdır. Triton çekirdeklerini derlediği için ilk adım yaklaşık 20 saniye daha uzun sürer.
SO-100 ve SO-101, yayınlanan so100 gövde belirteci ve altı eklemli sağ kol sözleşmesini paylaşır. Eksik sol bilek kamerası sıfır dolgusuyla tamamlanır.
Kullanım
Hedef vücut yapısıyla eşleşen kontrol noktasını standart --policy.path seçeneğiyle yükleyin. Paketlenmiş yapılandırma, doğru eylem başlığını, kamera sırasını, boyutları, normalizasyonu ve yürütme ufku seçer.
Etkileşimli Sistem 1 ve Sistem 2 Çalışma Zamanı
G0.5, akıl yürütme ve eylemleri tek bir çıkarım akışından üretir: düşünce zinciri, parça ile aynı geçişte üretilir ve eylem buna koşullanır.
Kontrol noktasındaki policy.runtime_system yolu seçer. System 1, seçilen ActionCodec veya akış parçasını doğrudan çalıştırır ve CoT üretmez:
lerobot-rollout \
--policy.path=lerobot/g05_so101 \
--policy.runtime_system=system1 \
--task="pick up the cup" \
--fps=30System 2, paketlenmiş checkpoint meta verisinde predict_cot=true olduğunda kullanılabilir. Düşünce zinciri, politikanın tahmini olarak geri döner: predict_action_chunk, PolicyOutput bir partisi döndürür; bu partide parça "action" altında, "prediction" altında ise her ortamın CoT alt görevi (language["subtask"],
ortam başına bir dize) ve policy.config.bbox_camera üzerinde [0, 1] xyxy kesirleri olarak kutular (boxes[camera], ortam başına bir yanıt) bulunur ve select_action, bunu her parçanın ilk eylemiyle birlikte döndürür. Model,
kamera belirtmez: BBox hedefleri, eğitim sırasında tamamı o kamerada çizilir. System 1
CoT üretmez ve çıplak eylemleri döndürür.
output = policy.predict_action_chunk(batch)
print(output["prediction"])
# {"language": {"subtask": ["grasp the cup"]},
# "boxes": {"observation.images.top": [{"detections": [{"label": "cup", "bbox": [...]}]}]}}--display_data=true ile lerobot-rollout, alt görevi gösterir ve bbox kamerası üzerinde kutuları Rerun veya Foxglove'da çizer.
stdin'den oturum sürme
--interactive=true, donanım ve politika bağlı ve sıcak kalırken rollout'u sohbet tarzı komutlarla yönlendirir. Robot, /start yazana kadar hareket etmez; bu da fiziksel bir SO-101'i başlatmanın güvenli yolunu oluşturur: önce kamera indekslerini ve kol portunu doğrulayın, ardından başlatın.
lerobot-rollout \
--interactive=true \
--policy.path=lerobot/g05_so101 \
--policy.device=cuda \
--robot.type=so101_follower \
--robot.port=/dev/ttyACM0 \
--robot.id=my_follower \
--robot.cameras='{exterior: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}, wrist_right: {type: opencv, index_or_path: 2, width: 640, height: 480, fps: 30}}' \
--task="pick up the cube" \
--fps=30| Komut | Etki |
|---|---|
/start | politika kontrol döngüsünü başlatın (veya yeniden başlatın) |
/subtask <text> | politikanın izlediği talimatı ayarlayın |
/vqa <text> | G0.5'te desteklenmiyor (bkz. aşağı) |
/autosteer <goal>\|off | yüksek düzeyli bir hedefe doğru kendi alt görevlerini seçmesine izin verin |
/reset | hareketi durdur, başlangıç konumuna dön, görevi geri yükle |
/stop | oturumu sonlandırın ve kapatın |
/help | komut listesini göster |
/autosteer, canlı gözlemden gelen yanıtları ve predict_cot=true içeren bir checkpoint gerektirdiği için /start çalışana kadar reddedilir. Seçtiği alt görevi Autosteer subtask: olarak yazdırır ve --autosteer_interval_s, iki yeniden planlama sorgusu arasında geçen hareket süresini saniye cinsinden belirler.
G0.5'in eğitildiği gibi, görevin nasıl verildiğine uygun çalışma zamanını seçin:
- Yüksek düzey görev, yönlendirme yok: System 2'yi koruyun. Her parça, görevden mevcut alt görevi tahmin eder, ardından onun üzerinde işlem yapar.
/subtaskveya/autosteer:--policy.runtime_system=system1kullanın. Alt görev, görev haline gelir ve politika doğrudan üzerinde çalışır;/autosteeryine de her alt görevi hedeften bir System 2 sorgusuyla planlar. Alt görevin görev olarak ele alındığı bir System 2, alt görevin alt görevini planlayacak, bu da üzerinde eğitilmediği bir istemdir.
Düşünce zincirinin seçimi
--policy.runtime_cot_fields, G0.5'in eğitim görmüş zincir-düşünce formatlarından hangisinin System 2 tarafından her parça öncesinde üretileceğini seçer. Aksiyon, zincir-düşüncenin tamamına dikkat eder; bu nedenle içeriğinde ne varsa aksiyonu koşullandırır.
runtime_cot_fields | Eğitilmiş talimat | Oluşturulan düşünce zinciri |
|---|---|---|
["subtask"] (varsayılan) | predict subtask | alt görev |
["bbox", "subtask"] | predict bbox, subtask and action | kutuları, ardından alt görev |
Örneğin, ["bbox", "subtask"] şunu üretir:
BBox: cube <loc0397><loc0717><loc0625><loc0895>|Subtask: pick up the blue cube
["subtask"]parça başına en az tokeni üretir, bu nedenle daha hızlı bir seçenektir.["bbox", "subtask"]önce ilgili nesneleri bulur ve alt görevi ile eylemi sahneye bağlar. Her kutu,y1, x1, y2, x2sırasındaki dört konum belirteciyle başlayan bir etikettir;<locNNNN>belirteci, görüntünün kesri olarak koordinatın 1024 ile çarpımıdır. Kutular BBox kamerasına (--policy.cot_bbox_camera, varsayılan olarak ilk boş olmayan kamera yuvası) atıfta bulunur.
lerobot/g05_base ve lerobot/g05_so101 her iki formatta da eğitildi; LIBERO ve RoboTwin checkpoint'leri predict_cot=false değerine sahip ve System 2 içermez. Bir fine-tune, veri seti BBox kamerasında yerelleştirilmiş vqa etiketleri içeriyorsa (Veri Gereksinimleri bkz.) ancak o zaman işe yarar kutular üretir.
/vqa neden desteklenmiyor
G0.5’in metin kafası genel bir görme-dil asistanı değildir. Yukarıdaki düşünce zinciri biçimlerinden birini, bunlardan birinin sabit talimatından sonra yalnızca bu biçimleri üretecek şekilde eğitilmiştir ve istemcisi serbest biçimli bir soru için bir yuva içermez. /vqa sorusu yalnızca görevin yerini alabilir, bu nedenle model bir cevap yerine o “görev” için bir alt görevi (ve kutuları) yanıtlar. /autosteer çalışır çünkü hedefi bir görevdir ve bu yuvanın beklediği şey de budur.
Etkileşimli modda --duration, tüm oturumu değil, her bir /start segmentini sınırlar.
Veri Gereksinimleri
Veri seti, seçilen checkpoint sözleşmesiyle eşleşen durum, eylem, kamera ve görev özelliklerini açığa çıkarmalıdır. Kamera adları serbesttir: --policy.camera_order, checkpoint’in görüntü yuvalarından her birine beslenen veri seti kamerasını listeler ve null bir yuvayı boş bırakır (sıfırla doldurulur). SO-101 için yuvalar dış, sol bilek ve sağ bilektir; sol bilek isteğe bağlıdır.
Training System 2 dil hedefleri ek olarak checkpoint’in işaretlenmiş CoT alanlarını gerektirir. Normal bir LeRobot kaydı eylem denetimi sağlar ancak CoT etiketleri sentezlemez. annotation pipeline’da belirtildiği gibi lerobot-annotate ile subtask ve temellendirilmiş vqa dil sütunlarını oluşturun.
Eğitim
G0.5, LeRobot eğitim yüzeyini yerel olarak uygular: forward, asistan-jeton çapraz entropisini ve akış-eşleştirme kaybını hesaplar; politika, VLM/görüntü/aksiyon optimizör gruplarını açığa çıkar ve kontrol noktası, normal LeRobot betikleri tarafından kaydedilebilir, devam ettirilebilir ve yüklenebilir.
Hedef, paketlenmiş ar.ce_weight, isteğe bağlı ar.ce_z_loss_scale ve fm.fm_weight değerlerini korur; otoregresif kayıp, CoT metin ve ActionCodec hedeflerini birlikte kapsar.
Örneğin, SO-101 kontrol noktasını bir LeRobot veri setinde ince ayar yapın:
Eğitim Komutu Örneği
export HF_USER=your_hf_username
lerobot-train \
--dataset.repo_id=${HF_USER}/my_so101_dataset_annotated \
--policy.path=lerobot/g05_so101 \
--policy.device=cuda \
--policy.use_language_recipe=true \
--policy.cot_bbox_camera=observation.images.exterior \
--policy.repo_id=${HF_USER}/g05_so101_finetuned \
--policy.private=true \
--output_dir=outputs/train/g05_so101 \
--job_name=g05_so101 \
--batch_size=16 \
--steps=10000 \
--save_freq=1000Yerleşik tarif, akışkan eğitim karışımı gibi üç tür örnek karıştırır:
- 4/6 zincirleme düşünce: görev, ardından o zaman damgasında etkin olan
subtaskve temellendirilmişvqaetiketlemeleri için BBox ve/veya AltGörev hedefi, sonra eylemler. - 1/6 alt görev olarak görev: etkin alt görev talimattır, doğrudan eylemlere geçer.
Politikanın
/subtaskveya/autosteerbir alt görev belirlediğinde gördüğü şey budur. - 1/6 düz: görev doğrudan eylemlere, System 1 istemi.
Zaman damgasında herhangi bir anotasyonu olmayan bir chain-of-thought örneği, düz prompt'u eğitir.
Etiketleme hattı’nda açıklandığı gibi, gerekli subtask ve temellendirilmiş vqa dil sütunlarını lerobot-annotate ile oluşturun. Yerleşik tarif, BBox kamerasına işaretlenen kutuları okur: --policy.cot_bbox_camera, varsayılan olarak ilk boş olmayan kamera yuvasıdır. Kutu koordinatları, lerobot-annotate’ın sakladığı gibi, görüntü genişliğinin ve yüksekliğinin [0, 1] oranları olmalıdır; piksel kutuları reddedilir. Farklı bir tarif eğitmek için açık bir harici YAML dosyasını --policy.recipe_path=/path/to/recipe.yaml ile iletin: yapılandırma oluşturulurken bir kez policy.recipe içine okunur, bu nedenle dosya daha sonra değişse bile kaydedilen kontrol noktası, eğitildiği tarifi korur.
Başlangıç noktasını başka bir robot üzerinde ince ayar
lerobot/g05_base, daha önce görmediği bir robot üzerinde ince ayarlanabilir. Robotu
--policy.embodiment ile adlandırın, örneğin veri setinin robot_type değeri; bu ad,
istemin Embodiment: metnidir. Bu bayrak zorunludur: yoksa
kontrol noktası kendi embodiment ve slot tablosunu korur.
Eklemeler, veri setindeki ekleme adlarından temel yerleşime yerleştirilir: left_ öneki olan eklemler sol kola, diğerleri sağ kola gider, adı
gripper içeren bir ekleme o kolun gripper slotunu alır ve kalanlar
sırayla dokuz kontrol slotunu doldurur. Böylece gripper'lı 5 eklemli bir kol,
sağ kol slotlarını 10-14 aralığında ve sağ gripper'ı doldurur; 7-DoF'lu bir kol ise 10-16 aralığını ve gripper'ı doldurur.
Eklemleri açıkça yerleştirmek için --policy.state_slots ve --policy.action_slots değerlerini ayarlayın. Çözümlenen slotlar, ince ayarlanmış kontrol noktasıyla birlikte kaydedilir.
Aşağıdaki örnek, front ve wrist kameralarıyla kaydedilmiş tek kollu bir robot üzerinde ince ayar yapar. Temel kontrol noktasının görüntü yuvaları bir baş görünümü, sol bilek ve sağ bilektir; tek kol sağda yer aldığından, bilek kamerası sağ bilek yuvasını alır ve sol bilek yuvası boş kalır. Liste değerli bayraklar tırnak içinde JSON alır.
lerobot-train \
--dataset.repo_id=${HF_USER}/my_robot_dataset_annotated \
--policy.path=lerobot/g05_base \
--policy.embodiment=my_robot \
--policy.camera_order='["observation.images.front", null, "observation.images.wrist"]' \
--policy.n_obs_steps=1 \
--policy.use_language_recipe=true \
--policy.device=cuda \
--policy.repo_id=${HF_USER}/g05_my_robot_finetuned \
--output_dir=outputs/train/g05_my_robot \
--job_name=g05_my_robot \
--batch_size=16 \
--steps=10000--policy.n_obs_steps=1, üst akış ince ayarlarında olduğu gibi, her kamera için bir kare besler;
temel kontrol noktasının altı adımlık geçmişi, örnek başına gelen görüntü sayısını altı katına çıkarır.
Normalization, veri setinin kendi istatistiklerini kullanır (temel checkpoint için z-score; q01/q99 için --policy.normalization_mapping='{"VISUAL": "IDENTITY", "STATE": "QUANTILES", "ACTION": "QUANTILES"}' parametresini iletin). Gripper mutlak kalır (temel checkpoint'te relative_exclude_joints=["gripper"]), kol eklemleri ise deltalar olarak eğitilir. BBox hedefleri, observation.images.front'teki ilk boş olmayan kamera yuvasına işaretlenmiş, temellendirilmiş vqa yanıtlarından gelir.
SO-101 tarifi, 8e-5 öğrenme hızı ve 1.000 ısınma adımıyla AdamW kullanır. Paketlenmiş LIBERO ve RoboTwin yapılandırmaları, sırasıyla 1.000 ve 500 ısınma adımıyla yayınlanan 1e-5 tarifini kullanır. Tüm profiller, G0.5’in parametre gruplarını ve öğrenme hızı çarpanlarını korur. Farklı bir optimizasyon tarifiyle eğitim yapmak için bunları geçersiz kılın:
--policy.optimizer_lr=2e-5 \ --policy.optimizer_backbone_lr_multiplier=0.5 \ --policy.optimizer_vision_lr_multiplier=0.1
Standart LeRobot kontrol noktasıyla kaydedilmiş bir çalışmayı yeniden başlatın:
lerobot-train \
--config_path=outputs/train/g05_so101/checkpoints/last/pretrained_model/train_config.json \
--resume=trueTemel Yapılandırma Parametreleri
| Parametre | Açıklama |
|---|---|
policy.embodiment | İstemde yazılan robot adı; yayınlanmış bir slot tablosu seçer |
policy.state_slots, policy.action_slots | Her hamle durum/aksiyon değerinin açık politika-düzeni yuvası |
policy.camera_order | Kontrol noktası başına veri seti kamera görüntü yuvası; null bunu boş bırakır |
policy.action_head | Kontrol noktasının flow veya actioncodec eylem yolunu kullanır |
policy.runtime_system | Doğrudan System 1 veya birleşik System 2 akıl yürütme ve eylem seçer |
policy.runtime_cot_fields | System 2 düşünce zinciri: ["subtask"] veya ["bbox", "subtask"] |
policy.dtype | bfloat16 (CUDA'da karma hassasiyet yayımlandı) veya float32 |
policy.chunk_size | Her parçada tahmin edilen eylem sayısı |
policy.n_action_steps | Yeniden planlamadan önce yürütülen eylem sayısı |
policy.use_language_recipe | G0.5'in yerleşik dil denetimi tarifini etkinleştirin |
policy.recipe_path | Yemek tarifi YAML dosyası bir kez policy.recipe içine okunur (kaydedilmez) |
policy.optimizer_backbone_lr_multiplier | Dil omurgası için öğrenme hızı çarpanı |
policy.optimizer_vision_lr_multiplier | Görme kulesi için öğrenme hızı çarpanı |
Aksiyon başlığı, boyutlar, ufuk, işlemci modları ve normalizasyon checkpoint'ten gelir; uyumsuz geçersiz kılma işlemleri yükleme sırasında reddedilir.
Değerlendirme
LIBERO simülatörü yüklendikten sonra, LIBERO kontrol noktasını kamera adları ve göreli kontrolüyle değerlendirin:
lerobot-eval \
--policy.path=lerobot/g05_libero \
--policy.device=cuda \
--env.type=libero \
--env.task=libero_10 \
--env.control_mode=relative \
--env.observation_height=512 \
--env.observation_width=512 \
'--env.camera_name_mapping={"agentview_image": "image", "robot0_eye_in_hand_image": "wrist_image"}' \
--eval.batch_size=1 \
--eval.n_episodes=5 \
--seed=0 \
--output_dir=outputs/g05-libero-lerobot-evalReferanslar
Lisans
src/lerobot/policies/g05 altındaki G0.5 entegrasyon kodu, Galaxea’nın uygulamasından uyarlanmıştır ve checkpoint ağırlıkları gibi G0.5 Topluluk Lisansı altında lisanslanmıştır, LeRobot’un Apache-2.0’ı değil.
Bir checkpoint indirmeden veya kullanmadan önce bu lisansı inceleyip kabul edin.
Fine-tune, G0.5'in türev bir çalışmasıdır. Yeniden dağıttığınızda, türetildiği checkpoint'in LICENSE ve NOTICE dosyalarını dahil edin: LeRobot bunları sizin için kopyalamaz, ancak oluşturulan model kartı lisansı belirtir.