Nếu bạn đang theo dõi lĩnh vực robot hình người, chắc hẳn đã nghe đến GR00T N1 — mô hình nền tảng mở đầu tiên của NVIDIA dành riêng cho humanoid robot. Đây không chỉ là một bài báo nghiên cứu — NVIDIA đã mở mã nguồn toàn bộ, từ model weights đến pipeline fine-tuning, cho phép bất kỳ ai cũng có thể fine-tune và triển khai trên robot thực.
Trong bài viết này, mình sẽ hướng dẫn bạn từng bước cách fine-tune GR00T N1 với Isaac Lab và dữ liệu từ AGIBOT World — từ hiểu kiến trúc, cài đặt môi trường, chuẩn bị dữ liệu, đến training và inference.
GR00T N1 là gì?
GR00T N1 (Generalist Robot 00 Technology) là mô hình Vision-Language-Action (VLA) được NVIDIA công bố tại GTC 2025. Không giống các VLA model trước đó chỉ hỗ trợ một loại robot cụ thể, GR00T N1 là mô hình cross-embodiment — có thể hoạt động trên nhiều loại robot khác nhau, từ cánh tay đơn (single-arm manipulator) cho đến humanoid robot toàn thân.
Paper gốc: GR00T N1: An Open Foundation Model for Generalist Humanoid Robots — NVIDIA Research, 2025.
Tại sao GR00T N1 đặc biệt?
- Cross-embodiment: Một model duy nhất chạy được trên WidowX, Google Robot, Fourier GR-1, Unitree G1 và nhiều robot khác
- Mở hoàn toàn: Model weights, code training, fine-tuning pipeline — tất cả đều open-source
- Data-efficient: Chỉ với 10% dữ liệu training, GR00T N1 đạt kết quả gần bằng Diffusion Policy dùng 100% dữ liệu
- Real-time inference: 22-27 Hz trên RTX 4090, đủ nhanh cho điều khiển robot thực
Nếu bạn đã quen với các VLA model khác như RT-2 hay Octo, GR00T N1 đại diện cho bước tiến lớn về khả năng generalization.
Kiến trúc Dual-System
Điểm sáng tạo nhất của GR00T N1 là kiến trúc hai hệ thống, lấy cảm hứng từ lý thuyết nhận thức của Daniel Kahneman (Thinking, Fast and Slow):
System 2 — Vision-Language Module (chậm, suy luận)
- Backbone: Eagle-2 VLM = SigLIP-2 (vision encoder) + SmolLM2 (language model)
- Tham số: 1.34B parameters
- Tốc độ: ~10 Hz
- Nhiệm vụ: Nhận ảnh từ camera + lệnh ngôn ngữ → hiểu bối cảnh và mục tiêu task
- Đặc biệt: Trích xuất features từ lớp thứ 12 (giữa mạng) thay vì lớp cuối — điều này vừa nhanh hơn vừa cho kết quả tốt hơn (đã kiểm chứng qua ablation study)
System 1 — Diffusion Transformer Action Head (nhanh, phản xạ)
- Kiến trúc: DiT (Diffusion Transformer) với action flow-matching
- Tốc độ: ~120 Hz (nội bộ), output chunk 16 timesteps
- Denoising steps: 4 bước (sử dụng Forward Euler integration)
- Cross-attention: Kết nối với output của System 2 để hiểu ngữ cảnh
- Embodiment MLP: Mỗi loại robot có MLP riêng để encode/decode state và action — đây là chìa khóa cho cross-embodiment
Tổng model: GR00T-N1-2B có 2.2B tham số (1.34B VLM + phần còn lại cho DiT và embodiment MLPs).
Nếu bạn đã đọc về Diffusion Policy, System 1 của GR00T N1 chính là phiên bản nâng cấp — thay vì U-Net, nó dùng Transformer với cơ chế attention linh hoạt hơn.
Dữ liệu training — Kim tự tháp 4 tầng
GR00T N1 được train trên bốn loại dữ liệu khác nhau, xếp theo hình kim tự tháp:
Tầng 1: Dữ liệu robot thực (chất lượng cao nhất)
- GR00T N1 Humanoid dataset: 88 giờ teleoperation trên Fourier GR-1 dùng VIVE trackers + Xsens gloves
- Open X-Embodiment: RT-1, Bridge-v2, DROID, RoboSet và nhiều dataset khác
- AgiBot-Alpha: 140,000 trajectories từ 100 robot
Tầng 2: Video con người
- Ego4D, EPIC-KITCHENS, Assembly-101 — video người thao tác đồ vật
- Không có motor commands → dùng VQ-VAE để học latent action space
Tầng 3: Dữ liệu mô phỏng
- DexMimicGen: 780,000 trajectories (tương đương 6,500 giờ) sinh ra chỉ trong 11 giờ trên Isaac Sim
Tầng 4: Neural trajectories (AI-generated)
- Từ 88 giờ dữ liệu thực → sinh ra 827 giờ video bằng image-to-video model
- Kết quả: tăng 40% performance so với chỉ dùng dữ liệu thực
AGIBOT World Dataset
AGIBOT World là một trong những bộ dữ liệu robot lớn nhất hiện nay, được tạo bởi AgiBot (Trung Quốc):
- AGIBOT World Beta: 1M+ trajectories, 2,976 giờ, 217 tasks, 87 skills
- 3,000+ đối tượng khác nhau, 100+ kịch bản thực tế
- 5 domain: manipulation, tool use, multi-robot collaboration, v.v.
- Finalist cho IROS 2025 Best Paper Award
GR00T N1 sử dụng AgiBot-Alpha (phiên bản trước đó, 140K trajectories) làm một trong các nguồn dữ liệu training chính.
GitHub: OpenDriveLab/AgiBot-World HuggingFace: agibot-world/AgiBotWorld-Alpha
Cài đặt môi trường
Yêu cầu phần cứng
| Mục đích | GPU tối thiểu |
|---|---|
| Fine-tuning | 1x RTX A6000 hoặc RTX 4090 (24GB VRAM) |
| Inference | RTX 4090 (44ms, ~23 Hz) hoặc Jetson AGX Orin |
| Pre-training | 1024x H100 (không khả thi cho cá nhân) |
Bước 1: Clone repository
git clone --recurse-submodules https://github.com/NVIDIA/Isaac-GR00T
cd Isaac-GR00T
Bước 2: Cài đặt dependencies
GR00T sử dụng uv — một package manager Python cực nhanh:
# Cài uv nếu chưa có
curl -LsSf https://astral.sh/uv/install.sh | sh
# Cài dependencies cho desktop GPU
bash scripts/deployment/dgpu/install_deps.sh
# Sync Python environment
uv sync && uv pip install -e .
Bước 3: Tải model weights
Model weights có sẵn trên HuggingFace:
# Cài huggingface-cli nếu chưa có
pip install huggingface_hub
# Tải model (cần ~8GB)
huggingface-cli download nvidia/GR00T-N1.6-3B
Các model có sẵn:
| Model | Tham số | Mô tả |
|---|---|---|
| GR00T-N1.6-3B | 3B | Base model mới nhất |
| GR00T-N1.6-bridge | 3B | Pre-finetuned cho WidowX |
| GR00T-N1.6-G1 | 3B | Pre-finetuned cho Unitree G1 |
| GR00T-N1.6-BEHAVIOR1k | 3B | Pre-finetuned cho Galaxea R1 Pro |
| GR00T-N1.6-DROID | 3B | Pre-finetuned trên DROID dataset |
Chuẩn bị dữ liệu
GR00T N1 sử dụng format LeRobot v2 cho dữ liệu. Nếu bạn đã quen với LeRobot framework, quá trình này khá quen thuộc.
Format dữ liệu
Mỗi trajectory cần có:
{
"observation": {
"image": np.array, # (H, W, 3) RGB image
"state": np.array, # Robot state (joints, gripper, etc.)
},
"action": np.array, # Target action
"language_instruction": str, # Mô tả task bằng ngôn ngữ
}
Sử dụng AGIBOT World
# Tải AGIBOT World Alpha dataset
huggingface-cli download agibot-world/AgiBotWorld-Alpha \
--local-dir ./data/agibot-alpha \
--repo-type dataset
# Convert sang format LeRobot v2 (script có sẵn trong repo)
python scripts/data/convert_agibot_to_lerobot.py \
--input-dir ./data/agibot-alpha \
--output-dir ./data/agibot-lerobot
Tạo modality config
Mỗi loại robot cần một modality config mô tả cấu trúc state/action:
# config/my_robot_modality.yaml
state:
joint_positions:
dim: 7 # Số bậc tự do
normalize: true
gripper:
dim: 1
normalize: true
action:
joint_positions:
dim: 7
normalize: true
gripper:
dim: 1
normalize: true
video:
cameras:
- name: front_camera
resolution: [224, 224]
Fine-tuning
Đây là phần quan trọng nhất. Fine-tuning GR00T N1 có thể thực hiện trên một GPU duy nhất.
Chiến lược fine-tuning
Trong quá trình fine-tuning:
- Đóng băng: Language component của VLM backbone
- Fine-tune: Vision encoder, state/action encoders, DiT action head
- Batch size: Lên đến 200 (nếu chỉ tune adapter), 16 (nếu tune cả vision encoder)
Lệnh fine-tuning
CUDA_VISIBLE_DEVICES=0 uv run python gr00t/experiment/launch_finetune.py \
--base-model-path nvidia/GR00T-N1.6-3B \
--dataset-path ./data/agibot-lerobot \
--embodiment-tag new_humanoid \
--modality-config-path config/my_robot_modality.yaml \
--num-gpus 1 \
--max-steps 2000 \
--global-batch-size 32 \
--learning-rate 1e-4 \
--output-dir ./checkpoints/my_finetune
Các hyperparameter quan trọng
| Parameter | Giá trị khuyến nghị | Ghi chú |
|---|---|---|
max-steps |
2000-5000 | Bắt đầu với 2000, tăng nếu cần |
global-batch-size |
16-32 | Phụ thuộc VRAM |
learning-rate |
1e-4 | Cho adapter-only; 1e-5 nếu tune vision |
warmup-steps |
100-200 | Warm up learning rate |
Tips fine-tuning
- Bắt đầu nhỏ: Fine-tune trên 100-200 demos trước, kiểm tra kết quả, rồi tăng dần
- Monitor loss: Loss nên giảm đều trong 500 steps đầu. Nếu không giảm → giảm learning rate
- Overfitting: GR00T N1.6 có 32 DiT layers (gấp đôi N1.5), dễ overfit hơn → cần regularization tốt
- Mixed precision: Mặc định dùng bf16, giữ nguyên nếu GPU hỗ trợ
Inference — Triển khai model
GR00T N1 sử dụng kiến trúc server-client cho inference:
Khởi động inference server
# Chạy server với model đã fine-tune
uv run python gr00t/policy/serve_policy.py \
--model-path ./checkpoints/my_finetune \
--port 5555
Client code (trên robot)
from gr00t.policy.server_client import PolicyClient
import numpy as np
# Kết nối đến server
policy = PolicyClient(host="localhost", port=5555)
# Vòng điều khiển
while True:
# Lấy observation từ robot
obs = {
"image": camera.get_frame(), # (224, 224, 3)
"state": robot.get_joint_positions(), # (7,)
"language_instruction": "pick up the red cup"
}
# Predict action
action, info = policy.get_action(obs)
# Gửi action đến robot
robot.execute(action)
Hiệu năng inference
| GPU | Latency | Tần số |
|---|---|---|
| RTX 5090 | 37ms | 27.3 Hz |
| H100 | 38ms | 26.3 Hz |
| RTX 4090 | 44ms | 22.8 Hz |
| DGX Spark | 89ms | 11.2 Hz |
| Jetson Thor | 105ms | 9.5 Hz |
Kết quả benchmark
GR00T N1 vượt trội so với các baseline trên hầu hết benchmark:
Simulation (100 demos mỗi task)
| Benchmark | BC Transformer | Diffusion Policy | GR00T N1 |
|---|---|---|---|
| RoboCasa | 26.3% | 25.6% | 32.1% |
| DexMimicGen | 53.9% | 56.1% | 66.5% |
| GR-1 Humanoid | 16.1% | 32.7% | 50.0% |
| Trung bình | 26.4% | 33.4% | 45.0% |
Real-world trên Fourier GR-1
| Task | Diffusion Policy (100% data) | GR00T N1 (100% data) |
|---|---|---|
| Pick-and-Place | 36.0% | 82.0% |
| Articulated Objects | 38.6% | 70.9% |
| Industrial Tasks | 61.0% | 70.0% |
| Bimanual | 62.5% | 82.5% |
| Trung bình | 46.4% | 76.8% |
Phát hiện quan trọng: GR00T N1 với chỉ 10% dữ liệu (42.6%) gần bằng Diffusion Policy dùng 100% dữ liệu (46.4%). Điều này chứng minh sức mạnh của pre-training cross-embodiment.
Isaac Lab — Vị trí trong pipeline
Isaac Lab là framework robot learning của NVIDIA, xây trên Isaac Sim (Omniverse). Trong pipeline GR00T N1, Isaac Lab đóng vai trò:
- Môi trường mô phỏng: Tạo simulation environments để đánh giá policy trước khi deploy lên robot thực
- Sinh dữ liệu: DexMimicGen (dựa trên Isaac Sim) đã sinh 780K trajectories cho training
- Benchmark: Các benchmark RoboCasa, DexMimicGen tasks, GR-1 tasks đều chạy trên Isaac Lab
- Sim-to-real: Pipeline hoàn chỉnh từ training → evaluation trong sim → deploy trên hardware
Nếu bạn quan tâm đến simulation trong robotics, Isaac Lab là công cụ không thể thiếu cho workflow GR00T.
Tiến hóa: N1 → N1.5 → N1.6
Từ khi công bố N1 (03/2025), NVIDIA đã nhanh chóng cải tiến:
N1.5:
- VLM nâng cấp lên Eagle 2.5 với khả năng grounding tốt hơn
- Thêm FLARE — căn chỉnh model với target future embeddings
- Language following: 46.6% → 93.3% (cải thiện gấp đôi)
N1.6 (phiên bản mới nhất):
- VLM chuyển sang NVIDIA Cosmos-2B với flexible resolution
- DiT tăng gấp đôi: 32 layers (thay vì 16 ở N1.5)
- Convergence nhanh hơn, hành động mượt hơn
- Cần cẩn thận hơn khi fine-tune (dễ overfit do model lớn hơn)
Workflow thực tế: Từ zero đến inference
Tóm lại, pipeline hoàn chỉnh gồm 6 bước:
- Cài đặt: Clone Isaac-GR00T, cài dependencies, tải model weights
- Thu thập dữ liệu: Teleoperation hoặc tải AGIBOT World
- Chuẩn bị dữ liệu: Convert sang LeRobot v2 format, tạo modality config
- Fine-tune: Chạy
launch_finetune.pytrên 1x RTX 4090 - Đánh giá: Test trong Isaac Lab simulation
- Deploy: Chạy server-client inference trên robot thực
Toàn bộ quy trình fine-tuning (2000 steps, 200 demos) mất khoảng 2-4 giờ trên RTX 4090 — hoàn toàn khả thi cho researcher cá nhân.
Kết luận
GR00T N1 đánh dấu bước ngoặt trong lĩnh vực humanoid robotics: lần đầu tiên một foundation model mạnh, cross-embodiment, được mở hoàn toàn cho cộng đồng. Kết hợp với dữ liệu AGIBOT World và môi trường Isaac Lab, bất kỳ ai có RTX 4090 cũng có thể bắt đầu fine-tune VLA model cho robot của mình.
Nếu bạn đang xây dựng hệ thống robot và muốn tận dụng sức mạnh của foundation models, GR00T N1 là điểm khởi đầu tốt nhất hiện tại.
Tài nguyên:
- Paper: GR00T N1 (arXiv 2503.14734)
- GitHub: NVIDIA/Isaac-GR00T
- HuggingFace: nvidia/GR00T-N1.6-3B
- AGIBOT World Dataset