LeRobot documentation

Long-WAM

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

Long-WAM

论文 · 项目与演示 · 代码

Long-WAM 是一个长上下文世界-动作模型:它利用语言指令、机器人状态和视觉历史来预测未来动态并生成动作。

模型概览

  • 学习使用历史。LongLive2.0-Robot 自回归视频预训练在适应机器人动作之前,学习从历史到未来的依赖关系。
  • 先预测,再行动。IDM 基于观测到的历史以及预测的未来潜在变量来生成动作,而无需解码未来的 RGB 图像。
  • 扩展时间上下文。更长的观测窗口能够捕捉运动状态和任务进度;历史长度与动作时域是相互独立的。

LeRobot 支持 IDM 以及联合视频/动作协同去噪(COD),并原生支持检查点加载、微调以及同步动作块推理。Wan 骨干网络来自 Diffusers,UMT5 文本编码器来自 Transformers。

结果

已报告的 lerobot-eval 结果,针对已发布的 LeRobot 原生 IDM 和 COD 检查点:

套件IDM 成功率COD 成功率每个模型的回合数
libero_spatial99.4%98.6%500
libero_object99.8%99.6%500
libero_goal97.8%98.2%500
libero_1099.0%97.4%500
平均值99.00%98.45%2000

有关示例命令和回合数限制,请参阅 评估。 这些命令已在 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 的相机视图、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。在检查点路径中,将 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

历史时长为 past_obs_steps / control_frequency。早期历史会用第一个观测值进行填充。请使用针对目标历史时长训练的 checkpoint;在推理阶段更改窗口大小并不等同于上下文扩展训练。

微调

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 在加载之前选择参数存储的 dtype;原生 AdamW 的梯度和动量使用该 dtype。--accelerator.mixed_precision 控制 autocast,而非 FP32 主权重。示例中两者均使用 BF16,与原始参数 dtype 保持一致。若需使用 FP32 参数/梯度/动量并配合 BF16 autocast,请使用 --policy.dtype=float32 --accelerator.mixed_precision=bf16;此时冻结的 VAE 和文本编码器也使用 FP32,会增加内存占用。请在加载前做出选择:将 BF16 加载的权重转换为 FP32 无法恢复已丢失的精度。

发布的夹爪后处理器会将最后一个动作维度从 [0, 1] 转换为带符号的指令。如果您的微调数据已经使用环境的带符号开/关约定,请使用 --policy.toggle_action_dimensions=[]。 当前设置同样适用于已保存的后处理器;显式的 postprocessor_overrides 具有更高的优先级。除非被覆盖,否则已保存的归一化统计信息将被保留,因此请确保它们与您的微调数据保持一致。

训练阶段监督未来的视频和动作块;推理阶段仅接收过去/当前的观测。请根据 GPU 内存调整 --batch_size,并保留检查点中的相机顺序、动作/状态定义以及去噪模式。

引用

@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},
}
Update on GitHub