LeRobot documentation
Long-WAM
Long-WAM
Long-WAMは長文脈のワールドアクションモデルです。言語による指示、ロボットの状態、視覚履歴を用いて、将来のダイナミクスを予測し、アクションを生成します。
モデル概要
- 履歴の活用方法を学習する。LongLive2.0-Robotの自己回帰型動画事前学習は、ロボット動作への適応の前に、履歴から未来への依存関係を学習します。
- 予測してから行動する。IDMは、観測された履歴と予測された将来の潜在変数に基づいて行動を生成し、将来のRGB画像をデコードすることはありません。
- 時間的コンテキストをスケールする。より長い観測ウィンドウは、運動やタスクの進捗を捉えます。履歴の長さは、アクションのホライズンとは独立しています。
LeRobotは、IDMとジョイントな動画/アクション共ノイズ除去(COD)の両方をサポートしており、ネイティブなチェックポイントの読み込み、ファインチューニング、同期アクションチャンク推論に対応しています。WanのバックボーンはDiffusersから、UMT5のテキストエンコーダーはTransformersから提供されます。
結果
公開されている LeRobot ネイティブの IDM および COD チェックポイントについて、lerobot-eval で報告された結果:
| スイート | IDMの成功率 | CODの成功率 | モデルごとのエピソード数 |
|---|---|---|---|
| libero_spatial | 99.4% | 98.6% | 500 |
| libero_object | 99.8% | 99.6% | 500 |
| libero_goal | 97.8% | 98.2% | 500 |
| libero_10 | 99.0% | 97.4% | 500 |
| 平均 | 99.00% | 98.45% | 2000 |
Evaluationを参照してください。コマンドの例とエピソードの上限が記載されています。 これらのコマンドは、NVIDIA GB200上でBF16および同期推論を使用してテストされました。
インストール
LeRobotのソースチェックアウトから:
pip install -e ".[longwam]"チェックポイント
LeRobotネイティブのチェックポイントには、完全なモデルの重みと保存された前処理・後処理プロセッサが含まれます。
トークナイザーはgoogle/umt5-xxlから読み込まれます。
| モード | 推論 | チェックポイント |
|---|---|---|
| IDM | 未来の動画を想像し、その後でアクションのノイズを除去します | LIBERO IDM |
| COD | 動画とアクションを同時にデノイズする | LIBERO COD |
どちらもP48履歴(20 Hzで2.4秒)、224×224のカメラビュー2つ、7次元のアクション、および8次元のロボット状態を使用します。望ましいデノイジングモードに一致するチェックポイントを使用してください。元のLong-WAMのmodel.ptバンドルは直接読み込めません。
データ要件
RGBカメラ、observation.state、action、およびタスク指示を含むLeRobotデータセットを使用します。公開されているLIBEROのカメラキーは、observation.images.imageとobservation.images.image2の順です。[0, 1]の範囲のRGBテンソルを供給してください。プロセッサは各ビューをリサイズし、中央クロップを行います。ポリシーはビューを水平方向に連結します。カメラの順序とアクション/状態の規約は、チェックポイントと整合させてください。
推論
from lerobot.policies import make_pre_post_processors
from lerobot.policies.longwam.modeling_longwam import LongWAMPolicy
checkpoint = "Efficient-Large-Model/Long-WAM-LIBERO-IDM-LeRobot"
policy = LongWAMPolicy.from_pretrained(checkpoint).to("cuda").eval()
preprocess, postprocess = make_pre_post_processors(
policy.config,
pretrained_path=checkpoint,
preprocessor_overrides={"device_processor": {"device": "cuda"}},
)
policy.reset()
# observation contains both current camera images, observation.state, and task.
# Repeat on every control tick, including ticks that consume queued actions.
action = postprocess(policy.select_action(preprocess(observation)))select_action は、アクションチャンクの実行中を含むすべてのコントロールティックで呼び出してください。これにより、履歴が最新の状態に保たれます。predict_action_chunk は [batch, prediction_steps, action_dim] を返します。各呼び出しで、指定された現在のフレームが記録されます。reset() と drop_queued_actions() は、履歴とキューに積まれたアクションの両方をクリアします。
汎用的な非同期/RTC は、この統合ではまだ検証されていません。
デフォルトでは、inference_seed=1 を設定すると、各チャンクごとに同じシードで別々の動画/アクションノイズジェネレーターが再起動され、リリース時の推論動作が維持されます。
Python では inference_seed=None を設定し(CLI では --policy.inference_seed=null を使用)ることで、進化するグローバル RNG を代わりに使用できます。reset() はそのストリームを再シードしません。
学習では常に新しいノイズがサンプリングされます。
評価
ベンチマークの追加パッケージをインストールし、ネイティブのチェックポイントを評価します:
pip install -e ".[longwam,libero]"
lerobot-eval --policy.path=Efficient-Large-Model/Long-WAM-LIBERO-IDM-LeRobot \
--policy.device=cuda --policy.dtype=bfloat16 \
--env.type=libero --env.task=libero_spatial \
--env.observation_height=256 --env.observation_width=256 \
--env.episode_length=300 \
--eval.batch_size=1 --eval.n_episodes=50 --seed=1他の短いスイートにはlibero_objectまたはlibero_goalを使用します。LIBERO-Longの場合は、--env.task=libero_10 --env.episode_length=600を設定します。co-denoisingを評価するには、チェックポイントパス内のIDMをCODに置き換えます。
履歴とアクションチャンク分割
| パラメータ | 意味 | 公開されたLIBEROの値 |
|---|---|---|
past_obs_steps | 保持された過去の制御ティック | 48 |
video_stride | サンプリングされた動画フレーム間のティックを制御します | 4 |
future_video_steps | 将来の動画監督ホライズン | 32 |
action_horizon | トレーニング用アクションチャンク長 | 32 |
inference_action_horizon | 予測されたアクションチャンクの長さ | 80 |
n_action_steps | 新しい予測の実行前に実行されるアクション | 10 |
History の持続時間は past_obs_steps / control_frequency です。初期の History は最初の観測値でパディングされます。意図した History に対して学習されたチェックポイントを使用してください。推論時にウィンドウを変更することは、コンテキストスケーリングの学習ではありません。
ファインチューニング
lerobot-train --policy.path=Efficient-Large-Model/Long-WAM-LIBERO-IDM-LeRobot \
--policy.device=cuda --policy.dtype=bfloat16 \
--accelerator.mixed_precision=bf16 \
--dataset.repo_id=YOUR_ORG/YOUR_DATASET \
--output_dir=outputs/longwam --batch_size=1 --steps=30000 \
--policy.push_to_hub=false--policy.dtype は、読み込み前のパラメータの保存形式を選択します。ネイティブの AdamW の勾配とモーメントは、その dtype を使用します。--accelerator.mixed_precision は autocast を制御するものであり、FP32 のマスターウェイトを制御するものではありません。この例では、元のパラメータの dtype と一致させるため、両方に BF16 を使用しています。FP32 のパラメータ/勾配/モーメントと BF16 の autocast を使用する場合は、--policy.dtype=float32 --accelerator.mixed_precision=bf16 を使用します。この場合、凍結された VAE とテキストエンコーダーも FP32 となり、メモリ使用量が増加します。読み込み前に選択してください。BF16 で読み込まれたウェイトを FP32 にキャストしても、失われた精度は回復できません。
リリースされた gripper postprocessor は、最後のアクション次元を[0, 1]から符号付きコマンドに変換します。ファインチューニングデータがすでに環境の符号付き open/close 規約を使用している場合は、--policy.toggle_action_dimensions=[]を使用してください。
アクティブな設定は保存されたプロセッサにも適用されますが、明示的なpostprocessor_overridesが優先されます。正規化統計は上書きされない限り保持されるため、ファインチューニングデータに合わせてください。
Trainingでは将来の動画とアクションのチャンクを監督し、推論では過去/現在の観測のみを受け取ります。--batch_sizeはGPUメモリに合わせて調整し、チェックポイントのカメラ順序、アクション/状態の定義、およびデノイジングモードを維持してください。
引用
@misc{huang2026longwamscalingcontextworldaction,
title={Long-WAM: Scaling the Context of World-Action Models},
author={Wei Huang and Bohan Zhang and Chenzhi Liu and Isabella Liu and
Shuai Yang and Weian Mao and Luozhou Wang and Yicheng Xiao and
Weifeng Lin and Qixin Hu and Bryan Chu and Sifei Liu and
Linxi Fan and Xiaojuan Qi and Song Han and Yukang Chen},
year={2026},
eprint={2610.10528},
archivePrefix={arXiv},
primaryClass={cs.RO},
url={https://arxiv.org/abs/2610.10528},
}