LeRobot documentation

OpenGalaxea G0.5

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

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=g05 yapı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-train ile, çıkarım lerobot-rollout ile 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ı LICENSE olarak ve NOTICE'iyle birlikte içerir ve Galaxea tarafından onaylanmamıştır.

Kontrol Noktaları

Girdi ve Çıktı Sözleşmeleri

Kontrol NoktasıYayınlanan eylem yoluHam → politika yerleşimiKameralarTahmin EdilenÇalıştırıldıNormalizasyon
g05_baseAçıkça seçilen AR ActionCodec veya akışR1 Lite/Pro eklem noktaları → 27B tüm vücut yerleşimibaş + her iki bilek, 6 adımlık geçmiş3216adım adım z-puanı
g05_liberoSürekli akışsağ EEF 6 + gripper 1 → 20D gruplu yerleşimdış yüzey, sağ bilek3210adım adım q01/q99
g05_robotwin20Sürekli akışiki kol 6+pençe → 20B gruplu yerleşimyüksek, sol bilek, sağ bilek328adım adım q01/q99
g05_so101Flow veya AR ActionCodec + yerel CoTsağ kol eklemleri 6 → 20D gruplu yerleşimdış yüzey, isteğe bağlı sol + sağ bilek3216adı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ı

DepoSözleşme
lerobot/g05_base27D taban, R1 Lite işlemci
lerobot/g05_libero20D LIBERO
lerobot/g05_robotwin2020D RoboTwin
lerobot/g05_so10120D 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 test

Eğitim ve çıkarım için GPU üzerinde flash-linear-attention paketini 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-attention

Eğ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=30

System 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
KomutEtki
/startpolitika 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>\|offyüksek düzeyli bir hedefe doğru kendi alt görevlerini seçmesine izin verin
/resethareketi durdur, başlangıç konumuna dön, görevi geri yükle
/stopoturumu sonlandırın ve kapatın
/helpkomut 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.
  • /subtask veya /autosteer: --policy.runtime_system=system1 kullanın. Alt görev, görev haline gelir ve politika doğrudan üzerinde çalışır; /autosteer yine 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_fieldsEğitilmiş talimatOluşturulan düşünce zinciri
["subtask"] (varsayılan)predict subtaskalt görev
["bbox", "subtask"]predict bbox, subtask and actionkutuları, 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, x2 sı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=1000

Yerleş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 subtask ve temellendirilmiş vqa etiketlemeleri 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 /subtask veya /autosteer bir 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=true

Temel Yapılandırma Parametreleri

ParametreAçıklama
policy.embodimentİstemde yazılan robot adı; yayınlanmış bir slot tablosu seçer
policy.state_slots, policy.action_slotsHer hamle durum/aksiyon değerinin açık politika-düzeni yuvası
policy.camera_orderKontrol noktası başına veri seti kamera görüntü yuvası; null bunu boş bırakır
policy.action_headKontrol noktasının flow veya actioncodec eylem yolunu kullanır
policy.runtime_systemDoğrudan System 1 veya birleşik System 2 akıl yürütme ve eylem seçer
policy.runtime_cot_fieldsSystem 2 düşünce zinciri: ["subtask"] veya ["bbox", "subtask"]
policy.dtypebfloat16 (CUDA'da karma hassasiyet yayımlandı) veya float32
policy.chunk_sizeHer parçada tahmin edilen eylem sayısı
policy.n_action_stepsYeniden planlamadan önce yürütülen eylem sayısı
policy.use_language_recipeG0.5'in yerleşik dil denetimi tarifini etkinleştirin
policy.recipe_pathYemek tarifi YAML dosyası bir kez policy.recipe içine okunur (kaydedilmez)
policy.optimizer_backbone_lr_multiplierDil omurgası için öğrenme hızı çarpanı
policy.optimizer_vision_lr_multiplierGö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-eval

Referanslar

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.

Update on GitHub