LeRobot documentation

ROBOMETER

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.7.0).
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는 Qwen/Qwen3-VL-4B-Instruct를 기반으로 하며, 세 가지 경량 예측 헤드를 추가합니다:

  • 진행 헤드: [0, 1] 범위로 프레임별 작업 진행도를 예측합니다.
  • 성공 헤드: 프레임별 작업 성공 확률을 예측합니다.
  • Preference head: 학습 중 두 궤적 중 어떤 것이 작업을 더 잘 완료하는지 예측합니다.

이 논문은 ROBOMETER를 복합 목적 함수로 학습합니다:

L = L_pref + L_prog + L_succ

LeRobot 통합은 현재 추론 전용입니다. 공개된 Robometer-4B 체크포인트가 리매핑 없이 로드되도록 선호도 헤드를 유지하지만, compute_reward()는 진행도 또는 성공 헤드만 쿼리합니다.

LeRobot 통합의 범위

  • LeRobot를 통해 표준 reward_model.type=robometer 구성을 수행합니다.
  • RobometerEncoderProcessorStep를 통한 Qwen3-VL 이미지 및 텍스트 전처리.
  • PreTrainedRewardModel을 통한 LeRobot 보상 모델 저장/로드 API.
  • 내부적으로 밀집된 프레임 수준의 진행 및 성공 예측.
  • 다운스트림 LeRobot 보상 모델 사용에 대한 compute_reward()를 통한 스칼라 보상.

이 페이지는 공개된 ROBOMETER 체크포인트를 제로샷 리워드 모델로 사용하는 데 초점을 맞춥니다. ROBOMETER를 처음부터 학습하는 것은 현재 LeRobot 통합 범위 밖입니다.

설치 요구 사항

  1. 설치 가이드를 따라 LeRobot을 설치하세요.
  2. ROBOMETER의 종속성을 설치합니다:
pip install -e ".[robometer]"

uv를 소스 체크아웃에서 직접 사용하는 경우:

uv sync --extra robometer

ROBOMETER는 Qwen3-VL-4B 백본을 사용하므로 GPU 추론을 강력히 권장합니다.

모델 입력 및 출력

ROBOMETER는 다음을 기대합니다:

  • 트래젝터리 비디오 또는 프레임 시퀀스.
  • 자연어 작업 설명

LeRobot 데이터셋에서 preprocessor는 다음을 읽습니다:

Config 필드기본값의미
reward_model.image_keyobservation.images.topROBOMETER에서 사용하는 카메라/비디오 관찰
reward_model.task_keytasktask 문자열을 저장하는 보완 데이터의 키를 입력합니다
reward_model.max_frames8ROBOMETER에 전달되는 최대 프레임 수

모델은 내부적으로 프레임별 진행 상황과 성공 여부를 예측합니다. LeRobot 보상 API는 샘플당 스칼라를 반환합니다:

  • reward_output="progress" (기본값): 마지막 프레임의 진행도를 [0, 1] 범위로 제한하여 반환합니다.
  • reward_output="success": 마지막 프레임의 성공 확률이 success_threshold보다 높으면 1.0을, 그렇지 않으면 0.0을 반환합니다.

사용

Reward Model을 직접 로드

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)

프레임 인코딩 및 보상 계산

직접적인 Python 호출의 경우, uint8 배열 형태의 frames를 (T, H, W, C) shape으로 제공하고 task 문자열을 전달합니다:

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,) 모양의 텐서입니다.

Reward Factory 사용

reward factory를 통해 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)

preprocessor는 Qwen-VL 텐서를 observation.robometer.* 네임스페이스 아래에 기록하며, compute_reward()는 해당 인코딩된 텐서를 읽습니다.

구성 참고 사항

Backbone 및 Vocabulary

게시된 체크포인트는 Qwen3-VL-4B 백본을 사용합니다. ROBOMETER는 토크나이저에 다섯 개의 특수 토큰을 고정된 순서로 추가합니다:

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

<|prog_token|>은 각 프레임 뒤에 삽입되며, 프레임별 진행 및 성공 예측에 사용되는 hidden-state 위치입니다. <|split_token|>과 <|pref_token|>는 해당 논문의 pairwise trajectory preference objective에 사용됩니다. <|reward_token|>과 <|sim_token|>는 checkpoint 호환성을 위해 유지됩니다.

LeRobot 설정은 리사이즈 후 어휘를 직렬화한 vlm_config를 저장하여, 모델이 먼저 기본 Qwen 가중치를 다운로드하지 않고도 config.json에서 다시 로드할 수 있습니다. Qwen/Qwen3-VL-4B-Instruct의 경우, 토크나이저 길이는 151669이며, 다섯 개의 ROBOMETER 토큰이 체크포인트 어휘 크기 151674를 생성합니다.

진행 상황 예측

공개된 체크포인트에서 진행도는 이산적입니다. 진행도 헤드는 [0, 1] 범위에 균등하게 배치된 progress_discrete_bins=10개의 빈 중심에 대한 로짓을 출력합니다. LeRobot은 소프트맥스를 적용하고 빈 중심에 대한 기대값을 취하여 이 로짓을 연속 값으로 변환하며, 이는 업스트림 ROBOMETER 구현과 일치합니다.

성공 예측

성공 헤드(success head)는 프레임별 원시 로짓(raw logits)을 출력합니다. LeRobot은 sigmoid를 사용하여 이를 확률로 변환합니다. reward_output="success"인 경우, compute_reward()는 success_threshold를 사용하여 마지막 프레임의 성공 확률을 임계값 처리(thresholding)합니다.

한계

  • 현재 LeRobot 통합은 추론 전용이며, ROBOMETER 학습 또는 선호 쌍 학습을 구현하지 않습니다.
  • compute_reward()는 ROBOMETER가 내부적으로 프레임별 진행도와 성공을 예측하더라도, LeRobot 보상 모델 API를 위해 샘플당 스칼라를 반환합니다.
  • 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 통합은 LeRobot에서 사용하는 Apache 2.0 License를 따릅니다. 원본 구현 및 공개된 체크포인트의 라이선스는 상류 ROBOMETER 코드 및 모델 페이지에서 확인하세요.

Update on GitHub