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. Hướng dẫn VLAC: Huấn luyện VLA với Critic đạt 90% chỉ sau 200 episodes
manipulationvlareinforcement-learningcriticmanipulationInternVLreal-world-rlprocess-reward-model

Hướng dẫn VLAC: Huấn luyện VLA với Critic đạt 90% chỉ sau 200 episodes

VLAC tích hợp critic vào vòng lặp RL thực tế, đưa success rate từ 30% lên 90% chỉ sau 200 episodes không cần reward engineering thủ công.

Nguyễn Anh Tuấn17 tháng 8, 202611 phút đọc
Hướng dẫn VLAC: Huấn luyện VLA với Critic đạt 90% chỉ sau 200 episodes

Robot học thao tác thực tế luôn đối mặt với bài toán kinh điển: làm thế nào để biết robot đang "tiến bộ" hay chỉ đang ngẫu nhiên khua tay? Câu trả lời thông thường là thiết kế reward thủ công — viết hàm toán học đo khoảng cách, lực tiếp xúc, vị trí object. Nhưng mỗi task mới lại cần một reward function mới, tốn hàng tuần kỹ sư.

VLAC (Vision-Language-Action-Critic) — công bố bởi nhóm Shanghai AI Lab vào tháng 9/2025 — giải quyết vấn đề này theo một hướng hoàn toàn khác: thay vì thiết kế reward, hãy dạy một model học cách đánh giá tiến độ từ dữ liệu. Kết quả? Success rate tăng từ ~30% lên ~90% chỉ sau 200 episodes thực tế, không cần reward engineering, không cần simulator.

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ễ: Tại sao RL thực tế khó?

Reinforcement learning trong robotics thực tế gặp hai nút thắt lớn:

1. Sparse reward: Robot chỉ biết nó thành công hay thất bại khi task kết thúc. Với 200 episodes, robot có thể trải qua 190 lần thất bại hoàn toàn trước khi học được bất cứ điều gì hữu ích. Đây giống như dạy một đứa trẻ chơi bóng bằng cách chỉ nói "sai" hoặc "đúng" ở cuối trận đấu.

2. Reward engineering tốn công: Để RL hội tụ nhanh, cần dense reward — tín hiệu liên tục ở mỗi bước. Nhưng viết hàm reward chuẩn xác cho manipulation phức tạp (ví dụ: gấp khăn ăn, múc cơm vào bát) đòi hỏi nhiều kiến thức domain và thời gian debug lâu.

VLAC tấn công cả hai vấn đề này cùng lúc.

VLAC là gì?

VLAC là một process reward model (PRM) được xây trên nền InternVL — một vision-language model mạnh của Thượng Hải. Thay vì reward function viết tay, VLAC học cách đánh giá: "Giữa ảnh A và ảnh B, robot đang tiến gần hơn hay xa hơn mục tiêu?"

Điểm đột phá là pair-wise progress understanding: VLAC không đánh giá một frame đơn lẻ, mà so sánh cặp ảnh liên tiếp trong trajectory và xuất ra:

  • Progress delta (Δp): Con số có dấu — dương = tiến, âm = lùi
  • Done signal: Binary flag — task hoàn thành chưa?
  • Action tokens: VLAC cũng có thể tự sinh ra hành động (đóng vai VLA thuần túy)

Tất cả trong một model duy nhất, dùng prompt control để chuyển đổi giữa vai trò critic và actor.

Kiến trúc VLAC — nguồn: arXiv 2509.15937
Kiến trúc VLAC — nguồn: arXiv 2509.15937

Kiến trúc chi tiết

Input: [Ảnh t-1] + [Ảnh t] + [Language goal] → InternVL backbone
                                                        ↓
                                              Autoregressive decoder
                                            ↙          ↓          ↘
                                    Progress Δ    Done signal    Action tokens
                                    (reward)      (termination)  (delta EE pose)

Nền tảng: InternVL

InternVL được chọn vì khả năng hiểu hình ảnh mạnh và hỗ trợ multi-image input tự nhiên — cần thiết để so sánh cặp ảnh. Model được fine-tune thêm với dữ liệu robotics để "nói chuyện" được với thế giới thao tác vật thể.

Pair-wise comparison

Thay vì hỏi "Robot đang ở đâu?", VLAC hỏi "Robot đã thay đổi thế nào từ t-1 đến t?" Cách đặt vấn đề này giúp model tập trung vào sự thay đổi thay vì state tuyệt đối — quan trọng khi background, ánh sáng, góc camera thay đổi giữa các setup.

Template structured output

Action tokens được encode theo delta end-effector pose (Δx, Δy, Δz, ΔRx, ΔRy, ΔRz, gripper) — đủ generic để dùng trên nhiều robot khác nhau.

Dữ liệu huấn luyện

Một trong những điểm mạnh nhất của VLAC là dữ liệu training đa dạng và quy mô:

Nguồn Lượng Mục đích
Human egocentric video 3,000+ giờ Hiểu progress từ góc nhìn người
Public robotic datasets (Bridge, DROID, RoboSet, FMB, AGIBOT) 1,200+ giờ Action grounding
Self-collected manipulation 15+ giờ Fine-grained control
Vision-language datasets Hàng chục triệu điểm World knowledge
Tổng ~40M data points

Cách tạo label cho progress delta

Đây là phần thú vị: không cần human annotation! VLAC dùng temporal ordering để tự tạo label:

  • Ảnh frame 5 so với frame 1: progress ≈ +0.4 (tiến nhiều)
  • Ảnh frame 3 so với frame 5: progress ≈ -0.2 (lùi nhẹ)
  • Ảnh frame cuối so với frame áp cuối: progress ≈ +0.9 nếu thành công

Kết hợp với dữ liệu negative: cặp ảnh không liên quan về mặt temporal → progress ≈ 0, cặp ảnh task khác → model học cách reject irrelevant input.

Kiến trúc vòng lặp RL của VLAC — nguồn: arXiv 2509.15937
Kiến trúc vòng lặp RL của VLAC — nguồn: arXiv 2509.15937

Vòng lặp RL thực tế với VLAC

Đây là điểm sáng tạo thứ hai: VLAC không chỉ là một reward model standalone, mà được tích hợp vào asynchronous real-world RL loop:

┌─────────────────────────────────────────┐
│           Vòng lặp RL bất đồng bộ       │
│                                         │
│  Robot thực thi → Thu thập (obs, action)│
│         ↓                               │
│  VLAC Critic đánh giá progress          │
│  → xuất dense reward Δp                 │
│         ↓                               │
│  Policy update (offline RL / online RL) │
│         ↓                               │
│  Policy mới được deploy lên robot       │
│         ↑                               │
│  [Human-in-the-loop can intervene here] │
└─────────────────────────────────────────┘

Bất đồng bộ có nghĩa là robot không dừng để chờ training — nó tiếp tục thu thập data trong khi model cập nhật ở máy khác.

Human-in-the-Loop: 3 tầng can thiệp

Phần độc đáo nhất của VLAC là protocol can thiệp của con người có cấu trúc 3 tầng, được áp dụng tùy theo giai đoạn học:

Tầng 1: Offline Demonstration Replay

Khi nào dùng: Đầu training khi policy chưa biết gì.

Cách làm: Pre-populate replay buffer với human demonstrations. Policy không học từ demo ngay — thay vào đó, VLAC critic đánh giá lại demo này và trích xuất reward, rồi policy học từ (obs, action, reward) như data RL bình thường.

Tại sao hiệu quả: Human demo thường là những trajectory "hoàn chỉnh" — robot học được concept thế nào là "tiến gần đến thành công" ngay từ đầu, thay vì khám phá ngẫu nhiên từ zero.

Tầng 2: Return and Explore

Khi nào dùng: Khi policy đã học được "skeleton" của task nhưng vẫn stuck ở một số failure mode.

Cách làm: Operator theo dõi real-time. Khi robot rơi vào failure state mà nó không thể tự thoát (ví dụ: object bị đẩy ra ngoài tầm với), operator reset robot về đúng failure state đó và để robot thử lại nhiều lần.

Tại sao hiệu quả: Giải quyết exploration bottleneck — robot không cần phải tình cờ gặp failure state hiếm, operator "teleport" nó đến đó.

Tầng 3: Human Guided Explore

Khi nào dùng: Khi có những sub-behavior robot không thể tự khám phá (ví dụ: cách tiếp cận vật thể ở góc khó).

Cách làm: Operator teleop robot qua đoạn khó, sau đó trả lại quyền điều khiển cho policy. Data này được đưa vào replay buffer kèm VLAC reward.

Tại sao hiệu quả: Cung cấp "scaffolding" cho những skill phức tạp mà exploration thuần túy sẽ mất hàng nghìn episodes để tìm ra.

Cài đặt và sử dụng

Yêu cầu hệ thống

  • Python ≥ 3.9
  • PyTorch ≥ 2.0
  • CUDA 12 (khuyến nghị)
  • RAM GPU: 8GB+ cho VLAC-2B, 24GB+ cho VLAC-8B

Cài đặt

git clone https://github.com/InternRobotics/VLAC.git
cd VLAC
pip install -e .

Tải model

Hai phiên bản có sẵn trên HuggingFace:

from huggingface_hub import snapshot_download

# VLAC-2B (nhẹ hơn, phù hợp inference nhanh)
snapshot_download("InternRobotics/VLAC", local_dir="./models/vlac-2b")

# VLAC-8B (chính xác hơn, cần GPU mạnh)
snapshot_download("InternRobotics/VLAC-8b", local_dir="./models/vlac-8b")

Sử dụng VLAC làm Critic (đánh giá trajectory)

from vlac import VLACCritic

# Khởi tạo critic
critic = VLACCritic.from_pretrained("InternRobotics/VLAC")

# Đưa vào cặp ảnh và task description
result = critic.web_trajectory_critic(
    images=["frame_001.jpg", "frame_002.jpg", "frame_003.jpg"],
    task_description="Pick up the bowl and place it on the tray",
)

# Kết quả
print(result["progress_deltas"])  # [0.1, 0.3, 0.5, ...]
print(result["done_signals"])     # [False, False, True, ...]
print(result["value_scores"])     # Overall trajectory quality

Sử dụng VLAC làm VLA thuần túy (sinh action)

from vlac import VLACPolicy

policy = VLACPolicy.from_pretrained("InternRobotics/VLAC")

# Dự đoán action từ observation
obs = {
    "image": current_frame,
    "task": "Unfold the mat on the table"
}
action = policy.predict(obs)
# action = [Δx, Δy, Δz, ΔRx, ΔRy, ΔRz, gripper_open]

Tích hợp vào vòng lặp RL

import gymnasium as gym
from vlac import VLACCritic

critic = VLACCritic.from_pretrained("InternRobotics/VLAC")

env = YourRobotEnv()
replay_buffer = ReplayBuffer()

for episode in range(200):
    obs_history = []
    obs, _ = env.reset()
    
    for step in range(max_steps):
        action = policy.act(obs)
        next_obs, _, done, _, _ = env.step(action)
        obs_history.append((obs, next_obs))
        
        # VLAC tính reward thay vì reward function thủ công
        if len(obs_history) >= 2:
            reward_info = critic.web_trajectory_critic(
                images=[obs_history[-2][0]["image"], obs_history[-1][0]["image"]],
                task_description=env.task_description
            )
            reward = reward_info["progress_deltas"][-1]
        else:
            reward = 0.0
        
        replay_buffer.add(obs, action, reward, next_obs, done)
        obs = next_obs
        
        if done:
            break
    
    # Update policy every N episodes
    if episode % 10 == 0:
        policy.update(replay_buffer.sample(batch_size=64))

Kết quả thực nghiệm

VLAC được thử nghiệm trên 4 task thao tác thực tế với robot arm:

Task Baseline (không VLAC) VLAC + HiL Final
Desktop Sweep (quét mặt bàn) ~30% ~90% 100%
Pick & Place Bowl (gắp bát) ~30% ~90% 100%
Unfold Mat (trải thảm) ~30% ~90% 100%
Rice Transfer (múc cơm) ~30% ~80% 70-100%

Điểm đáng chú ý: với 8 robot song song, mỗi robot chỉ cần 64 episodes (tổng 512 episodes, nhưng thời gian thực tế giảm 8x) để đạt 80% success — so với 325 episodes cho setup 1 robot.

So sánh với baseline

  • Dense reward thủ công: Cần 3-5 ngày kỹ sư để thiết kế và tune mỗi task. VLAC: zero engineering mới cho task mới.
  • Sparse reward (chỉ binary done signal): Hội tụ chậm hơn ~4x, hoặc không hội tụ trong budget 200 episodes.
  • One-shot transfer: VLAC có thể đánh giá task hoàn toàn mới (chưa thấy trong training) chỉ cần 1 demo video — không cần retrain.

Phân tích case study các task — nguồn: arXiv 2509.15937
Phân tích case study các task — nguồn: arXiv 2509.15937

Pitfalls và lưu ý khi triển khai

1. Camera setup quan trọng hơn bạn nghĩ

VLAC dựa vào visual progress — nếu camera bị rung, thay đổi ánh sáng đột ngột, hoặc robot che khuất object của interest, critic sẽ cho reward noise cao. Cố định camera, dùng ánh sáng ổn định.

2. Task description phải nhất quán

Dùng đúng một phrasing cho task trong toàn bộ episode. "Pick up the bowl" và "grab the bowl and move it" là hai task khác nhau trong mắt VLAC. Định nghĩa task string một lần duy nhất và không thay đổi.

3. Human-in-the-loop cần training

Ba tầng HiL không phải "nhờ ai cũng được". Operator cần hiểu khi nào nên can thiệp — can thiệp sai lúc có thể làm policy học wrong behavior.

4. VLAC-2B vs VLAC-8B

Cho inference real-time trên edge (Jetson AGX Orin), dùng VLAC-2B. Cho offline data refinement (lọc lại replay buffer), dùng VLAC-8B cho độ chính xác cao hơn.

5. Progress delta có thể âm — đó là tín hiệu tốt

Nhiều người ngạc nhiên khi thấy reward âm ở giữa episode. Đây là feature, không phải bug — critic phạt robot khi nó đi lùi, giúp policy học tránh những hành động phá vỡ tiến độ.

Tại sao VLAC quan trọng cho robotics Việt Nam?

Cách tiếp cận của VLAC giải quyết một pain point cực kỳ thực tế: không phải lab nào cũng có đủ kỹ sư để viết reward function tinh vi cho từng task. Với VLAC:

  • Giảm thời gian setup từ tuần xuống còn ngày
  • Transfer sang task mới bằng one-shot demo, không cần retrain
  • Scale tuyến tính với số robot — thêm robot là giảm thời gian thực tế theo tỷ lệ tương ứng

Đặc biệt với bối cảnh nhà máy tự động hóa (THACO Chu Lai, Ford Hải Dương đang tăng tốc tự động hóa), khả năng deploy RL thực tế không cần chuyên gia reward engineering là một lợi thế cạnh tranh lớn.

Tổng kết

VLAC chứng minh rằng bottleneck của real-world robot RL không phải thuật toán RL — mà là reward signal chất lượng cao. Bằng cách học reward từ dữ liệu thay vì thiết kế thủ công, kết hợp với human-in-the-loop protocol có cấu trúc, VLAC đưa real-world RL từ "lab-only" trở thành thứ có thể triển khai thực tế trong 200 episodes.

Paper: arXiv:2509.15937 | GitHub: InternRobotics/VLAC | Model: HuggingFace VLAC


Bài viết liên quan

  • Hướng dẫn Force-VLA RL: Value-Calibrated Warmup cho robot manipulation
  • GigaBrain-0: VLA kết hợp World Model và RL cho manipulation
  • Hướng dẫn EXPO-FT: Online RL cho Pi0 chỉ trong 19 phút
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

Tutorial
LaST-R1: Fine-tune VLA với Latent CoT và RL đạt 99.8%
vlareinforcement-learningchain-of-thought
manipulation

LaST-R1: Fine-tune VLA với Latent CoT và RL đạt 99.8%

Hướng dẫn chi tiết LaST-R1 — framework kết hợp Latent Chain-of-Thought reasoning với LAPO (RL) để fine-tune VLA đạt 99.8% success rate trên LIBERO chỉ với 1 demo/task.

8/7/202615 phút đọc
NT
Tutorial
TORL-VLA: Fine-tune VLA với Cảm Biến Xúc Giác và Online RL
vlatactileonline-rl
manipulation

TORL-VLA: Fine-tune VLA với Cảm Biến Xúc Giác và Online RL

Hướng dẫn TORL-VLA — framework kết hợp cảm biến xúc giác (tactile) và Online RL để fine-tune VLA cho thao tác tiếp xúc chính xác cao: latch, trứng, cốc cà phê.

6/7/202613 phút đọc
NT
Nghiên cứu
Tại sao Multi-Agent đánh bại VLA đơn thuần? | AI Manipulation Agents #1
manipulationvlamulti-agentPhần 1
manipulation

Tại sao Multi-Agent đánh bại VLA đơn thuần? | AI Manipulation Agents #1

ManiAgent đạt 86.8% trên SimplerEnv — vượt xa pi0 55.7% và CogACT 51.3%. Phân tích kiến trúc 3-agent và lý do phân rã pipeline thắng end-to-end VLA.

15/6/202613 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