How to use from the
Use from the
Diffusers library
pip install -U diffusers transformers accelerate
import torch
from diffusers import DiffusionPipeline

# switch to "mps" for apple devices
pipe = DiffusionPipeline.from_pretrained("EmbodyX/UR3-organize-lingbotva-fdm0lr1e4-2000step", dtype=torch.bfloat16, device_map="cuda")

prompt = "Astronaut in a jungle, cold color palette, muted colors, detailed, 8k"
image = pipe(prompt).images[0]

UR3-organize-lingbotva-fdm0lr1e4 — no-FDM baseline @ lr=1e-4 (step 2000)

Fine-tuned transformer for LingBot-VA on a bimanual UR3 robot, task EmbodyX/UR3/organize_pi05: "sort the tools into their matching containers" (78 demos, 118,211 action rows, 15 fps source, 3 cameras).

This run has NO FDM auxiliary loss — pure upstream Robbyant/lingbot-va training regime (L_dyn + L_inv every step, mutually-exclusive coin disabled), trained at the paper's aggressive real-world learning rate 1e-4 (10× the lr=1e-5 noFdm baseline). Use it as the A/B baseline for the lr sweep.

  • Base: robbyant/lingbot-va-base
  • Config: wan_va/configs/va_ur3_organize_noFdm_lr1e4_train_cfg.py
  • Checkpoint: step 2000
  • Robot: bimanual UR3 (2× 6-DoF + 2 binary grippers; 14-dim raw action [L_arm(6), L_grip, R_arm(6), R_grip] mapped into 30-dim model space via used_action_channel_ids = [0..5, 28, 6..11, 29]).
  • Cameras: camera_top, camera_wrist_left, camera_wrist_right (concatenated along width, 256×320 per cam after resize from 480×640).

Hyperparameters

Hparam Value
learning rate 1e-4
β1 / β2 / weight_decay 0.9 / 0.95 / 0.1
warmup_steps 10
batch_size 1
gradient_accumulation_steps 4
total steps (planned) 20000
save_interval 200
lambda_fdm 0.0 (FDM disabled)
fdm_prob 0.0 (ignored; kept for log clarity)

_train_step short-circuits the FDM coin when lambda_fdm == 0, so every microstep runs the IDM regime (one forward, one backward, L_dyn + L_inv). This path is byte-identical to upstream Robbyant/lingbot-va training.

Normalization / stride (same as the FDM series)

  • Action normalization: MIN/MAX, zero-inclusive bounds. Real-data absmax = 1.0, padded zero rows also normalize to exactly [-1, +1]. Grippers pinned to [0, 1].
  • FRAME_STRIDE=4 — UR3 organize episodes run up to 100 s @ 15 fps; stride=4 caps latent frame count at 177 (fits H100 NVL). Each latent frame spans ~1.07 s of motion. action_per_frame = 16.

Assemble an eval-ready checkpoint

hf download robbyant/lingbot-va-base                            --local-dir lingbot-va-base
hf download EmbodyX/UR3-organize-lingbotva-fdm0lr1e4-2000step   --local-dir ur3_nofdm_dl

mkdir -p ur3_nofdm
ln -sf $(realpath ur3_nofdm_dl/transformer)      ur3_nofdm/transformer
ln -sf $(realpath lingbot-va-base/vae)           ur3_nofdm/vae
ln -sf $(realpath lingbot-va-base/text_encoder)  ur3_nofdm/text_encoder
ln -sf $(realpath lingbot-va-base/tokenizer)     ur3_nofdm/tokenizer

Serve with CONFIG_NAME=ur3_organize MODEL_PATH=ur3_nofdm. The matching va_ur3_organize_cfg.py in the lingbot-va repo must use the min/max + zero-inclusion norm_stat (NOT quantile).

Downloads last month
-
Video Preview
loading