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.6.1).
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をベースに構築されており、3つの軽量な予測ヘッドを追加しています:

  • Progress head: [0, 1]の範囲でフレームごとのタスク進捗を予測します。
  • Success head: フレームごとのタスク成功確率を予測します。
  • Preference head: 学習中に、2つの軌道のうちどちらがタスクをより適切に完了しているかを予測します。

この論文では、ROBOMETERを複合目的関数で学習しています:

L = L_pref + L_prog + L_succ

LeRobotの統合は現在、推論専用です。公開されているRobometer-4Bチェックポイントをリマッピングなしでロードできるように、preference headを保持していますが、compute_reward()はprogress headまたはsuccess headのみをクエリします。

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のデータセットでは、プリプロセッサは以下を読み取ります:

設定フィールドデフォルト意味
reward_model.image_keyobservation.images.topROBOMETERが使用するカメラ/ビデオ観測
reward_model.task_keytaskタスク文字列を保存する補完データをキーとして入力します
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型の配列としてフレームを、形状(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 は、形状が (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)

プリプロセッサは Qwen-VL テンソルを observation.robometer.* 名前空間の下に書き込み、compute_reward() はそれらのエンコードされたテンソルを読み取ります。

設定に関する注意事項

BackboneとVocabulary

公開されているチェックポイントはQwen3-VL-4Bバックボーンを使用しています。ROBOMETERは、トークナイザーに5つの特殊トークンを固定の順序で追加します:

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

<|prog_token|> は各フレームの後に挿入され、フレームごとの進行度および成功予測に使用される隠れ状態の位置です。<|split_token|> と <|pref_token|> は、論文のペアワイズ軌道優先度目的関数で使用されます。<|reward_token|> と <|sim_token|> は、チェックポイントの互換性を保つために保持されています。

LeRobot の設定には、リサイズ後の語彙がシリアライズされた vlm_config が保存されており、ベースの Qwen ウェイトを先にダウンロードせずに config.json からモデルを再読み込みできます。Qwen/Qwen3-VL-4B-Instruct の場合、トークナイザーの長さは 151669 であり、5 つの ROBOMETER トークンにより、チェックポイントの語彙サイズは 151674 になります。

進捗予測

公開されたチェックポイントでは、進捗は離散値として扱われます。進捗ヘッドは、[0, 1] の範囲に均等に配置された progress_discrete_bins=10 個のビン中心に対するロジットを出力します。LeRobot は、これらのロジットに softmax を適用し、ビン中心に対する期待値を取ることで連続値に変換します。これは、アップストリームの ROBOMETER 実装と一致しています。

成功予測

success head はフレームごとに生の logits を出力します。LeRobot はsigmoidを使用してそれらを確率に変換します。reward_output="success"の場合、compute_reward() はsuccess_thresholdを使用して最終フレームの success 確率に閾値を適用します。

制限事項

  • 現在の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