CoolFace
Modelpublic

Vizuara/dreamzero-so101-lora

sourceHugging Faceapache-2.0updated 6mo agoView on Hugging Face
11likes36downloads
Model Card

DreamZero-SO101 (LoRA, 70K steps)

A World Action Model (WAM) for the SO-101 robot arm, fine-tuned from DreamZero (Wan2.1-I2V-14B + joint action heads). Given a single camera observation and a natural-language task, it jointly predicts:

  • —24 future 6-DOF joint actions (shoulder_pan, shoulder_lift, elbow_flex, wrist_flex, wrist_roll, gripper)
  • —33 future video frames showing the predicted task execution

Both modalities are denoised in a single forward pass using flow matching, so the model is internally consistent — the predicted actions and the predicted video describe the same imagined rollout.

[image]

2× H100 80GB · 72K steps · ~127 hours · rank-4 LoRA · joint flow matching Final action loss: 0.0015 (166× drop) · Final dynamics loss: 0.0298 (6× drop)

Why a "World Action Model"?

Most robot policies output actions and treat the world as a black box. A World Action Model also predicts what the world will look like during the rollout. This has three useful properties:

  1. 1.Self-consistency — actions and predicted video share the same denoising trajectory, so the model has to imagine a coherent future
  2. 2.Interpretability — you can literally watch what the policy "thinks" will happen before sending actions to the robot
  3. 3.Sim-free evaluation — the predicted video gives you a free imagined rollout you can score offline

Quick Start

bash
pip install huggingface_hub safetensors torch

# Download base + LoRA
huggingface-cli download Wan-AI/Wan2.1-I2V-14B-480P --local-dir ./checkpoints/Wan2.1-I2V-14B-480P
huggingface-cli download Vizuara/dreamzero-so101-lora --local-dir ./checkpoints/dreamzero-so101-lora

# Clone DreamZero codebase + apply SO-101 patch
git clone https://github.com/dreamzero0/dreamzero.git
cd dreamzero && pip install -e .
git clone https://github.com/vizuara/dreamzero-so101.git
cd dreamzero && git apply ../dreamzero-so101/patches/so101_embodiment.patch

# Run inference
python ../dreamzero-so101/scripts/infer_demo.py \
  --model-path ./checkpoints/dreamzero-so101-lora \
  --base-model-path ./checkpoints/Wan2.1-I2V-14B-480P \
  --image ./sample_obs.jpg \
  --prompt "Pick up the red cube and place it in the bowl"

Model Details

Base modelWan-AI/Wan2.1-I2V-14B-480P
BackboneDiT, 40 layers, d=5120, 40 heads, 14B params
TokenizersUMT5-XXL (text) · CLIP ViT-H/14 (image) · WanVAE (video, 4×8×8)
Action headCausal Wan + flow-matching action transformer
Action formatRelative joint positions, 6-DOF (padded to 32)
State formatJoint positions, 6-DOF (padded to 64)
Video resolution320 × 176
Frames33 RGB → 9 latent (4× temporal compression)
Action horizon24 steps
Inference steps4 Euler steps (~600 ms on H100)
Trainable params~50 M (LoRA) + action heads

LoRA Configuration

Rank4
Alpha4
Targetsq, k, v, o, ffn.0, ffn.2
InitKaiming

Training Recipe

Hardware2× H100 80GB
OptimizerAdamW (DeepSpeed ZeRO-2)
Learning rate1e-4, cosine decay
Warmup5 %
Weight decay1e-5
Batch size1 per GPU (effective 2)
Precisionbfloat16 + tf32
Gradient checkpointingYes
Steps trained72,000 (loss converged; 100K planned but stopped early)
Wall-clock~127 hours
Dataset`whosricky/so101-megamix-v1` (400 episodes, 8 tasks, 3 cameras)
LossJoint flow-matching velocity (action + dynamics) with uncertainty weighting

Results

Final Loss

MetricInitialFinalReduction
Action loss0.2490.0015166×
Dynamics (video) loss0.1760.02986×

The dynamics loss converged around step 30K and remained flat. The action loss continued to slowly improve through 70K. Training was halted at step ~72K due to a pod migration; the loss curve indicates the model is well-converged and additional steps would have offered marginal returns.

Files

FileSizeDescription
model.safetensors207 MBLoRA weights + action heads (bf16)
config.json4 KBModel configuration (architecture, action head, LoRA settings)
loss_log.jsonl917 KBPer-step training loss (15,912 entries)
training_curve.png220 KBTraining loss visualization

Intended Use

  • —✅ Research & education — studying world models and joint video/action prediction for robotics
  • —✅ SO-101 manipulation policy bootstrap — fine-tune further on your own data
  • —✅ Offline rollout visualization — predict-before-execute to debug task setups
  • —⚠️ Real-robot deployment — possible but requires safety wrappers and additional fine-tuning on your specific embodiment / camera setup
  • —❌ Other arm types — trained only on SO-101; do not expect zero-shot transfer

Limitations

  • —Trained only on whosricky/so101-megamix-v1 (400 episodes, 8 tasks). Out-of-distribution objects/scenes will degrade quality.
  • —Joint trajectories are predicted, not torques — your low-level controller must accept position targets.
  • —Video predictions are 33-frame snippets (~1 sec at 30 FPS). Longer horizons require chunked rollout.
  • —LoRA only — for best quality, do a full fine-tune (see `dreamzero-so101` repo).
  • —Trained at 320×176 — higher resolutions need re-training.

Citation

bibtex
@misc{dreamzero-so101-2026,
  title  = {DreamZero-SO101: A World Action Model for the SO-101 Robot Arm},
  author = {Vizuara AI Labs},
  year   = {2026},
  howpublished = {\url{https://huggingface.co/Vizuara/dreamzero-so101-lora}},
  note   = {LoRA fine-tune of DreamZero on aggregated SO-101 LeRobot datasets}
}

Please also cite the underlying work:

  • —DreamZero — Liu et al., "Learning World Action Models from Video", GEAR Lab, 2025
  • —Wan2.1 — Wan-AI, "Wan2.1-I2V-14B", 2025
  • —SO-101 — TheRobotStudio, "SO-100/SO-101 Open-Source Robot Arm"
  • —LeRobot — HuggingFace, 2024

Acknowledgments

  • —DreamZero by GEAR Lab — Apache 2.0 codebase
  • —Wan2.1 — video generation backbone
  • —LeRobot — dataset format and community
  • —SO-101 dataset contributors on HuggingFace Hub

License

Apache 2.0 (same as DreamZero)