LeRobot documentation
ROBOMETER
ROBOMETER
ROBOMETER là một mô hình phần thưởng robot đa năng cho video-ngôn ngữ. Nó dự đoán tiến độ tác vụ và thành công ở cấp độ khung hình từ một video quỹ đạo và mô tả tác vụ.
Bài báo: ROBOMETER: Scaling General-Purpose Robotic Reward Models via Trajectory Comparisons Dự án: robometer.github.io Mã nguồn gốc: github.com/robometer/robometer Checkpoint: lerobot/Robometer-4B
Tổng quan
ROBOMETER được xây dựng dựa trên Qwen/Qwen3-VL-4B-Instruct và bổ sung ba đầu dự đoán nhẹ:
- Đầu tiến trình: dự đoán tiến trình tác vụ cho từng khung hình trong
[0, 1]. - Đầu ra thành công: dự đoán xác suất thành công của tác vụ cho từng khung hình.
- Preference head: dự đoán quỹ đạo nào trong hai quỹ đạo hoàn thành tốt hơn nhiệm vụ trong quá trình huấn luyện.
Bài báo huấn luyện ROBOMETER với một mục tiêu tổng hợp:
L = L_pref + L_prog + L_succ
Tích hợp LeRobot hiện tại chỉ hỗ trợ truy vấn suy luận. Nó giữ nguyên đầu preference để checkpoint Robometer-4B đã công bố có thể được nạp mà không cần ánh xạ lại, nhưng compute_reward() chỉ truy vấn đầu progress hoặc success.
Những gì Tích hợp LeRobot Bao Gồm
- Cấu hình
reward_model.type=robometertiêu chuẩn thông qua LeRobot. - Tiền xử lý hình ảnh và văn bản của Qwen3-VL thông qua
RobometerEncoderProcessorStep. - API lưu/tải mô hình phần thưởng LeRobot thông qua
PreTrainedRewardModel. - Dự đoán tiến độ và thành công ở mức khung hình, chi tiết, bên trong.
- Phần thưởng vô hướng thông qua
compute_reward()để sử dụng cho mô hình phần thưởng LeRobot ở các bước tiếp theo.
Trang này tập trung vào việc sử dụng checkpoint ROBOMETER đã công bố như một mô hình phần thưởng zero-shot. Việc huấn luyện ROBOMETER từ đầu nằm ngoài phạm vi tích hợp LeRobot hiện tại.
Yêu cầu cài đặt
- Cài đặt LeRobot bằng cách làm theo Hướng dẫn cài đặt.
- Cài đặt các phụ thuộc của ROBOMETER:
pip install -e ".[robometer]"Nếu bạn sử dụng uv trực tiếp từ một bản checkout mã nguồn:
uv sync --extra robometerROBOMETER sử dụng backbone Qwen3-VL-4B, do đó rất khuyến nghị suy luận trên GPU.
Đầu vào và đầu ra của Mô hình
ROBOMETER kỳ vọng:
- Một video quỹ đạo hoặc chuỗi các khung hình.
- Mô tả tác vụ bằng ngôn ngữ tự nhiên.
Trong các bộ dữ liệu LeRobot, bộ tiền xử lý đọc:
| Trường cấu hình | Mặc định | Ý nghĩa |
|---|---|---|
reward_model.image_key | observation.images.top | Quan sát camera/video được sử dụng bởi ROBOMETER |
reward_model.task_key | task | Nhập dữ liệu bổ sung lưu trữ chuỗi tác vụ |
reward_model.max_frames | 8 | Số lượng khung hình tối đa được truyền vào ROBOMETER |
Mô hình dự đoán tiến độ và thành công cho từng khung hình bên trong. API phần thưởng của LeRobot trả về một giá trị vô hướng cho mỗi mẫu:
reward_output="progress"(mặc định): trả về tiến độ của khung hình cuối, được kẹp trong khoảng[0, 1].reward_output="success": trả về1.0nếu xác suất thành công của khung hình cuối cùng lớn hơnsuccess_threshold, ngược lại là0.0.
Cách sử dụng
Tải trực tiếp Mô hình Phần thưởng
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)Mã hóa các khung hình và tính phần thưởng
Để gọi trực tiếp bằng Python, hãy cung cấp các khung hình dưới dạng mảng uint8 có hình dạng (T, H, W, C) và một chuỗi mô tả tác vụ:
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 là một tensor có hình dạng (batch_size,).
Sử dụng Reward Factory
Bạn cũng có thể khởi tạo ROBOMETER thông qua nhà máy phần thưởng:
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)Bộ tiền xử lý ghi các tensor Qwen-VL dưới namespace observation.robometer.*, và compute_reward() đọc các tensor đã mã hóa đó.
Ghi chú cấu hình
Backbone và Từ vựng
Checkpoint đã công bố sử dụng backbone Qwen3-VL-4B. ROBOMETER thêm năm token đặc biệt vào tokenizer theo một thứ tự cố định:
<|split_token|> <|reward_token|> <|pref_token|> <|sim_token|> <|prog_token|>
<|prog_token|> được chèn sau mỗi khung hình và là vị trí trạng thái ẩn được dùng để dự đoán tiến độ và thành công cho từng khung hình. <|split_token|> và <|pref_token|> được sử dụng bởi mục tiêu ưu tiên quỹ đạo theo cặp của bài báo. <|reward_token|> và <|sim_token|> được giữ lại để đảm bảo tương thích checkpoint.
Cấu hình LeRobot lưu trữ vlm_config đã được serialize với từ điển sau khi resize để mô hình có thể tải lại từ config.json mà không cần tải trước trọng lượng cơ sở của Qwen. Đối với Qwen/Qwen3-VL-4B-Instruct, độ dài của tokenizer là 151669, và năm token ROBOMETER tạo ra kích thước từ điển của checkpoint là 151674.
Dự đoán tiến độ
Trong checkpoint đã công bố, tiến độ là rời rạc. Đầu ra tiến độ (progress head) tạo ra logits trên progress_discrete_bins=10 tâm bin cách đều trong khoảng [0, 1]. LeRobot chuyển đổi các logits này thành một giá trị liên tục bằng cách áp dụng softmax và lấy kỳ vọng trên các tâm bin, khớp với cài đặt ROBOMETER gốc.
Dự đoán thành công
Đầu ra của success head là các logits thô cho mỗi khung hình. LeRobot chuyển đổi chúng thành xác suất bằng sigmoid. Khi reward_output="success", compute_reward() sẽ đặt ngưỡng cho xác suất thành công của khung hình cuối cùng bằng success_threshold.
Hạn chế
- Tích hợp LeRobot hiện tại chỉ dành cho suy luận; nó không triển khai huấn luyện ROBOMETER hay huấn luyện cặp ưu tiên.
compute_reward()trả về một giá trị vô hướng cho mỗi mẫu trong API mô hình phần thưởng của LeRobot, mặc dù ROBOMETER dự đoán tiến độ và thành công theo từng khung hình bên trong.- ROBOMETER dựa trên video-ngôn ngữ; nó không sử dụng trạng thái robot đặc quyền như lực tiếp xúc hoặc tư thế đối tượng.
Tham khảo
- dự án ROBOMETER
- bài báo ROBOMETER
- Mã ROBOMETER gốc
- Điểm kiểm tra ROBOMETER-4B đã công bố
- Qwen3-VL-4B-Instruct
Trích dẫn
@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},
}Giấy phép
Tích hợp LeRobot này tuân theo Giấy phép Apache 2.0 được sử dụng bởi LeRobot. Hãy kiểm tra mã nguồn và các trang mô hình ROBOMETER gốc để biết giấy phép của bản triển khai ban đầu và các checkpoint đã phát hành.
Update on GitHub