DriftOPD: Sequence-Level Reverse-KL Distillation for One-Step VLA Policies
Organizations: KAIST, Republic of Korea · Sungkyunkwan University, Republic of Korea
Abstract
Vision-Language-Action (VLA) models increasingly rely on action experts that generate short action chunks under receding-horizon control. While chunk-level training is convenient across robot embodiments, it optimizes local action likelihood without explicitly accounting for long-horizon task success. Sequence-level reinforcement learning can address this limitation, but typically requires policy rollouts and closed-loop interaction, which are costly for real-robot manipulation. We introduce DriftOPD, a teacher-free, rollout-free framework for sequence-level on-policy distillation of continuous VLA action experts. We show that the sequence-level reverse Kullback-Leibler (KL) divergence decomposes into a chunk-level reverse-KL term and a future-potential term that captures the long-horizon effect of the current action. DriftOPD optimizes these two terms using a one-step drifting objective and a Q-function critic learned from offline demonstrations, respectively, enabling sequence-level optimization with only offline data and one-step action generation. Across multiple VLA architectures in simulation and real-world manipulation, DriftOPD generally outperforms existing one-step distillation baselines while achieving task success performance comparable to multi-step teacher policies. These results demonstrate that long-horizon behavior can be effectively distilled into one-step VLA action experts without online interaction or a separate teacher.
Figures & tables
| Model | Action prediction | Fine-tuning strategy | Teacher steps | Suite | Teacher | 1-step | ||||
| Teacher | sCD | MFD | Drift | DriftOPD | ||||||
| Flow matching | Full FT | 10 | atomic_seen (18) | 39.6 | 31.30 | 28.33 | 34.44 | 32.22 | 38.33 | |
| composite_seen (16) | 7.1 | 0.83 | 1.04 | 2.50 | 5.00 | 5.42 | ||||
| composite_unseen (16) | 1.2 | 0.83 | 0.83 | 0.83 | 1.04 | 1.67 | ||||
| Flow matching | LoRA ( ) | 10 | atomic_seen (18) | 39.6 | 31.30 | 29.26 | 28.33 | 34.07 | 39.26 | |
| composite_seen (16) | 7.1 | 0.83 | 1.67 | 2.71 | 3.12 | 5.00 | ||||
| Model | Action objective | Fine-tuning strategy | Teacher steps | Suite | Teacher | 1-step | ||||
| Teacher | sCD | MFD | Drift | DriftOPD | ||||||
| -LoRA | Flow matching | LoRA ( ) | 10 | short (18) | 60.74 | 61.30 | 64.81 | 54.44 | 66.30 | 67.78 |
| medium (21) | 67.30 | 56.35 | 61.11 | 48.25 | 61.90 | 64.13 | ||||
| long (11) | 55.15 | 40.61 | 36.97 | 16.36 | 48.48 | 46.67 | ||||
| ABot-M0 | Direct clean action | Joint FT (VLM + action expert) | 10 | short (18) | 70.19 | 70.37 | 67.41 | 2.41 | 69.07 | 64.63 |
| medium (21) | 73.97 | 67.78 | 66.83 | 4.13 | 65.71 | 68.10 | ||||
Appendix figures & tables29 assets
Supplementary material from the paper’s appendix.
Appendix
| Model | Benchmark | Action objective | Distillation trainable parameters | Action dim. | Chunk length | Teacher steps | One-step parameterization |
| RoboCasa365 | Flow matching | Action expert 693.4M | 32 | 50 | 10 | ||
| -LoRA | RoboCasa365 | Flow matching | LoRA + input/output proj. + timestep MLP, 9.1M | 32 | 50 | 10 | |
| LIBERO | 10 | ||||||
| RoboTwin 2.0 | 50 | ||||||
| GR00T N1.5 | RoboCasa365 | Flow matching | Action-generation head 1,068.8M | 32 | 16 | 4 | |
| GR00T N1.6 | RoboCasa365 | Flow matching | Action-generation head 1,418.6M | 128 | 50 | 4 |
| Model | Benchmark / setting | Starting checkpoint |
| RoboCasa365 | robocasa/robocasa365_checkpoints | |
| LIBERO | gs://openpi-assets/checkpoints/pi05_libero/ | |
| RoboTwin 2.0 | gs://openpi-assets/checkpoints/pi05_base/params (fine-tuned by us for 75k steps with batch size 64 on TianxingChen/RoboTwin2.0 , 50 tasks) | |
| GR00T N1.5 | RoboCasa365 | robocasa/robocasa365_checkpoints |
| GR00T N1.6 | RoboCasa365 | Abhi03/grootn16_robocasa365_multitask_learning |
| Real world | nvidia/GR00T-N1.6-3B |
| Hyperparameter | Setting |
| Training steps | 10,000 |
| Optimizer | AdamW, , |
| Learning rate | |
| LR schedule | Linear decay; no learning-rate warmup |
| Weight decay | |
| Gradient clipping |
| Hyperparameter | Setting |
| Kernel | Laplacian, |
| Bandwidths | |
| Current-policy samples | 64 by default (8 gradient-carrying + 56 detached) 32 (8 gradient-carrying + 24 detached) on RoboCasa365 for |
| Positive sample | One aligned demonstration action, separate from the policy samples |
| Default KDE pool | 64 policy samples + 1 demonstration sample |
| Input perturbation | Laplace noise with scale on generated policy samples |
| Benchmark | Model | (# tasks) | Batch size | Gradient-carrying samples / step |
| RoboCasa365 | (full fine-tuning) | 4 | 8 | 32 |
| (LoRA ) | 4 | 8 | 32 | |
| GR00T N1.5 | 16 | 8 | 128 | |
| GR00T N1.6 | 16 | 8 | 128 | |
| RoboTwin 2.0 | (LoRA ) | 4 | 8 | 32 |
| ABot-M0 | 64 | 8 | 512 |
| Component | Setting |
| Input | Frozen VLA prefix tokens + state token + action-chunk tokens + learned value token |
| Encoder | 2-layer pre-norm bidirectional Transformer encoder |
| Hidden dimension | 512 |
| Attention heads | 8 |
| FFN dimension | 2048 |
| Dropout |
| Method | Implementation |
| One-step Teacher | Direct one-step generation from the corresponding teacher checkpoint without additional distillation. For ABot-M0, the baseline uses its dedicated one-step generator. |
| sCD | , , , tangent normalization , JVP tangent estimation with central finite-difference fallback , and adaptive-weighting learning rate . |
| MFD | Maximum step size , solver-step cap 32, minimum interval . TTUR ratio with logit-normal time sampling on LIBERO and RoboTwin 2.0; with uniform time sampling on RoboCasa365. |
| Drift | Identical kernel, bandwidth, perturbation, normalization, sampling and student-optimization settings as DriftOPD, with the critic term disabled. |
| DriftOPD | Drift objective combined with the frozen demonstration-trained critic using the settings in Tables 7 and 9 . |
| Benchmark | Task set | # Tasks | Episodes per task | Initialization | Actions before replanning | Termination |
| RoboCasa365 | pretrain split | 50 | 30 | : seed 7 | : 5 | Success or task horizon |
| (leaderboard) | GR00T: no explicit seed | GR00T N1.5: 16 | ||||
| GR00T N1.6: 8 | ||||||
| RoboTwin 2.0 | 50 tasks | 50 | 30 | Accepted-seed | 25 | Success or |
| demo_clean | manifest | task-specific limit | ||||
| LIBERO | 4 suites | 40 | 50 | Seed 7 | : 5 | Success or |
| Item | Setting |
| Robot | I2RT YAM leader–follower system |
| Demonstrations | Unimanual (right arm): 424 episodes, 269,089 frames, 8 tasks Bimanual: 214 episodes, 97,284 frames, 4 tasks |
| Teleoperation rate | |
| Camera rate | |
| Policy cameras | Top, right, and left Intel RealSense, RGB only |
| Raw resolution |
| Object | Size | Role |
| Small basket (white, shallow) | Target container | |
| Plate (white, round) | diameter | Target container |
| Pot (stainless steel) | diameter , height | Target container |
| Plush tennis ball | diameter | Grasped object |
| Plush soccer ball | diameter | Grasped object |
| Plush basketball | diameter | Grasped object |
| Item | Setting |
| Tasks | Unimanual: four pick-and-place tasks Bimanual: two pick-and-handover-and-place tasks |
| Evaluation settings | 15 fixed scenes per task |
| Pairing | Teacher session captures the scenes; all methods replay the same scenes in the same order |
| Control frequency | |
| Inference interval | , i.e. about 9 commanded control steps between replans |
| Inference mode | Asynchronous rate-limited inference |
| Workload | Hardware | Usage |
| Student distillation | NVIDIA B200, 180 GB | 1 GPU per run |
| Critic training | NVIDIA B200, 180 GB | 1 GPU per run |
| Real-world teacher fine-tuning | NVIDIA B200, 180 GB | 1 GPU per run |
| Simulation evaluation | RoboTwin 2.0 & LIBERO-Plus: NVIDIA A100-SXM4-40GB RoboCasa365 & LIBERO: NVIDIA B200 | 1 evaluation lane per GPU |
| Real-world inference | NVIDIA GeForce RTX 4090, 24 GB | Local robot workstation |
| Component | RoboTwin 2.0 | RoboCasa365 | LIBERO / LIBERO-Plus |
| Benchmark code | RoboTwin, upstream commit c3ddfa8b (23 May 2026); camera images rendered with the rasterization shader instead of the upstream 32-spp ray-tracing path | RoboCasa 1.0.1 (vendored) | LIBERO (vendored) |
| Simulator | SAPIEN 3.0.0b1 | MuJoCo 3.3.1 | MuJoCo 2.3.7 ( , ABot-M0); 3.8.1 (SmolVLA) |
| Physics timestep | Benchmark default | Benchmark default | |
| robosuite | — | 1.5.2 | 1.4.0 |
| Motion planning | mplib 0.2.1, nvidia-curobo 0.7.8, warp-lang 1.15.0 | — | — |
| Python | 3.10.20 | 3.11.15 | 3.11.15 |
| Model | Teacher steps | Task | Teacher | 1-step | ||||
| Teacher | sCD | MFD | Drift | DriftOPD | ||||
| atomic_seen (18 tasks) | ||||||||
| 10 | CloseBlenderLid | – | 6.67 | 0.00 | 3.33 | 3.33 | 3.33 | |
| CloseFridge | – | 23.33 | 46.67 | 46.67 | 30.00 | 56.67 | ||
| CloseToasterOvenDoor | – | 0.00 | 0.00 | 6.67 | 3.33 | 0.00 | ||
| CoffeeSetupMug | – | 13.33 | 3.33 | 10.00 | 13.33 | 6.67 | ||
| Model | Teacher steps | Task | Teacher | 1-step | ||||
| Teacher | sCD | MFD | Drift | DriftOPD | ||||
| atomic_seen (18 tasks) | ||||||||
| (LoRA ) | 10 | CloseBlenderLid | – | 6.67 | 0.00 | 0.00 | 3.33 | 3.33 |
| CloseFridge | – | 23.33 | 10.00 | 43.33 | 20.00 | 43.33 | ||
| CloseToasterOvenDoor | – | 0.00 | 0.00 | 3.33 | 0.00 | 6.67 | ||
| CoffeeSetupMug | – | 13.33 | 10.00 | 10.00 | 16.67 | 10.00 | ||
| Model | Teacher steps | Task | Teacher | 1-step | ||||
| Teacher | sCD | MFD | Drift | DriftOPD | ||||
| atomic_seen (18 tasks) | ||||||||
| GR00T N1.5 | 4 | CloseBlenderLid | – | 6.67 | 3.33 | 10.00 | 16.67 | 26.67 |
| CloseFridge | – | 73.33 | 60.00 | 90.00 | 56.67 | 70.00 | ||
| CloseToasterOvenDoor | – | 43.33 | 33.33 | 53.33 | 23.33 | 26.67 | ||
| CoffeeSetupMug | – | 16.67 | 16.67 | 3.33 | 33.33 | 16.67 | ||
| Model | Teacher steps | Task | Teacher | 1-step | ||||
| Teacher | sCD | MFD | Drift | DriftOPD | ||||
| atomic_seen (18 tasks) | ||||||||
| GR00T N1.6 | 4 | CloseBlenderLid | – | 3.33 | 6.67 | 0.00 | 10.00 | 13.33 |
| CloseFridge | – | 66.67 | 80.00 | 63.33 | 90.00 | 76.67 | ||
| CloseToasterOvenDoor | – | 56.67 | 60.00 | 30.00 | 66.67 | 50.00 | ||
| CoffeeSetupMug | – | 36.67 | 36.67 | 3.33 | 20.00 | 26.67 | ||
| Model | Teacher steps | Task | Teacher | 1-step | ||||
| Teacher | sCD | MFD | Drift | DriftOPD | ||||
| short (18 tasks, 77–147 demo steps) | ||||||||
| -LoRA | 10 | click_bell | 30.00 | 80.00 | 90.00 | 100.00 | 86.67 | 86.67 |
| click_alarmclock | 50.00 | 80.00 | 73.33 | 100.00 | 83.33 | 86.67 | ||
| grab_roller | 100.00 | 100.00 | 100.00 | 100.00 | 100.00 | 100.00 | ||
| turn_switch | 40.00 | 50.00 | 56.67 | 66.67 | 43.33 | 50.00 | ||
| Model | Teacher steps | Task | Teacher | 1-step | ||||
| Teacher | sCD | MFD | Drift | DriftOPD | ||||
| short (18 tasks, 77–147 demo steps) | ||||||||
| ABot-M0 | 10 | click_bell | 96.67 | 100.00 | 90.00 | 0.00 | 80.00 | 93.33 |
| click_alarmclock | 100.00 | 100.00 | 96.67 | 3.33 | 93.33 | 90.00 | ||
| grab_roller | 100.00 | 93.33 | 83.33 | 0.00 | 93.33 | 90.00 | ||
| turn_switch | 80.00 | 63.33 | 70.00 | 23.33 | 73.33 | 53.33 | ||
| Model | Teacher steps | Suite | Teacher | 1-step | ||||
| Teacher | sCD | MFD | Drift | DriftOPD | ||||
| -LoRA | 10 | libero_spatial (10) | 98.8% | 99.2% | 98.6% | 99.2% | 98.2% | 98.4% |
| libero_object (10) | 98.2% | 98.4% | 97.2% | 97.2% | 98.4% | 97.4% | ||
| libero_goal (10) | 98.0% | 98.2% | 97.4% | 98.2% | 98.0% | 97.0% | ||
| libero_10 (10) | 92.4% | 93.0% | 89.2% | 87.8% | 91.8% | 91.8% | ||
| Average (40) | 96.85% | 97.20% | 95.60% | 95.60% | 96.60% | 96.15% | ||
| Model | Teacher steps | Suite | Teacher | 1-step | ||||
| Teacher | sCD | MFD | Drift | DriftOPD | ||||
| -LoRA | 10 | Sensor Noise (1,601) | 86.70% | 84.51% | 85.38% | 86.20% | 85.51% | 86.38% |
| Camera Viewpoints (1,599) | 71.36% | 71.79% | 70.61% | 72.61% | 70.86% | 71.23% | ||
| Robot Initial States (1,550) | 75.16% | 71.74% | 73.16% | 72.97% | 74.39% | 74.58% | ||
| Language Instructions (1,537) | 84.65% | 86.21% | 84.65% | 85.75% | 85.88% | 85.49% | ||
| Objects Layout (1,525) | 85.90% | 85.77% | 86.69% | 86.23% | 86.75% | 86.56% | ||
| Task | Success Rate (%) | Oscillation ( ∘ ) | ||||||||||
| 4-step | 1-step | 4-step | 1-step | |||||||||
| Teacher | Teacher | sCD | MFD | Drift | DriftOPD | Teacher | Teacher | sCD | MFD | Drift | DriftOPD | |
| unimanual (right arm) | ||||||||||||
| Easy | 93.3 | 40.0 | 0.0 (60.0) | 0.0 (0.0) | 86.7 | 93.3 | 1.70 | 1.77 | 4.64 | 7.55 | 1.97 | 2.01 |
| Moderate | 73.3 | 46.7 | 6.7 (20.0) | 0.0 (0.0) | 60.0 | 60.0 | 1.61 | 1.90 | 4.81 | 7.77 | 1.83 | 1.89 |
| Hard | 66.7 | 13.3 | 0.0 (0.0) | 0.0 (0.0) | 60.0 | 66.7 | 1.65 | 1.79 | 4.87 | 7.69 | 1.70 | 1.89 |
Vision-Language-Action Models
Vision-language-action models turn visual observations and natural-language instructions into actions for robots and other embodied agents.
See all 1,194 papers