LeRobot documentation

LIBERO

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

LIBERO

The commands below run the simulator locally. To keep its dependencies away from your policy's, serve it instead with `lerobot-env-server --config_path=docker/sim/configs/libero.yaml --sim.task=--docker=true`, where `` is the command's `--env.task`, and add `--env.server.endpoint=tcp/127.0.0.1:7448` to the command. A server runs the task it was started with (see [Simulation: local or served](./simulation)).

LIBERO هو معيار مصمم لدراسة التعلم الروبوتي مدى الحياة — وهو المفهوم الذي ينص على أن الروبوتات تحتاج إلى مواصلة التعلم والتكيف مع مستخدميها بمرور الوقت، وليس مجرد تدريب مسبق مرة واحدة. يوفر مجموعة من مهام التلاعب القياسية التي تركز على نقل المعرفة: مدى قدرة الروبوت على تطبيق ما تعلمه بالفعل على مواقف جديدة. من خلال التقييم على LIBERO، يمكن مقارنة الخوارزميات المختلفة بشكل عادل ويمكن للباحثين البناء على أعمال بعضهم البعض.

An overview of the LIBERO benchmark

المهام المتاحة

يتضمن LIBERO خمسة مجموعات مهام تغطي 130 مهمة، بدءًا من التلاعب البسيط بالأشياء وصولًا إلى سيناريوهات متعددة الخطوات معقدة:

Suiteاسم سطر الأوامرالمهامالوصف
LIBERO-Spatiallibero_spatial10المهام التي تتطلب الاستدلال حول العلاقات المكانية
LIBERO-Objectlibero_object10مهام تركز على التلاعب بأشياء مختلفة
LIBERO-Goallibero_goal10مهام مشروطة بهدف بأهداف متغيرة
LIBERO-90libero_9090مهام قصيرة المدى من مجموعة LIBERO-100
LIBERO-Longlibero_1010مهام طويلة المدى من مجموعة LIBERO-100

التثبيت

بعد اتباع تعليمات تثبيت LeRobot:

pip install -e ".[libero]"
LIBERO requires Linux (`sys_platform == 'linux'`). LeRobot uses MuJoCo for simulation — set the rendering backend before training or evaluation:
export MUJOCO_GL=egl  # for headless servers (HPC, cloud)

التقييم

التقييم المحلي الافتراضي

قيّم عبر المجموعات القياسية الأربع (10 حلقات لكل مهمة):

lerobot-eval \
  --policy.path="your-policy-id" \
  --env.type=libero \
  --env.task=libero_spatial,libero_object,libero_goal,libero_10 \
  --eval.batch_size=1 \
  --eval.n_episodes=10 \
  --env.max_parallel_tasks=1

التقييم في مجموعة واحدة

التقييم على مجموعة LIBERO واحدة:

lerobot-eval \
  --policy.path="your-policy-id" \
  --env.type=libero \
  --env.task=libero_object \
  --eval.batch_size=2 \
  --eval.n_episodes=3
  • --env.task يختار المجموعة (libero_object، libero_spatial، إلخ).
  • --env.task_ids يقيّد التنفيذ على فهارس مهام محددة ([0]، [1,2,3]، إلخ). يُستثنى ذلك لتشغيل جميع المهام في المجموعة.
  • يتحكم --eval.batch_size في عدد البيئات التي تعمل بالتوازي.
  • --eval.n_episodes يحدد عدد الحلقات التي يجب تشغيلها لكل مهمة.

التقييم متعدد الحزم

قم بإجراء اختبار أداء لسياسة عبر عدة مجموعات في وقت واحد عن طريق تمرير قائمة مفصولة بفواصل:

lerobot-eval \
  --policy.path="your-policy-id" \
  --env.type=libero \
  --env.task=libero_object,libero_spatial \
  --eval.batch_size=1 \
  --eval.n_episodes=2

وضع التحكم

يدعم LIBERO وضعَي تحكم — relative (الافتراضي) وabsolute. تُدرَّب نقاط التفتيش المختلفة لـ VLA باستخدام معاملات إجراء مختلفة، لذا تأكد من أن الوضع يتطابق مع سياستك:

--env.control_mode=relative   # or "absolute"

إعادة تعيين الأداء

بشكل افتراضي، يحافظ LeRobot على سلوك إعادة الضبط الصلبة (hard-reset) الخاصة بـ LIBERO. عند تمكين الحالات الأولية الثابتة، يمكنك اختيار إعادة الضبط الناعمة (soft resets) لتجاوز إعادة بناء نموذج المحاكاة وعارض العرض في كل حلقة:

--env.init_states=true --env.hard_reset=false

تكون إعادة الضبط الناعمة أسرع، لكنها لا تطابق إعادة الضبط الصلبة على مستوى البتات بعد خطوات استقرار البيئة، لذا قد تختلف ملاحظات الكاميرا ونتائج السياسة اختلافًا طفيفًا. استخدم إعادة الضبط الصلبة عند إعادة إنتاج نتائج المعايير.

مدخلات ومخرجات السياسة

الملاحظات:

  • observation.state — ميزات حسّية ذاتية (proprioceptive) بأبعاد 8 (موضع طرف الإجراء، الاتجاه بصيغة المحور-الزاوية، موضع قبضة الماسك)
  • observation.images.image — عرض الكاميرا الرئيسي (agentview_image)، HWC uint8
  • observation.images.image2 — عرض كاميرا المعصم (robot0_eye_in_hand_image)، HWC uint8
LeRobot enforces the `.images.*` prefix for visual features. Ensure your policy config `input_features` use the same naming keys, and that your dataset metadata keys follow this convention. If your data contains different keys, you must rename the observations to match what the policy expects, since naming keys are encoded inside the normalization statistics layer.

الإجراءات:

  • التحكم المستمر في Box(-1, 1, shape=(7,)) — دلتا طرف النهاية ثلاثية الأبعاد + قابض أحادي البعد

حلقات التقييم الموصى بها

لإجراء تقييمات قابلة للتكرار، استخدم 10 حلقات لكل مهمة عبر جميع المجموعات القياسية الأربع (Spatial وObject وGoal وLong). يمنح ذلك 400 حلقة إجمالاً ويتوافق مع البروتوكول المستخدم للنتائج المنشورة. قد تختلف معدلات النجاح بنسبة مئوية قليلة عبر بذور التقييم المختلفة، لذا نوصي بمتوسط 3 بذور.

يقدم lerobot-eval فترة ويلسون بنسبة 95% (pc_success_ci95) بجانب كل معدل نجاح. عند 10 حلقات، يكون نطاق المهمة التي حصلت على 9/10 تقريبًا من 60% إلى 98%، بينما يكون نطاق إجمالي مجموعة من 400 حلقة بنسبة 80% تقريبًا من 76% إلى 84%. إذا تداخلت فترتا سياسة على مهمة معينة، فإن ذلك لا يُثبت اختلافهما على تلك المهمة في تلك الجولة. تغطي الفترة الحلقات التي تم اختيارها؛ لكنها لا تغطي بذرة التدريب للسياسة، والتي تتطلب أكثر من جولة تدريب واحدة لقياسها.

To compare two policies on the same episodes, use the same `--seed`, keep `--env.init_states=true`, and run each task in a single batch (`--eval.batch_size` equal to episodes per task).

التدريب

مجموعة البيانات

تتوافق مجموعتا بيانات LIBERO المُعالجتان مسبقًا بشكل كامل مع LeRobot. تحتويان على نفس العروض التوضيحية بنفس المخطط، وتختلفان في طريقة تخزين إطارات الكاميرا:

lerobot/liberoHuggingFaceVLA/libero
الحلقات / الإطارات / المهام1,693 / 273,465 / 401,693 / 273,465 / 40
كاميرات2× 256×256×32× 256×256×3
أبعاد الحالة / الإجراء8 / 78 / 7
تنسيق مجموعة البياناتv3.0v3.0
ترميز الكاميرافيديو MP4PNG في parquet
حجم التحميل1.9 GB69.9 GB
اعتماد إضافيواجهة الخلفية للفيديو (torchcodec أو pyav)none

نوصي بـ lerobot/libero: تحميل أصغر بحوالي 37 مرة مع سرعة تحميل مكافئة (حوالي 330 عينة/ثانية لكل عامل). إعادة ترميز الفيديو خاسرة قليلاً؛ استخدم النسخة القائمة على الصور إذا لم تتمكن من تثبيت خلفية لفك ترميز الفيديو.

للاستئناس، مجموعة البيانات الأصلية التي نشرتها Physical Intelligence:

Pin `--dataset.revision=` when reporting results — Hub datasets can be re-uploaded, and success rates are only comparable against the same data revision.

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

درّب SmolVLA على مجموعة البيانات الموصى بها:

lerobot-train \
  --policy.type=smolvla \
  --policy.load_vlm_weights=true \
  --policy.push_to_hub=false \
  --dataset.repo_id=lerobot/libero \
  --dataset.video_backend=torchcodec \
  --output_dir=./outputs/libero_smolvla \
  --steps=100000 \
  --batch_size=64

لمشاركة النتيجة على Hub، استبدل --policy.push_to_hub=false بـ --policy.repo_id=${HF_USER}/libero-smolvla. قيّم نقاط التفتيش المحفوظة باستخدام lerobot-eval كما هو موضح في قسم التقييم.

إعادة إنتاج النتائج المنشورة

نعيد إنتاج نتائج Pi0.5 على معيار LIBERO. نأخذ النموذج الأساسي لـ LIBERO من Physical Intelligence (pi05_libero) ونقوم بتدريبه الدقيق لـ 6 آلاف خطوة إضافية في bfloat16، مع حجم دفعة يبلغ 256 على 8 وحدات معالجة رسومية H100 باستخدام مجموعة بيانات LIBERO من HuggingFace.

النموذج المُحسَّن: lerobot/pi05_libero_finetuned

أمر التقييم

lerobot-eval \
  --output_dir=./eval_logs/ \
  --env.type=libero \
  --env.task=libero_spatial,libero_object,libero_goal,libero_10 \
  --eval.batch_size=1 \
  --eval.n_episodes=10 \
  --policy.path=lerobot/pi05_libero_finetuned \
  --policy.n_action_steps=10 \
  --env.max_parallel_tasks=1

قمنا بإعداد n_action_steps=10 بما يتوافق مع التنفيذ الأصلي لـ OpenPI.

النتائج

النموذجLIBERO المكانيةLIBERO Objectهدف LIBEROLIBERO 10المتوسط
Pi0.5 (LeRobot)97.099.098.096.097.5

تتوافق هذه النتائج مع النتائج الأصلية التي أبلغ عنها Physical Intelligence:

النموذجLIBERO المكانيةLIBERO Objectهدف LIBEROLIBERO 10المتوسط
باي 0.5 (أوبن بي آي)98.898.298.092.496.85
Update on GitHub