LeRobot documentation

ROBOMETER

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

ROBOMETER

ROBOMETER هو نموذج مكافآت روبوتي عام للغات والفيديو. يتنبأ بتقدم المهمة على مستوى الإطار ونجاح المهمة على مستوى الإطار بشكل كثيف من فيديو المسار ووصف المهمة.

الورقة: ROBOMETER: Scaling General-Purpose Robotic Reward Models via Trajectory Comparisons المشروع: robometer.github.io الكود الأصلي: github.com/robometer/robometer نقطة التفتيش: lerobot/Robometer-4B

نظرة عامة

ROBOMETER builds on Qwen/Qwen3-VL-4B-Instruct and adds three lightweight prediction heads:

  • رأس التقدم: يتنبأ بتقدم المهمة لكل إطار في [0, 1].
  • رأس النجاح: يتنبأ باحتمال نجاح المهمة لكل إطار.
  • رأس التفضيل: يتنبأ بأي من المسارين الاثنَين يُكمل المهمة بشكل أفضل أثناء التدريب.

تدرّب الورقة ROBOMETER باستخدام هدف مركّب:

L = L_pref + L_prog + L_succ

تكامل LeRobot حالياً للاستدلال فقط. إنه يحافظ على رأس التفضيل بحيث يتم تحميل نقطة الفحص المنشورة Robometer-4B دون إعادة تعيين، لكن compute_reward() يستعلم عن رأس التقدم أو النجاح فقط.

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

  • إعداد reward_model.type=robometer القياسي من خلال LeRobot.
  • معالجة الصور والنصوص الأولية لنموذج Qwen3-VL عبر RobometerEncoderProcessorStep.
  • واجهات برمجة التطبيقات لحفظ/تحميل نماذج المكافآت في LeRobot عبر PreTrainedRewardModel.
  • تنبؤات داخلية كثيفة على مستوى الإطار للتقدم والنجاح.
  • مكافأة قياسية (scalar) عبر compute_reward() لاستخدامها في نموذج المكافآت الخاص بـ LeRobot في المراحل اللاحقة.

يركز هذا الصفحة على استخدام نقطة الفحص (checkpoint) المنشورة لـ ROBOMETER كنموذج مكافأة (reward model) بطريقة zero-shot. أما تدريب ROBOMETER من الصفر فهو خارج نطاق تكامل LeRobot الحالي.

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

  1. قم بتثبيت LeRobot باتباع دليل التثبيت.
  2. قم بتثبيت تبعيات ROBOMETER:
pip install -e ".[robometer]"

إذا كنت تستخدم uv مباشرةً من نسخة المصدر:

uv sync --extra robometer

يستخدم ROBOMETER هيكل Qwen3-VL-4B، لذا يُنصح بشدة باستخدام الاستدلال على وحدة معالجة الرسومات (GPU).

مدخلات ومخرجات النموذج

يتوقع ROBOMETER ما يلي:

  • فيديو للمسار أو تسلسل من الإطارات.
  • وصف للمهمة بلغة طبيعية.

في مجموعات بيانات LeRobot، يقرأ المعالج المسبق:

حقل الإعدادافتراضيالمعنى
reward_model.image_keyobservation.images.topالملاحظة بالكاميرا/الفيديو المستخدمة في ROBOMETER
reward_model.task_keytaskأدخل بيانات مكمّلة تخزّن سلسلة المهام
reward_model.max_frames8الحد الأقصى لعدد الإطارات المُمرَّرة إلى ROBOMETER

يتنبأ النموذج داخلياً بالتقدم ونجاح كل إطار. تُعيد واجهة مكافآت LeRobot قيمة عددية لكل عينة:

  • reward_output="progress" (الافتراضي): يُرجع تقدّم الإطار الأخير، مقيدًا ضمن [0, 1].
  • reward_output="success": تُرجع 1.0 إذا كانت احتمالية النجاح في الإطار الأخير أعلى من success_threshold، وإلا تُرجع 0.0.

الاستخدام

تحميل نموذج المكافأة مباشرة

from lerobot.rewards.robometer import RobometerConfig, RobometerRewardModel

cfg = RobometerConfig(
    pretrained_path="lerobot/Robometer-4B",
    device="cuda",
    reward_output="progress",
)
reward_model = RobometerRewardModel.from_pretrained(cfg.pretrained_path, config=cfg)

ترميز الإطارات وحساب المكافأة

لإجراء استدعاء مباشر بلغة بايثون، قدّم الإطارات كمصفوفات من نوع uint8 بالشكل (T, H, W, C) مع نص للمهمة:

from lerobot.rewards.robometer.modeling_robometer import ROBOMETER_FEATURE_PREFIX
from lerobot.rewards.robometer.processor_robometer import RobometerEncoderProcessorStep

# frames: np.ndarray, shape (T, H, W, C), dtype uint8
# task: str
encoder = RobometerEncoderProcessorStep(
    base_model_id=cfg.base_model_id,
    use_multi_image=cfg.use_multi_image,
    use_per_frame_progress_token=cfg.use_per_frame_progress_token,
    max_frames=cfg.max_frames,
)

encoded = encoder.encode_samples([(frames, task)])
batch = {f"{ROBOMETER_FEATURE_PREFIX}{key}": value for key, value in encoded.items()}

reward = reward_model.compute_reward(batch)

reward هو متجه (tensor) على شكل (batch_size,).

استخدام مصنع المكافآت

يمكنك أيضًا إنشاء ROBOMETER من خلال مصنع المكافآت:

from lerobot.rewards import make_reward_model, make_reward_model_config, make_reward_pre_post_processors

cfg = make_reward_model_config(
    "robometer",
    pretrained_path="lerobot/Robometer-4B",
    device="cuda",
    image_key="observation.images.top",
)
reward_model = make_reward_model(cfg)
preprocessor, postprocessor = make_reward_pre_post_processors(cfg)

تكتب وحدة المعالجة المسبقة متجهات Qwen-VL ضمن مساحة الأسماء observation.robometer.*، وتقرأ compute_reward() تلك المتجهات المُرمّزة.

ملاحظات الإعداد

الهيكل الأساسي والمفردات

يستخدم نقطة التفتيش المنشورة هيكلًا أساسيًا من Qwen3-VL-4B. يضيف ROBOMETER خمسة رموز خاصة إلى مُجزّئ الرموز (tokenizer) بترتيب ثابت:

<|split_token|>
<|reward_token|>
<|pref_token|>
<|sim_token|>
<|prog_token|>

يتم إدراج <|prog_token|> بعد كل إطار، وهو موضع الحالة المخفية المستخدم للتنبؤ بالتقدم والنجاح لكل إطار. تُستخدم الرموز <|split_token|> و<|pref_token|> في هدف تفضيل المسارات الزوجية الوارد في الورقة البحثية. أما الرموز <|reward_token|> و<|sim_token|> فتُحفظ من أجل توافق نقاط الحفظ.

تخزّن إعدادات LeRobot نسخة مُسلسلة من vlm_config تتضمن مفردات ما بعد تغيير الحجم، مما يتيح للنموذج إعادة التحميل من config.json دون الحاجة إلى تنزيل أوزان Qwen الأساسية أولاً. بالنسبة إلى Qwen/Qwen3-VL-4B-Instruct، يبلغ طول المُرمّز 151669، وتنتج الرموز الخمسة الخاصة بـ ROBOMETER حجم مفردات نقطة الفحص 151674.

توقع التقدم

في نقطة التفتيش المنشورة، يكون التقدم منفصلاً. تُخرج رأس التقدم قيمًا لوجستية على progress_discrete_bins=10 من مراكز الفئات المتباعدة بشكل متساوٍ ضمن [0, 1]. يقوم LeRobot بتحويل هذه القيم اللوجستية إلى قيمة مستمرة عن طريق تطبيق softmax وحساب التوقع على مراكز الفئات، بما يتوافق مع تنفيذ ROBOMETER الأصلي.

توقع النجاح

تُخرج رأس النجاح قيم logits خام لكل إطار. يقوم LeRobot بتحويلها إلى احتمالات باستخدام sigmoid. عند تعيين reward_output="success"، يستخدم compute_reward() العتبة success_threshold لتحديد احتمال النجاح في الإطار الأخير.

القيود

  • تكامل LeRobot الحالي مخصص للاستدلال فقط؛ فهو لا ينفّذ تدريب ROBOMETER أو تدريب أزواج التفضيلات.
  • compute_reward() يعيد قيمة عددية لكل عينة لواجهة نموذج المكافآت في LeRobot، على الرغم من أن ROBOMETER يتنبأ بالتقدم والنجاح لكل إطار داخليًا.
  • يعتمد ROBOMETER على اللغة والفيديو؛ فهو لا يستخدم حالة الروبوت الخاصة مثل قوى التلامس أو مواضع الأشياء.

المراجع

الاستشهاد

@inproceedings{liang2026robometer,
title = {Robometer: Scaling General-Purpose Robotic Reward Models via Trajectory Comparisons},
author={Anthony Liang and Yigit Korkmaz and Jiahui Zhang and Minyoung Hwang and Abrar Anwar and Sidhant Kaushik and Aditya Shah and Alex S. Huang and Luke Zettlemoyer and Dieter Fox and Yu Xiang and Anqi Li and Andreea Bobu and Abhishek Gupta and Stephen Tu and Erdem Biyik and Jesse Zhang},
year={2026},
booktitle={Robotics: Science and Systems 2026},
}

رخصة

تتبع تكامل LeRobot هذا رخصة Apache 2.0 المستخدمة في LeRobot. تحقق من كود ROBOMETER الأصلي وصفحات النماذج في المصدر للحصول على تراخيص التنفيذ الأصلي ونقاط التفتيش المنشورة.

Update on GitHub