
Provereni vodič za fino podešavanje NVIDIA GR00T N1.7 na SO-100 LeRobot skupu podataka: stvarne zastavice, modality.json, zahtev v2.1, koliko košta pokretanje i zamke.
NVIDIA isporučuje primer finog podešavanja za tačno onu ruku koju verovatno posedujete. Unutar Isaac-GR00T repozitorijuma nalazi se folder pod nazivom demo_data/cube_to_bowl_5: pet epizoda, 4,148 frejmova pri 30 fps, već napisano kao LeRobot v2.1, sa odgovarajućom konfiguracijom modaliteta pod examples/SO100/. Njegov meta/info.json izveštava robot_type: so101_follower, što je u LeRobot-u 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 vest je razdaljina između I recorded 60 episodes i the arm does the task. Postoji oko šest mesta gde ovaj pajplajn tiho, a ne glasno, zataji, a četiri od njih se nalaze u fajlovima koje većina ljudi nikada ne otvara: meta/modality.json, konfiguracija Python podataka, meta/relative_stats.json, i sopstveni string verzije skupa podataka. Ovaj vodič prolazi kroz 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 provereno u odnosu na glavnu granu Isaac-GR00T od 20. avgusta 2026. (linija izdanja n1.7) i lerobot 0.6.1, objavljen na PyPI 3. avgusta 2026. Uzvodno se brzo menja, i tamo gde je zastavica preimenovana, ovaj članak to navodi.
Šta treba da znate pre nego što počnete
- •Fino podešavanje GR00T N1.7 zahteva 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čan meta/modality.json. Skup podataka LeRobot v3.0 se ne učitava i mora se konvertovati naniže.
- •Ulazna tačka je gr00t/experiment/launch_finetune.py, tyro CLI. Nema --seed zastavicu, tako da pokretanja nisu reprodukovana bit-za-bit.
- •Za prilagođenu ruku, oznaka za otelotvorenje je NEW_EMBODIMENT, i ta oznaka čini --modality-config-path obaveznim.
- •Isporučeni SO-100 recept predviđa zglobove ruke kao RELATIVNE delte, a hvataljku kao APSOLUTNU metu. Obrnuto uparivanje je tihi neuspeh, 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 GR00T N1.7 zapravo
GR00T N1.7 je model vida-jezika-akcije, sa rasporedom dvostrukog sistema opisanim u originalnom GR00T N1 radu: modul vida-jezika koji čita kamere i instrukcije, i difuzioni transformator koji to pretvara u deo kontinuiranih motornih komandi. N1.7 je zamenio prvu polovinu. Eagle okosnica iz N1.6 je uklonjena, zamenjena sa nvidia/Cosmos-Reason2-2B na Qwen3-VL arhitekturi, a model je preobučen na otprilike 20.000 sati egocentričnog ljudskog videa pored robotskih podataka. NVIDIA-in sopstveni izveštaj navodi cifru od 20.854 sata i izveštava da prelazak sa 1k na 20k sati više nego udvostručuje prosečnu stopu izvršenja zadataka.
Druga polovina se takođe promenila, na načine koji su važni za vaše izvršavanje. Glava akcije je smanjena sa 32 difuziona sloja na 16, predviđeni blok akcija je porastao sa 16 koraka na 40, a maksimalna širina stanja i akcije je prešla sa 29 na 132. Ova tri broja potiču iz changelog-a u README-u repozitorijuma; NVIDIA-in sopstveni post o lansiranju i dalje opisuje Sistem 1 kao 32-slojni DiT, tako da tamo gde se ova dva ne slažu, verujte repozitorijumu koji ćete klonirati. Akcije su podrazumevano izražene u relativnom prostoru krajnjeg efektora , delte od trenutne poze, a ne apsolutne mete, što omogućava da se prethodna znanja o manipulaciji naučena iz ljudskog videa prenesu u kontrolu robota. Sama glava je flow-matching difuzioni transformator, iste porodice kao Pi0.5, ali sa drugačijom okosnicom ispred. Ako ste još uvek na prethodnoj generaciji, N1.7 u poređenju sa N1.5 pokriva da li nadogradnja opravdava ponovno kreiranje vašeg pajplajna.
| Svojstvo | Vrednost | Izvor |
|---|---|---|
| Parametri | 3,000,000,000 | Hugging Face kartica modela |
| Okosnica vida-jezika | nvidia/Cosmos-Reason2-2B (Qwen3-VL), gated on Hugging Face | repo README |
| Glava akcije | Flow-matching difuzioni transformator, 16 slojeva (N1.6 je imao 32) | repo README |
| Predviđeni horizont akcije | 40 steps for the base checkpoint (N1.6 had 16) | getting_started/policy.md and repo README |
| Maksimalna širina stanja i akcije | 132 (N1.6 had 29) | repo README |
| Licenca koda | Apache 2.0 | Isaac-GR00T repository |
| Licenca težina | NVIDIA Open Model License Agreement | kartica modela |
| Kašnjenje, H100 80 GB, PyTorch eager, 4 koraka denoisovanja, 1 kamera | 85.8 ms end to end, 11.7 Hz | tabela vremena kartice modela |
| Isti hardver, TensorRT puni pajplajn | 27.9 ms end to end, 35.9 Hz | tabela vremena kartice modela |
| Kašnjenje koje AY-Robots navodi za svoj servisirani GR00T N1.7 | 152 ms per action step | AY-Robots katalog politika |
Ova poslednja 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 denoisovanja. Čisti PyTorch na istoj kartici je 85.8 ms, a kartica modela navodi da je razlika 3.08x. Nijedan broj ne uključuje sloj za serviranje, drugu kameru ili mrežni skok. 152 ms po koraku akcije koje AY-Robots navodi za svoj servisirani GR00T N1.7 je cifra sa serviranjem u petlji, a povratno putovanje preko javnog interneta je povrh toga. Više o ovome na kraju. Za brojeve pored drugih modela, GR00T N1.7 u poređenju sa Pi0.5 i GR00T N1.7 u poređenju sa SmolVLA ih prikazuju jedan pored drugog.

Šta je potrebno za pokretanje pre nego što bilo šta ukucate
| Zahtev | Fino podešavanje | Inferencija |
|---|---|---|
| VRAM, NVIDIA preporuka | 40 GB ili više, preporučuje se H100 ili L40 | 16 GB ili više, radi RTX 4090 |
| Python i CUDA na dGPU | 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 primenljivo |
| 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 obezbeđen |
Svaki GR00T kontrolni punkt, uključujući osnovni nvidia/GR00T-N1.7-3B, učitava nvidia/Cosmos-Reason2-2B pri prvoj upotrebi, a taj repozitorijum je zaštićen. README tačno navodi grešku: učitavanje modela ne uspeva sa GatedRepoError / 401 Client Error. Ono što se ne pominje 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 pre nego što iznajmite bilo šta.
Korak 0: same epizode
Sve dole 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 povratiti informacije koje nisu u podacima. Prvo kalibrišite obe ruke, zatim vozite pratioca sa vodećom rukom dok lerobot-record piše parquet datoteke i tokove kamere. Ako je kalibracija isključena, vrednosti 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=trueSopstveni savet LeRobot-a je da snimite najmanje 50 epizoda sa oko 10 po lokaciji objekta, da kamere držite fiksirane i da ponašanje hvatanja bude dosledno. Dodajte varijacije kasnije, ne na početku. Pravilo koje vredi zapamtiti: ako sami niste mogli da obavite zadatak samo na osnovu slika sa kamere, politika takođe ne može. Za podešavanje specifično za ruku, SO-100 početak rada i stranica SO-100 LeRobot pokrivaju portove, kalibraciju i indekse kamere. Na AY-Robots takođe možete ovo uraditi preko interneta iz pretraživač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 ona se pokreće u sopstvenom virtuelnom okruženju iz konkretnog razloga: scripts/lerobot_conversion nosi sopstveni pyproject koji zahteva Python 3.10 ili 3.11 i fiksira lerobot na jedan git commit, dok sam Isaac-GR00T zahteva Python 3.12. Instalirajte konvertor 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 v3.0 skup podataka već postoji lokalno, skripta gradi v2.1 raspored pored njega, a zatim vrši zamenu: original se premešta u sestrinski folder sa dodatom verzijom, <name>_v3.0, a konvertovana kopija preuzima originalnu putanju. (Sopstveni docstring skripte naziva taj folder _v30; kod dodaje string verzije, tako da ono što zapravo dobijate je _v3.0.) Drugo iznenađenje: izlaz uvek 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, parket fajlovi pod data/chunk-000/, MP4 fajlovi 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 su sačuvani 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 parket fajlu ne govori koji indeks je koji. meta/modality.json obezbeđuje to mapiranje, i GR00T neće trenirati bez njega. Evo onog koji repozitorijum 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 vaš 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 da se slažu, i nijedan od njih ne proverava drugi 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 onaj ko je autorizovao skup 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 razrešava u 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 RELATIVE delte od trenutnog stanja i hvataljku kao ABSOLUTE ciljnu poziciju, jer se binarni signal otvoren-ili-zatvoren 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 izričito 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 apsolutna meta, i nema poruke o grešci. Drugo, register_modality_config tvrdi da oznaka nije već registrovana, tako da druga NEW_EMBODIMENT konfiguracija u istom Python procesu umire sa Embodiment tag ... already registered. Ne možete uvesti dve ovakve 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.
Statistika normalizacije, posebno meta/relative_stats.json, izračunava se za dužinu horizonta koju ste imali kada ste je generisali. Skraćivanje akcionog horizonta sa 16 na 8 bez ponovnog generisanja dovodi do prekida treninga 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 premestio repozitorijum na i Python 3.12. Stara conda plus pip install -e . putanja i dalje postoji u skrivenom delu README-a, ali upozorava da GPU zavisnosti, uključujući flash-attn i TensorRT, možda zahtevaju 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 sprečava zabunu: videćete Installing flash-attn odštampano pri svakom uv run. Ne vrši se ponovna izgradnja. uv ponovo validira wheel koji je vezan za URL i koji je već keširan, a to traje dve ili tri sekunde.
- 1Instalirajte git-lfs, zatim klonirajte sa podmodulima
git-lfs je obavezan, nije opcioni. Bez njega, parquet fajlovi u demo_data/ dolaze kao pokazivački stubovi, a demo pokretanje ne uspeva na skupu podataka koji izgleda prisutan u listi fajlova.
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
Podrazumevana instalacija povlači GPU zavisnosti, uključujući flash-attn i TensorRT. Na svežoj A100 ili H100 slici, ovo je najduži pojedinačni korak, pa ga uradite pre nego što obratite 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 pre prvog pokretanja obuke, a ne nakon što ne uspe osam minuta kasnije.
bashuv run huggingface-cli login # or: export HF_TOKEN=<your_token> - 4Provera ispravnosti na isporučenim SO-100 demo podacima
Pre nego što dodirnete sopstveni 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 uspe, ništa što uradite 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 neispravna instalacija, a ne konflikt verzija. Instalirajte starije okruženje, na primer conda install -c conda-forge 'ffmpeg<8', i postavite njegove biblioteke na LD_LIBRARY_PATH. CUDA_HOME nije postavljen. Fino podešavanje potpuno ne uspeva. Pokrenite bash scripts/deployment/dgpu/install_deps.sh jednom, ili samo export CUDA_HOME=/usr/local/cuda.
Korak 5: komanda za fino podešavanje i koje su 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 veličina paketa (batch) preko svih GPU-a pre akumulacije gradijenata. Isporučeni primeri koriste 32. |
| --learning-rate | 1e-4 | Ista vrednost koju AY-Robots šalje za svoj groot1.7 trener. |
| --max-steps | 10000 | Ukupan broj koraka optimizatora. Omotač examples/finetune.sh takođe podrazumevano koristi 10000. |
| --gradient-accumulation-steps | 1 | Množi efektivnu veličinu paketa. Vrednosti iznad 1 emituju upozorenje koje vam govori akumuliranu veličinu. |
| --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 ostaje zamrznuta po podrazumevanoj vrednosti. |
| --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 minimuma i maksimuma. |
| --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 seed na ovom CLI-u. |
Taj poslednji 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 procenata varijacije između pokretanja uzrokovane nedeterminističkom augmentacijom slike. Dva pokretanja sa identičnim flagovima neće proizvesti identične kontrolne tačke, što je veoma važno kada pokušavate da odlučite da li je promena hiperparametra pomogla ili ste imali sreće. Poređenja radi, lerobot-ov sopstveni 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 više. Vodič za novo otelotvorenje vam govori da ga uključite sa --eval-strategy steps --eval-steps 500, ali taj flag 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 umesto toga. Njihove podrazumevane vrednosti su "no", 500 i 2. Da biste im pristupili, koristite potpuniju ulaznu tačku gr00t/experiment/launch_train.py, gde je ugnježdeni flag --training.eval-strategy. U svakom slučaju, padajući gubitak treninga sam po sebi 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 zahteva karticu od 80 GB, tako da pitanje troškova ima uzak odgovor. Na AY-Robots, groot1.7 trener radi na A100 80 GB ili H100 80 GB nivou, gde pokretanje traje 3 do 6 sati po ceni 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 se izvršava na kartici od 24 GB po ceni od 0.30 do 0.60 USD po satu i 1 do 3 USD po pokretanju. To je pravi kompromis: GR00T košta oko č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čna cena | Minimalan 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 minimum je donja granica, a ne cilj. NVIDIA-in FAQ je zahtevniji: otprilike 100 trajektorija za jednostavno podizanje i postavljanje na fiksnoj lokaciji, 500 ili više za složene scene ili scene sa više koraka, i 100 do 500 za finu manipulaciju. Ako imate 20 epizoda, provedite popodne snimajući umesto da uveče podešavate. vodič za prikupljanje podataka pokriva šta razdvaja korisnu epizodu od protraćene, snimite svoj prvi skup podataka je kratka verzija, a SO-100 prikupljanje podataka je specifična za ruku.

Korak 6: evaluacija u otvorenoj petlji pre nego što dodirnete ruku
Ne stavljajte svež kontrolnu tačku na fizičku ruku da biste saznali da li je obuka uspela. 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 vrednost sa MSE i MAE. Ne košta ništa i hvata greške u mapiranju 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 gripperRepozitorijum namerno odbija da objavi ciljni 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 repozitorijum dokumentuje na jednom H100 sa demo skupom podataka od pet epizoda i 2000 koraka.
| Kontrolna tačka | Prosečan MSE na putanji 0 | Prosečan 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 vrednosti. Greška bi trebalo da opada postojano kako se koraci treninga akumuliraju. Prosečno preko svih pet epizoda treninga, a ne samo trajektorije 0, konačna kontrolna tačka repozitorijuma postigla je približno 7.5 MSE i 1.5 MAE, tako da se čak i referentno pokretanje tumači drugačije u zavisnosti od toga koje epizode prosečite. Zabeležite svoju sopstvenu osnovnu liniju na nemodifikovanoj demo komandi pre nego što promenite bilo šta u vezi sa sopstvenim podacima: ako ne možete reprodukovati poznato-dobro pokretanje, ne možete razlikovati grešku u podešavanju 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 | Verovatan uzrok |
|---|---|
| MSE ravno ili raste kroz kontrolne tačke | Stopa učenja preniska, ili se podaci uopšte ne učitavaju. Proverite --dataset-path i radnike za učitavanje podataka. |
| 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 treninga | Normalizacija akcije i stanja. Proverite meta/stats i da su opsezi akcija fizički verodostojni. |
| Dobro na traj 0, loše na zadržanim epizodama | Nedostatak podataka, nije greška. Pet demo epizoda ne može generalizovati. |
Drugi put: lerobot-train umesto 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 trenira ga kroz sopstvenu lerobot-train ulaznu tačku. Dve stvari su ovde važne. LeRobot CLI je skup konzolnih skripti, tako da sve što pročitate što kaže python lerobot/scripts/train.py je zastarelo i neće se pokrenuti. I LeRobot je u potpunosti uklonio podršku za GR00T N1.5, odbijajući N1.5 kontrolne tačke i konfiguracije uz napomenu o migraciji, tako da ako vam je potreban N1.5 kroz LeRobot, morate da fiksirate verziju lerobot==0.5.1, poslednje 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 |
|---|---|---|
| Samo LeRobot v2, potrebna konverzija | Nativni LeRobot skup podataka, bez degradacije | |
| meta/modality.json plus Python konfiguracija podataka | nema modality.json; ponašanje se postavlja pomoću --policy.* zastavica u komandnoj liniji | |
| uopšte nema zastavice za seme | --seed, LeRobot podrazumevano 1000 | |
| ActionConfig po ključu u konfiguraciji podataka | --policy.use_relative_actions plus --policy.relative_exclude_joints | |
| SO-100 trend MSE-a otvorene petlje na demo podacima | LIBERO paketi, 96.5 procenata prosečno kroz četiri paketa | |
| run_gr00t_server.py plus eval_so100.py preko ZMQ-a | lerobot-rollout, sa chunkingom u realnom vremenu (queue_threshold bi trebalo da ostane na ili ispod 5) |
- Svaka zastavica je vidljiva i promenljiva. Možete odmrzuti vizuelni enkoder, pomeriti state_dropout_prob, ili skratiti akcioni horizont.
- Grafikoni otvorene petlje su lokalni fajlovi. Poređenje checkpoint-5000 sa checkpoint-20000 je komanda ljuske.
- Ne zavisite od toga da li će neka platforma ostati onlajn, a kontrolna tačka se nalazi na vašem disku u standardnom formatu.
- Primeri benchmarka repozitorijuma za LIBERO, SimplerEnv i DROID daju vam poznate dobre izvršavanja za reprodukciju pre nego što verujete sopstvenim 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 izvršavanje.
- Konverzija sa v3.0 na v2.1 zahteva zasebno virtuelno okruženje sa sopstvenim korakom instalacije, i prepisuje vaš direktorijum skupa podataka na mestu.
- Iznajmljivanje GPU-a počinje da se naplaćuje kada počnete sa otklanjanjem grešaka, a ne kada počne obuka, i ništa ne zaustavlja instancu kada se izvršavanje završi.
- Nema semena znači nema reproduktivnosti bit-za-bit, povrh 5 do 6 procenata varijacije između izvršavanja samo od augmentacije.
Dva načina da se dobije ista kontrolna tačka
Iznajmljujete GPU i kontrolišete svaki korak. Realno, prvi put je potrebno jedno popodne, a svaki sledeći put dvadesetak minuta.
- Snimite epizode pomoću lerobot-record na SO-100. Dobijate LeRobot v3.0 skup podataka.
- Konvertujte ga na 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, ali 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 upisuje kontrolne tačke u skladište objekata. Vodič za GR00T N1.7 na SO-100 je ova tačna kombinacija; matrica obuke ima svaki drugi model i uparivanje ruku, 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 zaista utiče na ovaj trener |
| 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 pomoću desktop klijenta. Inferencija je poseban korak: platforma obezbeđuje pod koji služi politiku, a vaš lokalni robotski klijent komunicira sa tom krajnjom tačkom. Podovi imaju nadzornika neaktivnosti i uništavaju se nakon perioda neaktivnosti, tako da zaboravljena kartica pretraživača neće generisati troškove 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 skup podataka v3.0 i dalje mora konvertovati pre nego što ga GR00T učitavač prihvati. I ništa ne piše vašu modality.json semantiku umesto vas: ako su vaši ključevi kamere ili ključ jezika pogrešni, oni su pogrešni 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 od 12 V ih uništava, i to je laka greška ako posedujete i LeKiwi, čija baza radi na 12 V dok ruka ne. Proverite napajanje pre 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 pomera, servo ne reaguje je mesto za početak.
Sada iskreni deo o tome gde se politika izvršava, jer obuka i posluživanje imaju različite hardverske priče. Fino podešavanje zahteva 40 GB ili više. Zaključivanje ne: README navodi 16 GB ili više i eksplicitno imenuje RTX 4090, tako da kartica koju već posedujete može da posluži checkpoint koji nikada nije mogla da proizvede. Ono što odlučuje da li se politika oseća responsivno nije VRAM, već gde se server nalazi. Na AY-Robots GR00T N1.7 je samo u oblaku, tako da kontrolna petlja plaća povratno putovanje preko javnog interneta pored 152 ms po koraku akcije, i samo SmolVLA i ACT takođe rade lokalno. Za sporo uzimanje i postavljanje, udaljeni pod je podnošljiv. Za bilo šta reaktivno nije: politika postaje neodlučna na način koji izgleda tačno kao neuspeh 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šavanja latencije ne može da nadoknadi povratno putovanje koje je već potrošeno. Pokrenite svoju prvu politiku detaljno objašnjava stranu posluživanja.
Šta zapravo ide naopako
- 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 da radi.
- Skup podataka odbijen pri učitavanju. Gotovo uvek je to v3.0 skup podataka. Konvertujte ga na nižu verziju. Pogledajte skup podataka odbijen kao v3.
- IndexError zbog neusklađenih Bulovih dimenzija. Promenili 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. Podrazumevano nema validacione podele, tako da čista kriva treninga malo toga dokazuje. Ova stranica pokriva dijagnozu.
- Radi u vašem podešavanju i nigde drugde. Očekivano sa malim skupom podataka snimljenim pod jednim svetlosnim uslovima. NVIDIA preporučuje augmentaciju sa promenom boja (colour jitter) plus 20 do 50 epizoda pod različitim osvetljenjem. Više ovde.
- Hvataljka se nikada ne zatvara pravilno. Proverite da li je akcija hvataljke ABSOLUTE, a zglobovi ruke RELATIVE, tim redosledom 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.
Ceo indeks režima kvara nalazi se na stranicama za popravke. Ako birate između modela umesto da otklanjate greške na jednom, poređenje politika i unos u arenu za GR00T N1.7 imaju benchmark brojeve sa priloženim izvorima, a ACT protiv GR00T N1.7 je poređenje koje većini 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 pozadinske informacije o tome zašto se ovi modeli ponašaju na način na koji se ponašaju, VLA pregled i SO-100 kompletan vodič vredi prvo pročitati. A ako još uvek nemate ruku, ruka uživo strimuje fizički SO-100 bez prijave.
Koliko epizoda mi je potrebno pre nego što se isplati fino podešavanje GR00T N1.7?▾
AY-Robots postavlja donju granicu od 50 epizoda za groot1.7 trener. NVIDIA-in sopstveni FAQ je zahtevniji: 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 uvek je bolje snimiti više podataka nego podešavati hiperparametre. Ako se uspeh stabilizuje nakon toga, NVIDIA preporučuje HG-DAgger: pokrenite politiku, intervenišite kada ne uspe, i dodajte te korekcije skupu podataka.
Zašto moj skup podataka ne uspeva da se učita i kako da znam koja je verzija?▾
Otvorite meta/info.json i pročitajte codebase_version. LeRobot-ov trenutni CODEBASE_VERSION 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 lerobot verzija 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 im je potrebno mnogo više vremena. 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 generator slučajnih brojeva (RNG). Repozitorijum zasebno beleži varijaciju od 5 do 6 procenata između pokretanja uzrokovanu nedeterminističkom augmentacijom slike. Ako je reproduktivnost važna, koristite LeRobot putanju umesto toga: lerobot-train prihvata --seed, a objavljeni GR00T recept prosleđuje --seed=42.
Da li da koristim Isaac-GR00T ili lerobot-train?▾
Koristite Isaac-GR00T ako želite referentnu implementaciju, kontrolu nad reprezentacijom akcija po ključu, TensorRT izvoz, ili benchmark primere za reprodukciju pre nego što verujete sopstvenim 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 obe, a modality.json mapira prednju i zglobnu kameru kao zasebne video ključeve. Možete trenirati sa jednom kamerom, i tabela latencije modela je merena 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 vreme u vašim simulacijama, nedostajuća ili loše usmerena kamera na zglobu je jedna od prvih stvari koje treba proveriti.
Fino podesite GR00T N1.7 na vašem SO-100 bez prethodnog kreiranja okruženja
Izaberite model, skup podataka i hiperparametre u formi. 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 upisuje kontrolne tačke u skladište objekata. Otprilike 4 do 12 USD po pokretanju.
Otvorite GR00T N1.7 vodič za treningSources
- 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