Drift-VLA: Direct One‑Step VLA Action Generation via Action‑Dimension Drifting

One-step actions that match iterative flow matching, for faster, more reactive robot policies.

Animated comparison showing flow matching taking multiple small solver steps while Drift-VLA samples in one step.
Same backbone, same data: only the objective changes. Flow matching spends 10 expert passes per action chunk; Drift uses one, and matches FM’s success on both SmolVLA and Pi0.5 across all four LIBERO suites.
Expert passes / chunk 1 FM: 10
SmolVLA · LIBERO avg 87.6 FM: 84.9
Pi0.5 · LIBERO avg 97.4 FM: 96.9
Faster decoding 3–4.4× vs 10-step FM
Real robot rollout
LeKiwi shopping with one-step Drift-VLA + KeyStone

Pick the requested item, carry it to the customer basket, and recover online with fast action chunks.

1 NFE KeyStone Action-dimension drift
See the full 3×3 comparison
Repeated real-world trial

Salt bottle: 10 rollouts per policy

Same initial scene
Drift-VLA + KeyStone
9/1090%
SmolVLA-FM (10 steps)
7/1070%
SmolVLA-FM (1 step)
3/1030%

TL;DR

Drift-VLA trains the action expert of a VLA policy with a one-step drifting objective instead of iterative flow matching. Same backbone, same data, no distillation: a single expert pass matches the multi-step sampler, verified in simulation and on a real robot across different VLA backbones, with faster, more reactive inference.

Backbone · method NFE Spatial Object Goal Long Avg4 suites Latencyms / chunk
SmolVLA-FM (10 steps) 10 94.1 83.9 87.5 74.0 84.9 222.6
Drift-VLA (ours) 1 94.4 92.5 89.2 74.3 87.6 50.6
Pi0.5-FM (10 steps) 10 98.5 99.1 96.7 93.3 96.9 259.8
Drift-Pi0.5 (ours) 1 97.9 99.0 98.1 94.7 97.4 85.6

LIBERO, 50 episodes/task, n=3 eval seeds; full-finetune @100k, each model at its native replan cadence. Drift’s Object win on SmolVLA (+8.6) and Goal/Long edge on Pi0.5 (+1.4 each) are the gaps; the near-saturated suites tie — at one-tenth the decode passes.

Why one-step matters

Closed-loop control means replanning: decode a fresh 50-action chunk from the latest observation, execute only its first steps, repeat. Every replan pays the full decode — 10 expert passes for flow matching, one for drifting — so decode latency bounds how tightly the policy can stay in the loop.

Stacked latency bars for FM and Drift on SmolVLA and Pi0.5: shared VLM prefix cost plus action-expert passes.

Where the decode time goes: both methods pay the VLM prefix once; the repeated action-expert calls are what drifting removes. What latency costs is blind execution — actions consumed from the old chunk while the new one decodes. At LIBERO’s 10 Hz control rate that is ~2 stale actions per replan for 10-step FM vs under one for Drift; at a real robot’s 30 Hz (LeKiwi-class collection rate) it grows to ~7 vs ~1.5.

Two Action Samplers

Same observation context, same action chunk. The difference is how the action expert is trained and sampled.

Flow matching

Learns a velocity field. Inference integrates it over multiple solver steps, so higher quality means repeated action-expert evaluations.

Drifting

Trains the generator directly. Inference is one forward pass of the action expert: no solver loop and no distillation.

Training signal

Animated flow-matching training view: noise samples are paired with demonstration actions and a velocity direction is learned.
Flow matching learns a direction field. Training pairs noise with demonstrations; inference follows the learned field over multiple solver steps.
Animated drifting training view: model samples are pulled toward demonstrations while being kept separated.
Drifting trains the generator directly. Samples move toward demonstrations while staying diverse, so the action expert can sample in one pass.

Method

Only the action expert objective changes. The backbone, observations, action chunks, and data stay fixed.

The winning loss is action-dimension drift: each real action dimension’s chunk trajectory is matched separately.

Training objective
From iterative transport to one-step drifting
same backbone + data
SmolVLA-FM
\[ x_t = t\epsilon + (1-t)a,\qquad \mathcal{L}_{\mathrm{FM}} = \lVert v_\theta(x_t,t) - (\epsilon-a) \rVert^2 \]

Learn a velocity field; sample by integrating multiple expert steps.

Drift-VLA
\[ \mathcal{L}_{\mathrm{drift}} = \left\lVert g/s - \operatorname{sg}\!\left(g/s+V\right) \right\rVert^2 \]

Train the generator directly; sample the full chunk in one expert pass.

\(V\) pulls generated samples toward demonstrations and separates sibling samples. Drift-VLA applies it per action dimension across the full chunk.
Animated Drift-VLA pipeline: observations are encoded once, the action expert samples, drifting updates the action expert, and the prefix remains shared.
End-to-end training pipeline. SmolVLA’s observation encoder and action interface stay intact; the action expert trains with action-dimension drifting.

Results

Grouped bar chart of success rates for FM and Drift on four LIBERO suites plus the average, for SmolVLA and Pi0.5.
The picture in one figure: Drift at 1 NFE matches or beats FM at 10 NFE on the four-suite average on both backbones — winning every SmolVLA suite and the harder Pi0.5 suites. Details below.

SmolVLA (450M)

Two training regimes, same verdict: one-step Drift ties ten-step FM on LIBERO-Spatial, and leads on the 4-suite average.

Expert-only (frozen VLM)

Drift (1 NFE)
90.8 ±2.2%
FM (10 NFE)
90.2 ±2.2%
Verdict
tie

Full finetune

Drift (1 NFE)
94.2 ±2.3%
FM (10 NFE)
94.3 ±0.8%
Verdict
tie, at 1/10th the passes

Full finetune + KeyStone

Success
96.8 ±1.3%
Sampling
8×1, one batched pass
Extra cost
≈ +1 expert pass

One-step Drift ties ten-step FM in both training regimes (LIBERO-Spatial, 3 seeds) while decoding 4.4× faster. KeyStone adds a small, within-noise lift for roughly one extra expert pass.

SmolVLA (450M) · all four suites NFE Spatial Object Goal Long Avg
FM (10 steps) 10 94.1 ±0.2 83.9 ±1.1 87.5 ±0.6 74.0 ±1.6 84.9 ±0.5
Drift-VLA 1 94.4 ±1.0 92.5 ±0.7 89.2 ±0.8 74.3 ±0.7 87.6 ±0.2
Drift-VLA + KeyStone 8×1 96.1 ±0.2 93.6 ±0.3 89.3 ±0.8 72.7 ±1.5 87.9 ±0.6

Best full-finetune arm per method; 50 episodes/task × 3 eval seeds, closed-loop replanning. Drift decodes at 50.6 vs 222.6 ms/chunk. The Object gap (+8.6) is seed-robust; KeyStone helps the short-horizon suites but not Long.

Same recipe on Pi0.5

The identical drifting objective, hyperparameters included, ports to Pi0.5 (3.3B) as a three-file patch — and the absolute numbers get stronger: 97.4 across all four suites at 1 NFE, ahead of 10-step FM (96.9), with the edge concentrated on the harder Goal and Long suites. Drift stays ahead at every training budget across the 25k–100k sweep (peak 97.7 at 75k) and reaches FM’s 100k quality by ~30k steps.

Pi0.5 (3.3B) · all four suites NFE Spatial Object Goal Long Avg
FM (10 steps) 10 98.5 ±0.3 99.1 ±0.6 96.7 ±0.5 93.3 ±0.7 96.9 ±0.1
Drift-Pi0.5 1 97.9 ±1.0 99.0 ±0.2 98.1 ±0.4 94.7 ±1.8 97.4 ±0.4
Drift-Pi0.5 + KeyStone 8×1 98.3 ±0.6 99.7 ±0.2 97.1 ±0.9 95.4 ±0.4 97.6

Full finetune @100k; 50 episodes/task × 3 eval seeds, Pi0.5-native cadence. Drift leads the four-suite average (97.4 vs 96.9) with its edge on the harder suites (Goal +1.4, Long +1.4); the near-saturated Spatial/Object tie. KeyStone (K=8, C=2) lifts the average to 97.6. Decode: 85.6 vs 259.8 ms/chunk.

In a separate matched-budget study (both arms @10k), the edge also grows as adaptation capacity shrinks — the less the backbone can adapt, the more the one-step objective matters:

Line chart on Pi0.5: Drift versus FM success across three training regimes; the gap grows from +2.2 at full finetune to +11.2 with a frozen backbone at 3k steps.

LIBERO-Spatial, n=3 eval seeds, same LIBERO-adapted VLM. FM needs full finetuning to approach Drift; expert-only FM falls behind fast.

Pi0.5, 4-suite average Full finetune Expert-only (frozen 3B VLM) Δ
Drift (1 NFE) 96.3 ±0.1 96.3 ±0.5 ±0.0
FM (10 NFE) 93.1 ±0.5 85.7 ±0.6 −7.4

One training seed per arm (evaluations are 3-seed); matched budgets, objective flags the only difference.

KeyStone: test-time selection

One-step sampling makes best-of-K nearly free: K chunks ride one batched expert pass off the shared prefix. KeyStone executes the consensus candidate.

97.64-suite avg
Drift + KeyStone on Pi0.5: best average across all four LIBERO suites, with zero added latency.
Animated KeyStone inference pipeline: Drift-VLA samples multiple one-step action chunks, finds a consensus candidate, and executes the selected action chunk.
KeyStone at inference time. Drift-VLA samples multiple one-step chunks, selects the consensus candidate, and executes it. No retraining or new data.
Inference selector
KeyStone consensus over one-step samples
8× Drift-VLA
\[ \hat a = \operatorname{medoid}\!\left( \operatorname{largest\ cluster} \left(\{ f_\theta(\epsilon_k) \}_{k=1}^{K}\right) \right) \]
KeyStone chooses the representative chunk from the dominant candidate cluster.

Real-World Shopping Rollouts

Representative LeKiwi rollouts across three shop items. Drift-VLA + KeyStone is shown beside the flow-matching baselines under the same task framing.

Matcha tin

Drift-VLA + KeyStone 1 NFE

SmolVLA-FM 10 NFE

SmolVLA-FM 1 NFE

Salt bottle

Drift-VLA + KeyStone 1 NFE

SmolVLA-FM 10 NFE

SmolVLA-FM 1 NFE

Chocolate bar

Drift-VLA + KeyStone 1 NFE

SmolVLA-FM 10 NFE

SmolVLA-FM 1 NFE

What makes Drift work

The two ablations that decide the recipe. First, the drift grouping — what owns a distance ruler in the drift kernel:

Drift grouping SR @20k (%) SR @30k (%)
Action-dimension drift
one matching unit per action dimension’s chunk trajectory
89.0 ±1.4 90.2 ±1.3
Chunk-level drift
joint matching over the complete action chunk
86.5 ±2.1 77.8 ±2.0
Timestep drift
per-timestep matching with 8 sibling samples
78.5 ° 79.0 °
FM baseline (10 steps, reference)
stock flow matching, same setup
89.5 ±2.6 90.2 ±2.2

SmolVLA expert-only, LIBERO-Spatial, 3 eval seeds (° single seed). Action dimensions carry heterogeneous units (position vs gripper); giving each its own distance scale is what closes the gap to FM — only action-dimension drift reaches it at 1 NFE.

Second, numerical precision: the drift field is built from pairwise distances, and bf16 autocast silently corrupts it. Computing the drift goal in fp32 (one guard, no speed cost) is worth up to +8.2 points:

Drift grouping bf16 goal (%) fp32 goal (%) Δ
Chunk-level drift @20k
78.3 86.5 +8.2
Action-dimension drift @30k
89.0 ° 90.2 +1.2

Identical code otherwise; 3 eval seeds (° single seed). The remaining ablations — sample count G, temperatures, 14 kernel variants (none beats the canonical kernel), KeyStone settings, replan cadence — are in the paper.

LIBERO Rollouts

Three LIBERO-Spatial cases: the best Drift-VLA setup succeeds, while the comparison variants fail on the same tasks.

Case A

Drift-VLA + KeyStone success

SmolVLA-FM (10 steps) failure

Timestep drift (4 samples) failure

Case B

Drift-VLA + KeyStone success

SmolVLA-FM (10 steps) failure

Timestep drift (4 samples) failure

Case C

Drift-VLA + KeyStone success

SmolVLA-FM (10 steps) failure

Timestep drift (4 samples) failure

Citation

@misc{zuo2026driftvla,
  title  = {Drift-VLA: Direct One-Step VLA Action Generation via Action-Dimension Drifting},
  author = {Zuo, Xingdong},
  year   = {2026},
  url    = {https://zuoxingdong.github.io/drift-vla/}
}