Hãy tưởng tượng bạn nói với một con robot: "Nhặt cái cốc màu xanh lên" — và nó làm được, dù chưa từng được train riêng cho cái cốc đó. Không thu data, không fine-tune, không lập trình quỹ đạo. Đó chính là lời hứa của "Pick Up Anything" — demo zero-shot mà Galaxea Dynamics tung ra cùng việc open-source model G0 Plus vào tháng 1/2026.
Điều đặc biệt: Galaxea công bố bạn có thể dựng cả hệ thống chạy được trong vòng 30 phút bằng Docker. Bài viết này sẽ dẫn bạn đi qua toàn bộ quy trình — từ ý tưởng paper, kiến trúc dual-system, đến cài đặt, tải checkpoint, chạy demo và fine-tune trên task của riêng bạn.
G0 và G0 Plus là gì?
G0 là model Vision-Language-Action (VLA) đầu tiên được Galaxea Dynamics open-source, đi kèm paper "Galaxea Open-World Dataset and G0 Dual-System VLA Model" (arXiv:2509.00576, tháng 9/2025). Mục tiêu của dự án GalaxeaVLA là đẩy mạnh khả năng manipulation thực tế: long-horizon (nhiều bước), few-shot (ít data), và quan trọng nhất — chạy được trên robot thật trong môi trường người dùng thật.
G0 Plus là phiên bản nâng cấp, pre-train trên hơn 2.000 giờ data robot thực tế (so với 500+ giờ của bản gốc). Đây là model làm nền cho demo "Pick Up Anything": robot nhận lệnh bằng ngôn ngữ tự nhiên và gắp được những vật chưa từng thấy trong training — đúng nghĩa zero-shot embodied intelligence.
Để hiểu G0 nằm ở đâu trong bức tranh VLA hiện nay, bạn nên đọc trước bài tổng quan VLA trong Robot Manipulation.
Kiến trúc Dual-System: bộ não chậm + cơ bắp nhanh
Điểm cốt lõi của G0 là kiến trúc dual-system — chia trí tuệ robot thành hai phần bổ trợ nhau, lấy cảm hứng từ tâm lý học "tư duy nhanh và chậm":
| Thành phần | Vai trò | Tốc độ |
|---|---|---|
| G0-VLM | "System 2" — planner: suy luận đa phương thức, chia task lớn thành các subtask | Chậm, theo bước |
| G0-VLA | "System 1" — executor: sinh action chi tiết, điều khiển low-level real-time | Nhanh, liên tục |
G0-VLM là một Vision-Language Model nhìn ảnh camera + lệnh người dùng, rồi quyết định "bước tiếp theo cần làm gì" (ví dụ: "di chuyển tới bàn" → "đưa tay tới cốc" → "khép gripper"). G0-VLA nhận subtask đó cùng quan sát hiện tại và sinh ra chuỗi action điều khiển khớp robot.
Cách tách bạch này giúp G0 xử lý được task dài và phức tạp mà một model đơn không kham nổi. Nếu bạn từng đọc bài OpenHelix — Dual-System VLA, bạn sẽ thấy đây là xu hướng chung đang định hình thế hệ VLA mới.
Bên trong G0-VLA
G0-VLA được xây trên backbone PaliGemma-3B (google/paligemma-3b-pt-224) — một VLM 3 tỷ tham số của Google. Phần sinh action là một Action Transformer huấn luyện bằng flow-matching loss (kỹ thuật tương tự diffusion, sinh action mượt và chính xác).
Quy trình train G0-VLA gồm 2 giai đoạn lớn:
- Stage 1 — Cross-embodiment pre-training: Pre-train phần VLM trên data từ nhiều loại robot khác nhau, theo kiểu autoregressive (dự đoán token kế tiếp). Robot học "kiến thức chung" về thế giới.
- Stage 2 — Single-embodiment pre-training: Train tiếp trên Galaxea Open-World Dataset với góc nhìn camera và lệnh đặc thù cho một loại robot duy nhất, dùng flow-matching loss trên Action Transformer.
Phát hiện quan trọng của paper: single-embodiment pre-training là yếu tố quyết định cho hiệu năng thực tế. Train trên nhiều robot lung tung nghe có vẻ "tổng quát" hơn, nhưng thực tế nhiễu góc nhìn và động học khác nhau làm model học kém đi. Đây là góc nhìn ngược với hướng cross-embodiment thuần như X-VLA — một sự đánh đổi đáng suy ngẫm.
Galaxea Open-World Dataset
Sức mạnh của G0 đến từ data. Galaxea Open-World Dataset (GOD) chứa hơn 500 giờ data mobile manipulation thực tế, thu thập trong môi trường sinh hoạt thật: nhà ở, bếp, cửa hàng bán lẻ, văn phòng.
Ba đặc điểm khiến GOD nổi bật:
- Embodiment nhất quán — toàn bộ data thu trên cùng một loại robot, loại bỏ nhiễu do khác phần cứng.
- Annotation subtask-level — mỗi đoạn có chú thích ngôn ngữ chi tiết cho từng bước nhỏ, không chỉ một câu lệnh tổng.
- Định dạng chuẩn — phát hành dưới dạng LeRobot và RLDS trên HuggingFace, dễ tích hợp vào pipeline có sẵn. Nếu bạn chưa quen LeRobot, xem hướng dẫn hệ sinh thái LeRobot.
Các checkpoint open-source
GalaxeaVLA cung cấp nhiều checkpoint trên HuggingFace, phục vụ mục đích khác nhau:
| Checkpoint | Tham số | Dùng cho |
|---|---|---|
G0_3B_base |
3B | Baseline để fine-tune |
G0Plus_3B_base |
3B | Pre-train nâng cao (2k giờ+), fine-tune chất lượng cao |
G0Tiny_250M_base |
250M | Edge deployment, backbone SmolVLM2 |
G0Plus_PP_CKPT |
3B | Checkpoint pick-and-place sẵn sàng deploy |
Bản G0Tiny đặc biệt thú vị: chỉ 250M tham số, build trên backbone SmolVLM2-500M, có thể chạy on-device ngay trên Orin của robot R1 Pro với TensorRT, đạt tới 10 Hz. Đây là hướng "tiny VLA" tương tự VLA-Adapter — chạy được trên phần cứng phổ thông.
Checkpoint dùng cho demo "Pick Up Anything" chính là G0Plus_PP_CKPT.
Yêu cầu phần cứng
Trước khi bắt đầu, hãy kiểm tra GPU của bạn:
| Tác vụ | VRAM tối thiểu | GPU gợi ý |
|---|---|---|
| Inference | > 8 GB | RTX 4090 |
| Full fine-tuning | > 70 GB | A100 80GB / H20 96GB |
Lưu ý quan trọng: demo "Pick Up Anything" hoàn chỉnh cần robot thật — cụ thể là Galaxea R1Lite hoặc R1Pro. Nếu bạn chưa có robot, bạn vẫn có thể tải checkpoint, chạy inference offline trên data, và fine-tune — chỉ phần điều khiển robot vật lý mới cần phần cứng.
Phần 1: Cài đặt môi trường
GalaxeaVLA dùng uv làm package manager (nhanh hơn pip nhiều). Cài đặt repo:
# Clone repo
git clone https://github.com/OpenGalaxea/GalaxeaVLA
cd GalaxeaVLA
# Đồng bộ dependencies bằng uv
uv sync --index-strategy unsafe-best-match
source .venv/bin/activate
uv pip install -e .
# ffmpeg cần cho xử lý video data
sudo apt install ffmpeg
Mẹo: Cài
uvbên ngoài môi trường conda để tránh xung đột. Nếu ở Việt Nam tải chậm, repo có sẵn cấu hình mirror — đọc README để bật.
Với demo "Pick Up Anything" qua Docker, bạn cần thêm 3 thành phần trên máy host:
# 1. Docker Engine — kiểm tra sau khi cài
sudo docker --version
sudo docker run hello-world
# 2. CUDA 12.8
cd ~/Downloads
wget https://developer.download.nvidia.com/compute/cuda/12.8.0/local_installers/cuda_12.8.0_570.86.10_linux.run
sudo sh cuda_12.8.0_570.86.10_linux.run
ls /usr/local/cuda-12.8/ # verify
# 3. NVIDIA Container Toolkit — để Docker dùng được GPU
sudo apt-get install -y nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
Đừng quên thêm user vào group docker để khỏi gõ sudo mỗi lần.
Phần 2: Tải checkpoint từ HuggingFace
Demo cần hai bộ trọng số. Tải về và đặt đúng thư mục:
# Cài huggingface CLI nếu chưa có
pip install -U "huggingface_hub[cli]"
# Tạo cấu trúc thư mục demo
mkdir -p ~/g0plus_ros2/data/google
# 1. Checkpoint G0 Plus pick-and-place
huggingface-cli download OpenGalaxea/G0Plus_PP_CKPT \
--local-dir ~/g0plus_ros2/data/G0Plus_PP_CKPT/
# 2. Backbone PaliGemma-3B
huggingface-cli download google/paligemma-3b-pt-224 \
--local-dir ~/g0plus_ros2/data/google/paligemma-3b-pt-224/
Cấu trúc kết quả phải là:
~/g0plus_ros2/data/
├── G0Plus_PP_CKPT/ # trọng số G0 Plus
└── google/
└── paligemma-3b-pt-224/ # backbone VLM
Phần 3: Chạy demo "Pick Up Anything"
Đây là phần "30 phút thần kỳ". Quy trình chia làm 2 phía: robot và máy host.
Bước 1 — Kiểm tra kết nối robot. Robot R1Lite có IP dạng 10.42.0.<PORT> (port mặc định 180):
ping 10.42.0.180
ssh [email protected]
Bước 2 — Khởi động phía robot. SSH vào robot và chạy script test:
ssh [email protected]
./model_test.sh
Bước 3 — Khởi động phía host. Trên máy có GPU, chạy script Docker chính:
cd ~/g0plus_ros2
./g0plus_hs_start_v1.sh
Script này tương tác — hỏi bạn 6 thông tin: chế độ chạy (execution mode), model Qwen cho phần planner, API keys, port robot (mặc định 180), và tên Docker container. Trả lời xong, container sẽ kéo model lên và sẵn sàng.
Bước 4 — Điều khiển bằng app. Galaxea cung cấp EHI App cho Android (tải từ HuggingFace):
- Cài EHI App, kết nối điện thoại vào cùng mạng WiFi với máy host.
- Mở trang "Pick Up Anything Demo".
- Nhập IP WiFi của máy host (ví dụ
192.168.23.9), bấm Connect. - Ra lệnh bằng giọng nói hoặc text: "Nhặt chai nước lên", "Pick up the red block"…
Robot sẽ tự suy luận và thực hiện — không cần lập trình thêm. Đó là zero-shot.
Phần 4: Fine-tune trên task của riêng bạn
Nếu task của bạn quá đặc thù để zero-shot xử lý tốt, bạn có thể fine-tune G0 Plus. Ba bước chuẩn bị:
- Tạo config task trong
configs/tasks/real/— repo có sẵn ví dụ cho R1Lite và R1Pro. - Cài ffmpeg (đã làm ở Phần 1).
- Cấu hình biến môi trường — thư mục cache, API keys.
Sau đó chạy fine-tune chỉ với một dòng:
# Cú pháp: finetune.sh <số GPU> <đường dẫn task config>
bash scripts/run/finetune.sh 8 configs/tasks/real/r1lite_my_task.yaml
Nhớ rằng full fine-tuning cần > 70GB VRAM. Với GPU nhỏ hơn, hãy cân nhắc các kỹ thuật PEFT/LoRA hoặc dùng bản G0Tiny nhẹ hơn.
Để chạy inference trên robot thật sau khi fine-tune, bạn cần cài thêm repo phụ trợ EFMNode — phần kết nối model với hệ ROS 2 của robot.
Kết quả & đánh giá
Paper G0 đánh giá model trên ba nhóm task, cho thấy bức tranh khá toàn diện:
- Tabletop manipulation — gắp, đặt, sắp xếp vật trên bàn.
- Few-shot learning — học task mới chỉ với ít demo.
- Long-horizon mobile manipulation — task dài, robot vừa di chuyển vừa thao tác.
Kết luận lớn nhất: single-embodiment pre-training kết hợp với GOD là chìa khóa cho hiệu năng thực tế mạnh. Còn demo "Pick Up Anything" thì chứng minh điều thuyết phục hơn nữa — G0 Plus xử lý được vật chưa thấy trong training, biến VLA từ "thí nghiệm phòng lab" thành thứ chạy được ngoài đời.
Lưu ý & pitfalls cho người mới
- License không phải Apache thuần. Code commit trước 4/1/2026 dùng Apache 2.0; sau đó dùng G0 PLUS Community License — hạn chế dùng thương mại nếu chưa xin phép. Đọc kỹ trước khi đưa vào sản phẩm.
- "30 phút" giả định bạn đã có robot. Con số này tính phần dựng phần mềm. Nếu chưa có R1Lite/R1Pro, hãy bắt đầu từ inference offline.
- CUDA version phải khớp. Demo yêu cầu CUDA 12.8 — sai version là lỗi
nvidia-container-toolkitngay. - Mạng nội bộ. App, host và robot phải cùng subnet. Lỗi "Connect" thường do firewall hoặc khác mạng.
- Đừng nhầm G0 Plus với G0Tiny. G0 Plus 3B cho chất lượng cao nhưng nặng; G0Tiny 250M cho edge nhưng yếu hơn. Chọn theo phần cứng và yêu cầu real-time.
Tổng kết
GalaxeaVLA G0 Plus là một trong những bộ VLA open-source "thân thiện với người mới" nhất hiện nay: kiến trúc dual-system rõ ràng, checkpoint sẵn sàng deploy, Docker đóng gói gọn, và demo "Pick Up Anything" cho thấy zero-shot manipulation đã đủ chín để chạy ngoài đời. Nếu bạn đang muốn bước chân vào VLA mà không có budget thu data khổng lồ, đây là điểm khởi đầu rất tốt.
Bước tiếp theo gợi ý: tải G0Plus_PP_CKPT, chạy thử inference offline trên vài frame, rồi mới đầu tư phần cứng robot khi bạn đã hiểu pipeline.