AI/TLDR

TurboVLA

A 0.2B vision-language-action policy that drops the language model from the middle of the loop and runs at 32 Hz in under 1 GB of VRAM

Robot Policies & VLA ModelsOpen source
Updated
31 Jul 2026
Language
Python
License
Apache-2.0
Coverage
1 story
$git clone https://github.com/H-EmbodVis/TurboVLA.git

What's new

31 Jul 2026

Model checkpoints released on Hugging Face, a day after the paper and the training and evaluation code.

Latest news

Overview

TurboVLA is a vision-language-action policy for robot manipulation, released with training and evaluation code by a team from Huazhong University of Science and Technology and Huawei. Most VLA models route perception through a large language model — visual observations are projected into the LLM's representation space and then decoded into actions — which makes every policy invocation carry the LLM's compute and memory cost. TurboVLA replaces that V→L→A pathway with a direct V+L→A mapping: vision and language are encoded independently, exchange information through a lightweight bidirectional interaction module, and a compact decoder predicts continuous action chunks.

The reported result is 97.7% average success on LIBERO with 0.2B parameters, 31.2 ms inference latency and 0.9 GB of inference VRAM on a consumer RTX 4090 — matching or beating substantially larger policies. The repository is the official implementation: model checkpoints are on Hugging Face, and the code covers both benchmark stacks the paper uses, LIBERO and RoboTwin 2.0, each with its own training recipe and evaluation harness.

Running it means assembling the surrounding models yourself, and the README tabulates them: DINOv3 ViT-B (LIBERO) or ViT-L (RoboTwin) as the visual backbone, BERT base uncased for language — it is part of the model and runs online during both training and evaluation, so no text-feature cache is needed — and GroundingDINO Swin-T OGC for initialisation. LIBERO expects the four modified no-noops suites in TFDS/RLDS format, with no-op removal and mixed-suite statistics utilities provided; RoboTwin pulls a clean LeRobot dataset of 50 tasks. The project is Apache-2.0, with Huawei Ascend NPU support listed as a to-do.

What it does

  • Direct V+L→A architecture — no large language model sits between perception and action
  • 0.2B parameters, 31.2 ms inference latency and 0.9 GB inference VRAM on an RTX 4090
  • 97.7% average success reported on LIBERO, matching or outperforming substantially larger VLA policies
  • Continuous action chunks from a compact decoder: 12-step chunks with 7-D actions on LIBERO, a 50-step ACT head with 14-D joint positions on RoboTwin
  • Training and evaluation recipes for both LIBERO and RoboTwin 2.0, with released checkpoints on Hugging Face
  • Policy server and simulator can run in separate Python environments, so conflicting simulator stacks stay isolated
  • Dataset utilities for no-op removal and mixed-suite normalisation statistics

Getting started

LIBERO and RoboTwin need different simulator and data stacks, so the project recommends two separate Python 3.10 environments. Install a CUDA-compatible PyTorch build before the project dependencies.

Clone and create the LIBERO environment

Install LIBERO itself separately into the same environment.

bashbash
git clone https://github.com/H-EmbodVis/TurboVLA.git
cd TurboVLA
conda create -n turbovla-libero python=3.10 -y
conda activate turbovla-libero
pip install torch==2.3.1 torchvision==0.18.1 --index-url https://download.pytorch.org/whl/cu121
pip install -e ".[libero]"

Download the checkpoints

Weights and normalization metadata are external assets, published on Hugging Face rather than committed to the repository.

bashbash
pip install -U huggingface_hub
hf download H-EmbodVis/TurboVLA --local-dir pretrained/TurboVLA

Evaluate a checkpoint on one LIBERO suite

One command evaluates one checkpoint on one suite. Valid suite names are libero_spatial, libero_object, libero_goal and libero_10.

bashbash
python experiments/libero/evaluate.py \
  --ckpt_path pretrained/TurboVLA/checkpoints/libero/libero_object.pth \
  --dinov3_path /path/to/dinov3-vitb \
  --bert_path /path/to/bert-base-uncased \
  --stats_path experiments/libero/configs/libero_all4_stats.json \
  --stats_key libero_all4_no_noops \
  --task_suite_name libero_object \
  --num_trials_per_task 50 \
  --chunk_size 12 \
  --precision bf16 \
  --result_json_path outputs/evaluation/libero_object.json

Train with the paper recipe

The LIBERO recipe: DINOv3 ViT-B, two camera views, 7-D actions, a 12-step action chunk, 80k optimizer steps with 10k warmup, global batch size 128 across four GPUs.

bashbash
torchrun --nproc_per_node=4 experiments/libero/train.py \
  --dataset_dirs "data/libero/libero_10_no_noops/1.0.0,data/libero/libero_goal_no_noops/1.0.0,data/libero/libero_object_no_noops/1.0.0,data/libero/libero_spatial_no_noops/1.0.0" \
  --stats_path experiments/libero/configs/libero_all4_stats.json \
  --stats_key libero_all4_no_noops \
  --dinov3_path facebook/dinov3-vitb16-pretrain-lvd1689m \
  --bert_path google-bert/bert-base-uncased \
  --allow_hf_download \
  --pretrained_init_ckpt /path/to/groundingdino_swint_ogc.pth \
  --batch_size 8 \
  --checkpoint_dir outputs/libero

Commands and code are distilled from the project's own documentation — always check the official repo for the latest.

When to use it

  • Reach for it when a manipulation policy has to close its loop fast and an LLM-centric VLA is too slow
  • Reach for it when the target hardware is a single consumer GPU rather than a datacenter node
  • Reach for it as a baseline when comparing LLM-centric and LLM-free VLA architectures on LIBERO or RoboTwin
  • Reach for it when you want to fine-tune a small action policy on your own demonstrations without a multi-billion-parameter backbone

Version history

Every verified update to TurboVLA that AI/TLDR tracked, newest first — each links to our coverage and the official changeset.

  1. 2026-07-31

    Model checkpoints released on Hugging Face, a day after the paper and the training and evaluation code.

  2. 2026-07-30

    TurboVLA published its paper and code: a 0.2B-parameter vision-language-action model that swaps the usual V→L→A pipeline for a direct V+L→A path, reporting 97.7% on LIBERO at 32 Hz on an RTX 4090 with under 1 GB VRAM.