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. Train GVLA với MiGA cho nhiều gripper
wholebody-vlagvlamigavlagripperimitation-learning

Train GVLA với MiGA cho nhiều gripper

Hướng dẫn hiểu GVLA, chuẩn bị MiGA 103K demos, fine-tune policy gripper-aware và chạy inference cho nhiều loại end-effector.

Nguyễn Anh Tuấn28 tháng 8, 202613 phút đọc
Train GVLA với MiGA cho nhiều gripper

Vì sao gripper-aware VLA quan trọng?

Nếu bạn đã từng train một policy pick-and-place bằng LeRobot, OpenVLA hoặc một backbone kiểu pi0/pi0.5, bạn sẽ thấy một giả định rất phổ biến: robot nhìn ảnh, đọc lệnh ngôn ngữ, rồi sinh action trong một action space đã chuẩn hóa. Giả định này hoạt động tương đối tốt khi tất cả data dùng cùng một robot arm và cùng một parallel-jaw gripper. Nhưng khi đổi end-effector, chiến lược grasp có thể đổi hoàn toàn. Một suction cup thường đi thẳng từ trên xuống bề mặt phẳng. Một parallel-jaw gripper có thể phải đẩy vật mỏng ra mép bàn rồi kẹp ngang. Một soft gripper có thể ôm vật biến dạng. Một dexterous hand lại cần pre-shape ngón trước khi tiếp xúc.

Paper GVLA: Gripper-aware Vision Language Action Models đặt câu hỏi đúng vào điểm yếu này: VLA có học được sự phụ thuộc vào gripper morphology và strategy-level divergence hay không? Nhóm tác giả đề xuất hai đóng góp chính. Thứ nhất là MiGA, dataset multi-gripper-aware gồm 103K demonstrations, 36 tasks, 5 gripper types, có cả simulation và real-world robot. Thứ hai là GVLA, một framework thêm gripper conditioning vào VLA backbone bằng multi-gripper tokenizer và dual Mixture-of-Adapters.

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 →

Bài này là hướng dẫn thực dụng để bạn hiểu paper, biết cách dựng pipeline training trong lab, và biết những điểm cần thay khi muốn train policy cho robot nhiều loại gripper. Vì trang project hiện cung cấp paper, project page, video, figures và link scripts, nhưng dataset/checkpoint public có thể chưa đầy đủ tại thời điểm viết, phần cài đặt dưới đây trình bày theo hướng: dùng tài liệu chính thức khi đã mở, còn khi chưa có thì chuẩn bị schema và code adapter tương thích để có thể thay MiGA bằng dataset nội bộ.

Nguồn gốc cần đọc:

  • Paper arXiv: Gripper-aware Vision Language Action Models
  • Project page: airvlab.github.io/G-VLA
  • PDF project: GVLA paper PDF
  • Scripts link từ project page: airvlab/GCA-Bench
Demo GVLA và MiGA trên nhiều gripper - nguồn: GVLA project page

Ý tưởng paper trong một câu

GVLA không chỉ hỏi "vật ở đâu?" mà hỏi thêm "với gripper này, nên tiếp cận và tác động như thế nào?". Đó là khác biệt quan trọng giữa gripper-agnostic policy và gripper-aware policy.

Kiến trúc GVLA với multi-gripper tokenizer và dual Mixture-of-Adapters - nguồn: GVLA project page
Kiến trúc GVLA với multi-gripper tokenizer và dual Mixture-of-Adapters - nguồn: GVLA project page

Trong VLA truyền thống, đầu vào thường gồm image tokens, language tokens và có thể có proprioception tokens. GVLA thêm một khối conditioning riêng cho end-effector. Thay vì mô tả gripper bằng một câu text chung chung như "this is a suction gripper", paper dùng learnable soft prompts ở ba mức:

Token Ý nghĩa Ví dụ
Platform token Kinematic structure của robot platform Franka Panda, UR10, xArm7, UR5
Gripper-type token Cơ chế kẹp chung của một loại gripper parallel-jaw, suction, three-finger
Instance token Sai khác cụ thể của từng end-effector Robotiq 2F-85 khác Franka Panda gripper

Ba token này được concat rồi prepend vào observation embeddings. Nhờ vậy transformer thấy gripper identity trước khi sinh action. Nếu chỉ dùng ảnh, model có thể đoán loại gripper từ hình ảnh wrist camera, nhưng tín hiệu này dễ nhiễu khi camera crop, occlusion hoặc domain shift. GVLA ép model học một latent representation có cấu trúc: cùng platform chia sẻ một số tri thức, cùng gripper type chia sẻ affordance, còn instance token giữ chi tiết nhỏ.

MiGA gồm những gì?

MiGA được thiết kế để lộ ra khác biệt chiến lược giữa gripper, không chỉ gom nhiều robot cho đẹp số liệu. Paper nêu rõ dataset có 103,000 demonstrations, 36 tasks, 5 gripper types, multi-view RGB-D observations, proprioceptive states, gripper-strategy annotations, natural language descriptions cho từng gripper-task pair, và khoảng 5% failure demonstrations để học ranh giới thất bại.

Các nhóm task trong MiGA và chiến lược khác nhau theo gripper - nguồn: GVLA project page
Các nhóm task trong MiGA và chiến lược khác nhau theo gripper - nguồn: GVLA project page

Năm nhóm gripper trong MiGA gồm:

Nhóm gripper Đặc tính thao tác Điều policy phải học
Parallel-jaw Hai ngón, form-closure đơn giản Approach ngang, alignment chính xác, aperture
Three-finger Nhiều điểm tiếp xúc hơn Pre-shape và contact placement ổn định
Soft two-finger Có compliance Tận dụng biến dạng, tránh bóp quá sâu
Suction Adhesion-based Chọn bề mặt phẳng, approach gần pháp tuyến
Dexterous five-finger hand Nhiều DoF, multi-contact Phối hợp ngón, contact sequence, kinematic feasibility

Task suite có bốn nhóm: singulated, stacked, constrained, và semantic. Với beginner, nên nhớ bốn nhóm này như bốn bài kiểm tra khác nhau. Singulated kiểm tra vật đơn lẻ với hình học, texture và pose khác nhau. Stacked kiểm tra occlusion và collision khi vật chồng lên nhau. Constrained kiểm tra không gian hẹp, nơi kích thước gripper và reachability quyết định thành công. Semantic kiểm tra hiểu ngữ cảnh, ví dụ chọn vùng an toàn khi cầm hộp chứa chất lỏng.

Chuẩn bị môi trường cài đặt

Nếu bạn muốn tái tạo GVLA trong lab, hãy tách hệ thống thành bốn lớp: data, backbone, gripper conditioning và deployment. Đừng bắt đầu bằng việc viết model ngay. Hãy bắt đầu bằng schema data, vì GVLA sống nhờ metadata gripper sạch.

Một môi trường tối thiểu nên có:

conda create -n gvla python=3.10 -y
conda activate gvla
pip install torch torchvision torchaudio
pip install transformers accelerate datasets safetensors einops
pip install opencv-python pillow numpy scipy pandas
pip install h5py zarr tqdm wandb

Nếu bạn chạy simulation giống paper, cần thêm NVIDIA Isaac Lab theo hướng dẫn chính thức của Isaac Lab. Nếu bạn fine-tune từ backbone pi0/pi0.5 hoặc OpenVLA-style model, hãy dùng đúng repo/backbone mà lab của bạn đã chuẩn hóa. GVLA là pattern kiến trúc, không bắt buộc bạn phải đổi toàn bộ stack. Quan trọng nhất là loader phải trả về đủ các trường sau:

sample = {
  "images": {
    "wrist": Tensor[C, H, W],
    "third_view": Tensor[C, H, W]
  },
  "language": "pick up the flat box",
  "proprio": Tensor[D],
  "actions": Tensor[H, A],
  "robot_platform": "ur10",
  "gripper_type": "suction",
  "gripper_instance": "ur10_suction_cup",
  "task_category": "singulated"
}

Nếu dataset chính thức được mở, bạn nên giữ nguyên naming của tác giả. Nếu dùng dataset nội bộ, hãy map metadata về ba level giống paper: platform, type, instance. Không nên chỉ lưu gripper_id. Khi không có gripper_type, model không biết hai instance khác nhau có thể chia sẻ cùng affordance. Khi không có platform, adapter có thể nhầm lỗi kinematic của robot với lỗi morphology của gripper.

Convert data về format train được

Một beginner hay mắc lỗi là convert action trước khi định nghĩa frame. Với multi-gripper, lỗi frame càng nguy hiểm. Hãy thống nhất:

Trường Khuyến nghị
Camera wrist_rgb, third_rgb, tùy chọn depth
State joint positions, end-effector pose, gripper aperture hoặc suction state
Action delta end-effector pose + gripper command, hoặc joint target nếu backbone yêu cầu
Frame base frame cố định cho robot, camera extrinsics versioned
Timing resample observation/action về cùng control rate
Metadata platform/type/instance/task/language không để null

Pipeline convert thường như sau:

raw logs
  -> synchronize timestamps
  -> crop/resize images
  -> normalize proprioception
  -> express action in one chosen frame
  -> attach gripper metadata
  -> train/val/test split by task and object

Với GVLA, split rất quan trọng. Nếu random split theo frame, validation sẽ quá dễ vì cùng episode xuất hiện ở cả train và val. Hãy split theo episode, rồi tạo thêm split theo object và split theo gripper. Paper đánh giá zero-shot object generalization và few-shot adaptation, nên bạn cũng cần giữ một nhóm object hoặc task chưa thấy để kiểm tra thật.

Kiến trúc GVLA chi tiết

GVLA có hai khối mới. Khối thứ nhất là multi-gripper tokenizer. Nó tạo soft prompt embeddings:

P(h) = [P(platform); P(gripper_type); P(instance)]
X_conditioned = [P(h); X_observation]

P(platform) học thông tin robot platform như reachability, joint layout và kinematic bias. P(gripper_type) học affordance theo cơ chế tiếp xúc. P(instance) học sai khác nhỏ như jaw width, compliance, offset TCP hoặc suction cup diameter. Ba nhóm token không phải one-hot cứng; chúng là vector được tối ưu cùng model.

Khối thứ hai là dual Mixture-of-Adapters. Paper dùng hai router song song: một router platform-aware và một router gripper-aware. Mỗi router chọn top-k adapter experts từ pool tương ứng. Adapter là bottleneck nhỏ dạng down-projection, GeLU, up-projection, rồi cộng residual vào hidden activation. Trực giác rất đơn giản: backbone giữ tri thức chung về vision-language-action, còn adapters học biến thể điều khiển theo robot và gripper.

Pseudo-code tối giản:

obs_tokens = encode_vision_language(images, language, proprio)
prompt = concat(platform_prompt[r], type_prompt[g], instance_prompt[u])
x = concat(prompt, obs_tokens)

hidden = backbone.transformer(x)
action_hidden = hidden[:, action_positions]

platform_weights, platform_experts = platform_router(mean(platform_prompt[r]))
gripper_weights, gripper_experts = gripper_router(mean(concat(type_prompt[g], instance_prompt[u])))

action_hidden = action_hidden + apply_adapters(action_hidden, platform_experts, platform_weights)
action_hidden = action_hidden + apply_adapters(action_hidden, gripper_experts, gripper_weights)
actions = action_head(action_hidden)

Paper phân tích layer probing và thấy gripper type sensitivity tăng mạnh ở layer cuối, nên MoA được đặt vào final action layer để trực tiếp điều chỉnh action generation. Đây là lựa chọn đáng chú ý: gripper prompt ảnh hưởng representation từ đầu, còn adapter tác động mạnh ở nơi sinh action.

Training GVLA từng bước

Loss của GVLA gồm ba phần:

Loss Vai trò
Action loss Supervise action tokens, paper dùng conditional flow matching theo hướng pi-series
Gripper prediction loss Ép embedding giữ thông tin phân biệt gripper type
Load balance loss Tránh router collapse vào một vài adapter

Với lab nhỏ, bạn có thể bắt đầu bằng imitation loss MSE hoặc diffusion/flow matching tùy backbone. Điều không nên bỏ là gripper prediction loss và load balance loss, vì hai loss này giúp prompt và adapter không trở thành metadata trang trí.

Một schedule thực dụng:

Stage 0: sanity check
  Train 1-2 tasks, 2 gripper types, 1K demos.
  Mục tiêu: overfit được train set, inference sinh action đúng chiều.

Stage 1: shared backbone warmup
  Freeze phần lớn VLA backbone.
  Train prompts, adapters, action head.
  Dùng learning rate cao hơn cho prompts/adapters.

Stage 2: gripper-aware fine-tuning
  Unfreeze một số layer cuối nếu GPU cho phép.
  Bật action loss + gripper loss + load balance loss.
  Log SR proxy, PE, router usage, gripper classification accuracy.

Stage 3: adaptation
  Giữ backbone gần như freeze.
  Thêm dữ liệu few-shot cho gripper/task mới.
  Fine-tune instance token và adapter liên quan trước, rồi mới mở rộng.

Các lỗi training thường gặp:

Triệu chứng Nguyên nhân hay gặp Cách kiểm tra
Router luôn chọn một expert Load balance quá yếu hoặc metadata lệch Log adapter activation histogram
Model bỏ qua gripper token Ảnh training quá dễ hoặc token không nối đúng Linear probe gripper type từ hidden states
PE thấp nhưng robot fail Action frame sai hoặc controller không theo kịp Replay trajectory trong sim
Adaptation kém với gripper mới Không có type token đúng hoặc instance quá ít data So sánh same-type vs unseen-type split

Inference trên robot thật

Inference GVLA cần đúng ba thứ ngoài ảnh và lệnh: platform_id, gripper_type, gripper_instance. Nếu bạn thay gripper nhưng quên đổi metadata, policy sẽ chọn sai adapter. Với robot thật, loop nên chạy theo kiểu receding horizon:

1. Capture wrist + third-view images.
2. Read proprioception and gripper state.
3. Build language instruction.
4. Attach platform/type/instance ids.
5. Run GVLA to predict H-step action chunk.
6. Send first K actions to low-level controller.
7. Re-observe and repeat until task done or timeout.

Bạn nên đặt một safety layer giữa GVLA và robot controller. GVLA sinh action ở strategy level, nhưng paper cũng chỉ ra failure case liên quan đến kinematic feasibility và physical gripper limitation. Vì vậy deployment cần clamp velocity, kiểm tra workspace bounds, validate IK, giới hạn force/grip command và dừng khi camera mất target. Với suction, cần thêm vacuum pressure check. Với dexterous hand, cần kiểm tra joint limit từng ngón.

Kết quả paper nói gì?

Kết quả chính trong simulation cho thấy GVLA dùng backbone pi0.5 đạt 66.00% average success rate, cao hơn pi0.5 baseline 58.38%. Mức tăng là 7.62 điểm phần trăm. Với pi0 backbone, GVLA đạt 48.13%, cũng cao hơn pi0 baseline 38.13%. Các baseline traditional như AnyGrasp và GraspMAS gần như sụp ở flat/stacked scenes, vì chúng thiên về grasp pose open-loop hơn là trajectory-level manipulation.

So sánh baseline của GVLA theo bốn nhóm task - nguồn: GVLA project page
So sánh baseline của GVLA theo bốn nhóm task - nguồn: GVLA project page

Paper cũng báo cáo tokenizer GVLA có PE 0.032, CAPD 1.34, GCS 0.249, tốt hơn các cách biểu diễn như MLP, VQ-VAE và learned prompt đơn giản. Linear probe accuracy tăng từ khoảng 59% ở layer L0 lên 80% ở L12, cho thấy gripper token thật sự đi vào hidden representation chứ không chỉ nằm ở input.

Trong real-world validation, nhóm tác giả dùng UR5 với Robotiq 2F-85, chỉ 10 demonstrations cho task chưa thấy và 20K fine-tuning steps. GVLA vượt pi0.5 baseline trên các task real robot, củng cố ý tưởng rằng gripper-aware conditioning giúp transfer hiệu quả hơn khi đổi platform-gripper configuration.

Real-world validation trên UR5 với Robotiq 2F-85 - nguồn: GVLA project page
Real-world validation trên UR5 với Robotiq 2F-85 - nguồn: GVLA project page

Nên áp dụng GVLA như thế nào trong lab nhỏ?

Nếu bạn chưa có 103K demos, đừng cố sao chép toàn bộ paper ngay. Hãy làm phiên bản nhỏ nhưng đúng cấu trúc. Chọn hai gripper thật khác nhau, ví dụ parallel-jaw và suction. Chọn 4-6 tasks có strategy divergence rõ rệt: nhặt hộp mỏng, nhặt cốc, lấy vật trong khay hẹp, gắp vật mềm, xếp vật chồng, chọn vùng cầm theo semantic instruction. Thu mỗi task 50-100 demos cho mỗi gripper. Điều này đủ để kiểm tra tokenizer, adapter routing và inference loop.

Khi mở rộng, ưu tiên diversity có kiểm soát hơn là số lượng lớn nhưng lẫn metadata. Mỗi task nên có instruction nhất quán, camera calibration version, robot platform id, gripper type id và action frame rõ ràng. Nếu dùng nhiều operator, log operator id để phân tích bias. Nếu có failure demo, đừng vứt bỏ toàn bộ; hãy gắn label failure để dùng cho analysis hoặc future verifier.

GVLA đáng học vì nó nhắc chúng ta rằng "generalist robot policy" không thể chỉ generalize qua object và language. Nó còn phải generalize qua cơ khí. Với robotics engineer, bài học thực tế là: dataset schema và end-effector metadata quan trọng ngang model size. Một VLA lớn nhưng không biết mình đang điều khiển suction cup hay three-finger hand sẽ dễ học strategy trung bình, và strategy trung bình thường là thứ robot thật không thực hiện được.

Bài viết liên quan

  • YUBI gripper cho LeRobot VLA
  • OpenVLA deep dive
  • FineVLA dual-arm VLA tutorial
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
ETH Robot Learning 2026: lộ trình tự học
robot-learningvlareinforcement-learning
wholebody-vla

ETH Robot Learning 2026: lộ trình tự học

Khóa ETH từ MDP, imitation learning, RL đến VLA/foundation models, kèm repo homework và cách tự học thực tế.

13/6/202613 phút đọc
NT
Tutorial
Chạy TREAD: tái gán nhãn robot bằng VLM
treadvlmvla
wholebody-vla

Chạy TREAD: tái gán nhãn robot bằng VLM

Hướng dẫn chạy TREAD để cắt trajectory, tạo nhãn sub-task bằng VLM và fine-tune VLA tốt hơn trên LIBERO.

11/6/202614 phút đọc
NT
Deep Dive
OpenVLA: VLA mở cho robot
openvlavlarobot-learningPhần 8
wholebody-vla

OpenVLA: VLA mở cho robot

Deep dive OpenVLA 7B: ý tưởng, kiến trúc, cài đặt, fine-tuning, inference và kết quả thực nghiệm cho robot manipulation.

7/6/202615 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