LeRobot documentation

TOPReward

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

TOPReward

TOPReward, bir robotik ödül sinyali olarak hazır bir görsel-dil modelinden (VLM) token log-olasılıklarını çıkaran sıfır atışlı ödül modelidir. Bir video yörüngesi ve bir görev talimatı verildiğinde, talimatın doğru olma olasılığının VLM log-olasılığını döndürür — ince ayar gerektirmez.

Makale: TOPReward: Token Probabilities as Hidden Zero-Shot Rewards for Robotics Proje: topreward.github.io Özgün kod: github.com/TOPReward/TOPReward Varsayılan omurga: Qwen/Qwen3-VL-8B-Instruct

Genel Bakış

TOPReward, bir robotun bu görevi tamamlamaya çalıştığı videoya koşullu olarak, bir görev talimatının ne kadar olası olduğunu genel bir VLM'den sorar. Somut olarak, verildiğinde:

  • Bir yörünge videosu (kare dizisi).
  • Görev talimatı (ör. “open the drawer”).

şu biçimde bir sohbet istemi oluşturur

<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"

forwards it through the VLM, label-masks everything except the very last token, and reads back the log-probability of that token — by default the literal "True" that closes the suffix template. The resulting log P("True" | video + prompt + instruction) is the reward.

Yöntem yalnızca dondurulmuş bir VLM'ye bağlı olduğundan, TOPReward zero-shottir: barındırılacak ince ayarlanmış ağırlıklar yoktur. LeRobot'taki “model”, transformers'in Qwen3VLForConditionalGeneration sınıfının etrafındaki küçük bir sarmalayıcı ve etiket maskeleme mantığıdır. İşleyici (processor), belirteçleyiciyi (tokeniser) yönetir ve tam sohbet istemini oluşturur (EO-1/Robometer deseni).

LeRobot entegrasyonunun kapsadığı konular

  • LeRobot üzerinden standart reward_model.type=topreward yapılandırması.
  • transformers Qwen3VLForConditionalGeneration API'si üzerinden VLM yükleme.
  • İşleyicide prompt derleme + tokenizasyon (yukarıdaki QwenClient.compute_instruction_reward ile eşleşir).
  • compute_reward() örnek başına bir skaler log-olasılık döndürür.
  • LeRobot ödül modeli kaydet/yükle — save_pretrained yalnızca config.json dosyasını yazar (VLM, vlm_name ile tanımlanır).
  • RA-BC ve overlay için topreward_progress.parquet (SARM ile uyumlu şema) yazan çevrimdışı etiketleme betiği.

Mevcut LeRobot portu yalnızca Qwen3-VL istemcisini destekler. Diğer üst akış istemcileri (Gemini, OpenAI, Gemma, Molmo) takip eden ekler olarak eklenebilir.

Kurulum Gereksinimleri

  1. LeRobot'u Yükleme Kılavuzu'na göre yükleyin.
  2. TOPReward isteğe bağlı ekini yükleyin:
pip install -e ".[topreward]"

veya kaynak kodundan uv ile:

uv sync --extra topreward

Bu, transformers paketini çeker. TOPReward'ı ilk kez çalıştırdığınızda Hugging Face, VLM ağırlıklarını Hub'dan da indirir (Qwen3-VL-8B-Instruct için ~16 GB). GPU kullanılması şiddetle önerilir.

Model Girdileri ve Çıktıları

TOPReward şunları bekler:

  • Bir yörünge videosu veya kare dizisi.
  • Doğal dilde bir görev açıklaması.

LeRobot veri setlerinde ön işleyici şunları okur:

Yapılandırma alanıVarsayılanAnlam
reward_model.image_keyobservation.images.topTOPReward tarafından kullanılan kamera gözlemi
reward_model.task_keytaskGörev dizgesi için tamamlayıcı verileri girin
reward_model.max_frames16Örnekteki kare sayısını sınırla
reward_model.fps2.0Qwen video işlemcisine geçirilen meta veriler
reward_model.vlm_nameQwen/Qwen3-VL-8B-InstructAltta yatan VLM'nin Hugging Face Hub kimliği

Model şunu döndürür:

  • compute_reward(batch): örnek başına bir log-olasılık. Daha yüksek = görev-video hizalaması daha iyi. success_threshold sonluysa, bunun yerine ikili eşiklenmiş değeri döndürür.

Kullanım

Ödül modelini doğrudan yükleyin

from lerobot.rewards.topreward import TOPRewardConfig, TOPRewardModel

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

Ödül fabrikasını kullanın

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)

Önişleyici, tam istemi (video + önek + talimat soneki) tokenize eder ve Qwen-VL tensörlerini + prompt_length değerini observation.topreward.* altında yazar. Model bu tensörleri okur, prompt_length değerine göre etiket maskesi uygular ve log-olasılık ödülünü çıkarır.

Çevrimdışı veri seti etiketleme

RA-BC eğitimi ve üst üste bindirme videoları için bir topreward_progress.parquet yazın:

# 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

Ardından herhangi bir bölüm için ilerleme katmanını (progress overlay) görüntüleyin:

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

Yapılandırma Notları

Prompt ayarları

Varsayılan istem, üst akış makalesini yansıtır:

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"

Her ikisi de ablatasyon için TOPRewardConfig üzerinde tanımlıdır. Sonek şablonu mutlaka {instruction} içermelidir.

Sohbet şablonu

add_chat_template=True, tokenizasyon öncesinde tam istemi (talimat dahil) tokenizer’ın sohbet şablonuyla sarar. Varsayılan değer False olup, üst akış makalesinin ana deneyleriyle uyumludur.

Kısıtlamalar

  • Mevcut LeRobot portu sadece çıkarım ve sıfır atış içindir; forward() yeniden tanımlanmamıştır ve is_trainable False döndürür.
  • Yalnızca Qwen3-VL ailesi desteklenir; diğer üst akış istemcileri kapsam dışındadır.
  • TOPReward, altındaki VLM'nin önyargılarını devralır.

Referanslar

Atıf

@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}
}

Lisans

Orijinal TOPReward kod tabanı MIT lisanslıdır. LeRobot portu, LeRobot Apache 2.0 lisansını takip eder; sarmalanan Qwen3-VL ağırlıkları ise orijinal Qwen lisansına tabidir.

Update on GitHub