Hầu hết mọi người nghĩ VLA (Vision-Language-Action) model tốt là phải to: OpenVLA 7.5B, Pi0.5 3.4B, SmolVLA 2.3B. Nhưng cuối tháng 7 năm 2026, nhóm H-EmbodVis tung ra TurboVLA và lật ngược mọi giả định đó.
TurboVLA chỉ có 0.2B parameters, chạy ở 32 Hz, dùng 0.9 GB VRAM trên RTX 4090 — và đạt 97.7% thành công trên LIBERO benchmark, vượt cả Pi0.5 (96.9%) và OpenVLA (76.5%).
Không có GPT. Không có LLaMA. Không có Qwen. Chỉ DINOv3 + BERT + một cơ chế tương tác thông minh được thiết kế từ đầu. Paper được công bố tại arXiv:2607.27205 vào ngày 29/7/2026. Đây là hướng dẫn đầy đủ để hiểu, cài đặt và chạy TurboVLA trên máy của bạn.
Vấn đề: VLA kiểu cũ quá nặng để deploy thực tế
Nếu bạn đã đọc về VLA models trong series manipulation, bạn biết rằng pipeline truyền thống của VLA là: Ảnh → LLM xử lý → Action. Tức là mỗi lần robot cần ra quyết định, toàn bộ hình ảnh phải chạy qua một mô hình ngôn ngữ khổng lồ.
Hậu quả thực tế:
- OpenVLA (7.5B, LLaMA backbone): 202.9 ms/inference → chỉ đạt ~5 Hz, cần 14.9 GB VRAM
- SmolVLA (2.3B): 203.1 ms/inference → ~5 Hz, cần 7.1 GB VRAM
- Pi0.5 (3.4B): 93.6 ms/inference → ~10 Hz, cần 12.8 GB VRAM
Trên robot thực, 5–10 Hz là chậm nguy hiểm. Robot arm cần ít nhất 20–30 Hz để control mượt, không giật. Chưa kể VRAM: OpenVLA cần 14.9 GB chỉ để chạy inference. Training? Bạn cần cả cluster GPU.
Câu hỏi TurboVLA đặt ra là: LLM có thực sự cần thiết cho manipulation không?
Câu trả lời: không, nếu bạn thiết kế fusion mechanism đủ thông minh.
Ý tưởng cốt lõi: V+L→A thay vì V→L→A

Pipeline cũ: ảnh phải "đi qua" ngôn ngữ trước khi ra action. Language model đóng vai trò trung gian bắt buộc.
TurboVLA đề xuất paradigm mới: ảnh và ngôn ngữ xử lý song song, trao đổi thông tin với nhau qua cơ chế nhẹ, rồi cùng nhau tạo ra action sequence.
Hãy tưởng tượng một đầu bếp nhận được hai thứ cùng lúc: ảnh chụp bàn bếp (visual) và câu lệnh "đặt quả táo vào đĩa xanh" (language). Người thực sự giỏi không đọc câu lệnh, mô tả toàn bộ cảnh rồi mới bắt đầu nấu — họ nhìn và đọc đồng thời, rồi ra hành động trực tiếp. Đây chính xác là cách TurboVLA hoạt động.
Kiến trúc TurboVLA chi tiết

TurboVLA gồm 4 thành phần chính, mỗi thành phần được thiết kế với mục tiêu rõ ràng.
1. Visual Encoder: DINOv3
DINOv3 (ViT-B cho LIBERO, ViT-L cho RoboTwin) trích xuất đặc trưng không gian từ ảnh. DINOv3 mạnh ở việc hiểu cấu trúc hình học của vật thể — điều quan trọng cho manipulation.
Mỗi frame ảnh được encode thành tập patch tokens với positional embedding và camera-view embedding (để phân biệt ảnh từ các camera khác nhau khi có multi-camera setup). Tất cả được chiếu về không gian 256-dimensional chung.
2. Language Encoder: BERT Base Uncased
Thay vì dùng LLM 7B, TurboVLA chỉ cần BERT base — model 110M parameters được pre-train để hiểu ngữ nghĩa câu lệnh. Task instruction như "grab the roller" được token hóa và encode thành feature vectors.
Tại sao BERT đủ? Trong manipulation, câu lệnh thường ngắn và có cấu trúc rõ ràng. Bạn không cần model hiểu văn thơ phức tạp — chỉ cần hiểu "lấy cái gì, đặt ở đâu". Ablation study cho thấy BERT đạt 97.7%, T5-Small đạt 97.1%, SigLIP đạt 95.5% — margin không lớn, tức là bạn có thể swap text encoder khác nếu cần.
3. Bidirectional Vision-Language Interaction Module
Đây là phần sáng tạo nhất. TurboVLA dùng 6 tầng fusion layer với cross-attention hai chiều:
- Visual queries → Language context: Ảnh hỏi "câu lệnh đang nói về cái gì?"
- Language queries → Visual context: Ngôn ngữ hỏi "cái tôi đề cập trông như thế nào trong ảnh?"
Mỗi layer có layer normalization + bidirectional cross-attention + modality-specific FFN + residual connections. Output là vector [V_final; L_final] — thông tin thị giác và ngôn ngữ đã "hiểu nhau" đầy đủ.
Tại sao 6 tầng? Ablation cho thấy N=2 chỉ đạt 93.5% (thiếu depth), N=6 đạt 97.7% (optimal), N=8 giảm xuống 96.6% (overfitting nhẹ và compute nhiều hơn không cần thiết).
Bidirectional quan trọng hơn unidirectional: chỉ V→L đạt 96.1%, chỉ L→V đạt 96.5%, cả hai chiều đạt 97.7%.
4. Action Decoder: ACT-style Parallel
Decoder dùng kiến trúc ACT (Action Chunking Transformer) với parallel decoding: tất cả H=12 bước action được dự đoán đồng thời trong một forward pass duy nhất, không autoregressive.
Đây là lý do TurboVLA nhanh. Không decode token-by-token như LLM — mà ra ngay 12 bước hành động liên tiếp trong một lần. Training dùng behavior cloning với L1 loss trên continuous action space.
Cài đặt
Yêu cầu hệ thống
- Python 3.10
- PyTorch 2.3.1 + CUDA 12.1
- GPU 8 GB+ VRAM để inference (RTX 4090 tối ưu nhất, RTX 3080 đủ)
- 4× GPU cho training đầy đủ
Clone repo và cài đặt
git clone https://github.com/H-EmbodVis/TurboVLA.git
cd TurboVLA
Môi trường cho LIBERO:
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]"
Môi trường cho RoboTwin:
conda create -n turbovla-robotwin python=3.10 -y
conda activate turbovla-robotwin
pip install -e ".[robotwin]"
pip install flash-attn==2.7.4.post1 --no-build-isolation
Flash-Attention cho RoboTwin giúp giảm thêm memory và tăng tốc, đặc biệt hữu ích khi dùng ViT-L backbone lớn hơn.
Chuẩn bị Dataset
LIBERO
LIBERO có 4 task suites: libero_spatial, libero_object, libero_goal, và libero_10 (long-horizon). TurboVLA dùng phiên bản no-noops — đã lọc bỏ các frame không hành động, giúp model học hiệu quả hơn — ở định dạng TFDS/RLDS.
# Kiểm tra cấu trúc data directory
ls data/libero/
# libero_10_no_noops/1.0.0/
# libero_goal_no_noops/1.0.0/
# libero_object_no_noops/1.0.0/
# libero_spatial_no_noops/1.0.0/
Tham khảo hướng dẫn convert data trong repo để chuyển từ định dạng gốc sang TFDS/RLDS.
RoboTwin 2.0
RoboTwin là benchmark bimanual manipulation với 50 task đa dạng, bao gồm các thao tác hai tay phức tạp.
# Set ROBOTWIN_DATA_ROOT trước khi train/eval
export ROBOTWIN_DATA_ROOT="$PWD/playground/Datasets/RoboTwin"
Download data theo hướng dẫn trong phần README của repo RoboTwin.
Training
Training trên LIBERO (4 GPU)
torchrun --nproc_per_node=4 experiments/libero/train.py \
--dataset_dir data/libero/libero_10_no_noops/1.0.0 \
--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 \
--dinov3_path facebook/dinov3-vitb16-pretrain-lvd1689m \
--bert_path google-bert/bert-base-uncased
Một số điểm cần lưu ý:
--dinov3_pathvà--bert_pathcó thể là HuggingFace repo ID (tự download lần đầu) hoặc đường dẫn local nếu bạn đã tải sẵn--stats_pathchứa normalization statistics cho toàn bộ 4 suites khi train joint- Training 4× RTX 4090 mất vài tiếng; checkpoint được lưu tự động
Training trên RoboTwin (4 GPU, 55k steps)
export ROBOTWIN_DATA_ROOT="$PWD/playground/Datasets/RoboTwin"
MAX_TRAIN_STEPS=55000 bash scripts/robotwin/train.sh
RoboTwin cần nhiều bước hơn vì số lượng task đa dạng hơn (50 task so với LIBERO). Script train đã được config sẵn với hyperparameters phù hợp.
Inference và Evaluation
Download pretrained checkpoints
# Tải về từ HuggingFace Hub
huggingface-cli download H-EmbodVis/TurboVLA --local-dir pretrained/TurboVLA
Sau khi tải về, cấu trúc thư mục sẽ là:
pretrained/TurboVLA/
checkpoints/
libero/
libero_object.pth
libero_goal.pth
libero_spatial.pth
libero_10.pth
robotwin/
steps_55000_ema_model.safetensors
Evaluate LIBERO
# Evaluate libero_object suite (50 trials/task)
python experiments/libero/evaluate.py \
--ckpt_path pretrained/TurboVLA/checkpoints/libero/libero_object.pth \
--task_suite_name libero_object \
--num_trials_per_task 50 \
--precision bf16
Giá trị cho --task_suite_name: libero_object, libero_goal, libero_spatial, libero_10.
Precision bf16 giảm VRAM và tăng tốc trên RTX 4090 mà không ảnh hưởng đáng kể đến accuracy — khuyến nghị dùng mặc định.
Để test nhanh trước khi eval đầy đủ:
# Chỉ 10 trials để xem model chạy được không
python experiments/libero/evaluate.py \
--ckpt_path pretrained/TurboVLA/checkpoints/libero/libero_object.pth \
--task_suite_name libero_object \
--num_trials_per_task 10 \
--precision bf16
Evaluate RoboTwin
ROBOTWIN_TEST_NUM=100 bash scripts/robotwin/evaluate.sh \
pretrained/TurboVLA/checkpoints/robotwin/steps_55000_ema_model.safetensors
ROBOTWIN_TEST_NUM=100 là 100 trials cho mỗi task. Giảm xuống ROBOTWIN_TEST_NUM=20 để chạy nhanh hơn khi debug.
Kết quả Benchmark

LIBERO — kết quả chi tiết từng suite
| Suite | Tỉ lệ thành công |
|---|---|
| LIBERO-Spatial | 99.2% |
| LIBERO-Object | 99.8% |
| LIBERO-Goal | 97.4% |
| LIBERO-Long | 94.2% |
| Trung bình | 97.7% |
LIBERO-Object gần 100% — ấn tượng với model chỉ 0.2B parameters. LIBERO-Long thấp hơn do các task có nhiều bước, nhưng 94.2% vẫn rất tốt.
So sánh toàn diện với các model khác
| Model | Parameters | Latency | VRAM | LIBERO Avg |
|---|---|---|---|---|
| TurboVLA | 0.2B | 31.2 ms | 0.9 GB | 97.7% |
| VLA-JEPA | 2.8B | 108.7 ms | 5.3 GB | 97.2% |
| π0.5 | 3.4B | 93.6 ms | 12.8 GB | 96.9% |
| SmolVLA | 2.3B | 203.1 ms | 7.1 GB | 88.8% |
| OpenVLA | 7.5B | 202.9 ms | 14.9 GB | 76.5% |
TurboVLA nhỏ hơn Pi0.5 17 lần về parameters, nhanh hơn 3 lần về latency, dùng ít VRAM hơn 14 lần — nhưng vẫn đánh bại Pi0.5 về accuracy (97.7% vs 96.9%).
RoboTwin 2.0 — Bimanual Manipulation
Trên 50 task bimanual, TurboVLA đạt 60.2% với latency 43.4 ms. So sánh:
| Model | RoboTwin Avg | Latency |
|---|---|---|
| TurboVLA | 60.2% | 43.4 ms |
| π0.5 | 57.0% | 95.6 ms |
| StarVLA-α | 50.3% | 74.9 ms |
TurboVLA không chỉ tốt trên single-arm — mà còn mở rộng hiệu quả sang bimanual task phức tạp hơn.
Thực nghiệm robot thực — AgileX Piper
Nhóm nghiên cứu test trên robot arm AgileX Piper trong 4 task thực tế:
| Task | Tỉ lệ thành công |
|---|---|
| Grab roller (lấy con lăn) | 92.5% |
| Move playing card (di chuyển bài) | 80.0% |
| Press stapler (bấm ghim) | 90.0% |
| Stack bowls (xếp bát) | 87.5% |
Trong tất cả 4 task này, TurboVLA vượt Pi0.5 — đặc biệt ấn tượng khi Pi0.5 có gấp 17 lần parameters.
Ablation Study: Tại Sao Các Lựa Chọn Này Hoạt Động
Bài báo có ablation study kỹ lưỡng, cung cấp insight quan trọng:
Số tầng interaction N (LIBERO avg):
| N | Accuracy |
|---|---|
| 2 | 93.5% |
| 4 | 96.1% |
| 6 | 97.7% |
| 8 | 96.6% |
N=6 là điểm tối ưu — đủ depth để học complex alignment mà không overfit.
Vai trò của language conditioning:
Khi xóa hoàn toàn text instruction, accuracy giảm từ 97.7% xuống 70.8% — chứng minh language conditioning quan trọng thực sự, dù không cần LLM. BERT đủ để encode ngữ nghĩa cần thiết.
Bidirectional vs Unidirectional:
| Attention Direction | Accuracy |
|---|---|
| Chỉ V→L | 96.1% |
| Chỉ L→V | 96.5% |
| Bidirectional (cả hai) | 97.7% |
Hai chiều tương tác cho nhau tốt hơn một chiều — ảnh và ngôn ngữ cần cùng nhau hiểu context.
Triển Khai Thực Tế: Ai Nên Dùng TurboVLA?
TurboVLA phù hợp nhất cho các trường hợp:
1. Prototyping nhanh trên thiết bị đơn: 0.9 GB VRAM cho phép chạy TurboVLA song song với simulation, visualizer và các process khác trên cùng một GPU. Không cần phân chia resource phức tạp.
2. Edge deployment trong tương lai gần: RTX 4090 là consumer GPU. Với optimization thêm (quantization, TensorRT), khả năng cao chạy được trên Jetson AGX Orin hoặc các edge accelerator khác.
3. Research baseline linh hoạt: 0.2B model với code sạch, dễ modify. Muốn thử text encoder khác? Swap BERT bằng T5. Muốn visual backbone mạnh hơn? Dùng ViT-L thay ViT-B. Kiến trúc modular giúp ablation study dễ dàng.
4. Multi-task learning hiệu quả: Training joint trên tất cả 4 LIBERO suites không tăng nhiều về resource nhưng model học được generalizable representation tốt hơn train riêng từng suite.
Nếu bạn đang nghiên cứu các hướng tiếp cận VLA khác, xem thêm ResVLA — Residual Diffusion Bridge cho manipulation và so sánh với InstructVLA — instruction tuning cho VLA.
Kết Luận
TurboVLA là bằng chứng thuyết phục rằng:
- LLM không phải thành phần tất yếu của VLA — nếu bạn thiết kế fusion mechanism thông minh hơn thay vì chỉ đơn giản là scale model lên.
- 0.2B parameters có thể vượt 3.4B khi kiến trúc được thiết kế đúng mục đích — hiệu năng đến từ thiết kế, không từ kích thước.
- 32 Hz trên consumer GPU là khả thi hôm nay — không cần cluster, không cần A100, chỉ cần RTX 4090 với 0.9 GB VRAM.
Paradigm V+L→A của TurboVLA mở ra hướng mới: thay vì scale LLM backbone lên, hãy thiết kế bidirectional interaction mechanism hiệu quả hơn. Điều này đặc biệt có giá trị cho edge robotics — nơi compute và VRAM luôn là ràng buộc cứng.
Với arXiv:2607.27205 và GitHub H-EmbodVis/TurboVLA, cộng đồng đã có đủ công cụ để bắt đầu. Câu hỏi tiếp theo: liệu paradigm V+L→A có scale lên được whole-body humanoid manipulation không?



