LeRobot documentation

π₀ (باي0)

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

π₀ (باي0)

π₀ هو نموذج رؤية-لغة-إجراء للتحكم العام في الروبوتات، من شركة Physical Intelligence. تم تكييف تنفيذ LeRobot من مستودعهم مفتوح المصدر OpenPI.

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

يمثل π₀ اختراقًا في مجال الروبوتات بوصفه أول نموذج أساسي شامل للروبوتات طورته Physical Intelligence. وعلى عكس برامج الروبوت التقليدية التي تُعدّ متخصصين ضيقي النطاق مُبرمجةً لتنفيذ حركات متكررة، صُمم π₀ ليكون سياسةً شاملةً قادرةً على فهم المدخلات البصرية، وتفسير تعليمات اللغة الطبيعية، والتحكم في مجموعة متنوعة من الروبوتات عبر مهام مختلفة.

An overview of Pi0

رؤية الذكاء المادي

كما وصفت شركة Physical Intelligence، وعلى الرغم من أن الذكاء الاصطناعي حقق نجاحًا ملحوظًا في المجالات الرقمية، بدءًا من لعب الشطرنج وصولًا إلى اكتشاف الأدوية، إلا أن الذكاء البشري لا يزال يتفوق بشكل كبير على الذكاء الاصطناعي في العالم المادي. ولإعادة صياغة مفارقة مورافيك، فإن الفوز بلعبة شطرنج يمثل مشكلة “سهلة” للذكاء الاصطناعي، لكن طي قميص أو تنظيف طاولة يتطلب حل بعض أصعب مشاكل الهندسة التي تم تصوّرها على الإطلاق. يمثل π₀ خطوة أولى نحو تطوير ذكاء اصطناعي مادي يمكّن المستخدمين ببساطة من طلب تنفيذ أي مهمة يرونها من الروبوتات، تمامًا كما يفعلون مع نماذج اللغة الكبيرة.

البنية والمنهجية

يجمع π₀ بين عدة ابتكارات رئيسية:

  • مطابقة التدفق: يستخدم طريقة مبتكرة لإثراء نماذج الرؤية واللغة المدربة مسبقًا بإخراجات إجراءات مستمرة عبر مطابقة التدفق (وهي نسخة من نماذج الانتشار)
  • التدريب عبر تجسيدات متعددة: تم التدريب على بيانات من 8 منصات روبوتية مختلفة تشمل UR5e وBimanual UR5e وFranka وBimanual Trossen وBimanual ARX وMobile Trossen وMobile Fibocom
  • التدريب المسبق على نطاق الإنترنت: يرث المعرفة الدلالية من نموذج لغة-رؤية مُدرَّب مسبقًا يحتوي على 3 مليارات من المعاملات
  • التحكم عالي التردد: يُخرج أوامر المحرك بتردد يصل إلى 50 هرتز للتعديل الدقيق في الوقت الفعلي

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

  1. قم بتثبيت LeRobot باتباع دليل التثبيت الخاص بنا.

  2. قم بتثبيت تبعيات Pi0 عن طريق تشغيل الأمر التالي:

    pip install -e ".[pi]"

بيانات التدريب والقدرات

يُدرَّب π₀ على أكبر مجموعة بيانات تفاعل روبوتي حتى الآن، مع دمج ثلاث مصادر بيانات رئيسية:

  1. التدريب المسبق على نطاق الإنترنت: بيانات اللغة والرؤية من الويب لفهم الدلالات
  2. مجموعة بيانات X-Embodiment المفتوحة: مجموعات بيانات مفتوحة المصدر للتلاعب بالروبوتات
  3. مجموعة بيانات Physical Intelligence: مجموعة بيانات كبيرة ومتنوعة لمهام رشيقة عبر 8 روبوتات مختلفة

الاستخدام

للاستخدام π₀ في LeRobot، حدد نوع السياسة على النحو التالي:

policy.type=pi0

التدريب

لتدريب π₀، يمكنك استخدام سكربت تدريب LeRobot القياسي مع الإعداد المناسب:

lerobot-train \
    --dataset.repo_id=your_dataset \
    --policy.type=pi0 \
    --output_dir=./outputs/pi0_training \
    --job_name=pi0_training \
    --policy.pretrained_path=lerobot/pi0_base \
    --policy.repo_id=your_repo_id \
    --policy.compile_model=true \
    --policy.gradient_checkpointing=true \
    --policy.dtype=bfloat16 \
    --policy.freeze_vision_encoder=false \
    --policy.train_expert_only=false \
    --steps=3000 \
    --policy.device=cuda \
    --batch_size=32

معلمات التدريب الرئيسية

  • --policy.compile_model=true: يُفعّل تجميع النموذج لتسريع التدريب
  • --policy.gradient_checkpointing=true: يقلل من استهلاك الذاكرة بشكل كبير أثناء التدريب
  • --policy.dtype=bfloat16: استخدم تدريب الدقة المختلطة من أجل الكفاءة
  • --batch_size=32: حجم الدفعة للتدريب، عدّل هذا بناءً على ذاكرة وحدة معالجة الرسوميات لديك
  • --policy.pretrained_path=lerobot/pi0_base: نموذج π₀ الأساسي الذي تريد ضبطه، والخيارات المتاحة هي:
  • --policy.optimizer_fused=true: يستخدم AdamW المدمج لخطوات المُحسِّن الأسرع؛ يتم تجاهل هذا العلم عند استئناف التشغيل

شرح معلمات التدريب

معاملافتراضيالوصف
freeze_vision_encoderfalseلا تُجمِّد مُشفِّر الرؤية
train_expert_onlyfalseلا تُجمّد نموذج VLM، بل درّب جميع المعاملات

💡 نصيحة: ضبط train_expert_only=true يُجمّد نموذج VLM ويدرب خبير الإجراءات والإسقاطات فقط، مما يتيح الضبط الدقيق مع تقليل استهلاك الذاكرة.

الإجراءات النسبية

بشكل افتراضي، يتنبأ π₀ بإجراءات مطلقة. يمكنك تفعيل الإجراءات النسبية بحيث يتنبأ النموذج بإزاحات نسبية لحالة الروبوت الحالية. قد يحسّن ذلك استقرار التدريب لبعض التكوينات.

لاستخدام الإجراءات النسبية، أعد أولاً حساب إحصاءات مجموعة البيانات الخاصة بك في الفضاء النسبي عبر سطر الأوامر:

lerobot-edit-dataset \
    --repo_id your_dataset \
    --new_repo_id your_dataset \
    --operation.type recompute_stats \
    --operation.overwrite true \
    --operation.relative_action true \
    --operation.chunk_size 50 \
    --operation.relative_exclude_joints "['gripper']" \
    --push_to_hub true

أو ما يعادلها بلغة بايثون:

from lerobot.datasets import LeRobotDataset, recompute_stats

dataset = LeRobotDataset("your_dataset")
recompute_stats(dataset, relative_action=True, chunk_size=50, relative_exclude_joints=["gripper"])
dataset.push_to_hub()

يجب أن يتطابق chunk_size مع chunk_size الخاص بسياساتك (الافتراضي 50 لـ π₀). يحدد relative_exclude_joints أسماء المفاصل التي يجب أن تبقى في الفضاء المطلق (مثل أوامر الماسك). استخدم --push_to_hub true لرفع الإحصائيات المحدّثة إلى Hub.

ثم درّب مع تمكين الإجراءات النسبية:

lerobot-train \
    --dataset.repo_id=your_dataset \
    --policy.type=pi0 \
    --policy.use_relative_actions=true \
    --policy.relative_exclude_joints='["gripper"]' \
    ...

رخصة

يتبع هذا النموذج رخصة Apache 2.0، بما يتوافق مع مستودع OpenPI الأصلي.

Update on GitHub