VnRobo
Về chúng tôiBảng giáBlogLiên hệ
🇺🇸ENĐăng nhậpDùng thử miễn phí
🇺🇸EN
VnRobo logo

Hạ tầng AI cho robot công nghiệp thế hệ mới.

Sản phẩm

  • Tính năng
  • Bảng giá
  • Kiến thức
  • Dịch vụ

Công ty

  • Về chúng tôi
  • Blog
  • Liên hệ

Pháp lý

  • Chính sách bảo mật
  • Điều khoản sử dụng

© 2026 VnRobo. Bảo lưu mọi quyền.

Được tạo với♥tại Việt Nam
VnRobo
Về chúng tôiBảng giáBlogLiên hệ
🇺🇸ENĐăng nhậpDùng thử miễn phí
🇺🇸EN
  1. Trang chủ
  2. Blog
  3. IntentVLA: Giải Bài Toán Quan Sát Mơ Hồ khi Fine-tune VLA
wholebody-vlavlamanipulationimitation-learningfine-tuningwholebody-vlaobservation-aliasingrobot-manipulationdiffusion-policy

IntentVLA: Giải Bài Toán Quan Sát Mơ Hồ khi Fine-tune VLA

IntentVLA mã hóa lịch sử quan sát 16 frame thành intent vector ngắn hạn để giải quyết observation aliasing — vấn đề khiến VLA tạo action mâu thuẫn liên tiếp.

Nguyễn Anh Tuấn13 tháng 9, 202615 phút đọc
IntentVLA: Giải Bài Toán Quan Sát Mơ Hồ khi Fine-tune VLA

Hãy tưởng tượng bạn đang xem video từ camera của robot. Robot đang cầm một chiếc bánh mì. Câu hỏi: bước tiếp theo nó sẽ làm gì?

Nếu bạn chỉ nhìn khung hình đó, bạn không thể trả lời chắc chắn. Robot có thể đang trong quá trình đặt bánh lên chảo để nướng, hoặc đang trả bánh về đĩa sau khi hoàn thành công đoạn khác. Cả hai tình huống trông y hệt nhau trong ảnh tĩnh — nhưng action tiếp theo lại hoàn toàn khác nhau.

Đây chính xác là vấn đề mà các VLA (Vision-Language-Action) model hiện tại gặp phải, và đó là lý do nhóm nghiên cứu từ Huazhong University of Science and Technology, Zhongguancun Academy, và nhiều đơn vị khác đã phát triển IntentVLA — công bố tại arXiv (2605.14712).

Khuyến nghị công cụ

Stack train/deploy cho VLA

Train trên cloud/workstation, deploy bản tối ưu xuống Jetson hoặc robot computer.

Cloud GPU for VLA / policy training Dùng cho imitation learning, diffusion policy, RL và fine-tuning model robotics. Xem cloud GPU → NVIDIA Jetson Orin NX / Orin Nano Máy deploy edge cho perception, logging và inference đã tối ưu. Xem Jetson → Hugging Face / robotics dataset hosting Lưu dataset, checkpoint và model card để workflow LeRobot/VLA dễ chia sẻ hơn. Xem platform →

Vấn Đề Gốc Rễ: Observation Aliasing

Khi ảnh hiện tại không đủ thông tin

Trong imitation learning cho robot, chúng ta dạy robot bằng cách thu thập các bản demo từ con người, rồi huấn luyện policy để bắt chước. Mỗi demo gồm chuỗi (observation, action). Đến lúc inference, policy nhận observation hiện tại và sinh ra action tiếp theo.

Vấn đề nảy sinh khi dữ liệu training có tính multimodal: cùng một cảnh quan sát o_t có thể dẫn đến những action chunk khác nhau, tùy thuộc vào ý định ngắn hạn (short-horizon intent) của người demo.

Trong toán học, các policy frame-conditioned hiện tại mô hình hóa:

p(τ_t | o_t, ℓ)

Trong đó τ_t là action chunk, o_t là observation hiện tại, ℓ là language instruction. Policy này bỏ qua hoàn toàn lịch sử — nó chỉ nhìn vào một khung hình và đưa ra quyết định.

Kết quả là, với những tình huống như robot cầm bánh mì, policy có thể "tung đồng xu" giữa hai intent: đặt lên chảo hay trả về đĩa. Tệ hơn, mỗi lần replanning (thường mỗi vài giây), policy lại tung đồng xu mới — đôi khi chọn intent này, đôi khi chọn intent kia. Robot trở nên giật cục và thiếu nhất quán.

Nhóm tác giả gọi hiện tượng này là observation aliasing: hai episode khác nhau (với intent khác nhau) dẫn đến cùng một observation, nhưng action đúng lại khác nhau.

Bằng chứng định lượng

Để chứng minh vấn đề tồn tại nghiêm trọng, nhóm tác giả thực hiện một phân tích đơn giản nhưng sắc bén: với mỗi frame trong AliasBench, họ dùng Qwen3-VL-8B trích xuất visual embedding, rồi tìm 5 nearest neighbors trong embedding space.

Kết quả: 49,7% trong số top-5 neighbors thuộc về intent khác — tức là gần một nửa các frame "trông giống nhau" thực ra đòi hỏi action hoàn toàn khác. Khoảng cách cosine giữa các nhóm intent gần như bằng không (cách nhau chưa đến 3×10⁻³).

Điều này có nghĩa là model visual-language tốt nhất hiện tại cũng không thể phân biệt hai intent chỉ từ ảnh hiện tại. Lịch sử quan sát là thông tin không thể thiếu.

Hình 1: Cùng một observation (robot cầm bánh mì), nhưng context gần đây tiết lộ hai intent khác nhau — đặt lên chảo hay trả về đĩa. Nguồn: IntentVLA paper, arXiv 2605.14712

AliasBench: Benchmark Đầu Tiên Đo Lường Observation Aliasing

Một đóng góp quan trọng của paper là AliasBench — bộ đánh giá 12 task được thiết kế đặc biệt để cô lập và đo lường vấn đề observation aliasing.

AliasBench chạy trên môi trường RoboTwin2 và chia 12 task thành 4 nhóm:

Nhóm 1: Back-and-Forth Ambiguity (4 task)

Robot thực hiện chuỗi hành động có tính lặp lại — đi đến vị trí A, trở về B, rồi lại đến A... Ở một số điểm trong chuỗi, robot có cùng trạng thái vật lý nhưng phase của task khác nhau.

  • Move Block Out and Back (900 bước tối đa)
  • Cook Bread and Plate It (1100 bước)
  • Use Stapler and Return It (900 bước)
  • Store Shoe and Take It Back (900 bước)

Nhóm 2: Crossing-Path Ambiguity (3 task)

Robot vận chuyển vật từ nhiều nguồn khác nhau đến nhiều đích khác nhau. Giữa chừng, hai path giao nhau — robot ở giữa đường có cùng observation nhưng action tiếp theo phụ thuộc vào nó xuất phát từ đâu.

  • Move Block to the Opposite Grid (500 bước)
  • Move Block to the Other Grid (500 bước)
  • Move Phone Between Stand and Pad (700 bước)

Nhóm 3: Bimanual Ambiguity (2 task)

Hai tay robot phối hợp chuyền vật. Ở điểm handoff (chuyển từ tay này sang tay kia), trạng thái vật lý của vật là như nhau nhưng hướng chuyền lại quyết định tay nào tiếp nhận tiếp theo.

  • Hand Over Roller (900 bước)
  • Hand Over Pill Bottle (900 bước)

Nhóm 4: Multi-Goal Ambiguity (3 task)

Nhiều mục tiêu tồn tại đồng thời. Một tín hiệu thoáng qua (ví dụ: đèn nhấp nháy, nhãn vừa đọc) xác định mục tiêu đúng — nhưng tín hiệu đó biến mất trước khi robot bắt đầu hành động.

  • Pick Flashed Blocks in Order (1500 bước)
  • Pick Flashed Cans in Order (1200 bước)
  • Inspect Label and Place Block (700 bước)

Ví dụ từ 4 nhóm task trong AliasBench — mỗi nhóm đại diện cho một kiểu observation aliasing khác nhau
Ví dụ từ 4 nhóm task trong AliasBench — mỗi nhóm đại diện cho một kiểu observation aliasing khác nhau
Hình 2: Bốn nhóm aliasing trong AliasBench. Các task được thiết kế để cô lập đúng vấn đề observation aliasing. Nguồn: IntentVLA paper, arXiv 2605.14712

Kiến Trúc IntentVLA: Bộ Nhớ Nhỏ Gọn, Hiệu Quả Lớn

IntentVLA giải quyết vấn đề bằng cách bổ sung một nhánh history encoder song song với backbone VLA hiện tại, thay vì phải retrain từ đầu hay nhét thô 16 frame vào context.

Backbone hiện tại: Qwen3-VL 4B

Frame hiện tại và language instruction đi qua Qwen3-VL 4B — một model vision-language mạnh, xử lý bình thường như VLA tiêu chuẩn. Output là context token F_t ∈ ℝ^(N×d) biểu diễn "trạng thái hiện tại".

History Encoder: VGGT-1B Frozen

Thay vì nhét 16 frame thô vào context (tốn quá nhiều bộ nhớ và slow), IntentVLA dùng VGGT-1B — một model được pretrain để hiểu cấu trúc hình học 3D của cảnh quan sát — để mã hóa 16 frame gần nhất.

Điểm thú vị là không phải toàn bộ token của VGGT được giữ lại. Với mỗi frame, chỉ giữ:

  • Camera token: mã hóa thông tin về góc nhìn/vị trí camera
  • 4 Register tokens: nắm bắt quan hệ hình học xuyên frame, cấu trúc tổng thể của scene

Đây là thiết kế tinh tế: thay vì dùng tất cả patch tokens (quá nhiều, quá dư thừa), nhóm tác giả chọn đúng những token mang thông tin về sự thay đổi giữa các frame — chính xác là thứ cần thiết để phân biệt intent.

VGGT được giữ nguyên (frozen) — không fine-tune — để tận dụng khả năng hiểu hình học đã được pretrain.

Gated Cross-Attention Fusion

History tokens từ VGGT được chiếu (project) thành Ũ_t ∈ ℝ^(M×d), sau đó fuse với current context thông qua gated cross-attention:

F'_t = F_t + σ(α) · MHA(Q=LN(F_t), K=Ũ_t, V=Ũ_t)

Trong đó:

  • α là scalar gate có thể học — học cách cân bằng giữa thông tin hiện tại và lịch sử
  • MHA là multi-head attention với query từ frame hiện tại, key/value từ lịch sử
  • LN là layer normalization

Cơ chế này cho phép context hiện tại hỏi lịch sử: "Gần đây robot đã làm gì? Nó đang ở phase nào?"

Intent Token và Action Head

Song song với fusion, VGGT cũng xuất ra một vector tổng hợp ē_t đại diện toàn bộ lịch sử 16 frame. Vector này được chiếu thành history evidence token e_t^tok ∈ ℝ^(1×d) và append vào cuối context:

C_t = [F'_t; e_t^tok]

C_t chính là short-horizon intent representation — một biểu diễn nhỏ gọn nhưng giàu thông tin về "robot đang ở đâu trong task".

Cuối cùng, C_t conditioning một DiT-based flow-matching head để sinh ra action chunk:

τ_t = (a_t, a_{t+1}, ..., a_{t+H-1})

Training dùng conditional flow-matching loss — một phương pháp generative hiện đại, ổn định hơn diffusion, nhanh hơn khi inference:

L_flow = E[||V̂_θ(X_s, s | C_t) - (τ_t - ε)||²]

Huấn Luyện: Cần Gì Để Reproduce?

Datasets

IntentVLA được huấn luyện và đánh giá trên:

  • AliasBench: 100 demo mỗi task (novel dataset từ nhóm tác giả)
  • SimplerEnv: Subset của BridgeDataV2 từ Open X-Embodiment
  • LIBERO: 4 suite (Spatial, Object, Goal, Long)
  • RoboCasa-GR1: Subset PhysicalAI Robotics-GR00T-X-Embodiment-Sim

Hyperparameters

Tham số Giá trị
Số bước training 30,000
GPU 16 × NVIDIA H100
Batch size per GPU 16
Optimizer AdamW
Learning rate 1×10⁻⁵
LR schedule Cosine annealing
Gradient clip max norm 1.0
Precision BF16
History window K 16 frames (~0.53 giây ở 30 FPS)

Cài Đặt AliasBench (Hiện Có Sẵn)

Hiện tại GitHub repo (ZGC-EmbodyAI/IntentVLA) đã release AliasBench task code. Code training và inference của model đang trên đường release.

Để chạy AliasBench với RoboTwin2:

# Clone IntentVLA repo
git clone https://github.com/ZGC-EmbodyAI/IntentVLA.git

# Cài đặt RoboTwin2 theo hướng dẫn của họ
# (xem: github.com/TeleVision-AI/RoboTwin2)

# Copy 3 thư mục benchmark vào RoboTwin checkout
cp -r IntentVLA/description/ path/to/RoboTwin2/description/
cp -r IntentVLA/envs/ path/to/RoboTwin2/envs/
cp -r IntentVLA/task_config/ path/to/RoboTwin2/task_config/

Khi code model release, inference sẽ dùng single H100 80GB:

# Inference thử nghiệm (khi code release)
python eval.py \
  --model intentvla \
  --benchmark alias_bench \
  --history_len 16 \
  --checkpoint path/to/intentvla_checkpoint

Kết Quả: Con Số Biết Nói

AliasBench — Thử Thách Chính

Phương pháp Back-Forth Crossing Bimanual Multi-Goal Trung bình
Qwen3-VL-GR00T (baseline) 6.0% 15.7% 5.5% 8.7% 9.0%
+16 frame thô vào context 31.8% 47.3% 6.0% 18.7% 28.1%
MemoryVLA 13.3% 22.7% 4.0% 16.7% 14.9%
IntentVLA 49.3% 74.7% 17.0% 31.3% 45.8%

IntentVLA vượt baseline +36.8 điểm phần trăm. So với "16 frame thô" (baseline mạnh nhất thực tế, dù tốn gấp đôi bộ nhớ), vẫn cách biệt +17.7 điểm.

LIBERO: Ổn Định Mang Lại Lợi Thế

Phương pháp Spatial Object Goal Long Trung bình
OpenVLA-OFT 97.6% 98.4% 97.9% 94.5% 97.1%
π0.5 98.8% 98.2% 98.0% 92.4% 96.9%
Qwen3-VL-GR00T 97.8% 98.8% 97.4% 92.0% 96.5%
IntentVLA 99.3% 99.7% 98.1% 97.4% 98.6%

LIBERO-Long là benchmark đặc biệt quan trọng — task dài, nhiều phase, dễ bị aliasing. IntentVLA cải thiện +5.4 điểm ở đây.

SimplerEnv và RoboCasa

  • SimplerEnv: IntentVLA 72.9% vs. baseline 65.3% (+7.6 điểm)
  • RoboCasa-GR1 (24 task): IntentVLA 57.0% vs. baseline 47.8% (+9.2 điểm)

Độ Nhất Quán Giữa Các Chunk

Nhóm tác giả đo thêm Inter-Chunk Consistency (ICC-L2) — trung bình L2 distance giữa action cuối của chunk t và action đầu của chunk t+1. Số càng nhỏ = robot càng trơn tru, ít giật cục.

  • Baseline (frame-only): ICC-L2 = 0.219
  • IntentVLA: ICC-L2 = 0.181 (cải thiện 17.6%)
  • Tail inconsistency (90th percentile): giảm 21.7%

Inference Efficiency: Nhanh Hơn, Nhẹ Hơn

Dù thêm history encoder, IntentVLA vẫn nhanh hơn phương án nhét frame thô vào context:

Phương pháp Throughput Peak VRAM
16 frame thô 6.45 Hz 20.13 GiB
IntentVLA 7.53 Hz 14.58 GiB

Nhờ compact encoding, tiết kiệm 5.55 GiB VRAM — cho phép chạy inference trên single H100 80GB.

Thực Nghiệm Thực Tế: Dual-Arm Franka

Để chứng minh method hoạt động ngoài simulation, nhóm tác giả deploy IntentVLA lên robot Franka Research 3 hai tay để thực hiện task dọn snack: nhặt nhiều gói snack rải rác và đặt vào khu vực đích.

Task này đòi hỏi tracking context liên tục (đã nhặt cái nào, chưa nhặt cái nào) — điển hình của aliasing problem.

Setup robot Franka hai tay để thực nghiệm dọn snack trong thế giới thực
Setup robot Franka hai tay để thực nghiệm dọn snack trong thế giới thực
Hình: Setup dual-arm Franka Research 3 cho real-world snack-cleanup task. Nguồn: IntentVLA paper, arXiv 2605.14712

Kết quả sau 50 lần thử, budget 500 bước mỗi lần:

Phương pháp ≥1 snack ≥2 snack ≥3 snack ≥4 snack Kỳ vọng
Qwen3-VL-GR00T 70% 36% 14% 0% 1.20
π0.5 82% 44% 18% 0% 1.44
MemoryVLA 78% 52% 22% 2% 1.54
IntentVLA 86% 62% 32% 6% 1.86

IntentVLA nhặt trung bình 1.86 gói snack mỗi lần thử — so với 1.20–1.54 của các baseline. Đặc biệt, chỉ có IntentVLA đạt được tỉ lệ đặt được 4 snack (6%) — baseline cao nhất là 0%.

Phân Tích Ablation: Mỗi Thành Phần Đóng Góp Bao Nhiêu?

Để hiểu rõ từng phần kiến trúc đóng góp gì, nhóm tác giả thực hiện ablation trên SimplerEnv:

Variant Stack Carrot Spoon Eggplant Avg
Frame-only baseline 18.8% 59.4% 83.0% 100% 65.3%
+VGGT frame hiện tại (không history) 30.2% 61.5% 72.5% 94.8% 64.8%
History fusion, không intent token 49.0% 65.6% 67.7% 95.8% 69.5%
Full IntentVLA 54.2% 66.7% 70.8% 100% 72.9%

Bài học từ ablation:

  1. Chỉ thêm VGGT cho frame hiện tại (không có history) không giúp ích đáng kể — vấn đề không phải encoder, mà là thiếu history.
  2. History fusion đã cải thiện đáng kể, nhưng intent token (compact summary) cộng thêm +3.4 điểm nữa.
  3. Cả hai thành phần đều cần thiết.

Lựa chọn K (số frame lịch sử):

K (frames) Thời gian Avg (AliasBench)
8 frames ~0.27 giây 39.9%
16 frames ~0.53 giây 45.8%
24 frames ~0.80 giây 43.7%

16 frames (~nửa giây gần nhất) là điểm ngọt — đủ context nhưng không quá nhiều noise.

Điểm Yếu Và Giới Hạn Hiện Tại

Trung thực mà nói, IntentVLA vẫn còn một số điểm cần chú ý:

Bimanual ambiguity vẫn thấp: 17% cho nhóm này — phần lớn vì handoff dynamics phức tạp hơn nhiều so với crossing-path. Đây là hướng nghiên cứu tiếp theo.

Multi-goal ambiguity cần cải thiện: 31.3% — khi "tín hiệu" quan trọng (đèn nhấp nháy, nhãn) biến mất trước khi action bắt đầu, ngay cả 16 frame gần nhất đôi khi không đủ.

Code training chưa release: Hiện tại chỉ có AliasBench code. Nhóm tác giả hứa release sớm.

Phụ thuộc H100: Training 30K steps trên 16 H100 không phải ai cũng có. Research có thể reproduce nhưng startup khó scale trực tiếp.

Những Bài Học Đáng Nhớ

1. Partial observability là vấn đề cấu trúc, không phải lỗi implementation. Nếu bạn đang fine-tune VLA trên task dài, đa phase, và thấy robot "giật cục" hay "ngập ngừng" giữa chừng — có khả năng đây là aliasing, không phải lỗi dataset hay learning rate.

2. Compact representation thắng raw concatenation. Nhét 16 frame thô vào context tiêu tốn 20GB VRAM và inference chậm hơn — IntentVLA dùng ít bộ nhớ hơn mà kết quả tốt hơn. Bottleneck không phải lượng data mà là cách encode.

3. Geometric pre-training tổng quát hóa tốt. VGGT được pretrain để hiểu hình học 3D, không phải để làm robot. Nhưng khi frozen và dùng để encode history, nó tốt hơn V-JEPA 2 (video model chuyên biệt) tới 7.2 điểm. Pre-training tốt > domain-specific training với data nhỏ.

4. ICC-L2 là metric đáng đo. Nếu bạn đang phát triển robot manipulation, hãy thêm inter-chunk consistency vào evaluation suite. Accuracy tổng thể che giấu vấn đề giật cục — robot có thể succeed task nhưng với motion xấu, gây mài mòn cơ khí.

Kết Luận

IntentVLA giải quyết một vấn đề mà cộng đồng đã biết nhưng chưa có giải pháp hệ thống: VLA hiện tại bị mù với lịch sử gần. Giải pháp elegant của nhóm — frozen VGGT encoder + gated cross-attention + compact intent token — cải thiện đồng thời accuracy, stability, và efficiency.

Quan trọng hơn, paper này đặt nền móng cho một hướng research mới: thay vì chỉ cải thiện VLA backbone, hãy giải quyết cấu trúc dữ liệu. Multimodal demonstrations là thực tế không tránh khỏi khi thu thập dữ liệu từ con người — và observation aliasing là hệ quả tất yếu.

AliasBench sẽ trở thành benchmark chuẩn để đo lường khả năng giải quyết vấn đề này. Hãy theo dõi repo ZGC-EmbodyAI/IntentVLA để cập nhật code training khi release.

Tài liệu tham khảo:

  • IntentVLA paper — arXiv 2605.14712
  • GitHub: ZGC-EmbodyAI/IntentVLA
  • HuggingFace Paper Page

Bài Viết Liên Quan

  • OpenVLA Deep Dive: Kiến Trúc và Fine-tuning VLA Mã Nguồn Mở
  • TGRPO: Fine-tune VLA với Trajectory-Level GRPO trên LIBERO
  • DexORA: VLA Bimanual Manipulation với Dexterous Policy
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

Bài viết liên quan

NEWTutorial
FluxVLA Engine: Nền tảng one-stop triển khai VLA mới nhất
vlalerobotpi0
wholebody-vla

FluxVLA Engine: Nền tảng one-stop triển khai VLA mới nhất

FluxVLA Engine — nền tảng kỹ thuật VLA open-source từ LimX Dynamics, hỗ trợ Pi0, GR00T, OpenVLA với pipeline đầy đủ từ data đến robot thực.

17/9/202611 phút đọc
NT
NEWTutorial
DSPv2: Dense Policy Cho Whole-Body Mobile Manipulation
vlawbcwhole-body
wholebody-vla

DSPv2: Dense Policy Cho Whole-Body Mobile Manipulation

DSPv2 kết hợp 3D point cloud với multi-view DINOv2 để tạo policy toàn thân cho robot di động — hướng dẫn cài đặt, training và inference đầy đủ.

15/9/202617 phút đọc
NT
Tutorial
EVO1: Fine-tune VLA 0.77B Real-Time trên SO-101
vlalerobotmanipulation
wholebody-vla

EVO1: Fine-tune VLA 0.77B Real-Time trên SO-101

Fine-tune EVO1 (0.77B) trên SO-101 với LeRobot v0.6.0: VLA nhỏ đạt SOTA với InternVL3 + flow-matching, chạy 16.4 Hz, VRAM chỉ 2.3 GB — hướng dẫn A–Z.

8/9/202614 phút đọc
NT
VnRobo logo

Hạ tầng AI cho robot công nghiệp thế hệ mới.

Sản phẩm

  • Tính năng
  • Bảng giá
  • Kiến thức
  • Dịch vụ

Công ty

  • Về chúng tôi
  • Blog
  • Liên hệ

Pháp lý

  • Chính sách bảo mật
  • Điều khoản sử dụng

© 2026 VnRobo. Bảo lưu mọi quyền.

Được tạo với♥tại Việt Nam