80 Demo Thay Đổi Mọi Thứ
Mùa hè năm 2026 có một paper làm cộng đồng robotics không khỏi ngạc nhiên: nhóm nghiên cứu từ USC Physical Superintelligence (PSI) Lab công bố Ψ₀ (Psi-Zero) tại Robotics: Science and Systems (RSS) 2026 — paper giành Best Paper Award tại Workshop 3D-LLM/VLA của CVPR 2026.
Điều gây chú ý không phải kích thước model hay phần cứng đặc biệt. Điều gây chú ý là con số: chỉ 80 demonstrations mỗi task, Ψ₀ đánh bại GR00T N1.6 (model mạnh nhất của NVIDIA tại thời điểm đó) hơn 40% success rate, trong khi dùng ít hơn 10 lần dữ liệu.
Trong kỷ nguyên AI robotics đang chạy đua dữ liệu — ai nhiều data hơn thường thắng — đây là điều tưởng không thể. Vậy Ψ₀ làm được điều đó như thế nào?
Bài viết này đưa bạn qua toàn bộ pipeline: từ lý do thiết kế kiến trúc, cách cài đặt, thu thập dữ liệu teleoperation, training 3 giai đoạn, đến deploy trên robot thật.
Loco-Manipulation Là Gì và Tại Sao Khó?
Locomotion (di chuyển) và manipulation (thao tác tay) thường được nghiên cứu tách biệt. Một robot có thể học đi tốt, hoặc học cầm đồ vật tốt — nhưng làm cả hai đồng thời trong một chuỗi dài là bài toán hoàn toàn khác.
Ví dụ điển hình trong Ψ₀: task "Pick bottle and pour into cup" yêu cầu robot thực hiện tuần tự:
- Di chuyển đến vị trí chai nước
- Cúi người xuống (squat) để với tầm tay
- Cầm chai, xoay lắp ra
- Di chuyển đến cốc
- Rót nước vào cốc
Mỗi bước có sai số, và sai số tích lũy qua 5 bước. GR00T N1.6 với hàng trăm demo chỉ đạt 30-40% trên các task dạng này. Ψ₀ đạt ~65% chỉ với 80 demo.
Bí quyết: Ψ₀ không thắng vì nhiều data hơn — mà vì data đúng loại và học theo thứ tự đúng. Đây là triết lý "scaling the right data" thay vì "scaling data".
Kiến Trúc Triple-System: Não Bộ, Cơ Bắp, Phản Xạ
Ψ₀ dùng kiến trúc 3 tầng gọi là System-0 / System-1 / System-2, lấy cảm hứng từ lý thuyết tâm lý học về hai hệ tư duy của Daniel Kahneman:

System-2: Vision-Language Backbone (Tư Duy Chậm)
- Model: Qwen3-VL-2B-Instruct (fine-tuned)
- Nhiệm vụ: Hiểu ngôn ngữ (task instruction) và hình ảnh từ camera đầu robot
- Cơ chế: Autoregressive next-token prediction trên video egocentric của người thật
System-2 là "bộ não" cao cấp. Nó không ra lệnh cụ thể cho từng khớp, mà tạo ra visual-action representations giàu ngữ nghĩa từ hàng trăm giờ video người thao tác đồ vật.
System-1: Action Expert (Tư Duy Nhanh)
- Model: Multimodal Diffusion Transformer (MM-DiT), ~500M parameters
- Nhiệm vụ: Dự đoán action chunks cho toàn bộ cơ thể robot (whole-body, 29-36 DoF)
- Đặc điểm: Flow-matching (kiểu Stable Diffusion 3), không phải autoregressive
System-1 là "cơ bắp" — nhận embedding từ System-2 và output exact joint angles theo thời gian thực. Tại sao MM-DiT tốt hơn Naive DiT? MM-DiT dùng dual-modulation với joint attention giữa language/vision tokens và action tokens — cho phép hai modality "nói chuyện" với nhau sâu hơn thay vì ghép nối đơn giản.
System-0: RL Tracking Controller (Phản Xạ Thực Thi)
- Model: AMO (Autonomous Motion Optimizer) — RL policy
- Nhiệm vụ: Ổn định hóa phần thân dưới (lower-body stabilization)
- Cách hoạt động: Nhận high-level velocity command từ System-1, xử lý locomotion thực tế
System-0 là "phản xạ tủy sống" — lo phần đi lại và giữ thăng bằng để System-1 tập trung hoàn toàn vào manipulation. Đây là phân công lao động khôn ngoan mà nhiều VLA paper bỏ qua.
Xem phân tích kiến trúc Ψ₀ chi tiết để hiểu sâu hơn về cơ chế attention và flow-matching.
Tại Sao Decoupled Training Thắng Joint Training?
Nhiều VLA hiện tại co-train trên dữ liệu người + robot cùng lúc. Ψ₀ từ chối làm vậy — và đây là lý do:
Người và robot có kinematics hoàn toàn khác nhau: con người có 48 DoF task-space nhưng robot G1 chỉ có 29 DoF. Nếu train cùng nhau, model sẽ "lẫn lộn" giữa hai distribution và không học tốt cái nào.
Giải pháp của Ψ₀ — học riêng biệt, theo thứ tự:
- Pre-train System-2 trên video người → học semantic understanding
- Post-train System-1 trên dữ liệu robot → học robot-specific control
- Fine-tune cả system trên task demos của robot
Kết quả: 80 demo per task đủ để học kỹ năng mới — vì System-2 đã có nền tảng ngữ nghĩa mạnh từ hàng trăm giờ video người.
Cài Đặt Môi Trường
Yêu cầu phần cứng:
- Python 3.10
- NVIDIA GPU (RTX 3090/4090/5090, hoặc A100 cho training đầy đủ)
- CUDA sm_120+ cho training; inference chạy được trên RTX 3090
Bước 1: Clone và Setup
# Cài uv — package manager nhanh hơn pip nhiều lần
curl -LsSf https://astral.sh/uv/install.sh | sh
# Clone repo
git clone [email protected]:physical-superintelligence-lab/Psi0.git
cd Psi0
# Tạo virtual environment với Python 3.10
uv venv .venv-psi --python 3.10
source .venv-psi/bin/activate
# Cài dependencies — GIT_LFS_SKIP_SMUDGE để không download model weights ngay
GIT_LFS_SKIP_SMUDGE=1 uv sync --group serve --group viz --group psi
# Flash Attention bắt buộc phải dùng đúng version này
uv pip install flash_attn==2.7.4.post1 --no-build-isolation
Bước 2: Verify cài đặt
python -c "import psi; print(psi.__version__)"
Nếu in ra version number mà không có lỗi → môi trường đã sẵn sàng.
Thu Thập Dữ Liệu: Teleoperation Setup
Để fine-tune trên task mới, bạn cần thu thập 80 demonstrations bằng teleoperation. USC PSI Lab dùng setup sau:

Phần cứng cần thiết:
- Robot: Unitree G1 + Dex3-1 dexterous hands (7 DoF/tay)
- Headset: PICO 4 Ultra (VR headset theo dõi vị trí/hướng cổ tay)
- Gloves: MANUS Quantum Metagloves (capture góc khớp ngón tay)
- Camera: Intel RealSense D435i gắn trên đầu robot (head-mounted egocentric)
Quy trình thu thập:
- Người thao tác đeo headset + gloves
- Wrist tracker → IK giải ngược → joint angles phần thân trên (upper-body)
- Locomotion (đi bộ, cúi người) được điều khiển tách biệt qua RL policy của System-0
- Ghi data: RGB frames + joint angles (36 DoF) + timestamps
Định dạng dữ liệu: LeRobot-compatible — có thể dùng công cụ của LeRobot để visualize và process trajectory. Xem hướng dẫn LeRobot G1 whole-body để setup LeRobot toolchain.
Mỗi task cần khoảng 80 trajectories chất lượng cao. Thực tế: khoảng 1-2 giờ thu thập cho 80 demos, tùy độ phức tạp của task.
Nếu chưa có hardware Unitree G1: Bắt đầu với SIMPLE simulator (simulation environment do USC PSI Lab build riêng cho Ψ₀) — xem script finetune-simple-psi0.sh ở phần dưới.
Training Pipeline 3 Giai Đoạn
Đây là trái tim của Ψ₀. Ba giai đoạn không thể đảo thứ tự — mỗi giai đoạn build trên nền tảng của giai đoạn trước.
Giai Đoạn 1: Pre-Training System-2 trên Video Người

Dataset:
- EgoDex: ~829 giờ video egocentric của người, 48 DoF task-space actions
- Humanoid Everyday (HE): ~31 giờ video robot G1/H1
Tokenizer: FAST (Frequency-based Action Sequence Tokenizer)
- Nén 48 DoF → 20 tokens, L1 loss = 1.95×10⁻⁴
- Objective: autoregressive next-action token prediction — giống GPT nhưng predict movement tokens thay vì words
Lệnh training:
# Pre-train trên EgoDex (200K steps)
bash scripts/train/psi0/pretrain-egodex-psi0-fast.sh
# Pre-train trên Humanoid Everyday (30K steps)
bash scripts/train/psi0/pretrain-he-psi0-fast.sh
Compute: 64 A100 GPUs, 10 ngày, 230K steps.
Không có 64 A100? Dùng pre-trained checkpoint từ HuggingFace:
USC-PSI-Lab/psi-model. Đây là checkpoint sau khi USC PSI Lab đã train xong — bạn chỉ cần chạy từ Giai Đoạn 2 hoặc 3.
Giai Đoạn 2: Post-Training System-1 (Action Expert)
Sau khi System-2 có representation tốt, bước tiếp là train System-1 để học robot-specific control.
Dataset: Humanoid Everyday — 3M frames, 36 DoF joint space (Unitree G1)
Chi tiết kiến trúc:
- MM-DiT với dual-modulation (không phải standard DiT)
- Joint attention giữa VL tokens và action tokens
- Flow-matching objective thay vì DDPM noise prediction — nhanh hơn và ổn định hơn
# Post-train action expert trên humanoid data
bash scripts/train/psi0/posttrain-he-psi0.sh
Compute: 32 A100 GPUs, 30 giờ, 30K steps (batch size 2048).
Giai Đoạn 3: Fine-Tuning trên Task Data (80 Demo)
Đây là giai đoạn bạn thực sự tự chạy trên hardware của mình với 80 demos đã thu thập.
# Thay $task bằng tên task của bạn
export task=Pick_bottle_and_turn_and_pour_into_cup
# Fine-tune trên real robot data
bash scripts/train/psi0/finetune-real-psi0.sh $task
# Hoặc fine-tune trên simulation data
bash scripts/train/psi0/finetune-simple-psi0.sh $task
Hyperparameters:
- 40K training steps
- Batch size: 128
- Learning rate: 1e-4 với cosine scheduler
Thời gian: Với RTX 4090, khoảng 3-4 giờ mỗi task. Model thường converge sau khoảng 20K steps.
Real-Time Chunking (RTC): Khắc Phục Jitter
Một vấn đề thực tế khi deploy VLA: inference latency gây jitter (run/giật) trong chuyển động robot. Khi model cần 100ms để predict action chunk tiếp theo, robot bị dừng giật cục mỗi 100ms.
Ψ₀ giải quyết bằng Real-Time Action Chunking (RTC): trong quá trình training, mask d∈[1,6] action tokens đầu tiên khỏi loss calculation. Điều này dạy model "bỏ qua" phase khởi động khi cần execute action chunk ngay lập tức.
Hiệu quả thực tế: chuyển động robot mượt mà hơn đáng kể, không bị giật giữa các action chunk.
Inference và Deploy
# Serve model với RTC mode
bash ./scripts/deploy/serve_psi0-rtc.sh
# Hoặc explicit với parameters:
uv run --active --group psi --group serve serve_psi0 \
--host 0.0.0.0 \
--port 22085 \
--run-dir=$run_dir \
--ckpt-step=$ckpt_step \
--action-exec-horizon=24 \
--rtc
Deploy client trên robot:
bash ./real/scripts/deploy_psi0-rtc.sh
Parameters quan trọng:
--action-exec-horizon=24: số action steps thực thi trước khi query model lại--rtc: bật Real-Time Chunking mode--port 22085: port mặc định của PSI inference server
Yêu cầu phần cứng cho inference: RTX 3090 hoặc 4090 đủ tốt. A100 không cần thiết cho deployment.
Với deploy qua mạng (robot ở xa inference server), độ trễ mạng dưới 10ms thường hoạt động ổn với horizon=24.
Kết Quả: Con Số Biết Nói

Ψ₀ được đánh giá trên 8 task loco-manipulation thực tế, mỗi task gồm 3-5 sub-task liên tiếp (grasping, pouring, rotating, walking, squatting, carrying, pushing, pulling):
| Model | Overall Success Rate | Dữ liệu training |
|---|---|---|
| Ψ₀ (Ours) | ~65% | 80 demos/task |
| GR00T N1.6 | ~30-40% | 800+ demos/task |
| π0.5 | ~25-30% | 500+ demos/task |
| EgoVLA | ~10-15% | N/A |
| Diffusion Policy | ~0-5% | N/A |
| ACT | ~0-5% | N/A |
Ablation study trên task "Pick bottle and pour":
| Cấu hình | Overall |
|---|---|
| Không pre-train | 0/10 (0%) |
| Chỉ pre-train | 2/10 (20%) |
| + Post-train | 8/10 (80%) |
| + RTC | 9/10 (90%) |
| MM-DiT (full model) | 9/10 (90%) |
Ablation cho thấy từng giai đoạn đều thiết yếu — thiếu bất kỳ bước nào là hiệu suất giảm mạnh.
Insights: Điều Chuyên Gia Thấy, Beginner Bỏ Qua
1. "Scaling the right data" quan trọng hơn "scaling data"
Ψ₀ dùng ít dữ liệu hơn 10 lần nhưng thắng vì chất lượng và curriculum ordering đúng. Bài học cho tất cả mọi người: trước khi thu thập thêm data, hãy kiểm tra xem data hiện tại có đúng distribution không.
2. Decoupled learning thắng joint training khi domain gap lớn
Người và robot có kinematics khác nhau cơ bản. Co-training khiến model "gặp khó" khi phải handle hai distribution cùng lúc. Tách học ra cho phép mỗi giai đoạn chuyên biệt hóa đúng mức cần thiết.
3. System-0 (RL locomotion) là nền tảng thường bị bỏ qua
Nhiều VLA paper assume locomotion đã ổn định và không model hóa nó. Ψ₀ explicit hóa System-0 như một thành phần kiến trúc — điều này cho phép System-1 tập trung hoàn toàn vào manipulation mà không cần "lo" về balance.
4. 80 demo là sweet spot, không phải con số kỳ diệu
80 demo đa dạng cao (nhiều góc nhìn, điều kiện ánh sáng, vị trí bắt đầu) tốt hơn 500 demo đơn điệu. Fine-tuning hoạt động vì pre-trained foundation đủ mạnh — không phải vì 80 là con số kỳ diệu.
5. So sánh với GR00T N1.6 theo góc độ data efficiency
GR00T N1.6 dùng Cosmos Reason cần hàng trăm đến hàng nghìn demos và vẫn underperform Ψ₀. Điều này không có nghĩa GR00T tệ — mà có nghĩa kiến trúc decoupled của Ψ₀ là bước tiến thực sự về data efficiency.
Pitfalls Khi Tự Chạy Psi-Zero
- Flash Attention version mismatch: Bắt buộc dùng
flash_attn==2.7.4.post1. Version khác gây lỗi khó debug — thường là CUDA kernel mismatch. - CUDA compute capability: Cần sm_120+ cho training đầy đủ (RTX 3090 là sm_86 — ổn cho inference, có thể bị giới hạn ở một số kernel training).
- LFS pointer bẫy:
GIT_LFS_SKIP_SMUDGE=1khi clone để tránh download model weights ngay — chỉ download khi cần qua HuggingFace. - Demo thiếu đa dạng: Nếu 80 demos đều record trong 1 điều kiện ánh sáng/góc nhìn, model sẽ overfit. Tối thiểu 3 điều kiện ánh sáng và 2 góc camera khác nhau.
- Action horizon: Nếu robot bị giật, thử giảm
--action-exec-horizontừ 24 xuống 16. - Task naming: Tên task phải dùng underscore thay space (vd:
Pick_bottle_and_pourkhông phảiPick bottle and pour).
Tài Nguyên
- GitHub: physical-superintelligence-lab/Psi0 — License Apache 2.0
- Paper: arXiv 2603.12263 — RSS 2026
- Model weights: huggingface.co/USC-PSI-Lab/psi-model
- Dataset: huggingface.co/datasets/USC-PSI-Lab/psi-data
- Project page: psi-lab.ai/Psi0


