LeRobot documentation
ROBOMETER
ROBOMETER
ROBOMETER adalah model reward robotika video-bahasa serbaguna. Model ini memprediksi kemajuan tugas dan keberhasilan pada tingkat frame yang padat dari video trajektori dan deskripsi tugas.
Makalah: ROBOMETER: Scaling General-Purpose Robotic Reward Models via Trajectory Comparisons Proyek: robometer.github.io Kode asli: github.com/robometer/robometer Checkpoint: lerobot/Robometer-4B
Ikhtisar
ROBOMETER dibangun di atas Qwen/Qwen3-VL-4B-Instruct dan menambahkan tiga kepala prediksi ringan:
- Progress head: memprediksi kemajuan tugas per-frame dalam
[0, 1]. - Success head: memprediksi probabilitas keberhasilan tugas per bingkai.
- Preference head: memprediksi mana dari dua trajektori yang lebih baik menyelesaikan tugas selama pelatihan.
Paper tersebut melatih ROBOMETER dengan tujuan komposit:
L = L_pref + L_prog + L_succ
Integrasi LeRobot saat ini hanya untuk inferensi. Integrasi ini mempertahankan preferensi head sehingga checkpoint Robometer-4B yang dipublikasikan dapat dimuat tanpa pemetaan ulang, tetapi compute_reward() hanya menanyakan progress atau success head.
Cakupan Integrasi LeRobot
- Konfigurasi standar
reward_model.type=robometermelalui LeRobot. - Prapemrosesan gambar dan teks Qwen3-VL melalui
RobometerEncoderProcessorStep. - API simpan/muat model reward LeRobot melalui
PreTrainedRewardModel. - Prediksi kemajuan dan keberhasilan pada tingkat frame secara internal.
- Reward skalar melalui
compute_reward()untuk penggunaan model reward LeRobot di hilir.
Halaman ini berfokus pada penggunaan checkpoint ROBOMETER yang telah dipublikasikan sebagai model reward zero-shot. Pelatihan ROBOMETER dari awal berada di luar cakupan integrasi LeRobot saat ini.
Persyaratan Instalasi
- Install LeRobot dengan mengikuti Panduan Instalasi.
- Instal dependensi ROBOMETER:
pip install -e ".[robometer]"Jika Anda menggunakan uv langsung dari checkout sumber:
uv sync --extra robometerROBOMETER menggunakan backbone Qwen3-VL-4B, sehingga inferensi GPU sangat disarankan.
Input dan Output Model
ROBOMETER mengharapkan:
- Video lintasan atau rangkaian bingkai.
- Deskripsi tugas dalam bahasa alami.
Dalam dataset LeRobot, preprocessor membaca:
| Bidang konfigurasi | Default | Arti |
|---|---|---|
reward_model.image_key | observation.images.top | Observasi kamera/video yang digunakan oleh ROBOMETER |
reward_model.task_key | task | Ketikkan data pelengkap yang menyimpan string tugas |
reward_model.max_frames | 8 | Jumlah maksimum frame yang diteruskan ke ROBOMETER |
Model memprediksi kemajuan dan keberhasilan per bingkai secara internal. API reward LeRobot mengembalikan skalar per sampel:
reward_output="progress"(default): mengembalikan progres frame terakhir, dibatasi pada[0, 1].reward_output="success": kembalikan1.0jika probabilitas keberhasilan frame terakhir di atassuccess_threshold, jika tidak0.0.
Penggunaan
Muat Model Reward Secara Langsung
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)Enkode Frame dan Hitung Reward
Untuk pemanggilan Python langsung, berikan frame sebagai array uint8 dengan bentuk (T, H, W, C) dan string tugas:
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 adalah tensor dengan bentuk (batch_size,).
Gunakan Reward Factory
Anda juga dapat menginstansiasi ROBOMETER melalui pabrik reward:
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)Preprocessor menulis tensor Qwen-VL di bawah namespace observation.robometer.*, dan compute_reward() membaca tensor yang telah dikodekan tersebut.
Catatan Konfigurasi
Backbone dan Kosakata
Checkpoint yang dipublikasikan menggunakan backbone Qwen3-VL-4B. ROBOMETER menambahkan lima token khusus ke tokenizer dalam urutan tetap:
<|split_token|> <|reward_token|> <|pref_token|> <|sim_token|> <|prog_token|>
<|prog_token|> disisipkan setelah setiap frame dan merupakan posisi hidden-state yang digunakan untuk prediksi progress dan success per frame. <|split_token|> dan <|pref_token|> digunakan oleh objective preferensi trajektori pairwise dari paper tersebut. <|reward_token|> dan <|sim_token|> dipertahankan untuk kompatibilitas checkpoint.
Konfigurasi LeRobot menyimpan vlm_config yang diserialisasi dengan kosakata setelah pengubahan ukuran agar model dapat dimuat ulang dari config.json tanpa perlu mengunduh bobot dasar Qwen terlebih dahulu. Untuk Qwen/Qwen3-VL-4B-Instruct, panjang tokenizer adalah 151669, dan lima token ROBOMETER menghasilkan ukuran kosakata checkpoint 151674.
Prediksi Progres
Pada checkpoint yang dipublikasikan, progres bersifat diskrit. Kepala progres (progress head) menghasilkan logit di atas progress_discrete_bins=10 pusat bin yang berjarak seragam dalam [0, 1]. LeRobot mengonversi logit ini menjadi nilai kontinu dengan menerapkan softmax dan mengambil ekspektasi di atas pusat bin, sesuai dengan implementasi ROBOMETER hulu (upstream).
Prediksi Keberhasilan
Kepala keberhasilan (success head) menghasilkan logit mentah per frame. LeRobot mengonversinya menjadi probabilitas dengan sigmoid. Ketika reward_output="success", compute_reward() menerapkan ambang batas pada probabilitas keberhasilan frame terakhir menggunakan success_threshold.
Keterbatasan
- Integrasi LeRobot saat ini hanya untuk inferensi; tidak mengimplementasikan pelatihan ROBOMETER atau pelatihan pasangan preferensi.
compute_reward()mengembalikan skalar per sampel untuk API model reward LeRobot, meskipun ROBOMETER memprediksi kemajuan dan keberhasilan per bingkai secara internal.- ROBOMETER berbasis video-bahasa; ia tidak menggunakan status robot yang istimewa seperti gaya kontak atau pose objek.
Referensi
- proyek ROBOMETER
- makalah ROBOMETER
- Kode ROBOMETER asli
- Checkpoint ROBOMETER-4B yang dipublikasikan
- Qwen3-VL-4B-Instruct
Sitasi
@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},
}Lisensi
Integrasi LeRobot ini mengikuti Lisensi Apache 2.0 yang digunakan oleh LeRobot. Periksa kode ROBOMETER dan halaman model upstream untuk lisensi implementasi asli dan checkpoint yang dirilis.
Update on GitHub