LeRobot documentation
ROBOMETER
ROBOMETER
ROBOMETER, genel amaçlı video-dil robotik ödül modelidir. Bir yörünge videosu ve görev açıklamasından yoğun, kare düzeyinde görev ilerlemesini ve kare düzeyinde başarıyı tahmin eder.
Makale: ROBOMETER: Scaling General-Purpose Robotic Reward Models via Trajectory Comparisons Proje: robometer.github.io Orijinal kod: github.com/robometer/robometer Kontrol noktası: lerobot/Robometer-4B
Genel Bakış
ROBOMETER, Qwen/Qwen3-VL-4B-Instruct üzerine inşa edilmiştir ve üç hafif tahmin kafası ekler:
- İlerleme başlığı:
[0, 1]aralığında kare başına görev ilerlemesini tahmin eder. - Başarı başlığı: Kare başına görev başarı olasılığını tahmin eder.
- Tercih başlığı: eğitim sırasında, iki yörüngeden hangisinin görevi daha iyi tamamladığını tahmin eder.
Makale, ROBOMETER'ı bileşik bir amaçla eğitir:
L = L_pref + L_prog + L_succ
LeRobot entegrasyonu şu anda yalnızca çalıştırma (inference) modundadır. Yayımlanan Robometer-4B kontrol noktasının yeniden eşleme yapılmadan yüklenmesini sağlamak için tercih başlığını (preference head) korur; ancak compute_reward() yalnızca ilerleme veya başarı başlığına (progress or success head) sorgu gönderir.
LeRobot Entegrasyonunun Kapsamı
- LeRobot üzerinden standart
reward_model.type=robometeryapılandırması. - Qwen3-VL görüntü ve metin ön işleme
RobometerEncoderProcessorStepüzerinden. PreTrainedRewardModelüzerinden LeRobot ödül modeli kaydetme/yükleme API'leri.- İçsel olarak yoğun, kare düzeyinde ilerleme ve başarı tahminleri.
- Aşağıdaki LeRobot ödül modeli kullanımında
compute_reward()üzerinden bir skaler ödül.
Bu sayfa, yayımlanmış ROBOMETER kontrol noktasının sıfır atışlı ödül modeli olarak kullanılmasına odaklanır. ROBOMETER'ı sıfırdan eğitmek, mevcut LeRobot entegrasyonunun kapsamı dışındadır.
Kurulum Gereksinimleri
- LeRobot'u Yükleme Kılavuzu'nu izleyerek yükleyin.
- ROBOMETER bağımlılıklarını yükleyin:
pip install -e ".[robometer]"uv aracını doğrudan kaynak kodundan kullanıyorsanız:
uv sync --extra robometerROBOMETER, Qwen3-VL-4B omurgasını kullandığından GPU çıkarımı (inference) şiddetle önerilir.
Model Girdileri ve Çıktıları
ROBOMETER şunları bekler:
- Bir yörünge videosu veya kare dizisi.
- Doğal dilde bir görev açıklaması.
LeRobot veri setlerinde ön işleyici şunları okur:
| Yapılandırma alanı | Varsayılan | Anlam |
|---|---|---|
reward_model.image_key | observation.images.top | ROBOMETER tarafından kullanılan kamera/video gözlemi |
reward_model.task_key | task | Görev dizgesini depolayan tamamlayıcı verileri girin |
reward_model.max_frames | 8 | ROBOMETER'a iletilen maksimum kare sayısı |
Model, kare bazında ilerlemeyi ve başarıyı içsel olarak tahmin eder. LeRobot ödül API'si örnek başına bir skaler döndürür:
reward_output="progress"(varsayılan): son kare ilerlemesini,[0, 1]aralığına sınırlanmış olarak döndürür.reward_output="success": son kare başarı olasılığısuccess_thresholddeğerinin üzerindeyse1.0, aksi takdirde0.0döndürür.
Kullanım
Ödül Modelini Doğrudan Yükle
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)Kareleri Kodla ve Ödülü Hesapla
Doğrudan bir Python çağrısı için, kareleri uint8 dizileri olarak ve şekli (T, H, W, C) olan bir görev dizgesi olarak sağlayın:
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, (batch_size,) biçiminde bir tensördür.
Ödül Fabrikasını kullanın
ROBOMETER'ı ödül fabrikası üzerinden de örnekleyebilirsiniz:
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)Önişleyici, Qwen-VL tensörlerini observation.robometer.* ad alanı altında yazar ve compute_reward() bu kodlanmış tensörleri okur.
Yapılandırma Notları
Backbone ve Sözlük
Yayınlanan checkpoint, Qwen3-VL-4B omurgasını kullanır. ROBOMETER, tokenizer'a beş özel tokenı sabit bir sırayla ekler:
<|split_token|> <|reward_token|> <|pref_token|> <|sim_token|> <|prog_token|>
<|prog_token|>, her kareden sonra eklenir ve kare bazlı ilerleme ve başarı tahmini için kullanılan gizli durum konumudur. <|split_token|> ve <|pref_token|>, makalenin çiftli yörünge tercih hedefi tarafından kullanılır. <|reward_token|> ve <|sim_token|>, kontrol noktası uyumluluğu için korunur.
LeRobot yapılandırması, modelin önce temel Qwen ağırlıklarını indirmeden config.json dosyasından yeniden yükleyebilmesi için yeniden boyutlandırılmış sözlükle birlikte serileştirilmiş bir vlm_config saklar. Qwen/Qwen3-VL-4B-Instruct için tokenizör uzunluğu 151669'dur ve beş ROBOMETER token'ı, kontrol noktası sözlük boyutunu 151674 olarak üretir.
İlerleme Tahmini
Yayınlanan checkpoint'te ilerleme ayrık (discrete) olarak temsil edilir. İlerleme başlığı, [0, 1] aralığında eşit aralıklı progress_discrete_bins=10 kutu merkezine karşılık gelen logitleri üretir. LeRobot, bu logitlere softmax uygulayarak kutu merkezleri üzerinden beklenti alarak bunları sürekli bir değere dönüştürür; bu, upstream ROBOMETER uygulamasıyla uyumludur.
Başarı Tahmini
Success başlığı, kare başına ham logitler üretir. LeRobot bunları sigmoid ile olasılıklara dönüştürür. reward_output="success" olduğunda, compute_reward() son karedeki success olasılığını success_threshold ile eşikler.
Kısıtlamalar
- Mevcut LeRobot entegrasyonu yalnızca çıkarım (inference) içindir; ROBOMETER eğitimi veya tercih çifti (preference-pair) eğitimi uygulamaz.
compute_reward(), ROBOMETER içsel olarak kare bazında ilerleme ve başarı tahmini yapsa da, LeRobot ödül modeli API'si için örnek başına bir skaler döndürür.- ROBOMETER video-dil tabanlıdır; temas kuvvetleri veya nesne pozları gibi ayrıcalıklı robot durumlarını kullanmaz.
Referanslar
- ROBOMETER projesi
- ROBOMETER makalesi
- Özgün ROBOMETER kodu
- Yayınlanan ROBOMETER-4B kontrol noktası
- Qwen3-VL-4B-Instruct
Atıf
@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},
}Lisans
Bu LeRobot entegrasyonu, LeRobot tarafından kullanılan Apache 2.0 Lisansı'nı takip eder. Orijinal uygulamanın ve yayınlanan checkpoint'lerin lisansları için ROBOMETER'in upstream kod ve model sayfalarını kontrol edin.
Update on GitHub