NVIDIA Isaac GR00T N1.7 — 人形機器人 VLA 基礎模型完整教學
本教學針對「想把人形機器人 VLA 模型整合進 sim-to-real 管線、或想在自家機器人上 finetune 的工程師」撰寫。涵蓋安裝、架構、實際應用、資安、整合進 NVIDIA Physical AI 全家桶(Cosmos / Nemotron / Isaac Sim)的工作流。
目錄
- 專案定位
- 安裝指南
- 核心架構解析
- Helper Scripts 與 CLI 詳細用法
- 應用場景
- 資安掃描報告
- FAQ
- 進階技巧
- 整合進其他工作流(NVIDIA Physical AI 全家桶)
- 重點摘要 Checklist
- 進一步閱讀
1. 專案定位
1.1 這是什麼
NVIDIA Isaac GR00T N1.7 是 NVIDIA 官方開源的 人形機器人基礎模型 (Humanoid Robot Foundation Model),採用 Vision-Language-Action (VLA) 範式。輸入是「機器人攝影機影像 + 機器人本體感測 (proprioception state) + 自然語言指令」,輸出是「未來 N 步的連續動作軌跡 (continuous action trajectory)」。
GR00T 名稱來源:Generalist Robot 00 Technology(00 表示 “the foundational generation”)。N1.7 = N1 系列的第 7 個 minor release。
核心技術選擇:
| 模組 | N1.7 採用 | 備註 |
|---|---|---|
| VLM Backbone | Cosmos-Reason2-2B(Qwen3-VL 架構) | 取代 N1.6 的 Eagle backbone |
| Action Head | Diffusion Transformer (DiT) | 對連續動作 denoise,類似 RDT-1B / π0 |
| 動作表示 | Relative EEF (End-Effector Frame) | 動作為「相對於當前 pose 的 delta」,跨 embodiment 共用 |
| 預訓練資料 | 多 embodiment 機器人 + 20K 小時 EgoScale 人類影片 | 人類影片可直接用 relative EEF 表示,無需轉換 |
| 資料格式 | LeRobot v2 + meta/modality.json | 與 HuggingFace LeRobot 生態相容 |
| 部署 | PyTorch / ONNX / TensorRT | 支援 Jetson Thor、Orin、DGX Spark、x86 H100 |
模型參數:3B(GR00T-N1.7-3B)。
1.2 為什麼重要 — NVIDIA Physical AI 三電腦戰略
NVIDIA 在 GTC 主題演講中提出 Physical AI 的 「三電腦」架構:
| 電腦 | 硬體 | 軟體 | 角色 |
|---|---|---|---|
| AI Factory | DGX H100 / B200 | PyTorch / Megatron / NeMo | 訓練基礎模型 |
| AI Sim | Omniverse + GPU | Isaac Sim / Isaac Lab + Cosmos | 大規模合成資料 + sim-to-real 訓練 |
| AI Robot | Jetson Thor / DRIVE Thor | TensorRT + Isaac ROS | 在實體機器人上即時推論 |
GR00T 同時是這三台電腦的輸出與輸入:
- 在 AI Factory 上預訓練(H100 cluster)
- 在 AI Sim 上用 Cosmos 生成的合成資料 + Isaac Sim 環境做 sim-to-real fine-tune
- 在 AI Robot 上用 TensorRT 量化後即時跑(Jetson Thor ~22Hz,5090 ~76Hz @ FlashVLA-realtime engine — 見 issue #660)
直白講:GR00T 是 NVIDIA 把「LLM in the cloud」典範搬到「機器人本體」的旗艦案例。Cosmos 是它的「世界模擬器」,Nemotron Nano Omni 是它的「高層大腦」,GR00T 自己負責「動作執行」。
1.3 在 NVIDIA Isaac / Physical AI 生態的定位
1NVIDIA Isaac 平台家族
2├── Isaac Sim — Omniverse-based robotics simulator
3├── Isaac Lab — RL training framework on top of Isaac Sim
4├── Isaac ROS — ROS 2 GPU-accelerated packages
5└── Isaac GR00T — Humanoid foundation model ← 本 repo
6
7NVIDIA Physical AI 模型家族
8├── Cosmos (WFM) — World Foundation Models, 物理世界生成
9├── Nemotron — LLM 家族 (Nano / Super / Ultra / Nano Omni)
10└── GR00T — VLA 人形機器人 ← 本 repo
與其他 NVIDIA 開源 repo 的關係(本批同步處理的姊妹專案):
| 姊妹專案 | 是什麼 | 與 GR00T 的關係 | 成熟度 |
|---|---|---|---|
| NVIDIA-NeMo/Nemotron | LLM 家族 — Nano / Super / Ultra / Nano Omni | Nano Omni 可作為 GR00T 上層「任務分解大腦」(語言指令→子目標→GR00T 執行) | 生產級(PR 不收) |
| nvidia/cosmos | World Foundation Models — 物理世界生成 / 模擬 | 共設計關係:Cosmos 生成合成軌跡資料 + 場景 → GR00T 用合成資料訓練;N1.7 的 VLM backbone 直接叫 Cosmos-Reason2-2B | 生產級 |
| NVlabs/alpamayo | NVlabs 自駕車 / 機器人研究專案 | 研究血脈相鄰(NVlabs = NVIDIA Research,GR00T 從 NVlabs 過渡到 NVIDIA 官方) | 研究 |
| NVlabs/Nemotron-Labs-Diffusion | NVlabs 的 diffusion 研究 | policy diffusion 重疊:兩者都用 diffusion transformer,可能共用 head 設計 | 研究 |
核心關係圖:
flowchart LR
Nemotron[Nemotron Nano Omni
多模態 LLM
高層任務分解] --> GR00T
Cosmos[Cosmos WFM
合成資料 + 世界模擬] --> GR00T
IsaacSim[Isaac Sim / Isaac Lab
實時模擬器] --> GR00T
GR00T[GR00T N1.7
VLA Foundation Model
3B params] --> Robot[實體人形機器人
Unitree G1 / Boston Dynamics
Apptronik / Figure / 1X]
NVlabsDiff[NVlabs Diffusion
研究 policy head] -.research.-> GR00T
Alpamayo[NVlabs Alpamayo
research lineage] -.shared infra.-> GR00T
1.4 N1.7 vs N1.6 vs N1.5 — 演進軌跡
| 版本 | 發佈 | VLM Backbone | 關鍵變化 |
|---|---|---|---|
| N1 | 2025-06 | 自研 | 首版開源,arXiv 論文 |
| N1.5 | 2025-12 | 自研改進 | 更多 embodiment 支援 |
| N1.6 | 2026-04 | Eagle | 引入 EEF 動作空間 |
| N1.7 | 2026-04 EA | Cosmos-Reason2-2B (Qwen3-VL) | Relative EEF + 20K 小時人類影片預訓練;原生 aspect ratio 圖像處理(不需 padding) |
1.5 支援的機器人 (Embodiments)
從 commit 3df8b38 與 README、gr00t/policy/gr00t_n1d7/ 可看出本 release 支援的 embodiment tag:
Pretrain Embodiments(base model 可直接 zero-shot):
OXE_DROID_RELATIVE_EEF_RELATIVE_JOINT— DROID 資料集(Franka 系列研究機器人)LIBERO_PANDA— Franka Panda(LIBERO benchmark)SIMPLER_ENV_WIDOWX— WidowX(SimplerEnv Bridge)SIMPLER_ENV_GOOGLE— Google Robot(SimplerEnv Fractal)UNITREE_G1— 宇樹 G1 人形(解耦 WBC)UNITREE_G1_SONIC— 宇樹 G1 + SONIC 全身控制(GEAR-SONIC)NEW_EMBODIMENT— 自訂機器人 fine-tune 用
已釋出的 finetuned checkpoint:
| Checkpoint | HF 路徑 | Embodiment |
|---|---|---|
nvidia/GR00T-N1.7-3B | base model 3B | 所有 pretrain tag |
nvidia/GR00T-N1.7-LIBERO | LIBERO 任務 | LIBERO_PANDA |
nvidia/GR00T-N1.7-DROID | DROID 任務 | OXE_DROID_* |
nvidia/GR00T-N1.7-SimplerEnv-Bridge | WidowX | SIMPLER_ENV_WIDOWX |
nvidia/GR00T-N1.7-SimplerEnv-Fractal | Google Robot | SIMPLER_ENV_GOOGLE |
社群整合的真實機器人(從 issues 看出):1X、Boston Dynamics Atlas、Unitree H1/G1、Figure 02、Apptronik Apollo、AgiBot、SO100(低成本研究臂)、Sharpa(社群用 human retarget)。
2. 安裝指南
2.1 硬體需求
| 場景 | 最低 | 推薦 |
|---|---|---|
| 推論 | 1× GPU 16 GB VRAM(RTX 4090 / Jetson Thor / Orin / DGX Spark) | L40 / H100 |
| Fine-tune | 1× GPU 40 GB VRAM(A6000) | H100 / L40 cluster |
| Pretrain(重做) | 不建議 | 256× H100 級別 |
CUDA / Python 版本矩陣(很重要,跨平台容易踩雷):
| 平台 | CUDA | Python | 註記 |
|---|---|---|---|
| dGPU x86_64(4090/L40/H100) | 12.8 | 3.10 | 預設 |
| Jetson Orin(JetPack 6.2) | 12.6 | 3.10 | aarch64 |
| Jetson Thor(JetPack 7.1) | 13.0 | 3.12 | aarch64 + 需要 triton patch |
| DGX Spark(GB10) | 13.0 | 3.12 | aarch64 + 需要 triton patch |
2.2 dGPU x86_64 安裝(最常見)
1# 1. 安裝 git-lfs(必要 — demo_data 是 parquet)
2sudo apt install git-lfs && git lfs install
3
4# 2. clone 含 submodule(external_dependencies/ 是 submodule)
5git clone --recurse-submodules https://github.com/NVIDIA/Isaac-GR00T
6cd Isaac-GR00T
7
8# 3. 裝 uv(NVIDIA 全部 robot stack 都改用 uv 了)
9curl -LsSf https://astral.sh/uv/install.sh | sh
10
11# 4. 裝 FFmpeg(torchcodec 需要)
12sudo apt-get update && sudo apt-get install -y ffmpeg
13
14# 5. uv 一鍵安裝
15uv sync --python 3.10
16
17# 6. 驗證
18uv run python -c "import gr00t; print('GR00T installed successfully')"
2.3 Jetson Thor / DGX Spark / Orin(aarch64)
aarch64 平台強制使用 torchcodec 作為影片 backend(decord/pyav 不支援)。
1# Thor
2bash scripts/deployment/thor/install_deps.sh
3source .venv/bin/activate
4source scripts/activate_thor.sh
5
6# Spark
7bash scripts/deployment/spark/install_deps.sh
8source .venv/bin/activate
9source scripts/activate_spark.sh
10
11# Orin
12bash scripts/deployment/orin/install_deps.sh
13source .venv/bin/activate
14source scripts/activate_orin.sh
2.4 已知踩雷區
從 README 收集的 「警告框」全清單:
flash-attn每次uv run都顯示重裝:uv 已知行為(重新校驗 wheel URL),實際是 cache hit,2-3 秒。要消除把pyproject.toml的[tool.uv.sources]flash-attn 移除,但下次uv lock會 build from source。CUDA_HOME unset導致 fine-tune 失敗:跑bash scripts/deployment/dgpu/install_deps.sh或手動export CUDA_HOME=/usr/local/cuda。- CUDA 13.x triton 不認版本:跑
uv run bash scripts/patch_triton_cuda13.sh。 - GB300 (sm_103) torch.compile 失敗:triton 3.3.1 不支援;改用 eager 或 TensorRT。
- Ubuntu 20.04 (glibc < 2.35) 上 flash-attn import error:
uv pip install flash-attn==2.7.4.post1 --no-binary flash-attn --no-cache從原始碼編(10-30 min)。 uv run python破壞 aarch64 venv (Spark):未解,issue #675 標 OPEN,目前 workaround 是用source .venv/bin/activate後直接python。
2.5 Docker 替代方案
1cd docker && cat README.md
docker/ 提供 dGPU + Orin + Thor + Spark 四套 Dockerfile。所有 base image 都基於 NGC PyTorch container。
3. 核心架構解析
3.1 整體模型架構
GR00T 是典型 VLA (Vision-Language-Action) 架構,但有兩個 NVIDIA 自家特色:
- VLM backbone 直接用 Cosmos-Reason2-2B(不是常見的 SigLIP + Llama 組合)
- Action head 是 diffusion transformer (DiT),不是 autoregressive token prediction
flowchart TB
Cam[攝影機影像
任意 aspect ratio
無需 padding] --> VLM
Lang[語言指令
e.g. pick the pear] --> VLM
State[Proprioception
關節角度 / EEF pose] --> StateEnc
VLM[Cosmos-Reason2-2B VLM
Qwen3-VL 架構
~2B params]
StateEnc[State Encoder
MLP] --> Fusion
VLM --> Fusion[Cross-Attention Fusion]
EmbTag[Embodiment Tag
UNITREE_G1 / LIBERO_PANDA
...] --> Fusion
Fusion --> DiT[Diffusion Transformer
Action Head
~1B params]
Noise[Gaussian Noise z_t] --> DiT
DiT --> Action[Relative EEF Action
未來 N 步 chunked]
Action --> Decoder[Action Decoder
per-embodiment]
Decoder --> Robot[Robot Joint / EEF Command]
3.2 為什麼是 Relative EEF?— 跨 embodiment 的關鍵
傳統 robot policy 預測「絕對關節角度」或「絕對 EEF pose」。問題:
- 不同機器人關節數不同(7-DoF vs 14-DoF vs 28-DoF 全身)
- 不同機器人 home pose 不同
- 人類影片沒有關節數
GR00T N1.7 改用 Relative EEF:每一步輸出「相對於當前 pose 的 delta (Δx, Δy, Δz, Δrot, Δgripper)」。優點:
- 人類影片可用 hand pose 估計直接轉換成 EEF delta
- 不同機器人共用同一個 action space
- 訓練資料可自由混合(20K 小時人類 + 多 embodiment 機器人 demos)
每個 embodiment 在輸出端有一個輕量 per-embodiment decoder 把 EEF delta 轉成該機器人的 joint command。
3.3 訓練 / 部署 pipeline
flowchart LR
A[Robot Demos
+ Human Videos
20K hours] --> B[LeRobot v2 Format
+ modality.json]
B --> C[Pretrain on H100
cluster
~3B model]
C --> D[Base Checkpoint
GR00T-N1.7-3B]
D --> E1[Zero-Shot Inference
on pretrain embodiments]
D --> E2[Fine-tune on
new embodiment
~100-2000 demos]
E2 --> F[Posttrained Checkpoint
GR00T-N1.7-LIBERO / DROID / ...]
E1 --> G[Open-Loop Eval
predicted vs GT]
F --> G
G --> H[Closed-Loop Eval
Server-Client ZMQ]
H --> I1[Sim Deploy
Isaac Sim / MuJoCo / SimplerEnv]
H --> I2[Real Robot Deploy
via PolicyClient]
I2 --> J[TensorRT Optimize
Jetson Thor 22Hz / 5090 76Hz]
3.4 NVIDIA Physical AI 三電腦架構 — GR00T 的位置
flowchart TB
subgraph AIFactory[AI Factory - DGX cluster]
Pretrain[Pretrain GR00T
on H100/B200]
Nemotron_Train[Train Nemotron
Megatron-Bridge]
end
subgraph AISim[AI Sim - Omniverse]
IsaacSim[Isaac Sim
物理引擎模擬]
IsaacLab[Isaac Lab
RL Training]
Cosmos2[Cosmos WFM
合成資料生成]
end
subgraph AIRobot[AI Robot - Jetson Thor]
TRT[TensorRT inference
GR00T N1.7]
ROS[Isaac ROS
感測與控制]
Robot2[實體人形機器人]
end
AIFactory --> AISim
AISim -.synthetic data.-> AIFactory
AIFactory -- 模型權重 --> AIRobot
AISim -- sim-to-real --> AIRobot
AIRobot -.real-world feedback.-> AIFactory
3.5 Repo 目錄結構
1Isaac-GR00T/
2├── gr00t/ # 主 Python 套件
3│ ├── model/
4│ │ ├── modules/ # DiT / Qwen3 backbone / 各 module
5│ │ └── gr00t_n1d7/ # N1.7 模型實作(processing / setup / 主類別)
6│ ├── data/ # LeRobot 資料載入器、modality.json 解析
7│ ├── policy/
8│ │ ├── gr00t_policy.py # Gr00tPolicy 主類別(33K 行)
9│ │ ├── replay_policy.py # ReplayPolicy(debug 用)
10│ │ └── server_client.py # ZMQ server/client 對外介面
11│ ├── eval/ # open-loop / closed-loop / sim 評估
12│ ├── experiment/ # launch_finetune.py / launch_train.py
13│ ├── configs/ # 預設訓練 / 微調 config
14│ ├── deployment/ # 部署相關(ONNX/TRT export)
15│ └── utils/
16├── scripts/
17│ ├── deployment/
18│ │ ├── dgpu/ # x86_64 安裝
19│ │ ├── thor/orin/spark/ # 各 aarch64 平台
20│ │ └── standalone_inference_script.py
21│ ├── eval/ # check_sim_eval_ready.py
22│ ├── lerobot_conversion/ # convert_v3_to_v2.py
23│ ├── activate_orin.sh / activate_spark.sh / activate_thor.sh
24│ ├── download_droid_sample.py # 抓 DROID 資料
25│ ├── download_simplerenv_sample.py
26│ ├── patch_triton_cuda13.sh
27│ └── repair_lerobot_metadata.py
28├── examples/ # 各 benchmark walkthrough
29│ ├── DROID/ LIBERO/ SimplerEnv/ SO100/
30│ ├── robocasa-gr1-tabletop-tasks/
31│ ├── mask-guided-background-suppression/
32│ └── finetune.sh # 一鍵 fine-tune 範例
33├── demo_data/ # 已內附的 LeRobot 資料
34│ ├── droid_sample/ libero_demo/
35│ ├── simplerenv_bridge_sample/ simplerenv_fractal_sample/
36│ ├── cube_to_bowl_5/ cube_to_bowl_5_with_mask/
37├── getting_started/ # 7 份 markdown + 1 jupyter
38│ ├── policy.md (23K) # Policy API 完整指南
39│ ├── data_preparation.md (9K)
40│ ├── data_config.md (11K)
41│ ├── finetune_new_embodiment.md (6K)
42│ ├── hardware_recommendation.md (5K)
43│ ├── real_world_deployment.md (20K)
44│ └── GR00T_inference.ipynb (440K — 完整 walkthrough notebook)
45├── tests/ docker/ tools/
46├── FAQ.md (6K)
47├── README.md (28K)
48├── pyproject.toml + uv.lock # uv 管理
49└── ATTRIBUTIONS.md (952K — 內含所有 3rd-party 授權)
3.6 設計品味評論
🟢 好品味:
- 用 LeRobot v2 + modality.json 擴充,不重新發明資料格式 — 直接接 HuggingFace 生態
- Relative EEF 大幅簡化跨 embodiment / 跨人類影片的問題(消除「絕對 vs 相對」「不同關節數」兩個特殊情況)
- Server-client 架構讓 inference 和機器人本體解耦 — Jetson 本體不夠強就把 policy 跑在 server H100,ZMQ 走網路
- 跨平台 install 用統一
uv+ 各平台一個install_deps.sh— 簡化 CUDA / triton / flash-attn 三件套地獄 - ReplayPolicy 設計(不用 model 就 replay 資料動作)對 debug 環境設定極有用
🟡 可接受但有設計債:
gr00t_policy.py33K 行單檔,未來會難維護processing_gr00t_n1d7.py750+ 行也偏胖- 模型權重 NVIDIA Open Model License 而不是 Apache-2.0 — 商用需要看條款,這是 GR00T 「開源」最大的星號
- EA 階段不收 PR,社群修補只能等 GA
4. Helper Scripts 與 CLI 詳細用法
4.1 一鍵 zero-shot 推論(最快上手)
1uv run python scripts/deployment/standalone_inference_script.py \
2 --model-path nvidia/GR00T-N1.7-3B \
3 --dataset-path demo_data/droid_sample \
4 --embodiment-tag OXE_DROID_RELATIVE_EEF_RELATIVE_JOINT \
5 --traj-ids 1 2 \
6 --inference-mode pytorch \
7 --action-horizon 8
第一次跑會自動從 HuggingFace 下載 ~6 GB base model。
4.2 啟動 Policy Server
1uv run python gr00t/eval/run_gr00t_server.py \
2 --model-path nvidia/GR00T-N1.7-3B \
3 --embodiment-tag OXE_DROID_RELATIVE_EEF_RELATIVE_JOINT \
4 --device cuda:0 \
5 --host 0.0.0.0 --port 5555
預設用 ZMQ 在 port 5555 監聽。對外暴露兩個 RPC:
get_action(obs)— 回傳未來 N 步動作 chunkreset()— 清空 policy state(如有 temporal smoothing buffer)
4.3 Python 客戶端
1from gr00t.policy.server_client import PolicyClient
2
3policy = PolicyClient(host="localhost", port=5555)
4env = YourEnvironment()
5obs, info = env.reset()
6
7while not done:
8 action, info = policy.get_action(obs)
9 obs, reward, done, truncated, info = env.step(action)
obs 是 dict:
1obs = {
2 "video.head_camera": np.ndarray, # (T, H, W, 3) uint8
3 "video.left_wrist": np.ndarray,
4 "state.joint": np.ndarray, # (T, joint_dim) float32
5 "state.eef_pose": np.ndarray, # (T, 7) — xyz + quat
6 "annotation.human.action.task_description": "pick the red cube",
7}
action 也是 dict(依 embodiment 不同 keys 不同):
1action = {
2 "action.eef_translation": np.ndarray, # (action_horizon, 3) — Δx Δy Δz
3 "action.eef_rotation": np.ndarray, # (action_horizon, 3) — axis-angle delta
4 "action.gripper": np.ndarray, # (action_horizon, 1) — 0=open 1=close
5}
4.4 Fine-tune(單 GPU)
1CUDA_VISIBLE_DEVICES=0 uv run python \
2 gr00t/experiment/launch_finetune.py \
3 --base-model-path nvidia/GR00T-N1.7-3B \
4 --dataset-path demo_data/cube_to_bowl_5 \
5 --embodiment-tag NEW_EMBODIMENT \
6 --modality-config-path examples/SO100/so100_config.py \
7 --num-gpus 1 \
8 --output-dir /tmp/test_finetune \
9 --max-steps 2000 \
10 --global-batch-size 32 \
11 --dataloader-num-workers 4
4.5 Fine-tune(多 GPU,8× H100)
1uv run torchrun --nproc_per_node=8 --master_port=29500 \
2 gr00t/experiment/launch_finetune.py \
3 --base-model-path nvidia/GR00T-N1.7-3B \
4 --dataset-path demo_data/cube_to_bowl_5 \
5 --embodiment-tag NEW_EMBODIMENT \
6 --modality-config-path examples/SO100/so100_config.py \
7 --num-gpus 8 \
8 --output-dir /tmp/test_finetune_8gpu \
9 --max-steps 2000 \
10 --global-batch-size 32 \
11 --dataloader-num-workers 4 \
12 --use-wandb
注意是 uv run torchrun 而不是 torchrun(後者用系統 Python,找不到 venv 套件)。
4.6 Open-loop 評估
1uv run python gr00t/eval/open_loop_eval.py \
2 --dataset-path demo_data/droid_sample \
3 --embodiment-tag OXE_DROID_RELATIVE_EEF_RELATIVE_JOINT \
4 --model-path nvidia/GR00T-N1.7-DROID \
5 --traj-ids 0 1 2 \
6 --action-horizon 16
產生 /tmp/open_loop_eval/traj_{N}.jpeg — 每條軌跡一張圖,內含預測 vs ground-truth 對照 + per-dim MSE。
4.7 Closed-loop 模擬評估
1# 1. 啟動 server
2uv run python gr00t/eval/run_gr00t_server.py \
3 --model-path nvidia/GR00T-N1.7-LIBERO \
4 --embodiment-tag LIBERO_PANDA \
5 --device cuda:0
6
7# 2. 啟動 LIBERO benchmark client
8cd examples/LIBERO && bash run_libero_eval.sh
可用 benchmark:LIBERO(Franka)、SimplerEnv Fractal(Google Robot)、SimplerEnv Bridge(WidowX)、SO100、DROID。
4.8 把自家資料轉 LeRobot v2 格式
1# 從 LeRobot v3 轉 v2
2uv run python scripts/lerobot_conversion/convert_v3_to_v2.py \
3 --input-path /path/to/lerobot_v3_dataset \
4 --output-path /path/to/lerobot_v2_dataset
5
6# 修復壞掉的 LeRobot metadata
7uv run python scripts/repair_lerobot_metadata.py --path /path/to/dataset
4.9 TensorRT 部署
1# 匯出 ONNX
2cd scripts/deployment && cat README.md # 完整 TRT walkthrough
3
4# 大致流程:
5uv run python -m gr00t.deployment.export_onnx \
6 --model-path nvidia/GR00T-N1.7-3B \
7 --output-path /tmp/gr00t_n17.onnx
8
9# ONNX → TRT engine
10trtexec --onnx=/tmp/gr00t_n17.onnx --saveEngine=/tmp/gr00t_n17.engine \
11 --fp16 --workspace=4096
實測效能(issue #660 社群報告 FlashVLA-realtime):
| 平台 | 模式 | 頻率 |
|---|---|---|
| Jetson Thor | TRT FP16 | >22 Hz |
| RTX 5090 | TRT FP16 + FlashVLA | >76 Hz |
5. 應用場景
5.1 場景一:在自家研究臂(SO100 / Koch / xArm)做 pick-and-place
最低成本入門路徑。SO100 是 LeRobot 社群推的 ~$100 機器手臂套件。
1# 1. 收集 ~100 條 teleoperation 軌跡(用 LeRobot 內建 teleop 工具)
2# 2. 轉成 LeRobot v2 format(GR00T 兼容)
3# 3. fine-tune
4uv run python gr00t/experiment/launch_finetune.py \
5 --base-model-path nvidia/GR00T-N1.7-3B \
6 --dataset-path /path/to/my_so100_data \
7 --embodiment-tag NEW_EMBODIMENT \
8 --modality-config-path examples/SO100/so100_config.py \
9 --max-steps 5000
10
11# 4. server-client deploy
12uv run python gr00t/eval/run_gr00t_server.py --model-path /tmp/test_finetune
實測門檻(FAQ 提到):「簡單固定位置 pick-place ~100 軌跡足夠;複雜場景需 500+;雙手人形需 2000+」。
5.2 場景二:全身人形(Unitree G1 + SONIC WBC)
N1.7 新增 SONIC 全身控制(commit 3df8b38)。VLA 預測緊湊 latent action token,由獨立的 WBC controller 解碼成全身關節指令。
1# 完整 collect → finetune → deploy 在 NVlabs/GR00T-WholeBodyControl
2# VR 遠端操作收資料 → 用 UNITREE_G1_SONIC tag finetune → 部署 PolicyServer + SONIC decoder
關鍵設計:language-conditioned 端到端全身協調(同時動腳走路、動手抓取)。
5.3 場景三:用 Cosmos 合成資料 + Isaac Sim → sim-to-real
flowchart LR
A[Real Robot Demos
~50 條 seed 資料] --> B[Cosmos WFM
生成 1000× 變化軌跡
不同光照/物件/位置]
B --> C[Isaac Sim 渲染
RGB + depth + segmentation]
C --> D[Fine-tune GR00T
on synthetic + real mix]
D --> E[Open-loop eval
real test set]
E --> F[Real Robot Deploy]
F --> G[Domain Gap?]
G -- Yes --> B
G -- No --> H[Done]
⚠️ FAQ 提到 “Cosmos 合成資料生成 pipeline 還在 dev 中、非標準 release”,但研究上已有 DreamGen 等 paper 驗證可行。
- 可能適用:若未來有自動化液體處理(pipetting robot, e.g., Hamilton STAR)整合需求,GR00T 不適合 — 用 Hamilton 自家 PLC 程式或 PyHamilton 工具鏈
- 理論啟發:GR00T 的「foundation model + LeRobot 資料格式」對 biopharm CMC 自動化長期可能參考(10 年尺度)
5.5 場景五:從 HuggingFace LeRobot 抓現成資料訓練
1# DROID 資料集(最大 OXE 子集之一)
2uv run python scripts/download_droid_sample.py --num-episodes 100
3
4# SimplerEnv 樣本
5uv run python scripts/download_simplerenv_sample.py --benchmark fractal
5.6 場景六:學術 benchmark 復現
論文「NVIDIA Isaac GR00T N1: An Open Foundation Model for Generalist Humanoid Robots」(arXiv:2503.14734) 的所有 benchmark 都可在 repo 復現:
- LIBERO 10-Long
- SimplerEnv Bridge / Fractal
- DROID
- robocasa-gr1-tabletop-tasks
但 issue #685 反映 N1.6-fractal 復現可能要手動 cherry-pick per-env seed fix,社群正在追蹤。
6. 資安掃描報告
6.1 自動掃描結果
針對 gr00t/, scripts/, getting_started/ 目錄做關鍵字掃描(eval / exec / os.system / shell=True / pickle / __import__ / api_key / secret / password / token)。
| 風險等級 | 數量 | 主要分類 |
|---|---|---|
| 🔴 高 | 0 | — |
| 🟡 中 | 5 | HuggingFace transformers_access_token 使用、use_auth_token 棄用警告 |
| 🟢 低 | 30+ | model.eval() PyTorch API 呼叫(與 Python eval() 不同)、tokenizer 內 token API(自然語言 token,非 secret) |
6.2 詳細結論
🟢 完全沒問題:
model.eval()呼叫(PyTorch 把模型切換 eval mode)— 30+ 處,皆無風險tokenizer相關 API(NLP tokenization,與安全 token 無關)
🟡 需注意:
gr00t/model/gr00t_n1d7/setup.py:64-65:用self.config.training.transformers_access_token載入 HuggingFace private 模型。使用者責任:不要把 HF token 寫死在 config 檔案、上傳 GitHub。建議用環境變數HF_TOKEN或~/.cache/huggingface/token。processing_gr00t_n1d7.py:755-757:相容性 fallback,舊版use_auth_token→ 新版token的處理,沒有實際安全問題,只是 HF Transformers API 棄用警告處理。
🔴 無高風險發現:
- 沒有
eval()動態執行使用者輸入 - 沒有
os.system()/subprocess shell=True - 沒有
pickle.load()讀網路資料(這是常見的反序列化攻擊面) - 沒有寫死的 secret / password / api_key
6.3 模型權重供應鏈
- base model 來源:HuggingFace
nvidia/GR00T-N1.7-3B(NVIDIA 官方帳號,已驗證) - 載入機制:
AutoModel.from_pretrained+ safetensors(非 pickle,無反序列化風險) - 依賴:
transformers,torch,flash-attn,tensorrt(皆為主流 PyPI 套件)
6.4 授權注意 — 這是最大的「星號」
| 對象 | License | 商用限制 |
|---|---|---|
| 程式碼 | Apache-2.0 | 可自由商用 |
| 模型權重 | NVIDIA Open Model License (NOML) | 要看條款 |
NOML 允許大多數商用情境,但有以下保留條款(使用前務必看 license 原文):
- 不能用 GR00T 訓練「競爭性 foundation model」
- 不能違反美國出口管制(特定國家 / 實體)
- 衍生模型必須附帶 NOML 通知
6.5 機密邊界建議
- ✅ 訓練資料:自家資料保留在自家 GPU,不要傳到 HF Hub public dataset
- ✅ Fine-tuned checkpoint:private repo 或本地存放(已是行業常識)
- ⚠️ 啟動
--use-wandb會把訓練 metric 上傳 wandb — 內部訓練前確認 wandb project 是 private - ⚠️ Policy Server
--host 0.0.0.0預設完全沒有認證,部署到實機器人前一定要套 firewall / VPN / TLS proxy
6.6 紅黃綠燈總結
🟢 整體 GREEN:核心程式碼乾淨、無高風險呼叫、依賴主流、官方維護。 🟡 黃色注意:HF token 由使用者管理;模型權重 NOML 商用要看條款;Policy Server 無認證。 🔴 無紅燈。
7. FAQ
Q1:GR00T 跟 RT-2 / OpenVLA / π0 / RDT-1B 比有什麼不同?
| 維度 | GR00T N1.7 | RT-2 (Google) | OpenVLA | π0 (Physical Intelligence) | RDT-1B |
|---|---|---|---|---|---|
| 開源 | ✅ | ❌ | ✅ | ✅(程式碼 + 權重) | ✅ |
| 動作表示 | Relative EEF | Discrete tokens | Discrete tokens | Continuous (flow matching) | Continuous (diffusion) |
| Backbone | Cosmos-Reason2-2B | PaLM-E 12B | Llama 2 7B | PaliGemma 3B | SigLIP + Llama 2 |
| 人類影片 | ✅ 20K 小時 | ❌ | ❌ | ❌ | ❌ |
| 多 embodiment | ✅ 8+ | ✅ | ✅ | ✅ | ✅ |
| 全身控制 | ✅ SONIC | ❌ | ❌ | 部分 | ❌ |
| 商用 license | NOML(程式碼 Apache) | 不公開 | Apache-2.0 | Apache-2.0 | CC-BY-NC |
GR00T 最獨特:人類影片直接用 relative EEF 訓練 + 全身 SONIC + NVIDIA 完整工具鏈。
Q2:我沒有人形機器人,這個 repo 還有用嗎?
有:
- SO100 ~$100 桌上型機械臂可用
NEW_EMBODIMENTfine-tune - HuggingFace LeRobot 生態資料集可直接用 GR00T zero-shot 評估
- SimplerEnv / LIBERO benchmark 只要一張 RTX 4090 就能跑
Q3:3B 參數的模型,fine-tune 要多少資料?
從 FAQ.md:
- 簡單固定位置 pick-place:~100 軌跡
- 複雜場景 / 多步任務:500+ 軌跡
- 高 DoF 人形:2000+ 軌跡
- 細緻操作:100-500 episodes(建議搭配人類動作預訓練)
策略推薦 HG-DAgger(Human Gated DAgger)— 跑 policy、人介入失敗處、把救援軌跡加進資料集再訓。
Q4:N1.7 為什麼 backbone 換成 Cosmos-Reason2-2B?
兩個原因:
- 支援原生 aspect ratio 圖像(不像 SigLIP 強制 224x224 或 384x384 padding) → 機器人攝影機是 16:9,padding 浪費 token + 損失訊息
- NVIDIA 全家桶整合 — Cosmos-Reason 是 NVIDIA 自家做的 VLM,跟 Cosmos WFM 同源;用同個 backbone 可在合成資料生成(Cosmos)與動作預測(GR00T)共用權重
Q5:可以做 VQA / 推理嗎?
❌ 不行。FAQ 明確指出:「GR00T N1.x 系列專為 action generation 優化,不做 VQA / 開放推理。複雜語意推理保留給未來 N2 系列」。
要 reasoning 就接 Nemotron Nano Omni 在上游做任務分解(見 §9)。
Q6:相機角度大改變(頭動)會掉準嗎?
會。FAQ 提到「大視角改變等於 observation distribution shift」,目前公開 demo 多用相對固定 head pose。
Q7:可以自動 retry 失敗動作嗎?
模型是 stateless(不知道前一步成功與否),retry 行為要靠高品質資料中已有救援 demos或DAgger / RL 顯式訓出來。
Q8:模型權重商用 OK 嗎?
程式碼 Apache-2.0 完全 OK。模型權重 NOML — 大多數商用情境 OK,但要看條款。要訓練自家競爭性 foundation model 不允許。實際商用前請法務 review NOML 原文。
Q9:跑 8× H100 fine-tune 一次要多久?
依資料量與 step 數。--max-steps 2000 + global batch 32 在 8×H100 上約 1-2 小時(粗估,視 dataloader 速度)。
Q10:state_dropout_prob 是什麼,要設多少?
gr00t/configs/finetune_config.py 預設:
- model config: 0.8
- CLI default: 0.2
- LIBERO 10-Long: 0.2
- SimplerEnv Bridge: 0.8
- SimplerEnv Fractal: 0.5
含義:訓練時隨機 drop 掉 state 輸入,逼模型多看影像 / 語言。任務越依賴 proprioception(如精細抓取)就調低。
Q11:Issue #685 講 N1.6-fractal 復現問題怎麼處理?
需要 cherry-pick commit 3df8b38 的 per-env seed fix。社群在追,NVIDIA 尚未官方修。如果你要復現論文 benchmark,這是已知 bug。
Q12:GA 何時釋出?
EA 文件沒給明確時間,但 README 寫「will continue iterating toward a more stable GA release」— 從 N1 (2025-06) → N1.7 (2026-04) 約 10 個月迭代 4 個 minor version,估計 GA 在 2026 下半年。
8. 進階技巧
8.1 Batched inference
1from gr00t.policy.gr00t_policy import Gr00tPolicy
2
3policy = Gr00tPolicy.from_pretrained("nvidia/GR00T-N1.7-3B")
4batch_obs = [obs1, obs2, obs3, obs4] # 4 條軌跡
5batch_actions = policy.get_action(batch_obs)
8.2 Action chunking — 怎麼決定 horizon
預設 --action-horizon 8:模型預測未來 8 步,但 server 通常只發送前 N 步就再請求一次(temporal smoothing)。
- 小 horizon(4-8):reactive,適合精細抓取
- 大 horizon(16-32):smooth,適合 trajectory following
8.3 連 wandb 追訓
1uv run python gr00t/experiment/launch_finetune.py \
2 --use-wandb \
3 --wandb-project gr00t-internal \
4 ...
⚠️ 內部訓練前確保 wandb project 是 private(資料外洩警告)。
8.4 從 LeRobot v3 轉 v2
1uv run python scripts/lerobot_conversion/convert_v3_to_v2.py \
2 --input-path /path/v3 \
3 --output-path /path/v2
8.5 同時把多個資料集混訓
--dataset-path 支援多路徑或 yaml config 列舉:
1# data_config.yaml
2datasets:
3 - path: demo_data/cube_to_bowl_5
4 weight: 1.0
5 - path: /shared/big_pickplace_data
6 weight: 3.0
1uv run python gr00t/experiment/launch_train.py \
2 --data-config data_config.yaml \
3 ...
8.6 ReplayPolicy 用於環境驗證
1uv run python gr00t/eval/run_gr00t_server.py \
2 --dataset-path demo_data/droid_sample \
3 --embodiment-tag OXE_DROID_RELATIVE_EEF_RELATIVE_JOINT
4 # 不給 --model-path → 自動用 ReplayPolicy 跑資料動作
可在連模型都還沒下載時,驗證機器人 / sim 環境連線正常。
8.7 Mask-guided background suppression
examples/mask-guided-background-suppression/ 展示用前處理 mask 把背景去掉,逼模型只看物件 — 對小資料 fine-tune 有幫助。
8.8 自家 embodiment 註冊
gr00t/eval/sim/env_utils.py 的 ENV_PREFIX_TO_EMBODIMENT_TAG 加新項:
1ENV_PREFIX_TO_EMBODIMENT_TAG = {
2 ...
3 "my_robot_sim": EmbodimentTag.MY_ROBOT,
4}
並在 tests/gr00t/eval/sim/test_env_utils.py 新增 test。
9. 整合進其他工作流(NVIDIA Physical AI 全家桶)
9.1 與 NVIDIA Nemotron 配合(語言大腦 + 動作執行器)
Nemotron Nano Omni 是 NVIDIA 的多模態 LLM(見姊妹 tutorial inbox/2026-06-02-tutorial-Nemotron.md),可作為 GR00T 的上層任務分解大腦:
flowchart LR
User[人類語言指令
整理廚房,把碗放回櫃子] --> Nano[Nemotron Nano Omni
多模態 LLM]
Nano --> Subgoals[子目標序列
1.找到碗 2.走到櫃子 3.打開門 4.放入]
Subgoals --> GR00T[GR00T N1.7
VLA 執行器]
GR00T --> Robot[人形機器人]
整合做法:
1from nemotron_inference import NanoOmniClient # 假設介面
2from gr00t.policy.server_client import PolicyClient
3
4llm = NanoOmniClient("http://nemotron-server:8000")
5vla = PolicyClient(host="gr00t-server", port=5555)
6
7high_level_goal = "整理廚房,把碗放回櫃子"
8subgoals = llm.decompose_task(high_level_goal, image=current_camera)
9
10for subgoal in subgoals:
11 obs["annotation.human.action.task_description"] = subgoal
12 while not subgoal_complete(obs):
13 action, _ = vla.get_action(obs)
14 obs = env.step(action)
兩個模型完全解耦 — Nemotron 跑在 H100 server,GR00T 跑在 Jetson Thor,分別優化。
9.2 與 NVIDIA Cosmos 配合(合成資料 + 世界模擬)— 最強整合
Cosmos World Foundation Models 與 GR00T 是 NVIDIA 內部刻意共設計 的:
- N1.7 VLM backbone 直接叫 Cosmos-Reason2-2B(用 Cosmos-Reason VLM)
- Cosmos WFM 可生成大量合成軌跡訓 GR00T
- 兩者共享 Qwen3-VL 架構與部分權重
Sim-to-real pipeline:
flowchart TB
A[少量真機器人 demo
~50 條 seed] --> B[Cosmos WFM
生成 1000× 變化軌跡]
B --> C[Isaac Sim 重渲染
RGB + depth + seg]
C --> D[資料混合
real + synthetic 1:20]
D --> E[GR00T finetune]
E --> F[Real Deploy
實機器人]
F -.feedback.-> A
⚠️ FAQ 注意:Cosmos 合成資料 → GR00T 訓練的 production pipeline 還在 dev,目前只有研究 paper(DreamGen 等)驗證可行。如果你急需,先看 NVlabs 的 paper repos。
9.3 與 NVlabs/alpamayo 的關係
NVlabs alpamayo 是 NVIDIA Research(NVlabs)的自駕 / 機器人研究專案。從命名與時間線看:
- 共享研究血脈:GR00T 從 NVlabs 的 prototype(如 ALOHA 系列、GEAR-SONIC)孵化到 NVIDIA 官方產品線
- 共享 infra:兩者都用 LeRobot 資料格式、PyTorch、可能共用 GPU cluster
成熟度差異:alpamayo 是研究(API 不穩、PR 隨意),GR00T 是準生產(EA 鎖 PR、之後 GA 有商業支援)。
9.4 與 NVlabs/Nemotron-Labs-Diffusion 的關係
NVlabs 的 diffusion 研究 repo。與 GR00T 重疊點:
- Policy diffusion head:GR00T 的 action head 是 diffusion transformer (DiT),可能直接借用或共享 NVlabs 的 DiT 實作
- 兩者皆用 NVIDIA cluster 訓練
如果讀者要改 action head 演算法,先看 Nemotron-Labs-Diffusion repo 找最新 DiT 變體(如 RTC-style flow matching、見 issue #676 社群提案)。
- 若未來需自動化液體處理機器人,可參考 GR00T 的 server-client 架構 與 資料管線設計
- LeRobot 資料格式對任何「demonstration learning」工作流都有借鑑價值(不論機器人或軟體 RPA)
9.6 整合進 AI Knowledge Template(本 repo)
GR00T 與本 template 的整合場景:
- gh-tutorial-qd(你正在看的):把 GR00T repo 變成內部 tutorial
- paper-tutorial:把 GR00T 論文 (arXiv:2503.14734) + Cosmos + π0 三篇做整合教學
- research-pipeline-v2:若要評估「GR00T 能否整合進 Apotek 未來 robot pharmacy 線」走完整 9-stage 管線
9.7 三大姊妹 tutorial 索引
| 主題 | 路徑 | 用途 |
|---|---|---|
| Nemotron | inbox/2026-06-02-tutorial-Nemotron.md | LLM 上層大腦 |
| Cosmos | inbox/2026-06-02-tutorial-cosmos.md(並行產出中) | 世界模擬 + 合成資料 |
| GR00T | 本文件 | VLA 執行器 |
10. 重點摘要 Checklist
讀完本文你應該能回答:
- GR00T 是什麼?→ NVIDIA 人形機器人 VLA 基礎模型(Cosmos-Reason2-2B + DiT action head)
- 為什麼用 Relative EEF?→ 跨 embodiment + 人類影片可直接訓
- N1.7 與 N1.6 差別?→ 換 backbone(Eagle → Cosmos-Reason2-2B),加人類影片預訓練
- 怎麼最快上手?→
uv sync+standalone_inference_script.pyzero-shot droid_sample - Fine-tune 自家機器人要多少資料?→ 100~500 條軌跡(簡單任務)
- 怎麼部署到實機器人?→ server-client 架構,PolicyServer 跑 H100 + PolicyClient 跑 Jetson
- 部署效能?→ Jetson Thor 22 Hz、5090 76 Hz(TRT FP16 + FlashVLA)
- 商用 license?→ 程式碼 Apache-2.0 ✅;權重 NOML(看條款)
- 跟 Cosmos 怎麼配合?→ Cosmos 生成合成資料、Cosmos-Reason 直接是 GR00T VLM backbone
- 跟 Nemotron 怎麼配合?→ Nemotron Nano Omni 做高層任務分解,GR00T 執行
- 在 NVIDIA Physical AI 三電腦的位置?→ 訓於 AI Factory、學於 AI Sim、跑於 AI Robot
- 資安最大注意?→ Policy Server 預設無認證;模型權重 NOML 商用要看條款
11. 進一步閱讀
官方資源
- GitHub:https://github.com/NVIDIA/Isaac-GR00T
- 官網:https://developer.nvidia.com/isaac/gr00t
- HuggingFace 模型集:https://huggingface.co/collections/nvidia/gr00t-n17
- Physical AI Dataset 集:https://huggingface.co/collections/nvidia/physical-ai
- 論文:https://arxiv.org/abs/2503.14734
- FAQ:本 repo
FAQ.md
內部 getting_started 文件(強烈推薦先讀)
| 文件 | 大小 | 內容 |
|---|---|---|
getting_started/GR00T_inference.ipynb | 440K | 完整 walkthrough notebook |
getting_started/policy.md | 23K | Policy API 完整指南(最詳細) |
getting_started/real_world_deployment.md | 20K | 實機器人部署 |
getting_started/data_config.md | 11K | modality.json 詳細格式 |
getting_started/data_preparation.md | 9K | 資料準備指南 |
getting_started/finetune_new_embodiment.md | 6K | 新 embodiment fine-tune |
getting_started/hardware_recommendation.md | 5K | 硬體採購指南 |
姊妹專案文件(本 batch 同步產出)
- Nemotron:
inbox/2026-06-02-tutorial-Nemotron.md - Cosmos:
inbox/2026-06-02-tutorial-cosmos.md - NVlabs/alpamayo:
inbox/2026-06-02-tutorial-alpamayo.md - NVlabs/Nemotron-Labs-Diffusion:
inbox/2026-06-02-tutorial-Nemotron-Labs-Diffusion.md
相關 VLA / 機器人 paper
- GR00T N1 (NVIDIA 2025) — arXiv:2503.14734
- RT-2 (Google DeepMind 2023) — VLA 開山作
- OpenVLA (Stanford 2024) — 開源 VLA
- π0 (Physical Intelligence 2024) — Flow matching VLA
- RDT-1B (Tsinghua 2024) — Diffusion VLA
- DreamGen — Cosmos-based synthetic data for VLA
- DROID (Stanford 2024) — 大規模 OXE 資料集
社群整合工具
- LeRobot (HuggingFace) — 資料格式來源 + teleop 工具
- Isaac Sim / Isaac Lab — sim 環境
- GEAR-SONIC / GR00T-WholeBodyControl (NVlabs) — 全身控制 decoder
- FlashVLA (issue #660) — 社群實時推論引擎
與本 template 相關 skill
gh-tutorial-qd— 本文件用的工作流paper-tutorial— 若要做 GR00T + Cosmos + π0 三篇 paper 整合教學research-pipeline-v2— 若要做完整研究評估
作者註:本教學基於 GR00T N1.7 (commit
626af89, 2026-05-26) 撰寫;N1.7 仍為 Early Access,API 與資料可能在 GA 前變動。所有實際部署前請對照 repo 最新 README 與getting_started/。
Comments