LeRobot documentation

TOPReward

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

TOPReward

TOPReward 是一个零样本奖励模型,它从现成的视觉语言模型(VLM)中提取 token 对数概率,作为机器人奖励信号。给定一段视频轨迹和一条任务指令,它会返回该指令为真时 VLM 的对数似然值——无需微调。

论文:TOPReward: Token Probabilities as Hidden Zero-Shot Rewards for Robotics 项目:topreward.github.io 原始代码:github.com/TOPReward/TOPReward 默认骨干网络:Qwen/Qwen3-VL-8B-Instruct

概述

TOPReward 会询问一个通用 VLM,在机器人尝试完成该任务的视频条件下,任务指令的可能性有多大。具体而言,给定:

  • 轨迹视频(一系列帧)。
  • 任务指令(例如 “打开抽屉”)。

它会构建一个如下形式的聊天提示

<video>
"The above video shows a robot manipulation trajectory that completes the
 following task: <instruction> Decide whether the above statement is True
 or not. The answer is: True"

将其通过 VLM 进行前向传播,对除最后一个 token 之外的所有位置应用标签掩码,然后读取该 token 的对数概率——默认情况下,这是用于闭合后缀模板的字面量 "True"。由此得到的 log P("True" | video + prompt + instruction) 即为奖励值。

由于该方法仅依赖于冻结的 VLM,TOPReward 是零样本的:无需托管任何微调后的权重。LeRobot 中的“模型”是 transformers 的 Qwen3VLForConditionalGeneration 加上标签掩码逻辑的一个小型封装。处理器负责分词器并构建完整的聊天提示(EO-1/Robometer 模式)。

LeRobot 集成涵盖的内容

  • 通过 LeRobot 进行标准的 reward_model.type=topreward 配置。
  • 通过 transformers 的 Qwen3VLForConditionalGeneration API 加载 VLM。
  • 处理器中的提示词组装 + 分词(与上游 QwenClient.compute_instruction_reward 保持一致)。
  • compute_reward() 为每个样本返回一个标量对数概率。
  • LeRobot 奖励模型保存/加载 — save_pretrained 仅写入 config.json(VLM 由 vlm_name 标识)。
  • 一个离线标注脚本,用于为 RA-BC 和 overlay 写入 topreward_progress.parquet(SARM 兼容模式)。

当前的 LeRobot 移植版本仅支持 Qwen3-VL 客户端。其他上游客户端(Gemini、OpenAI、Gemma、Molmo)可以作为后续附加功能添加。

安装要求

  1. 按照安装指南安装 LeRobot。
  2. 安装 TOPReward 可选附加组件:
pip install -e ".[topreward]"

或者,从源代码检出中使用 uv:

uv sync --extra topreward

这会引入 transformers。首次运行 TOPReward 时,Hugging Face 还会从 Hub 下载 VLM 权重(Qwen3-VL-8B-Instruct 约为 16 GB)。强烈建议使用 GPU。

模型输入和输出

TOPReward 预期:

  • 轨迹视频或帧序列。
  • 自然语言任务描述。

在 LeRobot 数据集中,预处理器读取:

配置字段默认含义
reward_model.image_keyobservation.images.topTOPReward 使用的相机观测
reward_model.task_keytask在任务字符串中键入互补数据
reward_model.max_frames16每个样本的帧数上限
reward_model.fps2.0传递给 Qwen 视频处理器的元数据
reward_model.vlm_nameQwen/Qwen3-VL-8B-Instruct底层 VLM 的 Hugging Face Hub id

模型返回:

  • compute_reward(batch):每个样本一个对数概率。值越高,表示任务与视频的对齐程度越好。当 success_threshold 为有限值时,返回二值化阈值结果。

用法

直接加载奖励模型

from lerobot.rewards.topreward import TOPRewardConfig, TOPRewardModel

cfg = TOPRewardConfig(
    vlm_name="Qwen/Qwen3-VL-8B-Instruct",
    device="cuda",
)
reward_model = TOPRewardModel(cfg)

使用奖励工厂

from lerobot.rewards import make_reward_model, make_reward_model_config, make_reward_pre_post_processors

cfg = make_reward_model_config(
    "topreward",
    vlm_name="Qwen/Qwen3-VL-8B-Instruct",
    device="cuda",
    image_key="observation.images.top",
)
reward_model = make_reward_model(cfg)
preprocessor, postprocessor = make_reward_pre_post_processors(cfg)

预处理器对完整提示(视频 + 前缀 + 指令后缀)进行分词,并将 Qwen-VL 张量及 prompt_length 写入 observation.topreward.*。模型读取这些张量,基于 prompt_length 进行标签掩码,并提取对数概率奖励。

离线数据集标注

为 RA-BC 训练和叠加视频编写一个 topreward_progress.parquet:

# Sparse-dense (15 anchors per episode, matches upstream)
uv run python -m lerobot.rewards.topreward.compute_rabc_weights \
    --dataset-repo-id lerobot/libero_10_image \
    --num-samples 15 \
    --device cuda

然后为任意剧集渲染进度覆盖层:

uv run examples/dataset/create_progress_videos.py \
    --repo-id lerobot/libero_10_image \
    --episode 0 \
    --progress-file topreward_progress.parquet \
    --gif

配置说明

提示词参数

默认提示词与上游论文保持一致:

prompt_prefix = "The above video shows a robot manipulation trajectory that completes the following task: "
prompt_suffix_template = "{instruction} Decide whether the above statement is True or not. The answer is: True"

两者均在 TOPRewardConfig 上暴露,用于消融实验。后缀模板 必须 包含 {instruction}。

聊天模板

add_chat_template=True 会在分词前,使用分词器的聊天模板包裹完整的提示词(包括指令)。默认值为 False,与上游论文的主要实验设置保持一致。

局限性

  • 当前的 LeRobot 移植版本仅支持推理且为零样本;forward() 未被重写,且 is_trainable 返回 False。
  • 仅支持 Qwen3-VL 系列;其他上游客户端不在支持范围内。
  • TOPReward 继承了底层 VLM 的偏差。

参考

引用

@article{chen2026topreward,
  title={TOPReward: Token Probabilities as Hidden Zero-Shot Rewards for Robotics},
  author={Chen, Shirui and Harrison, Cole and Lee, Ying-Chun and Yang, Angela Jin and
          Ren, Zhongzheng and Ratliff, Lillian J and Duan, Jiafei and Fox, Dieter and
          Krishna, Ranjay},
  journal={arXiv preprint arXiv:2602.19313},
  year={2026}
}

许可证

原始 TOPReward 代码库采用 MIT 许可证。LeRobot 移植版本遵循 LeRobot Apache 2.0 许可证;封装的 Qwen3-VL 权重则受原始 Qwen 许可证约束。

Update on GitHub