pretrain_mot_subrot / README.md
FACEONG's picture
pretrain MoT cum-step 5100 (subtraction rot6d chain) + norms + model card
22ee51e verified
|
Raw History Blame Contribute Delete
3.37 kB
metadata
license: apache-2.0
tags:
  - robotics
  - diffusers
  - safetensors
  - video-action
  - world-model
  - mixture-of-transformers
base_model: robbyant/lingbot-va-base

MoT VTA 预训练权重 — cumulative step 5100(减法 rot6d 链)

WAN 视频扩散 DiT → MoT 三专家(video 3072,暖启动自 robbyant/lingbot-va-base;action / tactile 各 1024)。 视频·触觉·动作联合去噪(diffusion-forcing,tactile foresight),use_mot=True。

  • 代码分支:neoVTA @ symdiff-mot-proprio-state(必须用该分支或其后代加载;含 MoT loader / 减法 delta / proprio-state 开关)
  • 训练数据:纯真机多机器人池(~949 repo / ~65.5 万段,7 种 embodiment,无 UMI)
  • 训练量:累计 5100 optim steps × 有效 batch 192 ≈ 98 万样本(1.5 epoch)
  • val(纯真机 22878 段):total 0.2689 / action 0.0129 / latent 0.1795 / tactile 0.0765(持续改善中的中途 ckpt)
  • LocalTactile / proprio-state 分支本 ckpt 未训(开关关;posttrain 可零初始化开启)

动作空间(重要)

20 维双臂 EE [pos3 + rot6d + grip1] × 2,pi0.5 horizon-16 delta:

分量 表示
pose(0-8 / 10-18) 逐元素减法 delta:action[anchor+k] − state[anchor](pi05_rot6d_relative_delta=False,非几何相对旋转)
gripper(9 / 19) 绝对指令值
单臂机器人 占左臂 10 维,右臂槽置零 + mask

文件

transformer/
  config.json                          # MoT 结构(is_mot / expert dims)
  diffusion_pytorch_model.safetensors  # 14G bf16
meta.json                              # 累计步号 / seed / 续训来源
norm_stat_subrot.json                  # ★ action 归一化 q01/q99(全局)
norm_stat_per_robot_subrot.json        # ★ per-robot action norm(训练实际按机器人命中)
norm_stat_state_subrot.json            # (可选)绝对 state q01/q99——开 use_proprio_state 才需要
norm_stat_state_per_robot_subrot.json  # (可选)per-robot state norm

加载

import torch
from wan_va.modules.utils import load_mot_checkpoint   # neoVTA 分支代码

model = load_mot_checkpoint("<本仓库>/transformer", torch_dtype=torch.bfloat16)
# posttrain 开 state 通路:load_mot_checkpoint(..., use_proprio_state=True)
#   (零初始化分支,首步与原模型逐位一致;需自算任务的 state norm)

注意:这是自定义 MoT 类,不能用 AutoModel.from_pretrained 一行加载,必须配分支代码。

⚠️ 必读

  1. norm 必须配套:直接推理/评测本权重时用本仓库的 subrot norm(训练精确域 all-horizon delta 分位数);posttrain 建议自算任务 norm(同域计算:delta 任务在 all-horizon delta 域,gripper 绝对域),且 server 必须带 posttrain 用的那份。
  2. 推理需 VAE + text encoder + tokenizer:直接取 robbyant/lingbot-va-base 的 vae/、text_encoder/、tokenizer/(本模型未改动它们)。
  3. serve 时 action_per_frame 必须 = latent stride×4(30fps 数据 = 12,不是 16);pose 反算用 per-frame 链式 anchor;fsid 修复保持默认开。
  4. 触觉输入 = episode-first global 残差 latent(相对源 episode 首帧的 RGB 残差 → 128×128 → Wan VAE → 48ch 8×8),编码脚本在分支 script/encode_tactile_latent.py。