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 هو نموذج رؤية ولغة وإجراء من نوع Qwen3.5-2B قادر على توليد الاستدلال المادي والإجراءات في تدفق واحد. يعرّض LeRobot مرحلة الإجراء كنظام 1 والمرحلة الاختيارية الأصلية لسلسلة الأفكار كنظام 2. ليست هذه نماذج منفصلة: يحصل وقت التشغيل على كلا النظامين من استدعاء استنتاج واحد، ويبقى الإجراء مشروطًا بالاستدلال.

نظرة عامة على النموذج

Transformers includes the native multimodal Qwen3.5 backbone, vision tower, and processor. G0.5 is not a stock Qwen3_5ForConditionalGeneration checkpoint, however: it adds the proprioception/action path, action expert, flow-matching head, ActionCodec, and unified CoT/action decode. LeRobot implements those G0.5 components natively and loads converted checkpoints without the OpenGalaxea Python package, Hydra, or OmegaConf.

ما تغطيه تكامل LeRobot

  • إعداد policy.type=g05 القياسي وتحميل نقطة التفتيش من Hub.
  • توليد تدفق مستمر أصلي وتوليد إجراءات ActionCodec منفصلة.
  • استدلال من النوع 2 وتوليد إجراءات في نفس المرور، اختيارياً.
  • معالجات قابلة للتسلسل للكاميرا والحالة والإجراء والتطبيع والموجّه.
  • الضبط الدقيق عبر lerobot-train والاستدلال عبر lerobot-rollout.
  • LIBERO وRoboTwin وSO-101، ونشر عقود نقاط التفتيش R1 Lite/Pro.

يخضع كود تكامل G0.5 (src/lerobot/policies/g05) ونقاط التفتيش لترخيص G0.5 Community License، والذي يتضمن قيودًا على الاستخدام غير التجاري؛ ولا ينطبق ترخيص Apache-2.0 على تلك المواد. تأتي نقاط التفتيش المحوّلة مع ذلك الترخيص كملف LICENSE إلى جانب ملف NOTICE الخاص به، وهي غير معتمدة من قِبل Galaxea.

نقاط التفتيش

عقود الإدخال والإخراج

نقطة التفتيشمسار الإجراء المُطلَقRaw → تخطيط السياسةالكاميراتمتوقعتم التنفيذالتطبيع
g05_baseAR ActionCodec أو تدفق تم اختياره بشكل صريحمفاصل R1 Lite/Pro → تخطيط كامل للجسم بأبعاد 27الرأس وكلا المعصمين، تاريخ من 6 خطوات3216درجة ز-الخطوة
g05_liberoالتدفق المستمريمين EEF 6 + ملقط 1 → تخطيط مجمّع 20Dالسطح الخارجي، المعصم الأيمن3210stepwise q01/q99
g05_robotwin20التدفق المستمرذراعان 6+مقبض → تخطيط مجمّع 20Dمرتفع، معصم يسار، معصم يمين328stepwise q01/q99
g05_so101تدفق أو AR ActionCodec + CoT أصليمفاصل الذراع اليمنى 6 → تخطيط مجمّع 20Dالخارجي، معرس معصمين اختياري (يسار + يمين)3216stepwise q01/q99

تخزّن كل نقطة تحقق محوّلة إعدادات النموذج والمعالج المُحدَّدة، وبيانات الوصف الخاصة بـ ActionCodec، والإحصاءات، وقالب الموجه الدقيق، والرخصة.

نقاط التفتيش المحوّلة

المستودععقد
lerobot/g05_baseقاعدة 27D، معالج R1 Lite
lerobot/g05_libero20D LIBERO
lerobot/g05_robotwin2020D روبوتوين
lerobot/g05_so10120D SO-101 (ملف so100)

تُطرح هذه النقاط المحفوظة بموجب ترخيص مجتمع G0.5 غير التجاري؛ راجع الترخيص.

lerobot/g05_base يوفر أوزان النموذج ذات الأبعاد الـ 27، ورؤوس الإجراء الاثنين، ومجزئ ActionCodec، وعقد المعالج/الإحصاءات المكون من ست خطوات والمُطلَق لـ R1 Lite.

متطلبات التثبيت

قم بتثبيت LeRobot مع اعتمادية G0.5 Transformers:

uv sync --extra g05 --extra test

Install flash-linear-attention for training and inference on GPU. Most Qwen3.5 decoder layers are Gated DeltaNet linear attention, and without it Transformers falls back to a much slower PyTorch kernel, logging “The fast path is not available”. It is pure Triton, so it installs without a build:

uv pip install flash-linear-attention

تكون عملية التدريب أسرع بحوالي 1.5 مرة باستخدامه، مع استهلاك أقل للذاكرة، وبفقدان (losses) متطابق. يستغرق الخطوة الأولى حوالي 20 ثانية إضافية بينما يقوم Triton بتجميع نواته (kernels).

تشارك SO-100 وSO-101 رمز التجسيد so100 المُصدر وعقد الذراع اليمنى ذات المفاصل الستة. يتم ملء الكاميرا المفقودة في معصم اليد اليسرى بأصفار.

الاستخدام

حمّل نقطة التفتيش التي تتطابق مع التجسيد المستهدف باستخدام الخيار القياسي --policy.path. يقوم التكوين المعبأ باختيار رأس الإجراء الصحيح، وترتيب الكاميرات، والأبعاد، والتطبيع، وأفق التنفيذ.

التفاعلي نظام 1 ونظام 2 وقت التشغيل

G0.5 يُصدر الاستدلال والإجراءات من تدفق استنتاج واحد: يتم توليد سلسلة التفكير في نفس المرور الذي يُنشأ فيه المقطع، وتكون الإجراء مشروطًا به.

policy.runtime_system في نقطة التفتيش يختار المسار. ينفذ النظام 1 كودك ActionCodec أو جزء التدفق المحدد مباشرةً ولا يولّد أي CoT:

lerobot-rollout \
  --policy.path=lerobot/g05_so101 \
  --policy.runtime_system=system1 \
  --task="pick up the cup" \
  --fps=30

يتوفر النظام 2 فقط عندما يحتوي بيانات التحقق المسبقة للملف المحفوظ المعبأ على predict_cot=true. يعود سلسلة تفكيره كتنبؤ السياسة: يعيد predict_action_chunk دفعة من PolicyOutput تحتوي على المقطع تحت "action" وتحت "prediction"، مهمة فرعية لسلسلة تفكير كل بيئة (language["subtask"]، نص واحد لكل بيئة) والصناديق كنسب xyxy ضمن [0, 1] على policy.config.bbox_camera (boxes[camera]، إجابة واحدة لكل بيئة)، ويعيد select_action ذلك مع أول إجراء من كل مقطع. لا يسمّي النموذج أي كاميرا: فجميع أهداف BBox مرسومة على تلك الكاميرا أثناء التدريب. لا يولّد النظام 1 أي سلسلة تفكير ويعيد إجراءات عارية.

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، يعرض lerobot-rollout المهام الفرعية ويرسم الصناديق فوق كاميرا bbox في Rerun أو Foxglove.

تشغيل جلسة من stdin

--interactive=true يدير عملية النشر عبر أوامر بأسلوب المحادثة بينما تبقى العتاد والسياسة متصلةً ودافئة. لا يتحرك الروبوت حتى تكتب /start، مما يجعل هذا هو الأسلوب الآمن لإطلاق SO-101 المادي: تأكد أولاً من فهارس الكاميرات ومن منفذ الذراع، ثم ابدأ.

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
أمرالتأثير
/startبدء (أو إعادة تشغيل) حلقة التحكم في السياسة
/subtask <text>تعيين التعليمات التي يتبعها النظام
/vqa <text>غير مدعوم على G0.5 (انظر أسفل)
/autosteer <goal>\|offدع السياسة تختار مهامها الفرعية الخاصة نحو هدف عالٍ المستوى
/resetإيقاف الحركة، العودة إلى الموضع الأولي، استعادة المهمة
/stopإنهاء الجلسة وإيقاف التشغيل
/helpعرض قائمة الأوامر

يتطلب /autosteer نقطة تفتيش تحتوي على predict_cot=true وإجابات من الملاحظة الحية، لذا يتم رفضه حتى يعمل /start. يطبع المهام الفرعية التي يختارها على شكل Autosteer subtask:، ويحدد --autosteer_interval_s عدد ثوانٍ الحركة التي تمر بين استعلامي إعادة التخطيط.

اختر وقت التشغيل بما يتناسب مع طريقة تقديم المهمة، كما تم تدريب G0.5:

  • مهمة عالية المستوى، دون توجيه: حافظ على النظام 2. يتنبأ كل مقطع بالمهمة الفرعية الحالية انطلاقًا من المهمة، ثم يتخذ إجراءً بشأنها.
  • /subtask أو /autosteer: استخدم --policy.runtime_system=system1. يصبح الفرع الفرعي مهمة، ويتصرف عليها النظام مباشرةً؛ أما /autosteer فيخطط لكل فرع فرعي من الهدف باستخدام استعلام من النوع الثاني. استخدام النوع الثاني على فرع فرعي يُعامل كمهمة سيؤدي إلى تخطيط فرع فرعي لهذا الفرع الفرعي، وهو أمر لم يتم تدريب النظام عليه.

اختيار سلسلة الأفكار

--policy.runtime_cot_fields يحدد أي من صيغ التفكير المتسلسل المدرَّبة في G0.5 يولدها System 2 قبل كل مقطع. حيث أن الإجراء يركز على سلسلة التفكير بأكملها، فإن أي محتوى يحتويه يحدد شروط الإجراء.

runtime_cot_fieldsتعليم مُدرَّبسلسلة التفكير المولّدة
["subtask"] (الافتراضي)predict subtaskالمهمة الفرعية
["bbox", "subtask"]predict bbox, subtask and actionالصناديق، ثم المهمة الفرعية

على سبيل المثال، ["bbox", "subtask"] يولّد:

BBox: cube <loc0397><loc0717><loc0625><loc0895>|Subtask: pick up the blue cube
  • يولّد ["subtask"] أقل عدد من الرموز لكل جزء، لذا فهو الخيار الأسرع.
  • ["bbox", "subtask"] يحدد الكائنات ذات الصلة أولاً، مما يرسّخ المهمة الفرعية والإجراء في المشهد. كل مربع هو تسمية تليها أربعة رموز موقع بترتيب y1, x1, y2, x2؛ الرمز <locNNNN> هو الإحداثي ككسر من الصورة مضروباً في 1024. تشير المربعات إلى كاميرا BBox (--policy.cot_bbox_camera، افتراضياً أول خانة كاميرا غير فارغة).

تم تدريب lerobot/g05_base وlerobot/g05_so101 على كلا الصيغتين؛ حيث تحتوي نقاط التفتيش الخاصة بـ LIBERO وRoboTwin على predict_cot=false ولا تتضمن نظام 2. ينتج ضبط دقيق صناديق مفيدة فقط إذا كانت بياناته التدريبية تحتوي على تعليقات vqa مبنية على الموقع في كاميرا BBox (انظر متطلبات البيانات).

لماذا لا يُدعم /vqa

رأس النص في G0.5 ليس مساعدًا عامًا للرؤية واللغة. لقد تم تدريبه على إصدار صيغ سلسلة التفكير المذكورة أعلاه فقط، بعد إحدى تعليماته الثابتة، ولا يحتوي موجهه على خانة لسؤال حر. لا يمكن لسؤال /vqa أن يشغل مكان المهمة فحسب، لذا سيرد النموذج بمهمة فرعية (ومربعات) لتلك «المهمة» بدلاً من إجابة. يعمل /autosteer لأن هدفه هو مهمة، وهو ما تتوقعه تلك الخانة.

في الوضع التفاعلي، يحدد --duration مدة كل مقطع /start بدلاً من الجلسة بأكملها.

متطلبات البيانات

يجب أن يعرض مجموعة البيانات ميزات الحالة والإجراء والكاميرا والمهمة المطابقة لعقد نقطة التفتيش المحددة. أسماء الكاميرات حرة: يحدد --policy.camera_order كاميرا مجموعة البيانات التي تغذي كل فتحة صور في نقطة التفتيش، ويترك null الفتحة فارغة (معبأة بالصفر). بالنسبة إلى SO-101، تكون الفتحات هي الخارجية، والمعصم الأيسر، والمعصم الأيمن؛ والمعصم الأيسر اختياري.

يتطلب تدريب نظام 2 لأهداف اللغة بشكل إضافي حقول CoT المُعلَّمة في نقطة الحفظ. يوفر تسجيل LeRobot العادي إشرافًا على الإجراءات لكنه لا يولّد تسميات CoT. ولّد أعمدة لغة subtask وvqa المبنية على السياق باستخدام lerobot-annotate كما هو موضح في خط أنابيب التعلّم.

التدريب

تنفّذ G0.5 سطح تدريب LeRobot بشكل أصلي: يحسب forward إنتروبيا التبادلية لرموز المساعد وخسارة مطابقة التدفق، وتكشف السياسة مجموعات مُحسِّنات VLM/الرؤية/الإجراء، ويمكن حفظ نقطة التفتيش واستئنافها وتحميلها بواسطة سكربتات LeRobot العادية. تحتفظ الدالة الهدف بـar.ce_weight المعبّأ، وar.ce_z_loss_scale الاختياري، وfm.fm_weight؛ وتغطي خسارة التوليد الذاتي بشكل مشترك أهداف نص CoT وActionCodec. على سبيل المثال، اضبط نقطة تفتيش SO-101 على مجموعة بيانات LeRobot:

مثال على أمر التدريب

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

تخلط الوصفة المدمجة بين ثلاثة أنواع من العينات، على غرار مزيج التدريب الأصلي:

  • 4/6 سلسلة التفكير: المهمة، ثم هدف BBox و/أو Subtask للـ subtask والتعليقات المبنية على vqa النشطة عند ذلك الطابع الزمني، ثم الإجراءات.
  • 1/6 مهمة فرعية كمهمة: المهمة الفرعية النشطة هي التعليمات، مباشرة إلى الإجراءات. هذا ما تراه السياسة مرة واحدة عندما يحدد /subtask أو /autosteer مهمة فرعية.
  • 1/6 عادي: المهمة مباشرة إلى الإجراءات، موجه النظام 1.

تدرّب عينة من سلسلة الأفكار التي لا تحمل أي تعليق عند طابعها الزمني على الموجه العادي.

أنشئ أعمدة subtask وvqa اللغوية المبنية على السياق المطلوبة باستخدام lerobot-annotate كما هو موضح في خط أنابيب التسمية. تقرأ الوصفة المدمجة الصناديق المُسمّاة على كاميرا BBox: --policy.cot_bbox_camera، والتي تُعيَّن افتراضيًا إلى أول خانة كاميرا غير فارغة. يجب أن تكون إحداثيات الصندوق [0, 1] ككسور من عرض الصورة وارتفاعها، وهو ما يخزّنه lerobot-annotate؛ وتُرفض صناديق البكسل. مرّر ملف YAML خارجيًا صريحًا عبر --policy.recipe_path=/path/to/recipe.yaml لتدريب وصفة مختلفة: يُقرأ الملف مرة واحدة في policy.recipe عند بناء الإعداد، لذا يحتفظ نقطة الحفظ المحفوظة بالوصفة التي تم التدريب بها حتى لو تغيّر الملف لاحقًا.

ضبط نموذج الأساس على روبوت آخر

يمكن ضبط lerobot/g05_base بشكل دقيق على روبوت لم يسبق له رؤيته. حدّد اسم الروبوت باستخدام --policy.embodiment، على سبيل المثال robot_type الخاص بالبيانات؛ حيث يكون الاسم هو نص Embodiment: في الأمر التوجيهي. هذا العلم إلزامي: بدونه يحتفظ نقطة الفحص (checkpoint) بتجسّدها وجدول فتحاتها الخاص. تُوضع المفاصل في التخطيط الأساسي انطلاقًا من أسماء المفاصل في البيانات: المفاصل التي تبدأ ببادئة left_ تذهب إلى الذراع اليسرى والباقي إلى الذراع اليمنى، والمفصل الذي يحتوي اسمه على gripper يشغل فتحة قابض تلك الذراع، بينما تملأ المفاصل المتبقية فتحات التحكم التسع الخاصة بها بالترتيب. وبالتالي، تملأ ذراع بخمسة مفاصل مزودة بقابض فتحات الذراع اليمنى من 10 إلى 14 وفتحة القابض الأيمن، بينما تملأ ذراع بسبع درجات حرية الفتحات من 10 إلى 16 وفتحة القابض. اضبط --policy.state_slots و--policy.action_slots لوضع المفاصل بشكل صريح. تُحفظ الفتحات المُحدَّدة مع نقطة الفحص المُضبوطة بدقة.

يُعدّل المثال أدناه نموذجًا على روبوت ذراع واحدة تم تسجيله بواسطة كاميرا front وكاميرا wrist. فتُشغّل فتحات الصور في نقطة التفتيش الأساسية من منظور الرأس، والرسغ الأيسر، والرسغ الأيمن؛ وبما أن الذراع الواحدة تقع على اليمين، فإن كاميرا رسغها تشغل فتحة الرسغ الأيمن بينما تبقى فتحة الرسغ الأيسر فارغة. تأخذ الأعلام ذات القيم القائمة JSON محاطًا بعلامات اقتباس.

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 يغذي إطارًا واحدًا لكل كاميرا، كما تفعل عمليات الضبط الدقيق الأصلية؛ تاريخ الخطوات الست في نقطة التفتيش الأساسية يضاعف الصور لكل عينة ستة أضعاف.

تستخدم عملية التطبيع إحصاءات مجموعة البيانات نفسها (درجة z للنقطة المرجعية الأساسية؛ مرّر --policy.normalization_mapping='{"VISUAL": "IDENTITY", "STATE": "QUANTILES", "ACTION": "QUANTILES"}' لـ q01/q99). تبقى الماسكة مطلقة (relative_exclude_joints=["gripper"] في النقطة المرجعية الأساسية)، بينما تُدرَّب مفاصل الذراع كفروقات. تأتي أهداف BBox من إجابات vqa المرتبطة المُعلَّمة على observation.images.front، وهو أول خانة كاميرا غير فارغة.

تستخدم وصفة SO-101 محسّن AdamW بمعدل تعلّم 8e-5 مع 1,000 خطوة إحماء. وتستخدم إعدادات LIBERO وRoboTwin المعبأة وصفة 1e-5 المنشورة، مع 1,000 و500 خطوة إحماء على التوالي. تحافظ جميع الملفات على مجموعات معاملات G0.5 ومعاملات مضاعفة معدل التعلّم. تجاوزها للتدريب بوصفة تحسين مختلفة:

--policy.optimizer_lr=2e-5 \
--policy.optimizer_backbone_lr_multiplier=0.5 \
--policy.optimizer_vision_lr_multiplier=0.1

استئناف تشغيل محفوظ باستخدام نقطة التفتيش القياسية لـ LeRobot:

lerobot-train \
  --config_path=outputs/train/g05_so101/checkpoints/last/pretrained_model/train_config.json \
  --resume=true

معلمات التكوين الرئيسية

معاملالوصف
policy.embodimentاسم الروبوت المكتوب في الأمر؛ يختار جدول فتحات منشورة
policy.state_slots, policy.action_slotsخانة تخطيط السياسة الصريحة لكل قيمة خام للحالة/الإجراء
policy.camera_orderصورة خانة الكاميرا في مجموعة البيانات لكل نقطة تحقق؛ null يتركها فارغة
policy.action_headيستخدم مسار الإجراء flow أو actioncodec الخاص بالنقطة المرجعية
policy.runtime_systemيختار الاستدلال والإجراء المباشر بنظام 1 أو الموحّد بنظام 2
policy.runtime_cot_fieldsسلسلة التفكير للنظام 2: ["subtask"] أو ["bbox", "subtask"]
policy.dtypebfloat16 (دقة مختلطة مُطلَقة على CUDA) أو float32
policy.chunk_sizeعدد الإجراءات المتوقعة في كل شريحة
policy.n_action_stepsعدد الإجراءات المنفذة قبل إعادة التخطيط
policy.use_language_recipeتفعيل وصفة الإشراف اللغوي المدمجة في G0.5
policy.recipe_pathيتم قراءة ملف YAML الخاص بالوصفة مرة واحدة في policy.recipe (بدون حفظ)
policy.optimizer_backbone_lr_multiplierمعامل مضاعفة معدل التعلم للعمود الفقري اللغوي
policy.optimizer_vision_lr_multiplierمعامل مضاعفة معدل التعلم لبرج الرؤية

تأتي رأس الإجراء والأبعاد والأفق وأوضاع المعالج والتطبيع من نقطة الحفظ؛ وتُرفض التعديلات غير المتوافقة أثناء التحميل.

التقييم

بعد تثبيت محاكي LIBERO، قيّم نقطة التفتيش الخاصة بـ LIBERO باستخدام أسماء الكاميرات والتحكم النسبي:

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

المراجع

رخصة

كود تكامل G0.5 الموجود تحت src/lerobot/policies/g05 مُعدّل من تنفيذ Galaxea، وكأوزان نقطة الحفظ، مرخّص بموجب ترخيص مجتمع G0.5، وليس بموجب ترخيص Apache-2.0 الخاص بـ LeRobot. راجع هذا الترخيص ووافق عليه قبل تنزيل نقطة حفظ أو استخدامها.

التدريب الدقيق هو عمل مشتق من G0.5. عند إعادة توزيعه، قم بتضمين ملفي LICENSE وNOTICE الخاصين بالنقطة الفاصلة التي اشتُق منها: لا ينسخ LeRobot هذه الملفات نيابةً عنك، لكن بطاقة النموذج المولّدة تذكر الترخيص.

Update on GitHub