
Provjereni vodič za fino podešavanje NVIDIA GR00T N1.7 na SO-100 LeRobot skupu podataka: stvarne zastavice, modality.json, zahtjev v2.1, koliko košta pokretanje i zamke.
NVIDIA isporučuje primjer finog podešavanja za tačno ruku koju vjerovatno posjedujete. Unutar Isaac-GR00T repozitorijumu postoji folder pod nazivom demo_data/cube_to_bowl_5: pet epizoda, 4.148 frejmova pri 30 fps, već napisanih kao LeRobot v2.1, sa odgovarajućom konfiguracijom modaliteta pod examples/SO100/. Njegov meta/info.json izvještava robot_type: so101_follower, što je u LeRobotu ista klasa konfiguracije kao so100_follower. To je zaista korisno, jer znači da je referentna putanja za GR00T N1.7 na hobi ruci sa šest stepeni slobode održavaju ljudi koji su napisali model. To nije smanjena humanoidna demonstracija, to je ista ruka.
Loša vijest je udaljenost između I recorded 60 episodes i the arm does the task. Postoji oko šest mjesta gdje ovaj cjevovod tiho, a ne glasno, zataji, a četiri od njih se nalaze u datotekama koje većina ljudi nikada ne otvara: meta/modality.json, Python konfiguracija podataka, meta/relative_stats.json, i vlastiti verzijski string skupa podataka. Ovaj vodič prolazi ručnu rutu od početka do kraja sa stvarnim komandama, a zatim prikazuje isti posao kao obrazac na AY-Robots. Sve dole navedeno je provjereno u odnosu na glavnu granu Isaac-GR00T od 20. avgusta 2026. (linija izdanja n1.7) i lerobot 0.6.1, objavljen na PyPI-u 3. avgusta 2026. Uzvodno se brzo mijenja, i gdje je zastavica preimenovana, ovaj članak to navodi.
Šta trebate znati prije nego što počnete
- •Fino podešavanje GR00T N1.7 zahtijeva 40 GB ili više VRAM-a. NVIDIA preporučuje H100 ili L40 čvorove. RTX 4090 sa 24 GB neće obaviti ovaj posao, iako će trenirati SmolVLA i ACT.
- •Skup podataka mora biti LeRobot v2 (v2.0 ili v2.1) plus GR00T-specifični meta/modality.json. Skup podataka LeRobot v3.0 se ne učitava i mora se konvertovati na nižu verziju.
- •Ulazna tačka je gr00t/experiment/launch_finetune.py, tyro CLI. Nema zastavicu --seed, tako da pokretanja nisu bit-za-bit reproduktivna.
- •Za prilagođenu ruku oznaka utjelovljenja je NEW_EMBODIMENT, i ta oznaka čini --modality-config-path obaveznim.
- •Isporučena SO-100 receptura predviđa zglobove ruke kao RELATIVNE delte, a hvataljku kao APSOLUTNU metu. Obrnuto uparivanje je tihi neuspjeh, a ne greška.
- •Na AY-Robots isti posao je obrazac: 20000 koraka, batch 32, stopa učenja 1e-4, otprilike 4 do 12 USD na A100 80 GB ili H100 nivou.
Šta je zapravo GR00T N1.7
GR00T N1.7 je model vida, jezika i akcije sa rasporedom dvostrukog sistema opisanim u originalnom GR00T N1 radu: modul vida i jezika koji čita kamere i instrukcije, i difuzioni transformator koji to pretvara u blok kontinuiranih motornih komandi. N1.7 je zamijenio prvu polovinu. Eagle okosnica iz N1.6 je uklonjena, zamijenjena sa nvidia/Cosmos-Reason2-2B na Qwen3-VL arhitekturi, a model je preobučen na otprilike 20.000 sati egocentričnog ljudskog videa povrh robotskih podataka. NVIDIA-in vlastiti izvještaj navodi cifru od 20.854 sata i izvještava da prelazak sa 1k na 20k sati više nego udvostručuje prosječnu stopu izvršenja zadataka.
Druga polovina se takođe promijenila, na načine koji su važni za vaše pokretanje. Glava akcije je smanjena sa 32 difuziona sloja na 16, predviđeni akcioni blok je porastao sa 16 koraka na 40, a maksimalna širina stanja i akcije je porasla sa 29 na 132. Ova tri broja potiču iz changeloga u README-u repozitorijuma; NVIDIA-in vlastiti post o lansiranju i dalje opisuje Sistem 1 kao 32-slojni DiT, tako da tamo gdje se ova dva ne slažu, vjerujte repozitorijumu koji ćete klonirati. Akcije su podrazumijevano izražene u relativnom krajnjem efektoru prostoru, delte od trenutne poze, a ne apsolutne mete, što omogućava prenos manipulativnih predznanja naučenih iz ljudskog videa u kontrolu robota. Sama glava je flow-matching difuzioni transformator, iste porodice kao Pi0.5, ali sa drugačijom okosnicom ispred. Ako ste još uvijek na prethodnoj generaciji, N1.7 u odnosu na N1.5 pokriva da li nadogradnja opravdava ponovno pravljenje vašeg cjevovoda.
| Osobina | Vrijednost | Izvor |
|---|---|---|
| Parametri | 3,000,000,000 | Hugging Face kartica modela |
| Okosnica vida i jezika | nvidia/Cosmos-Reason2-2B (Qwen3-VL), gated on Hugging Face | repo README |
| Glava akcije | Flow-matching diffusion transformer, 16 layers (N1.6 had 32) | repo README |
| Predviđeni akcioni horizont | 40 koraka za osnovnu kontrolnu tačku (N1.6 je imao 16) | getting_started/policy.md and repo README |
| Maksimalna širina stanja i akcije | 132 (N1.6 je imao 29) | repo README |
| Licenca koda | Apache 2.0 | Isaac-GR00T repository |
| Licenca za težine | NVIDIA Open Model License Agreement | kartica modela |
| Latencija, H100 80 GB, PyTorch eager, 4 koraka denoisiranja, 1 kamera | 85.8 ms od kraja do kraja, 11.7 Hz | tabela vremena kartice modela |
| Isti hardver, TensorRT puni cjevovod | 27.9 ms od kraja do kraja, 35.9 Hz | tabela vremena kartice modela |
| Latencija koju AY-Robots navodi za svoj servisirani GR00T N1.7 | 152 ms po akcionom koraku | AY-Robots katalog politika |
Ova posljednja tri reda objašnjavaju većinu razočaranja koje ljudi prijavljuju. Naslovnih 27.9 ms je TensorRT engine na H100 sa jednom kamerom i četiri koraka denoisiranja. Običan PyTorch na istoj kartici je 85.8 ms, a kartica modela navodi razliku od 3.08x. Nijedan broj ne uključuje sloj za posluživanje, drugu kameru ili mrežni skok. 152 ms po akcionom koraku koje AY-Robots navodi za svoj servisirani GR00T N1.7 je cifra sa posluživanjem u petlji, a javni internet povratni put se nalazi povrh toga. Više o ovome na kraju. Za brojeve pored drugih modela, GR00T N1.7 u odnosu na Pi0.5 i GR00T N1.7 u odnosu na SmolVLA ih prikazuju jedan pored drugog.

Šta je potrebno za pokretanje prije nego što išta ukucate
| Zahtjev | Fino podešavanje | Inferencija |
|---|---|---|
| VRAM, NVIDIA smjernice | 40 GB ili više, preporučuje se H100 ili L40 | 16 GB ili više, radi RTX 4090 |
| Python i CUDA na dGPU-u | 3.12 i CUDA 12.8 | 3.12 i CUDA 12.8 |
| Video pozadina | torchcodec 0.8.0, samo FFmpeg 4 do 7 | isto |
| Format skupa podataka | LeRobot v2 plus meta/modality.json | nije primjenjivo |
| Hugging Face pristup | odobreno za nvidia/Cosmos-Reason2-2B | isto |
| Ostali alati | git-lfs i uv | uv |
| AY-Robots GPU nivo za groot1.7 trener | A100 80 GB ili H100 80 GB | pod automatski obezbijeđen |
Svaka GR00T kontrolna tačka, uključujući osnovni nvidia/GR00T-N1.7-3B, učitava nvidia/Cosmos-Reason2-2B pri prvoj upotrebi, a taj repozitorijum je zaključan. README tačno navodi grešku: učitavanje modela ne uspijeva sa GatedRepoError / 401 Client Error. Ono što se ne spominje je kada se to dešava, a to je nakon što ste iznajmili karticu i pokretanje je počelo. Zatražite pristup na stranici modela, zatim pokrenite uv run huggingface-cli login ili izvezite HF_TOKEN prije nego što išta iznajmite.
Korak 0: same epizode
Sve ispod pretpostavlja da već imate snimljene epizode. Ako nemate, to je pravi prvi korak i on je taj koji odlučuje koliko dobar rezultat može biti, jer učenje imitacijom ne može oporaviti informacije koje nisu u podacima. Prvo kalibrirajte obje ruke, zatim vozite pratioca sa vodećom rukom dok lerobot-record piše parquet datoteke i tokove kamere. Ako je kalibracija isključena, vrijednosti zglobova u vašem skupu podataka opisuju nešto drugačijeg robota od onog koji će kasnije izvršavati politiku, i nikakva količina treninga to ne može popraviti.
lerobot-record \
--robot.type=so100_follower \
--robot.port=/dev/ttyACM0 \
--robot.id=my_follower_arm \
--robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 2, width: 640, height: 480, fps: 30}}" \
--teleop.type=so100_leader \
--teleop.port=/dev/ttyACM1 \
--teleop.id=my_leader_arm \
--dataset.repo_id=${HF_USER}/cube-into-bowl \
--dataset.num_episodes=60 \
--dataset.single_task="put the cube in the yellow bowl" \
--display_data=trueLeRobotov savet je da snimite najmanje 50 epizoda sa oko 10 po lokaciji objekta, držite kamere fiksirane i održavajte dosledno ponašanje hvatanja. Dodajte varijacije kasnije, ne na početku. Pravilo koje vredi zapamtiti: ako sami niste mogli izvršiti zadatak samo na osnovu slika kamere, politika takođe ne može. Za postavku specifičnu za ruku, SO-100 početak rada i stranica SO-100 LeRobot pokrivaju portove, kalibraciju i indekse kamere. Na AY-Robotima to takođe možete učiniti preko interneta iz pregledača koristeći teleoperaciju i snimati direktno iz sesije.
Korak 1: skup podataka mora biti LeRobot v2.1
Ovo je najčešća prepreka. Trenutna CODEBASE_VERSION na glavnoj grani je v3.0, tako da sve što danas snimite sa trenutnim skupom alata izlazi kao v3.0. GR00T-ov učitavač očekuje v2. Repozitorijum je eksplicitan o razlogu: mnogi uzvodni skupovi podataka kao što su DROID, LIBERO i Bridge objavljeni su u v2, a izvorna podrška za oba je planirana, ali nije isporučena. Dakle, konverzija je na vama, i pokreće se u sopstvenom virtuelnom okruženju iz konkretnog razloga: scripts/lerobot_conversion nosi sopstveni pyproject koji zahteva Python 3.10 ili 3.11 i vezuje lerobot za jedan git commit, dok sam Isaac-GR00T zahteva Python 3.12. Instalirajte konverter iz korena repozitorijuma i dobićete gr00t paket umesto toga, što je greška na koju upozorava njegov README. Ako ste novi u formatu, LeRobot skup podataka unos u rečniku objašnjava šta se zapravo nalazi unutra.
# from the Isaac-GR00T repo root
cd scripts/lerobot_conversion
uv venv
source .venv/bin/activate
uv pip install -e . --verbose
# pulls the dataset from the Hub and writes a v2.1 copy into the default cache
python convert_v3_to_v2.py --repo-id <your-hf-user>/<your-dataset>
# or, back in the repo root, keep it next to the SO-100 example
uv run --project scripts/lerobot_conversion \
python scripts/lerobot_conversion/convert_v3_to_v2.py \
--repo-id <your-hf-user>/<your-dataset> \
--root examples/SO100/my_dataset_lerobotAko skup podataka v3.0 već postoji lokalno, skripta gradi raspored v2.1 pored njega, a zatim ih zamjenjuje: original se premješta u sestrinsku fasciklu sa dodatom verzijom, <name>_v3.0, a konvertovana kopija preuzima originalnu putanju. (Sopstveni docstring skripte tu fasciklu naziva _v30; kod dodaje string verzije, tako da zapravo dobijate _v3.0.) Drugo iznenađenje: izlaz uvijek završava pod <root>/<repo-id>, tako da --root examples/SO100/my_dataset_lerobot daje examples/SO100/my_dataset_lerobot/<your-hf-user>/<your-dataset>, i ta duža putanja je ona koju --dataset-path želi kasnije. Kada posao obuke odbije vaš skup podataka zbog razloga verzije, stranica o skupu podataka odbijenom kao v3 navodi tačne simptome.
Struktura koju GR00T želi nakon konverzije je klasični v2 raspored: meta/info.json, meta/episodes.jsonl, meta/tasks.jsonl, parquet datoteke pod data/chunk-000/, MP4 datoteke pod videos/chunk-000/observation.images.
Korak 2: modality.json, šest brojeva koji odlučuju o svemu
U LeRobot skupu podataka, stanje robota i akcija pohranjeni su kao ravni float32 nizovi. Za SO-100, oba imaju oblik [6]: pet zglobova ruke i hvataljka. Demo skup podataka ih imenuje shoulder_pan.pos, shoulder_lift.pos, elbow_flex.pos, wrist_flex.pos, wrist_roll.pos, gripper.pos, ali ta imena žive u info.json i ništa u parquet datoteci ne govori koji je indeks koji. meta/modality.json pruža to mapiranje, i GR00T neće trenirati bez njega. Evo ga, onako kako ga repozitorij isporučuje za SO-100, doslovno.
{
"state": {
"single_arm": {
"start": 0,
"end": 5
},
"gripper": {
"start": 5,
"end": 6
}
},
"action": {
"single_arm": {
"start": 0,
"end": 5
},
"gripper": {
"start": 5,
"end": 6
}
},
"video": {
"front": {
"original_key": "observation.images.front"
},
"wrist": {
"original_key": "observation.images.wrist"
}
},
"annotation": {
"human.task_description": {
"original_key": "task_index"
}
}
}Kopirajte ga u svoj konvertovani skup podataka na meta/modality.json i preimenujte video ključeve u ono kako se vaše kamere zapravo zovu. Ako ste snimali jednom nadzemnom kamerom nazvanom top, onda je original_key observation.images.top a prijateljsko ime je ono na šta će se vaša konfiguracija podataka referencirati. Ova dva moraju biti usaglašena, i nijedno od njih ne proverava drugo umesto vas. Jezička anotacija je gora, jer se isti ključ mora pojaviti na tri mesta.
| Sloj | Datoteka | SO-100 forma korišćena u repozitorijumu |
|---|---|---|
| Parquet kolona | data/chunk-*/episode_*.parquet | annotation.human.task_description |
| modality.json ključ | meta/modality.json, under "annotation", without the annotation. prefix | human.task_description |
| modality_keys u konfiguraciji podataka | your so100_config.py | annotation.human.task_description |
Segmenti nakon annotation. bira autor skupa podataka. SO-100 demo podaci koriste annotation.human.task_description; LIBERO i SimplerEnv koriste annotation.human.action.task_description. Oba su validna. Ako ste kopirali konfiguraciju iz LIBERO primera i usmerili je na sopstveni SO-100 snimak, jezički kanal se svodi na ništa i model se obučava na praznoj instrukciji. Gubitak i dalje opada. Politika i dalje nešto radi. Samo ignoriše ono što ste joj rekli da uradi.
Korak 3: konfiguracija podataka, relativna ruka i apsolutni hvatač
Konfiguracija modaliteta je Python datoteka, a ne JSON, jer takođe određuje kako je svaka grupa akcija predstavljena. Ovo je deo N1.7 radnog toka koji nije postojao u istom obliku u N1.5, i deo koji vredi pročitati dvaput. Isporučena SO-100 konfiguracija predviđa pet zglobova ruke kao RELATIVNE delte od trenutnog stanja i hvataljku kao APSOLUTNU ciljnu poziciju, jer se binarni signal otvorenog ili zatvorenog stanja bolje ponaša kao cilj nego kao delta.
from gr00t.configs.data.embodiment_configs import register_modality_config
from gr00t.data.embodiment_tags import EmbodimentTag
from gr00t.data.types import (
ActionConfig, ActionFormat, ActionRepresentation, ActionType, ModalityConfig,
)
so100_config = {
"video": ModalityConfig(
delta_indices=[0], # current frame only
modality_keys=["front", "wrist"], # must match modality.json
),
"state": ModalityConfig(
delta_indices=[0],
modality_keys=["single_arm", "gripper"],
),
"action": ModalityConfig(
delta_indices=list(range(0, 16)), # predict 16 future steps
modality_keys=["single_arm", "gripper"],
action_configs=[
ActionConfig(rep=ActionRepresentation.RELATIVE, # arm joints
type=ActionType.NON_EEF,
format=ActionFormat.DEFAULT),
ActionConfig(rep=ActionRepresentation.ABSOLUTE, # gripper
type=ActionType.NON_EEF,
format=ActionFormat.DEFAULT),
],
),
"language": ModalityConfig(
delta_indices=[0],
modality_keys=["annotation.human.task_description"],
),
}
register_modality_config(so100_config, embodiment_tag=EmbodimentTag.NEW_EMBODIMENT)Dva detalja ovde će vas koštati dan ako ih ne znate. Prvo, action_configs je poziciono: dokumentacija zahteva istu dužinu i isti redosled kao modality_keys, i jasno navode posledice pogrešnog unosa, a to je da se pogrešna reprezentacija primenjuje tiho. Vaša hvataljka se trenira kao delta, a vaša ruka kao apsolutni cilj, i nema poruke o grešci. Drugo, register_modality_config tvrdi da tag nije već registrovan, tako da druga NEW_EMBODIMENT konfiguracija u istom Python procesu umire sa Embodiment tag ... already registered. Ne možete uvesti dve ovakve konfiguracije u jednu skriptu. Treće pravilo se primenjuje kasnije, pri implementaciji: akcija delta_indices mora biti neprekidan opseg koji počinje od nule. Retki prozor kao što je [0, 4, 8] se odbija, jer sve nizvodno indeksira predviđeni deo linearno i inače bi izvršilo pogrešne redove.
Statistike normalizacije, posebno meta/relative_stats.json, izračunavaju se za dužinu horizonta koju ste imali kada ste ih generisali. Skratite horizont akcije sa 16 na 8 bez ponovnog generisanja i trening će prestati sa IndexError: boolean index did not match indexed array ... dimension is 8 but corresponding boolean dimension is 16. Rešenje je jedna komanda: python gr00t/data/stats.py --dataset-path <path> --embodiment-tag NEW_EMBODIMENT --modality-config-path examples/SO100/so100_config.py. Pokrenite je nakon svake promene delta_indices.
Korak 4: okruženje
N1.7 je premjestio repozitorij na i Python 3.12. Stara conda plus pip install -e . putanja i dalje postoji u sažetom dijelu README-a, ali upozorava da GPU zavisnosti, uključujući flash-attn i TensorRT, možda zahtijevaju ručnu instalaciju. Koristite uv osim ako nemate specifičan razlog da to ne učinite. Što se tiče flash-attn-a, jedan detalj štedi zabunu: vidjet ćete Installing flash-attn ispisano pri svakom uv run. Ne vrši se ponovna izgradnja. uv ponovo validira URL-prikvačeni wheel koji je već keširan, i to traje dvije ili tri sekunde.
- 1Instalirajte git-lfs, zatim klonirajte sa podmodulima
git-lfs je obavezan, nije opcionalan. Bez njega, parquet datoteke u demo_data/ dolaze kao pokazivački stubovi, a demo pokretanje ne uspijeva na skupu podataka koji izgleda prisutan u popisu datoteka.
bashsudo apt install git-lfs && git lfs install git clone --recurse-submodules https://github.com/NVIDIA/Isaac-GR00T cd Isaac-GR00T - 2Instalirajte uv i sinhronizujte okruženje
Podrazumijevana instalacija povlači GPU zavisnosti uključujući flash-attn i TensorRT. Na svježoj A100 ili H100 slici ovo je najduži pojedinačni korak, pa ga uradite prije nego što počnete obraćati pažnju na bilo šta drugo.
bashcurl -LsSf https://astral.sh/uv/install.sh | sh sudo apt-get update && sudo apt-get install -y ffmpeg uv sync --python 3.12 uv run python -c "import gr00t; print('GR00T installed successfully')" - 3Autentifikujte se sa Hugging Face-om
Uradite ovo prije prvog pokretanja treninga, a ne nakon što ne uspije osam minuta kasnije.
bashuv run huggingface-cli login # or: export HF_TOKEN=<your_token> - 4Provjera ispravnosti na isporučenim SO-100 demo podacima
Prije nego što dodirnete vlastiti snimak, pokrenite 2000 koraka na demo_data/cube_to_bowl_5. To je pet epizoda, brzo se završava i dokazuje okruženje, a ne vaše podatke. Ako ovo pokretanje ne uspije, ništa što učinite sa svojim skupom podataka neće pomoći.
bashCUDA_VISIBLE_DEVICES=0 uv run python \ gr00t/experiment/launch_finetune.py \ --base-model-path nvidia/GR00T-N1.7-3B \ --dataset-path demo_data/cube_to_bowl_5 \ --embodiment-tag NEW_EMBODIMENT \ --modality-config-path examples/SO100/so100_config.py \ --num-gpus 1 \ --output-dir /tmp/test_finetune \ --max-steps 2000 \ --global-batch-size 32 \ --dataloader-num-workers 4
FFmpeg 8. torchcodec 0.8.0 podržava samo FFmpeg 4 do 7, a Ubuntu 25.10 i noviji isporučuju verziju 8. Greška je Could not load libtorchcodec, što zvuči kao pokvarena instalacija, a ne konflikt verzija. Instalirajte stariju verziju runtime-a, na primjer conda install -c conda-forge 'ffmpeg<8', i postavite njene biblioteke na LD_LIBRARY_PATH. CUDA_HOME nije postavljen. Fino podešavanje potpuno ne uspijeva. Pokrenite bash scripts/deployment/dgpu/install_deps.sh jednom, ili samo export CUDA_HOME=/usr/local/cuda.
Korak 5: naredba za fino podešavanje i stvarne podrazumevane vrednosti njenih zastavica
Zamenite demo skup podataka svojim i dodajte opcije koje zaista želite. Ispod je puni oblik koji repozitorijum koristi u svom tutorijalu za novo-otelotvorenje, uključujući zastavice za augmentaciju i čuvanje kontrolnih tačaka koje kratak README primer izostavlja. Ovo je u užem smislu: jezička okosnica i vizuelni enkoder ostaju zamrznuti, a ono što se trenira su projektor i difuziona akciona glava.
export NUM_GPUS=1
CUDA_VISIBLE_DEVICES=0 uv run python \
gr00t/experiment/launch_finetune.py \
--base-model-path nvidia/GR00T-N1.7-3B \
--dataset-path ./my_dataset_lerobot \
--embodiment-tag NEW_EMBODIMENT \
--modality-config-path examples/SO100/so100_config.py \
--num-gpus $NUM_GPUS \
--output-dir /tmp/so100 \
--save-total-limit 5 \
--save-steps 2000 \
--max-steps 20000 \
--use-wandb \
--global-batch-size 32 \
--color-jitter-params brightness 0.3 contrast 0.4 saturation 0.5 hue 0.08 \
--dataloader-num-workers 4| Zastavica | Podrazumevano u FinetuneConfig | Šta radi |
|---|---|---|
| --global-batch-size | 64 | Ukupna serija podataka preko svih GPU-a pre akumulacije gradijenta. Isporučeni primeri koriste 32. |
| --learning-rate | 1e-4 | Ista vrednost koju AY-Robots šalje za svoj groot1.7 trener. |
| --max-steps | 10000 | Ukupni koraci optimizatora. Omotač examples/finetune.sh takođe podrazumevano koristi 10000. |
| --gradient-accumulation-steps | 1 | Množi efektivnu seriju podataka. Vrednosti iznad 1 emituju upozorenje koje vam govori o akumuliranoj veličini. |
| --save-steps and --save-total-limit | 1000 and 5 | Učestalost kontrolnih tačaka i koliko ih se čuva. Starije se brišu. |
| --weight-decay and --warmup-ratio | 1e-5 and 0.05 | Takođe eksplicitno postavljeno od strane examples/finetune.sh. |
| --state-dropout-prob | 0.2 in the CLI, 0.8 in the model config | Nasumično ispušta proprioceptivno stanje tokom treninga. Smanjite ako se vaš zadatak oslanja na stanje. |
| --tune-llm and --tune-visual | False and False | Okosnica podrazumevano ostaje zamrznuta. |
| --tune-projector and --tune-diffusion-model | True and True | Projektor i difuziona akciona glava su ono što se zapravo trenira. |
| --use-percentiles | True | Normalizujte sa q01 i q99 umesto sirovih minimalnih i maksimalnih vrednosti. |
| --dataloader-num-workers | 2 | Učitavač je po dizajnu baziran na CPU-u. Primeri ovo podižu na 4. |
| --seed | ne postoji | Ne postoji zastavica za seme na ovom CLI-u. |
Taj posljednji red nije greška u kucanju. launch_finetune.py je tyro CLI generisan iz dataclass-a, i taj dataclass nema polje za seed. README zasebno navodi 5 do 6 posto varijacije između pokretanja uzrokovane nedeterminističkom augmentacijom slike. Dva pokretanja sa identičnim zastavicama neće proizvesti identične kontrolne tačke, što je veoma važno kada pokušavate da odlučite da li je promjena hiperparametra pomogla ili ste imali sreće. Poređenja radi, lerobotov vlastiti trener podrazumevano koristi seed 1000, a LeRobot GR00T recept prosleđuje --seed=42 eksplicitno.
Fine-tuning se pokreće sa eval_strategy="no", tako da uopšte nema krive gubitka validacije. Dobijate samo gubitak treninga i ništa drugo. Vodič za novo utjelovljenje vam govori da ga uključite sa --eval-strategy steps --eval-steps 500, ali ta zastavica ne postoji na launch_finetune.py: CLI je generisan od strane tyro-a iz FinetuneConfig dataclass-a, a eval_strategy, eval_steps i eval_batch_size su polja TrainingConfig-a umjesto toga. Njihove podrazumevane vrednosti su "no", 500 i 2. Da biste im pristupili, koristite potpuniju ulaznu tačku gr00t/experiment/launch_train.py, gdje je ugniježđena zastavica --training.eval-strategy. U svakom slučaju, padajući gubitak treninga sam po sebi vam govori vrlo malo o generalizaciji, što je upravo situacija opisana na gubitak opada, ali politika ne radi ništa.
Koliko košta pokretanje od 20000 koraka
GR00T N1.7 zahtijeva karticu od 80 GB, tako da pitanje troškova ima uski odgovor. Na AY-Robots, groot1.7 trener radi na A100 80 GB ili H100 80 GB nivou, gdje pokretanje traje 3 do 6 sati po cijeni od 1.20 do 2.00 USD po satu na spot tržištu. To je otprilike 4 do 12 USD za podrazumevani posao od 20000 koraka. Isti zadatak na SmolVLA ili ACT radi na kartici od 24 GB po cijeni od 0.30 do 0.60 USD po satu i 1 do 3 USD po pokretanju. To je pravi kompromis: GR00T košta otprilike četiri puta više po pokušaju, i ne možete ga pokrenuti na 4090 ispod vašeg stola.
| Model | GPU nivo | Tipično trajanje | Tipični trošak | Minimalni broj epizoda |
|---|---|---|---|---|
| GR00T N1.7 | A100 80 GB or H100 80 GB | 3 to 6 hours | 4 to 12 USD | 50 |
| GR00T N1.5 | A100 80 GB or H100 80 GB | 3 to 6 hours | 4 to 12 USD | 50 |
| Pi0.5 | A100 80 GB or H100 80 GB | 3 to 6 hours | 4 to 12 USD | 50 |
| SmolVLA | RTX 4090 or any 24 GB card | 2 to 5 hours | 1 to 3 USD | 30 |
| ACT | RTX 4090 or any 24 GB card | 2 to 5 hours | 1 to 3 USD | 50 |
Minimalnih 50 epizoda je donja granica, a ne cilj. NVIDIA-in FAQ je zahtjevniji: otprilike 100 putanja za jednostavno podizanje i postavljanje na fiksnoj lokaciji, 500 ili više za složene scene sa više koraka, i 100 do 500 za finu manipulaciju. Ako ste na 20 epizoda, provedite popodne snimajući umjesto da uveče podešavate. Vodič za prikupljanje podataka pokriva šta korisnu epizodu odvaja od protraćene, snimite svoj prvi skup podataka je kratka verzija, a prikupljanje podataka za SO-100 je specifična za ruku.
Korak 6: evaluacija otvorene petlje pre nego što dodirnete ruku
Ne stavljajte svježi kontrolna tačka na fizičku ruku da biste saznali da li je obuka uspjela. Prvo pokrenite evaluaciju otvorene petlje. Ona ponavlja snimljenu epizodu, traži od modela akcije na svakom koraku i iscrtava predviđanje u odnosu na stvarnu vrijednost sa MSE i MAE. Ne košta ništa i hvata greške mapiranja iz koraka 2 i 3.
uv run python gr00t/eval/open_loop_eval.py \
--dataset-path ./my_dataset_lerobot \
--embodiment-tag NEW_EMBODIMENT \
--model-path /tmp/so100/checkpoint-20000 \
--traj-ids 0 \
--execution-horizon 16 \
--steps 400 \
--modality-keys single_arm gripperRepozitorij namjerno odbija objaviti ciljani MSE za prilagođene podatke, i to je ispravna odluka: broj zavisi od vaših akcionih jedinica, vašeg zadatka i veličine vašeg skupa podataka, tako da prag kopiran sa tuđe ruke ne znači ništa. Ono što je značajno je trend. Evo referentnog pokretanja koje repozitorij dokumentuje na jednom H100 sa demo skupom podataka od pet epizoda i 2000 koraka.
| Kontrolna tačka | Prosječni MSE na putanji 0 | Prosječni MAE na putanji 0 |
|---|---|---|
| 500 | 87.5 | 5.63 |
| 1000 | 25.4 | 3.30 |
| 1500 | 13.2 | 2.18 |
| 2000 | 10.0 | 1.76 |
Oblik je signal, a ne apsolutne vrijednosti. Greška bi trebala postepeno opadati kako se koraci obuke akumuliraju. U prosjeku, preko svih pet epizoda obuke, a ne samo putanje 0, konačna kontrolna tačka repozitorijuma postigla je otprilike 7.5 MSE i 1.5 MAE, tako da se čak i referentno pokretanje različito tumači u zavisnosti od toga koje epizode prosječite. Zabilježite svoju početnu vrijednost na nemodifikovanoj demo komandi prije nego što promijenite bilo šta u vezi sa svojim podacima: ako ne možete reprodukovati poznato dobro pokretanje, ne možete razlikovati grešku u postavljanju od problema sa podacima. Repozitorijum takođe mapira uobičajene simptome na uzroke, i svaki od njih je operativan, a ne greška modela.
| Simptom | Vjerovatan uzrok |
|---|---|
| MSE ravan ili raste kroz kontrolne tačke | Stopa učenja preniska, ili se podaci uopšte ne učitavaju. Provjerite --dataset-path i radnike dataloader-a. |
| Kriva predviđanja je ravna ili konstantna | modality.json ključevi ili --modality-config-path se ne podudaraju. Ključevi akcija nisu mapirani. |
| MSE ogroman, ili NaN gubitak tokom obuke | Normalizacija akcije i stanja. Provjerite meta/stats i da su rasponi akcija fizički prihvatljivi. |
| Dobro na putanji 0, loše na zadržanim epizodama | Nedostatak podataka, nije greška. Pet demo epizoda ne može generalizovati. |
Drugi put: lerobot-train umjesto Isaac-GR00T
Trenutno izdanje LeRobot-a, 0.6.1 na PyPI-ju od 3. avgusta 2026. godine, nudi drugi i prilično drugačiji način za fino podešavanje istih osnovnih težina. LeRobot izlaže GR00T N1.7 kao tip politike i obučava ga putem sopstvene lerobot-train ulazne tačke. Dvije stvari su ovdje važne. LeRobot CLI je skup konzolnih skripti, tako da sve što pročitate da kaže python lerobot/scripts/train.py je zastarjelo i neće se pokrenuti. A LeRobot je u potpunosti uklonio podršku za GR00T N1.5, odbijajući N1.5 kontrolne tačke i konfiguracije sa napomenom o migraciji, tako da ako vam je potreban N1.5 putem LeRobot-a, morate fiksirati lerobot==0.5.1, posljednje izdanje koje ga podržava, objavljeno 7. aprila 2026.
pip install "lerobot[groot]" "lerobot[training]"
hf auth login
lerobot-train \
--dataset.repo_id=$HF_USER/$DATASET_NAME \
--dataset.image_transforms.enable=true \
--policy.type=groot \
--policy.device=cuda \
--policy.base_model_path=nvidia/GR00T-N1.7-3B \
--policy.embodiment_tag=new_embodiment \
--policy.chunk_size=16 \
--policy.n_action_steps=16 \
--policy.use_relative_actions=true \
--policy.relative_exclude_joints='["gripper"]' \
--policy.use_bf16=true \
--seed=42 \
--batch_size=64 \
--steps=20000 \
--save_freq=5000 \
--output_dir=$OUTPUT_DIR| Aspekt | Isaac-GR00T launch_finetune.py | lerobot-train --policy.type=groot |
|---|---|---|
| Verzija skupa podataka | Samo LeRobot v2, potrebna konverzija | Nativni LeRobot skup podataka, bez degradacije |
| Mapiranje modaliteta | meta/modality.json plus Python konfiguracija podataka | nema modality.json; ponašanje postavljeno --policy.* zastavicama u komandnoj liniji |
| Sjeme | uopšte nema zastavice za sjeme | --seed, LeRobot podrazumijevano 1000 |
| Relativne akcije | ActionConfig po ključu u konfiguraciji podataka | --policy.use_relative_actions plus --policy.relative_exclude_joints |
| Objavljeni referentni rezultati | SO-100 trend MSE-a otvorene petlje na demo podacima | LIBERO paketi, 96.5 posto prosjeka kroz četiri paketa |
| Putanja implementacije | run_gr00t_server.py plus eval_so100.py preko ZMQ-a | lerobot-rollout, sa chunkingom u realnom vremenu (queue_threshold bi trebao ostati na ili ispod 5) |
- Svaka zastavica je vidljiva i promjenjiva. Možete odmrznuti vizualni enkoder, pomjeriti state_dropout_prob, ili skratiti akcioni horizont.
- Grafikoni otvorene petlje su lokalne datoteke. Poređenje checkpoint-5000 sa checkpoint-20000 je shell komanda.
- Ne zavisite od toga da li će neka platforma ostati online, a kontrolna tačka se nalazi na vašem disku u standardnom formatu.
- Primjeri benchmarka repozitorija za LIBERO, SimplerEnv i DROID daju vam poznate dobre pokretanja za reprodukciju prije nego što povjerujete vlastitim podacima.
- Okruženje je većina posla. FFmpeg verzija, CUDA_HOME, git-lfs, gated backbone, torchcodec: nijedan od ovih nisu problemi modela i svaki od njih zaustavlja pokretanje.
- Konverzija v3.0 u v2.1 zahtijeva zasebno virtualno okruženje sa vlastitim korakom instalacije, i prepisuje vaš direktorij skupa podataka na mjestu.
- Iznajmljivanje GPU-a počinje naplatu kada počnete sa otklanjanjem grešaka, a ne kada počne obuka, i ništa ne zaustavlja instancu kada se pokretanje završi.
- Nema sjemena znači nema bit-po-bit ponovljivosti, povrh 5 do 6 posto varijacije od pokretanja do pokretanja samo od augmentacije.
Dva načina za dobijanje iste kontrolne tačke
Iznajmljujete GPU i kontrolišete svaki korak. Realno, prvi put će vam trebati jedno popodne, a svaki sledeći put dvadesetak minuta.
- Snimite epizode sa lerobot-record na SO-100. Dobijate LeRobot v3.0 skup podataka.
- Pretvorite ga u v2.1 pomoću scripts/lerobot_conversion/convert_v3_to_v2.py u sopstvenom virtuelnom okruženju.
- Napišite meta/modality.json i Python konfiguraciju modaliteta, registrovanu pod EmbodimentTag.NEW_EMBODIMENT.
- Iznajmite karticu od 80 GB, klonirajte sa podmodulima, uv sync, autentifikujte se na Hugging Face.
- Pokrenite launch_finetune.py, zatim open_loop_eval.py na nekoliko kontrolnih tačaka i uporedite trend MSE pre nego što dodirnete hardver.
- Preuzmite kontrolnu tačku sa mašine pre nego što uništite instancu, a zatim izgradite putanju za serviranje do ruke.
Kopirajte kontrolnu tačku sa iznajmljene instance pre nego što je isključite. --save-total-limit 5 takođe znači da se starije kontrolne tačke brišu kako obuka napreduje, tako da kontrolna tačka koju ste želeli na koraku 5000 možda više ne postoji na koraku 20000.
Isti posao kao obrazac. Vi birate model i skup podataka, pozadinski sistem iznajmljuje GPU na spot tržištu prema potrebnom VRAM-u, pokreće trener i piše kontrolne tačke u skladište objekata. GR00T N1.7 na SO-100 vodič je tačno ova kombinacija; matrica obuke ima svaku drugu kombinaciju modela i ruke, uključujući GR00T N1.7 na SO-101.
| Šta šalje groot1.7 trener | Vrednost |
|---|---|
| Veličina paketa | 32 |
| Stopa učenja | 1e-4 |
| Maksimalni koraci | 20000 |
| Akumulacija gradijenta | 1, i to stupa na snagu za ovog trenera |
| Dodatna opcija izložena u obrascu | saveSteps |
| Osnovna kontrolna tačka | nvidia/GR00T-N1.7-3B |
| Prihvaćeni format skupa podataka | LeRobot v2.0 or v2.1 |
Skup podataka može doći iz Hugging Face repo ID-a, sa vaše mašine, ili iz sesije koju ste snimili sa desktop klijentom. Zaključivanje je poseban korak: platforma obezbeđuje pod koji služi politiku, a vaš lokalni robot klijent komunicira sa tom krajnjom tačkom. Podovi nose idle watchdog i uništavaju se nakon perioda neaktivnosti, tako da zaboravljena kartica pregledača neće generisati račun preko noći. Ako ne želite da klikćete, iste operacije postoje na CLI-ju i MCP serveru.
GR00T N1.7 i Pi0.5 su ovde samo u oblaku; samo SmolVLA i ACT takođe rade lokalno. Zahtev za v2.1 takođe ne nestaje, jer se v3.0 skup podataka i dalje mora konvertovati pre nego što ga GR00T učitavač prihvati. I ništa ne piše vašu modality.json semantiku za vas: ako su vaši ključevi kamere ili ključ jezika pogrešni, pogrešni su na obe rute. Pogledajte dokumentaciju za obuku za ono što pozadinski sistem radi i ne radi u vaše ime.

Vraćanje kontrolne tačke na ruku
Isaac-GR00T koristi podelu server-klijent preko ZMQ-a. Politika se izvršava na GPU-u, a tanki klijent na robotskoj mašini šalje zapažanja i prima delove akcija. Primer SO-100 je dovoljno kompletan za kopiranje: pokrenite run_gr00t_server.py sa vašom kontrolnom tačkom i --embodiment-tag NEW_EMBODIMENT, zatim pokrenite eval_so100.py na strani robota sa serijskim portom, ID-om robota, indeksima kamere i jezičkom instrukcijom. Imena kamera u toj komandi moraju se podudarati sa prijateljskim imenima iz vašeg modality.json, a ne sa brojevima OS uređaja.
# GPU side
uv run python gr00t/eval/run_gr00t_server.py \
--model-path /tmp/so100/checkpoint-20000 \
--embodiment-tag NEW_EMBODIMENT \
--device cuda:0 \
--host 0.0.0.0 --port 5555
# robot side, from gr00t/eval/real_robot/SO100
uv run --no-sync python eval_so100.py \
--robot.type=so101_follower \
--robot.port=/dev/ttyACM2 \
--robot.id=orange_follower \
--robot.cameras="{ front: {type: opencv, index_or_path: 6, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 2, width: 640, height: 480, fps: 30}}" \
--policy_host=localhost --policy_port=5555 \
--lang_instruction="put the cube in the yellow bowl"Dok ponovo povezujete ruku: SO-100 koristi Feetech STS3215 bus servo motore na 7.4 V napajanju. Napajanje sa 12 V ih uništava, i to je laka greška ako posjedujete i LeKiwi, čija baza radi na 12 V dok ruka ne. Provjerite napajanje prije prvog uključivanja, a ne nakon dima. Pogledajte stranicu hardvera SO-100 i SO-100 protiv LeKiwi. Ako se ruka uključi, ali se ništa ne pomjera, servo ne reaguje je mjesto za početak.
Sada iskreni dio o tome gdje se politika izvršava, jer obuka i posluživanje imaju različite hardverske priče. Fino podešavanje zahtijeva 40 GB ili više. Inferencija ne: README navodi 16 GB ili više i eksplicitno imenuje RTX 4090, tako da kartica koju već posjedujete može poslužiti checkpoint koji nikada nije mogla proizvesti. Ono što odlučuje da li se politika čini responzivnom nije VRAM, već gdje se server nalazi. Na AY-Robots GR00T N1.7 je samo u oblaku, tako da kontrolna petlja plaća povratno putovanje preko javnog interneta povrh 152 ms po koraku akcije, i samo SmolVLA i ACT takođe rade lokalno. Za sporo uzimanje i postavljanje, udaljeni pod je održiv. Za bilo šta reaktivno nije: politika postaje neodlučna na način koji izgleda tačno kao neuspjeh obuke, a nije. ACT sa 20 ms po koraku akcije je model koji toleriše najužu petlju, SmolVLA je na 245 ms, i nikakva količina podešavanje latencije ne vraća povratno putovanje koje je već potrošeno. Pokrenite svoju prvu politiku prolazi kroz stranu posluživanja od kraja do kraja.
Šta zapravo krene po zlu
- GatedRepoError pri prvom pokretanju. Nije vam odobren pristup nvidia/Cosmos-Reason2-2B, ili se niste autentifikovali. Ovo se dešava nakon što je GPU sat već počeo.
- Skup podataka odbijen pri učitavanju. Gotovo uvijek skup podataka v3.0. Konvertujte ga na nižu verziju. Pogledajte skup podataka odbijen kao v3.
- IndexError zbog neusklađenih boolean dimenzija. Promijenili ste delta_indices i niste regenerisali statistiku.
- Nedostatak memorije pri batch 32. Smanjite --global-batch-size i povećajte --gradient-accumulation-steps, ili smanjite --num-shards-per-epoch, što konfiguracija eksplicitno sugeriše kada je VRAM ograničen. Pogledajte nedostatak memorije tokom treninga.
- Gubitak opada, politika ne radi ništa. Podrazumijevano nema validacione podjele, tako da čista kriva treninga malo dokazuje. Ova stranica pokriva dijagnozu.
- Radi u vašem podešavanju i nigdje drugdje. Očekivano sa malim skupom podataka snimljenim pod jednim uslovom osvjetljenja. NVIDIA preporučuje augmentaciju boja (colour jitter) plus 20 do 50 epizoda pod različitim osvjetljenjem. Više ovdje.
- Hvataljka se nikada ne zatvara pravilno. Provjerite da je akcija hvataljke ABSOLUTE, a zglobovi ruke RELATIVE, tim redoslijedom u action_configs. Hvataljka se ne zatvara navodi ostale uzroke.
- Kamera se tiho isključi usred snimanja. Epizoda se i dalje snima i video ključ i dalje postoji, zbog čega je ovo nezgodno. Kamera nije detektovana to pokriva.
Cijeli indeks načina kvara nalazi se na . Ako birate između modela umjesto da otklanjate greške na jednom, i imaju benchmark brojeve sa priloženim izvorima, i je poređenje koje većina ljudi zapravo treba, jer je to izbor između modela koji možete trenirati na kartici ispod vašeg stola i onog za koji morate iznajmiti čvor od 80 GB za fino podešavanje. Za pozadinu o tome zašto se ovi modeli ponašaju na način na koji se ponašaju, i vrijedi prvo pročitati. A ako još nemate ruku, prenosi fizički SO-100 bez prijave.
Koliko epizoda mi je potrebno prije nego što se isplati fino podešavanje GR00T N1.7?▾
AY-Robots postavlja minimalno 50 epizoda za groot1.7 trener. NVIDIA-in vlastiti FAQ je zahtjevniji: otprilike 100 trajektorija za jednostavno uzimanje i postavljanje na fiksnoj lokaciji, 500 ili više za složene scene sa više koraka, i 100 do 500 za finu manipulaciju. Ispod 50 epizoda gotovo uvijek je bolje snimiti više podataka nego podešavati hiperparametre. Ako se uspjeh stabilizuje nakon toga, NVIDIA preporučuje HG-DAgger: pokrenite politiku, intervenišite kada zakaže i dodajte te korekcije skupu podataka.
Zašto se moj skup podataka ne učitava i kako da znam koja je verzija?▾
Otvorite meta/info.json i pročitajte codebase_version. Trenutni CODEBASE_VERSION LeRobota na main grani je v3.0, tako da je sve snimljeno sa nedavnim alatima v3.0, a GR00T učitavač očekuje v2. Konvertujte pomoću scripts/lerobot_conversion/convert_v3_to_v2.py iz Isaac-GR00T repozitorijuma, koji upisuje codebase_version: v2.1 u konvertovani skup podataka. Skripta se pokreće u sopstvenom virtualnom okruženju jer joj je potrebna drugačija verzija lerobota od one koju GR00T koristi.
Mogu li fino podesiti GR00T N1.7 na RTX 4090?▾
Ne. NVIDIA preporučuje 40 GB ili više VRAM-a za fino podešavanje i navodi H100 ili L40 čvorove; druge kartice rade, ali mnogo duže. 4090 ima 24 GB. AY-Robots nudi GR00T N1.7 samo na A100 80 GB i H100 80 GB nivou iz istog razloga. Zaključivanje je druga priča: 16 GB je dovoljno za pokretanje modela, tako da 4090 može pokrenuti politiku koju ne može trenirati. Ako želite VLA koji možete trenirati na 24 GB, to je SmolVLA sa oko 450 M parametara ili ACT sa oko 80 M.
Zašto dva pokretanja sa identičnim zastavicama daju različite kontrolne tačke?▾
Zato što launch_finetune.py nema seed. To je tyro CLI generisan iz dataclass-a koji ne sadrži polje seed, tako da ništa ne fiksira RNG. Repozitorijum zasebno bilježi 5 do 6 posto varijacije između pokretanja uzrokovane nedeterminističkom augmentacijom slike. Ako je reproduktivnost važna, koristite LeRobot putanju umjesto toga: lerobot-train prihvata --seed, a objavljeni GR00T recept prosleđuje --seed=42.
Trebam li koristiti Isaac-GR00T ili lerobot-train?▾
Koristite Isaac-GR00T ako želite referentnu implementaciju, kontrolu nad reprezentacijom akcija po ključu, TensorRT izvoz, ili benchmark primjere za reprodukciju prije nego što povjerujete vlastitim podacima. Koristite lerobot-train ako je vaš skup podataka već LeRobot v3.0 i radije ga ne biste konvertovali, ako želite seed, ili ako je ostatak vašeg steka već LeRobot. Oba fino podešavaju iste nvidia/GR00T-N1.7-3B težine. Imajte na umu da je LeRobot u potpunosti odustao od podrške za GR00T N1.5: N1.5 kontrolne tačke su odbijene sa napomenom o migraciji, i morate fiksirati lerobot==0.5.1 da biste ih nastavili koristiti.
Da li mi je zaista potrebna kamera na zglobu pored prednje kamere?▾
Isporučena SO-100 konfiguracija koristi obje, a modality.json mapira prednju i zglobnu kameru kao zasebne video ključeve. Možete trenirati sa jednom kamerom, a tabela latencije modela je izmjerena sa jednom kamerom, ali pogled sa zgloba je ono što politici daje korisne informacije o hvataljci u trenutku kontakta. Ako se hvataljka zatvara u pogrešno vrijeme u vašim izvođenjima, nedostajuća ili loše usmjerena kamera na zglobu je jedna od prvih stvari koje treba provjeriti.
Fino podesite GR00T N1.7 na vašem SO-100 bez prethodnog postavljanja okruženja
Odaberite model, skup podataka i hiperparametre u obrascu. Backend iznajmljuje A100 80 GB ili H100 na spot tržištu, pokreće trener sa batch 32, stopom učenja 1e-4 i 20000 koraka, i piše kontrolne tačke u skladište objekata. Otprilike 4 do 12 USD po pokretanju.
Otvorite vodič za trening GR00T N1.7Sources
- NVIDIA Isaac-GR00T repository README, N1.7 main branch
- Isaac-GR00T: Fine-tune on Custom Embodiments (NEW_EMBODIMENT)
- Isaac-GR00T: Finetuning Models for the SO100/SO101 Robot
- Isaac-GR00T: Robot Data Preparation Guide, the GR00T LeRobot format
- Isaac-GR00T: modality config and ActionConfig reference
- Isaac-GR00T: Policy API Guide and the embodiment tag list
- Isaac-GR00T: FinetuneConfig dataclass with every CLI default
- Isaac-GR00T: the shared finetune launcher wrapper
- GR00T N1.7 FAQ: data volume, augmentation and deployment
- nvidia/GR00T-N1.7-3B model card, including the inference timing table
- nvidia/Cosmos-Reason2-2B, the gated VLM backbone used by N1.7
- GR00T N1: An Open Foundation Model for Generalist Humanoid Robots
- NVIDIA Isaac GR00T N1.7: Open Reasoning VLA Model for Humanoid Robots
- LeRobot: GR00T Policy, the lerobot-train recipe
- LeRobot: Imitation Learning on Real-World Robots (lerobot-record, lerobot-train)
Ready for high-quality robotics data?
AY-Robots connects your robots to skilled operators worldwide.
Get Started