VnRobo
AboutPricingBlogContact
🇻🇳VISign InStart Free Trial
🇻🇳VI
VnRobo logo

AI infrastructure for next-generation industrial robots.

Product

  • Features
  • Pricing
  • Knowledge Base
  • Services

Company

  • About Us
  • Blog
  • Contact

Legal

  • Privacy Policy
  • Terms of Service

© 2026 VnRobo. All rights reserved.

Made with♥in Vietnam
VnRobo
AboutPricingBlogContact
🇻🇳VISign InStart Free Trial
🇻🇳VI
  1. Home
  2. Blog
  3. VLASH: Real-Time VLAs via Async Inference (11.8× Faster)
wholebody-vlavlareal-timeasynchronous-inferencepi0manipulationmit-han-labaction-quantizationrobotics

VLASH: Real-Time VLAs via Async Inference (11.8× Faster)

MIT Han Lab's VLASH makes VLAs real-time via future-state-aware asynchronous inference — 11.8× lower reaction latency, no architecture changes, open-source.

Nguyễn Anh TuấnAugust 20, 202612 min read
VLASH: Real-Time VLAs via Async Inference (11.8× Faster)

The Core Problem: Your Robot is Always Looking at the Past

Imagine playing ping-pong with 500ms of lag. You see the ball, but your arm responds half a second later. By then, the ball has long since bounced away.

This is exactly the problem plaguing Vision-Language-Action models (VLAs) in real-world robot deployment. A state-of-the-art model like π₀.₅ needs roughly 500–560ms to compute each action chunk. During that time, the robot either freezes (waiting for the result) or keeps executing stale actions — either way, it cannot react to events happening now.

VLASH (MIT Han Lab, arXiv 2512.01031) solves this with an elegantly simple idea: instead of predicting actions based on the robot's current state, estimate where the robot will be when the actions actually execute, and predict from that future state.

The result: up to 11.8× lower reaction latency on H100, robots that can play ping-pong against humans at 55% success rate (all baselines: 0%), whack-a-mole scores 9× higher than synchronous inference — all without changing a single layer of the VLA architecture.

Paper: VLASH — arXiv 2512.01031, MIT / Tsinghua / UC Berkeley / NVIDIA / Caltech / UCSD

Tool recommendations

VLA train/deploy stack

Train on cloud/workstation, then deploy optimized models to Jetson or the robot computer.

Cloud GPU for VLA / policy training Use for imitation learning, diffusion policies, RL, and robotics model fine-tuning. View cloud GPU → NVIDIA Jetson Orin NX / Orin Nano Edge deployment hardware for perception, logging, and optimized inference. View Jetson → Hugging Face / robotics dataset hosting Host datasets, checkpoints, and model cards for cleaner LeRobot/VLA workflows. View platform →

Background: Why Async Inference Is Hard

Before diving into VLASH, it helps to understand why naive solutions fail.

Synchronous inference (the standard approach):

t=0:     Capture frame → send to VLA model
t=0→t+Δ: Robot FREEZES, waiting for inference
t+Δ:     Receive action chunk → start executing

With Δ ≈ 500ms, the robot stalls for half a second every time it needs to "think." Interactive, dynamic tasks are simply impossible.

Naive asynchronous inference (the obvious fix):

t=0:     Capture frame → send to VLA model
t=0→t+Δ: Robot KEEPS MOVING (executes previous chunk)
t+Δ:     Model finishes — but computed actions for state s₁ (at t=0)
          Robot is now at state s₃ (at t+Δ)!

The robot keeps moving — good. But the model predicted actions for a robot at position A, while the robot is actually at position B. This temporal misalignment causes jerky, discontinuous motion and drops accuracy by up to 30.5% on dynamic benchmarks.

VLASH achieves the best of both worlds: robot keeps moving and the model predicts from the correct state.

Comparison of synchronous, naive async, and VLASH inference — source: MIT Han Lab / arXiv 2512.01031
Comparison of synchronous, naive async, and VLASH inference — source: MIT Han Lab / arXiv 2512.01031

How VLASH Works: Future-State Rollout

The core insight of VLASH is beautifully simple:

"I just commanded the robot to execute action chunk [a₁, a₂, a₃, ...]. So Δ seconds from now, I already know where the robot will be — I can compute it by accumulating those actions onto the current state."

Formally:

Known:    current state s₁ (at t=0)
Known:    action chunk being executed: [a₁, a₂] (issued at previous step)
Estimate: s₃ = s₁ + a₁ + a₂  ← where robot will be at t=Δ
Input to model: (observation_t=0, s₃)
Output: action chunk to execute starting at t=Δ → temporally aligned!

This future-state rollout eliminates the prediction-execution mismatch without adding any inference overhead. The robot state is just updated before being passed to the model — no inpainting, no architectural changes, no extra neural network layers.

For models with text-based state encodings like π₀.₅, VLASH updates the state tokens in the prompt. An optional lightweight projection layer can improve smoothness further, but it's entirely optional.

Temporal-Offset Fine-Tuning

Inference-time state rollout alone isn't enough — the model needs to be trained to understand future states. Without training, feeding s₃ to a model that learned to expect s₁ will confuse it.

VLASH adds temporal-offset fine-tuning: during training, instead of only using pairs (observation_t, state_t) → action_t, it augments with:

(observation_t, state_{t+δ}) → action_{t+δ}

where δ is a random offset sampled from {0, 1, ..., Δ_max}.

This teaches the model: "when given a future state, predict the corresponding future actions." No new data required — VLASH generates these pairs automatically from existing robot trajectories.

Shared Observation Training: 3.26× Faster Fine-Tuning

A naïve implementation would run a separate forward pass for each offset δ, multiplying training cost by Δ_max. VLASH uses block-sparse attention masking to pack all offsets into a single forward pass:

One sequence = [shared_observation | branch_δ=0 | branch_δ=1 | ... | branch_δ=max]

All branches attend to one shared observation (no re-encoding), but cannot cross-attend to each other (each branch independently predicts its own actions).

Result: 3.26× training speedup per step with no accuracy penalty.

Block-sparse attention for shared observation fine-tuning — source: MIT Han Lab / arXiv 2512.01031
Block-sparse attention for shared observation fine-tuning — source: MIT Han Lab / arXiv 2512.01031

Action Quantization: An Extra 1.5–2× Physical Speedup

Beyond solving temporal misalignment, VLASH adds a separate action quantization mechanism to make the robot move faster.

The idea: instead of executing 24 fine-grained actions (e.g., 1mm each), group q consecutive actions into one coarser macro-action (q × 1mm in the same slot):

Fine-grained: [a₀, a₁, a₂, a₃, a₄, a₅]  — 6 slow steps
Macro (q=2):  [â₀, â₁, â₂]               — 3 faster steps (same total motion)

The robot physically executes the same trajectory but in roughly half the time. Combined with VLASH's asynchronous inference, you get both lower latency and higher throughput.

Real-robot experiments show q=2 achieves 2× task completion speedup with only ~2% accuracy drop on pick & place. For precision tasks like stacking, q=1.5 is a better trade-off.

Installation

Requirements: Python 3.10, CUDA GPU (RTX 4090+ recommended; RTX 5090 for >30Hz with π₀.₅).

# Create conda environment
conda create -n "vlash" python=3.10
conda activate vlash

# Install ffmpeg (required for video processing)
conda install ffmpeg=7.1.1 -c conda-forge

# Clone and install VLASH
git clone https://github.com/mit-han-lab/vlash.git
cd vlash
pip install -e .

# Install PyTorch stack
pip install -U torch torchvision torchcodec

Note: Use conda-forge for ffmpeg — the version from apt-get will cause torchcodec compatibility issues.

VLASH natively supports LeRobot datasets v2.1 and v3.0, so if you already have a LeRobot-format dataset, you can start fine-tuning immediately.

Supported VLA Models

VLASH has been tested with:

  • π₀.₅ (Physical Intelligence) — primary model in all benchmarks
  • π₀ — works with optional state projection layer
  • GR00T N1.6 (NVIDIA) — tested on Galaxea R1 Lite
  • SmolVLA-450M (HuggingFace) — lightweight option for smaller GPUs

No architecture changes needed — VLASH wraps any VLA at the training and inference level.

Training

Fine-tuning uses LoRA, so GPU memory requirements are manageable. The training config specifies the model, max offset, and dataset:

# examples/train/pi05/async.yaml
model:
  name: pi05
  checkpoint: lerobot/pi05   # or a local fine-tuned checkpoint

training:
  max_offset: 4              # Δ_max — max inference delay in control steps
  shared_obs: true           # 3.26× training speedup
  batch_size: 16
  num_steps: 30000

dataset:
  path: /path/to/lerobot_dataset

Run fine-tuning:

vlash train examples/train/pi05/async.yaml

The key parameter to set correctly is max_offset. Measure the actual inference delay your hardware introduces in control steps (at your control frequency), then set max_offset ≥ that value. If max_offset is too small, the model won't be trained for delays it will encounter in deployment.

Inference

Standard async inference (no action quantization):

vlash run examples/inference/async.yaml

With 2× action quantization:

vlash run examples/inference/async.yaml --action_quant_ratio=2

Inference config:

# examples/inference/async.yaml
model:
  checkpoint: /path/to/vlash_finetuned_checkpoint

inference:
  async_mode: true
  action_quant_ratio: 1.0    # 1.0 = no quantization, 2.0 = 2× speedup

robot:
  type: so101                 # or galaxea_r1, unitree_g1, etc.
  control_freq: 30            # Hz

On an RTX 5090, π₀.₅ with VLASH runs at >30Hz — sufficient for fluid, real-time manipulation control.

Benchmark Results

Reaction Latency — The Headline Numbers

The core claim: VLASH reduces maximum reaction latency by 11.8× on H100.

GPU Inference Latency Sync Reaction VLASH Reaction Speedup
H100 23.2ms 546.4ms 46.4ms 11.8×
RTX 5090 29.4ms 558.8ms 58.8ms 9.5×
RTX 4090 32.3ms 564.6ms 64.6ms 8.7×

Why the synchronous number is so high: synchronous reaction latency = chunk_execution_time + inference_time. With a K=24 step chunk at 30Hz, that's 800ms + 23ms ≈ 823ms. VLASH eliminates the execution wait — reaction latency drops to just 2× inference_time.

LIBERO Simulation Benchmarks

Model Inference Delay Avg. Success Rate
π₀.₅ Synchronous 0 steps 96.8%
π₀.₅ + VLASH 1 step 97.2%
π₀.₅ + VLASH 2 steps 97.1%
π₀.₅ + VLASH 3 steps 94.6%
SmolVLA Synchronous 0 steps 79.0%
SmolVLA + VLASH 3 steps 79.1%

VLASH at 1-step delay exceeds synchronous performance on π₀.₅ — the model makes slightly better predictions when it knows the execution-time state.

Kinetix (12 Dynamic Tasks)

At 4-step inference delay (a challenging realistic scenario):

  • VLASH: 81.7% average success rate
  • Naive async: 51.2%
  • Improvement: +30.5 percentage points

Dynamic Interactive Tasks (Real Robot, Galaxea R1 Lite)

This is where VLASH's advantage becomes undeniable. Tasks that require sub-100ms reactions:

Method Ping-Pong Hit Rate Whack-a-Mole Score
Synchronous 0% (0/20) 3.2
Naive Async 0% (0/20) 8.6
RTC 0% (0/20) 11.0
VLASH 55% (11/20) 28.8

VLASH is the first VLA framework to successfully play ping-pong rallies against a human operator.

VLASH demo: real-time ping-pong and whack-a-mole with π₀.₅ on Galaxea R1 Lite — source: MIT Han Lab

Real-Robot Manipulation (LeRobot SO-101)

With action quantization (q=2):

Task Sync q=1 VLASH q=2 Speedup Accuracy Change
Pick & Place 85% 83% 2.0× −2%
Stacking 78% 75% (q=1.5) 1.5× −3%
Sorting 71% 69% 1.8× −2%

A 2× throughput increase for 2% accuracy trade-off is an excellent deal in most industrial deployment scenarios.

Comparison with Other Methods

Method Reaction Latency Accuracy Overhead Architecture Change
Synchronous D + 2L (slow) Baseline None None
Naive Async 2L (fast) −30.5% None None
RTC Slightly > 2L Better High (inpainting) None
A2C2 2L Good Medium Required
VLASH 2L Best None None

RTC (Real-Time Chunking) — used in Pi0-FAST on Unitree G1 — applies inpainting at inference time to correct for stale states. This adds computation, slightly widening the latency gap. Read our Pi0-FAST deployment guide here.

A2C2 requires adding correction heads to the VLA architecture, preventing drop-in usage with existing checkpoints. VLASH works with any checkpoint out of the box.

Integration with Existing Workflows

If you're already using LeRobot for data collection and training, VLASH slots in cleanly:

1. Collect demos via LeRobot teleoperation    (unchanged)
2. Push dataset to HuggingFace Hub            (unchanged)
3. Fine-tune with: vlash train async.yaml     (NEW — adds VLASH fine-tuning)
4. Deploy with:    vlash run async.yaml       (REPLACES lerobot inference)

No hardware changes, no new data collection, no dataset re-formatting. VLASH operates entirely at the training augmentation and inference scheduling layer.

For details on how VLA models have evolved from RT-2 to π₀, or for background on reactive action chunking approaches like DREAM-Chunk, see the related posts below.

Pitfalls to Watch

1. Set max_offset too small: If your hardware delay (in control steps) exceeds max_offset, the model was never trained for that delay range — accuracy drops. Measure your actual inference delay first.

2. State rollout diverges during contact: When the robot is grasping an object, the forward-simulated state may drift from reality (contact forces aren't modeled). The paper acknowledges this as an open problem. For precision grasping phases, consider reducing action_quant_ratio to 1.0.

3. ffmpeg version matters: VLASH requires ffmpeg 7.1.1 specifically, via conda-forge. The system package (apt-get) ships an incompatible version that silently breaks torchcodec.

4. Shared observation requires compatible model architecture: The block-sparse attention optimization requires the VLA to accept observation and state as separate input sequences. If your model uses fused token sequences, you may need to fall back to sequential offset encoding (still correct, just 3× slower to train).

When to Use VLASH

VLASH is the right choice when:

  • Your task requires <100ms reaction time (dynamic objects, human-robot interaction)
  • You have existing π₀.₅, GR00T, or SmolVLA checkpoints and want real-time deployment without retraining from scratch
  • Your GPU can't reach 30Hz with synchronous inference — VLASH gives you async speed with synchronous accuracy
  • You want to maximize robot throughput on assembly or sorting tasks (action quantization)

Think carefully when:

  • The task is fully static (placing objects, no moving targets) — latency gains are smaller
  • Robot state cannot be reliably estimated from action accumulation (highly compliant robots, underactuated systems) — the future-state estimate may drift
  • You need QLoRA support for <8GB VRAM GPUs — this is noted as pending in the repo

Conclusion

VLASH represents one of the most practically impactful advances in VLA deployment of 2025. It doesn't introduce a new architecture or require millions of extra demonstrations. Instead, it fixes a fundamental mismatch that was always there: VLAs are trained to predict from the present, but actions execute in the future.

By bridging that gap with future-state rollout and temporal-offset fine-tuning, VLASH transforms π₀.₅ from a model that needs half-second buffers into a real-time controller running at 30Hz+. The ability to play ping-pong at 55% success rate — a task where every other VLA baseline scores 0% — makes this point viscerally concrete.

Apache 2.0 license, LeRobot-compatible, no architecture changes required. If you're deploying a VLA on a real robot in 2026, VLASH should be your default inference strategy.

Resources:

  • GitHub: mit-han-lab/vlash
  • Paper: arXiv 2512.01031
  • Project page: z-lab.ai/projects/vlash

Related Posts

  • VLA Models: From RT-2 to Octo to OpenVLA to π₀ — the full evolution story
  • LeRobot v0.5: Pi0-FAST + G1 Whole-Body Control — deploy VLA real-time on humanoid
  • DREAM-Chunk: Reactive Action Chunking via Latent World Model for VLA Robots
NT

Nguyễn Anh Tuấn

Robotics & AI Engineer. Building VnRobo — sharing knowledge about robot learning, VLA models, and automation.

Khám phá VnRobo

Fleet MonitoringROS 2 IntegrationAMR Solutions

Related Posts

Tutorial
TurboVLA: VLA Manipulation 32 Hz, 0.9 GB VRAM, Không Cần LLM
vlamanipulationreal-time
wholebody-vla

TurboVLA: VLA Manipulation 32 Hz, 0.9 GB VRAM, Không Cần LLM

TurboVLA đạt 97.7% LIBERO với 0.2B parameters, 31.2 ms latency và 0.9 GB VRAM trên RTX 4090 — không cần LLM. Hướng dẫn cài đặt, training và inference đầy đủ.

8/3/202612 min read
NT
Tutorial
FM-VLA: Force Memory Token cho VLA Contact-Rich Manipulation
vlaforce-sensingmanipulation
wholebody-vla

FM-VLA: Force Memory Token cho VLA Contact-Rich Manipulation

FM-VLA dùng VAE nén lịch sử lực thành Force Memory Tokens, giúp VLA vượt giới hạn Markovian — đếm contact, nhớ tiến trình, đạt 83.3% trên robot AgiBot G1.

7/31/202614 min read
NT
Research
RL²-VLA: Offline RL Latent Steering Tăng +26% Success Rate VLA Tại Test Time
vlaoffline-rlflow-matching
wholebody-vla

RL²-VLA: Offline RL Latent Steering Tăng +26% Success Rate VLA Tại Test Time

Hướng dẫn chi tiết dùng RL²-VLA để steer VLA manipulation policy bằng offline RL trong không gian latent, không cần retrain model gốc, đạt +26% real-robot success rate.

7/31/202612 min read
NT
VnRobo logo

AI infrastructure for next-generation industrial robots.

Product

  • Features
  • Pricing
  • Knowledge Base
  • Services

Company

  • About Us
  • Blog
  • Contact

Legal

  • Privacy Policy
  • Terms of Service

© 2026 VnRobo. All rights reserved.

Made with♥in Vietnam