Fast-VLA (FastVLA) calls its 4B vision-language model once per episode. The frozen VLM reads the instruction and the initial camera views, and its layer-wise key/value cache is kept as a fixed task memory. At every action chunk only a lightweight online actor runs: it reads the current views and robot state, queries the task memory, and predicts the next chunk of actions.
| Benchmark | Success rate (%) | Amortized inference | Online resident memory |
|---|---|---|---|
| RoboTwin 2.0 (Clean / Randomized) | 92.46 / 92.40 | 1.437 ms / step | 1.22 GiB |
| LIBERO / LIBERO-Plus | 95.95 / 79.11 | 3.975 ms / step | 0.86 GiB |
On RoboTwin 2.0 this is 10.9–17.1× less inference time per step than Faster-WAM (HUST), DM0.5 and Fast-WAM on the same hardware. Full comparisons are on the project page.
This repository contains:
- the Fast-VLA model, its training code and the first-frame cache ("bank") builder
- a policy server and evaluation clients for RoboTwin 2.0, LIBERO and LIBERO-Plus
- the two released checkpoints,
fastvla-robotwinandfastvla-libero
- 2026/10 — Paper on arXiv; code and checkpoints released.
conda create -n fastvla python=3.11 -y && conda activate fastvla
pip install torch==2.11.0 torchvision==0.26.0 --index-url https://download.pytorch.org/whl/cu128
git clone https://github.com/dexmal/opendm.git && cd opendm && git checkout e41e501 && pip install -e . && cd ..
pip install -r requirements.txtThe simulators (RoboTwin 2.0, LIBERO) run in their own environments and talk to the policy server over a local socket. See docs/INSTALL.md for details, including Ascend NPU support.
| Model | Trained on | Size |
|---|---|---|
fastvla-robotwin |
RoboTwin 2.0, 27,500 demos (50 clean + 500 randomized per task) | 272M |
fastvla-libero |
LIBERO Spatial / Object / Goal / Long, 2,000 demos | 185M |
hf download kehong/FastVLA-weights --local-dir checkpoints # or only one: --include "fastvla-libero/*"The frozen DM0.5 VLM is downloaded from the Hugging Face Hub on first use.
from fastvla.policy import FastVLAPolicy
policy = FastVLAPolicy("checkpoints/fastvla-robotwin") # online actor + frozen DM0.5
policy.reset() # start of an episode
views = [head_rgb, left_wrist_rgb, right_wrist_rgb] # uint8 H x W x 3 frames
state = joint_targets # 14 values, both arms
actions = policy.act(views, state, "Place the cans in the plastic box.") # (50, 14)The first act() of an episode builds the task memory; later calls only run the actor.
Start a policy server:
python scripts/serve.py --model checkpoints/fastvla-robotwin --port 8765RoboTwin 2.0 — copy the plug-in into RoboTwin and run the official harness (100 episodes per task):
cp -r benchmarks/robotwin/FastVLA <RoboTwin>/policy/
cd <RoboTwin>
FASTVLA_ROOT=/path/to/FastVLA bash policy/FastVLA/eval.sh beat_block_hammer demo_clean 8765 0LIBERO / LIBERO-Plus — serve checkpoints/fastvla-libero, then in the simulator environment:
python scripts/eval_libero.py --benchmark libero --port 8765 --out results/libero
python scripts/eval_libero.py --benchmark libero_plus --port 8765 --out results/plus --shard 0 --nshard 4Reported scores average the 50 tasks in assets/robotwin_tasks.txt (Clean and Randomized
separately), the four LIBERO suites, and the 10,030 LIBERO-Plus variants in
assets/libero_plus_manifest.json.
Index the demonstrations, precompute the frozen VLM's first-frame cache for every training episode, then train the actor. See docs/TRAINING.md.
tests/reference_actions.npz holds a few real observations and the actions the released models
produce for them:
python tests/test_reference.py --robotwin checkpoints/fastvla-robotwin --libero checkpoints/fastvla-libero@article{gong2026fastvla,
title = {Fast-VLA: You Only Think Once for Robot Manipulation},
author = {Gong, Kehong and Hou, Guanli and Zheng, Xiaoxu and Wang, Qi and Xu, Mingxi and
Zhai, Anbang and He, Xiaoyu and Zhang, Mingyuan and Mi, Michael Bi},
journal = {arXiv preprint arXiv:2610.21389},
year = {2026}
}Fast-VLA builds on DM0.5 and OpenDM, DINOv2, and the RoboTwin 2.0, LIBERO and LIBERO-Plus benchmarks. We thank their authors for releasing their code, models and data.
Code: Apache-2.0. DM0.5 (used frozen, downloaded from the Hugging Face Hub) is distributed under the Gemma license.
