LeRobot documentation
TOPReward
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=toprewardyapılandırması. transformersQwen3VLForConditionalGenerationAPI'si üzerinden VLM yükleme.- İşleyicide prompt derleme + tokenizasyon (yukarıdaki
QwenClient.compute_instruction_rewardile 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_pretrainedyalnızcaconfig.jsondosyasını yazar (VLM,vlm_nameile 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
- LeRobot'u Yükleme Kılavuzu'na göre yükleyin.
- TOPReward isteğe bağlı ekini yükleyin:
pip install -e ".[topreward]"veya kaynak kodundan uv ile:
uv sync --extra toprewardBu, 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ılan | Anlam |
|---|---|---|
reward_model.image_key | observation.images.top | TOPReward tarafından kullanılan kamera gözlemi |
reward_model.task_key | task | Görev dizgesi için tamamlayıcı verileri girin |
reward_model.max_frames | 16 | Örnekteki kare sayısını sınırla |
reward_model.fps | 2.0 | Qwen video işlemcisine geçirilen meta veriler |
reward_model.vlm_name | Qwen/Qwen3-VL-8B-Instruct | Altta 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_thresholdsonluysa, 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 cudaArdı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 \
--gifYapı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 veis_trainableFalsedö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