
Preizkušen vodnik za fino uglaševanje NVIDIA GR00T N1.7 na naboru podatkov SO-100 LeRobot: dejanske zastavice, modality.json, zahteva v2.1, koliko stane zagon in pasti.
NVIDIA ponuja primer fine-tuninga za točno tisto roko, ki jo verjetno imate. Znotraj repozitorij Isaac-GR00T obstaja mapa z imenom demo_data/cube_to_bowl_5: pet epizod, 4.148 sličic pri 30 fps, že zapisanih kot LeRobot v2.1, z ujemajočo se konfiguracijo modalnosti pod examples/SO100/. Njegov meta/info.json poroča robot_type: so101_follower, ki je v LeRobotu enak konfiguracijski razred kot so100_follower. To je resnično uporabno, saj pomeni, da referenčno pot za GR00T N1.7 na šest-stopinj svobode hobi roko vzdržujejo ljudje, ki so napisali model. To ni pomanjšana humanoidna demonstracija, ampak ista roka.
Slaba novica je razdalja med I recorded 60 episodes in the arm does the task. Obstaja približno šest mest, kjer ta cevovod tiho odpove, namesto glasno, in štiri od njih so v datotekah, ki jih večina ljudi nikoli ne odpre: meta/modality.json, konfiguracija podatkov Python, meta/relative_stats.json, in lastna različica niza podatkov. Ta vodnik prikazuje ročno pot od začetka do konca z resničnimi ukazi, nato pa isto nalogo kot obrazec na AY-Robots. Vse spodaj je bilo preverjeno glede na glavno vejo Isaac-GR00T z dne 20. avgusta 2026 (linija izdaje n1.7) in lerobot 0.6.1, objavljen na PyPI 3. avgusta 2026. Upstream se hitro premika, in kjer je bila zastavica preimenovana, ta članek to navaja.
Kaj morate vedeti, preden začnete
- •Fine-tuning GR00T N1.7 zahteva 40 GB ali več VRAM-a. NVIDIA priporoča vozlišča H100 ali L40. 24 GB RTX 4090 ne bo opravil tega dela, čeprav bo treniral SmolVLA in ACT.
- •Nabor podatkov mora biti LeRobot v2 (v2.0 ali v2.1) plus GR00T-specifična meta/modality.json. Nabor podatkov LeRobot v3.0 se ne naloži in ga je treba pretvoriti navzdol.
- •Vstopna točka je gr00t/experiment/launch_finetune.py, tyro CLI. Nima zastavice --seed, zato izvedbe niso bit-za-bit ponovljive.
- •Za prilagojeno roko je oznaka embodiment NEW_EMBODIMENT, in ta oznaka naredi --modality-config-path obvezno.
- •Priložen recept SO-100 napoveduje sklepe roke kot RELATIVNE delte in prijemalo kot ABSOLUTNO tarčo. Obratna postavitev te paritve je tiha napaka, ne pa napaka.
- •Na AY-Robots je isto delo obrazec: 20000 korakov, serija 32, učna stopnja 1e-4, približno 4 do 12 USD na ravni A100 80 GB ali H100.
Kaj GR00T N1.7 dejansko je
GR00T N1.7 je vizualno-jezikovni-akcijski model z dvosistemsko zasnovo, opisano v izvirnem članku GR00T N1: vizualno-jezikovni modul, ki bere kamere in navodila, ter difuzijski transformator, ki to pretvori v blok neprekinjenih motornih ukazov. N1.7 je nadomestil prvo polovico. Hrbtenica Eagle iz N1.6 je izginila, zamenjana je bila za nvidia/Cosmos-Reason2-2B na arhitekturi Qwen3-VL, model pa je bil predhodno usposobljen na približno 20.000 urah egocentričnega človeškega videa poleg robotskih podatkov. NVIDIA-in lastni zapis navaja številko 20.854 ur in poroča, da prehod iz 1k na 20k ur več kot podvoji povprečno dokončanje naloge.
Druga polovica se je prav tako spremenila, na načine, ki so pomembni za vaše izvajanje. Glava akcije se je zmanjšala z 32 difuzijskih plasti na 16, predvideni akcijski blok se je povečal s 16 korakov na 40, največja širina stanja in akcije pa se je povečala z 29 na 132. Te tri številke izhajajo iz dnevnika sprememb v README repozitorija; NVIDIA-ina lastna objava ob zagonu še vedno opisuje Sistem 1 kot 32-plastni DiT, zato, kjer se podatki razlikujejo, zaupajte repozitoriju, ki ga boste klonirali. Akcije so privzeto izražene v relativnem končnem efektorju prostoru, kot delte od trenutne poze namesto absolutnih tarč, kar omogoča prenos manipulacijskih predznanj, naučenih iz človeškega videa, v robotsko krmiljenje. Sama glava je ujemanje toka difuzijski transformator, iz iste družine kot Pi0.5, vendar z drugačno hrbtenico pred njim. Če ste še vedno na prejšnji generaciji, N1.7 proti N1.5 obravnava, ali nadgradnja upravičuje prenovo vaše cevovodne arhitekture.
| Lastnost | Vrednost | Vir |
|---|---|---|
| Parametri | 3,000,000,000 | Hugging Face model card |
| Vizualno-jezikovna hrbtenica | nvidia/Cosmos-Reason2-2B (Qwen3-VL), gated on Hugging Face | repo README |
| Glava akcije | Difuzijski transformator z ujemanje toka, 16 plasti (N1.6 jih je imel 32) | repo README |
| Predvideni akcijski horizont | 40 steps for the base checkpoint (N1.6 had 16) | getting_started/policy.md and repo README |
| Največja širina stanja in akcije | 132 (N1.6 jih je imel 29) | repo README |
| Licenca kode | Apache 2.0 | Isaac-GR00T repository |
| Licenca uteži | NVIDIA Open Model License Agreement | model card |
| Latenca, H100 80 GB, PyTorch eager, 4 koraki razšumljavanja, 1 kamera | 85.8 ms end to end, 11.7 Hz | model card timing table |
| Ista strojna oprema, celoten cevovod TensorRT | 27.9 ms end to end, 35.9 Hz | model card timing table |
| Latenca, ki jo AY-Robots navaja za svoj streženi GR00T N1.7 | 152 ms per action step | AY-Robots policy catalog |
Te zadnje tri vrstice pojasnjujejo večino razočaranja, o katerem poročajo ljudje. Naslovnih 27.9 ms je motor TensorRT na H100 z eno kamero in štirimi koraki razšumljavanja. Čisti PyTorch na isti kartici je 85.8 ms, kartica modela pa navaja razliko pri 3.08x. Nobena številka ne vključuje strežnega sloja, druge kamere ali omrežnega skoka. 152 ms na akcijski korak, ki ga AY-Robots navaja za svoj streženi GR00T N1.7, je številka s strežbo v zanki, in javni internetni povratni poti se prištejejo k temu. Več o tem na koncu. Za številke poleg drugih modelov, GR00T N1.7 proti Pi0.5 in GR00T N1.7 proti SmolVLA jih postavlja drug ob drugega.

Kaj potrebuje zagon, preden karkoli vtipkate
| Zahteva | Fino uglaševanje | Sklepanje |
|---|---|---|
| VRAM, priporočila NVIDIA | 40 GB ali več, priporočena H100 ali L40 | 16 GB ali več, deluje RTX 4090 |
| Python in CUDA na dGPU | 3.12 and CUDA 12.8 | 3.12 and CUDA 12.8 |
| Video zaledje | torchcodec 0.8.0, samo FFmpeg 4 do 7 | enako |
| Format podatkovnega nabora | LeRobot v2 plus meta/modality.json | ni primerno |
| Dostop do Hugging Face | approved for nvidia/Cosmos-Reason2-2B | enako |
| Druga orodja | git-lfs and uv | uv |
| Nivo GPU-ja AY-Robots za trenažer groot1.7 | A100 80 GB or H100 80 GB | pod samodejno dodeljen |
Vsak kontrolni zapis GR00T, vključno z osnovnim nvidia/GR00T-N1.7-3B, ob prvi uporabi naloži nvidia/Cosmos-Reason2-2B, in ta repozitorij je zaprt. Datoteka README natančno navaja napako: nalaganje modela ne uspe z GatedRepoError / 401 Client Error. Kar ne omenja, je, kdaj se to zgodi, kar je po tem, ko ste najeli kartico in se je zagon začel. Zahtevajte dostop na strani modela, nato zaženite uv run huggingface-cli login ali izvozite HF_TOKEN, preden karkoli najamete.
Korak 0: same epizode
Vse spodaj predpostavlja, da že imate posnete epizode. Če jih nimate, je to pravi prvi korak in je tisti, ki odloča, kako dober bo rezultat, saj učenje z imitacijo ne more pridobiti informacij, ki niso v podatkih. Najprej kalibrirajte obe roki, nato poganjajte sledilca z vodilno roko medtem ko lerobot-record zapisuje parquet datoteke in video tokove kamer. Če kalibracija ni pravilna, vrednosti sklepov v vašem naboru podatkov opisujejo nekoliko drugačnega robota od tistega, ki bo kasneje izvajal politiko, in nobeno usposabljanje tega ne popravi.
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 lastni nasvet je, da posnamete vsaj 50 epizod, približno 10 za vsako lokacijo predmeta, kamere naj bodo fiksne, in prijemalno vedenje naj bo dosledno. Variacije dodajte kasneje, ne na začetku. Splošno pravilo, ki si ga je vredno zapomniti: če naloge ne bi mogli opraviti sami samo s slikami kamer, je ne more niti politika. Za nastavitev, specifično za roko, začetek dela z SO-100 in stran LeRobot za SO-100 pokrivata vrata, kalibracijo in indekse kamer. Na AY-Robots lahko to storite tudi preko interneta iz brskalnika z uporabo teleoperacije in snemate neposredno iz seje.
Korak 1: nabor podatkov mora biti LeRobot v2.1
To je najpogostejša ovira. Trenutna CODEBASE_VERSION na glavni veji je v3.0, zato se vse, kar danes posnamete s trenutnim naborom orodij, prikaže kot v3.0. GR00T-ov nalagalnik pričakuje v2. Repozitorij jasno pojasnjuje, zakaj: številni nadrejeni nabori podatkov, kot so DROID, LIBERO in Bridge, so objavljeni v v2, in izvorna podpora za oba je načrtovana, vendar še ni na voljo. Pretvorba je torej na vas in se izvaja v lastnem virtualnem okolju iz konkretnega razloga: scripts/lerobot_conversion vsebuje lasten pyproject, ki zahteva Python 3.10 ali 3.11 in pripne lerobot na en git commit, medtem ko Isaac-GR00T sam zahteva Python 3.12. Namestite pretvornik iz korena repozitorija in namesto tega dobite paket gr00t namesto tega, kar je napaka, na katero opozarja njegov README. Če ste novi v formatu, nabor podatkov LeRobot v glosarju pojasnjuje, kaj je dejansko v njem.
# 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_lerobotČe nabor podatkov v3.0 že obstaja lokalno, skripta zgradi postavitev v2.1 poleg njega in nato zamenja: izvirnik se premakne v sosednjo mapo z dodano različico, <name>_v3.0, in pretvorjena kopija prevzame izvirno pot. (Docstring skripte to mapo imenuje _v30; koda doda niz različice, tako da dejansko dobite _v3.0.) Drugo presenečenje: izhod vedno pristane pod <root>/<repo-id>, tako da --root examples/SO100/my_dataset_lerobot vam da examples/SO100/my_dataset_lerobot/<your-hf-user>/<your-dataset>, in ta daljša pot je tista, ki jo kasneje želi --dataset-path. Ko naloga usposabljanja zavrne vaš nabor podatkov zaradi razlogov različice, stran o naboru podatkov, zavrnjenem kot v3 navaja natančne simptome.
Struktura, ki jo GR00T želi po pretvorbi, je klasična postavitev v2: meta/info.json, meta/episodes.jsonl, meta/tasks.jsonl, datoteke parquet pod data/chunk-000/, datoteke MP4 pod videos/chunk-000/observation.images.
Korak 2: modality.json, šest številk, ki odločajo o vsem
V naboru podatkov LeRobot sta stanje robota in dejanje shranjena kot ploski nizi float32. Za SO-100 imata oba obliko [6]: pet sklepov roke in prijemalo. Demonstracijski nabor podatkov jih imenuje shoulder_pan.pos, shoulder_lift.pos, elbow_flex.pos, wrist_flex.pos, wrist_roll.pos, gripper.pos, vendar ta imena živijo v info.json in nič v datoteki parquet ne pove, kateri indeks je kateri. meta/modality.json zagotavlja to preslikavo, in GR00T se brez nje ne bo učil. Tukaj je tista, ki jo repozitorij dobavlja za SO-100, dobesedno.
{
"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 v svoj pretvorjeni nabor podatkov na meta/modality.json in preimenujte video ključe v imena, ki jih dejansko uporabljajo vaše kamere. Če ste snemali z eno samo nadglavno kamero z imenom top, potem je original_key observation.images.top in prijazno ime je tisto, na kar se bo sklicevala vaša konfiguracija podatkov. Oboje se mora ujemati in nobeno od njiju ne preverja drugega namesto vas. Jezikovna anotacija je slabša, ker se mora isti ključ pojaviti na treh mestih.
| Plast | Datoteka | Oblika SO-100, uporabljena v repozitoriju |
|---|---|---|
| Stolpec Parquet | data/chunk-*/episode_*.parquet | annotation.human.task_description |
| Ključ modality.json | meta/modality.json, pod "annotation", brez predpone annotation. | human.task_description |
| Ključi modality_keys v konfiguraciji podatkov | your so100_config.py | annotation.human.task_description |
Segmenti za annotation. so izbrani s strani avtorja nabora podatkov. Demo podatki SO-100 uporabljajo annotation.human.task_description; LIBERO in SimplerEnv uporabljata annotation.human.action.task_description. Oboje je veljavno. Če ste kopirali konfiguracijo iz primera LIBERO in jo usmerili na lasten posnetek SO-100, se jezikovni kanal razreši v nič in model se uči na praznem navodilu. Izguba še vedno pada. Politika še vedno nekaj počne. Samo ignorira, kar ste ji naročili.
Korak 3: konfiguracija podatkov, relativna roka in absolutni prijemalnik
Konfiguracija modalnosti je datoteka Python in ne JSON, ker določa tudi, kako je predstavljena vsaka skupina dejanj. To je del delovnega toka N1.7, ki v enaki obliki ni obstajal v N1.5, in del, ki ga je vredno prebrati dvakrat. Priložena konfiguracija SO-100 napoveduje pet sklepov roke kot RELATIVE delte od trenutnega stanja in prijemalo kot ABSOLUTE ciljno pozicijo, ker se binarni signal odprto-ali-zaprto obnaša bolje kot cilj kot pa kot 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)Dve podrobnosti vas bosta stali dan, če ju ne poznate. Prvič, action_configs je pozicijski: dokumentacija zahteva enako dolžino in enak vrstni red kot modality_keys, in jasno opozarja na posledice napačnega vnosa, kar pomeni, da se napačna predstavitev uporabi tiho. Vaše prijemalo se trenira kot delta in vaša roka kot absolutni cilj, in ni sporočila o napaki. Drugič, register_modality_config potrjuje, da oznaka še ni registrirana, zato druga konfiguracija NEW_EMBODIMENT v istem procesu Python umre z Embodiment tag ... already registered. V en sam skript ne morete uvoziti dveh takšnih konfiguracij. Tretje pravilo se uveljavlja kasneje, pri uvajanju: akcija delta_indices mora biti neprekinjen razpon, ki se začne pri nič. Redko okno, kot je [0, 4, 8], je zavrnjeno, ker vse nadaljnje komponente linearno indeksirajo napovedani del in bi sicer izvedle napačne vrstice.
Statistike normalizacije, zlasti meta/relative_stats.json, so izračunane za dolžino horizonta, ki ste jo imeli ob njihovi generaciji. Skrajšajte akcijski horizont iz 16 na 8 brez ponovne generacije in učenje se ustavi z IndexError: boolean index did not match indexed array ... dimension is 8 but corresponding boolean dimension is 16. Rešitev je en ukaz: python gr00t/data/stats.py --dataset-path <path> --embodiment-tag NEW_EMBODIMENT --modality-config-path examples/SO100/so100_config.py. Zaženite ga po vsaki spremembi delta_indices.
Korak 4: okolje
N1.7 je repozitorij premaknil na in Python 3.12. Stara pot conda plus pip install -e . pot še vedno obstaja v strnjenem delu datoteke README, vendar opozarja, da bodo odvisnosti GPU, vključno s flash-attn in TensorRT, morda potrebovale ročno namestitev. Uporabite uv, razen če imate poseben razlog, da ga ne. Kar zadeva flash-attn, ena podrobnost preprečuje zmedo: videli boste Installing flash-attn natisnjeno ob vsakem uv run. Ne gradi se ponovno. uv ponovno preverja URL-pripet wheel, ki je že predpomnjen, in to traja dve ali tri sekunde.
- 1Namestite git-lfs, nato klonirajte s podmoduli
git-lfs je obvezen, ne izbiren. Brez njega se datoteke parquet v demo_data/ prenesejo kot kazalčni nastavki, in demo zagon ne uspe na naboru podatkov, ki je videti prisoten v seznamu datotek.
bashsudo apt install git-lfs && git lfs install git clone --recurse-submodules https://github.com/NVIDIA/Isaac-GR00T cd Isaac-GR00T - 2Namestite uv in sinhronizirajte okolje
Privzeta namestitev potegne odvisnosti GPU, vključno s flash-attn in TensorRT. Na sveži sliki A100 ali H100 je to najdaljši posamezni korak, zato to storite, preden se posvetite čemur koli drugemu.
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')" - 3Avtentikacija proti Hugging Face
To storite pred prvim zagonom usposabljanja, ne potem, ko ne uspe po osmih minutah.
bashuv run huggingface-cli login # or: export HF_TOKEN=<your_token> - 4Preverjanje delovanja na priloženih demo podatkih SO-100
Preden se dotaknete lastnega posnetka, zaženite 2000 korakov na demo_data/cube_to_bowl_5. To je pet epizod, konča se hitro in dokazuje okolje namesto vaših podatkov. Če ta zagon ne uspe, vam nič, kar storite z vašim naborom podatkov, ne bo pomagalo.
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 podpira samo FFmpeg 4 do 7, Ubuntu 25.10 in novejši pa dobavljajo različico 8. Napaka je Could not load libtorchcodec, kar zveni kot pokvarjena namestitev in ne kot konflikt različic. Namestite starejše izvajalno okolje, na primer conda install -c conda-forge 'ffmpeg<8', in njegove knjižnice dodajte v LD_LIBRARY_PATH. CUDA_HOME ni nastavljen. Fino uglaševanje popolnoma odpove. Zaženite bash scripts/deployment/dgpu/install_deps.sh enkrat, ali pa samo export CUDA_HOME=/usr/local/cuda.
Korak 5: ukaz za fino uglasitev in dejanske privzete vrednosti njegovih zastavic
Zamenjajte predstavitveni nabor podatkov s svojim in dodajte nastavitve, ki jih dejansko želite. Spodaj je celotna oblika, ki jo repozitorij uporablja v svoji vadnici za novo utelešenje, vključno z zastavicami za razširitev in shranjevanje kontrolnih točk, ki jih kratek primer v README izpušča. To je v ožjem smislu: jezikovna hrbtenica in vizualni kodirnik ostajata zamrznjena, trenirata pa se projektor in difuzijska glava za dejanja.
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 | Privzeto v FinetuneConfig | Kaj počne |
|---|---|---|
| --global-batch-size | 64 | Skupna serija podatkov prek vseh GPE-jev pred akumulacijo gradientov. Priloženi primeri uporabljajo 32. |
| --learning-rate | 1e-4 | Ista vrednost, ki jo AY-Robots pošilja za svoj trener groot1.7. |
| --max-steps | 10000 | Skupno število korakov optimizatorja. Ovojnica examples/finetune.sh ima prav tako privzeto vrednost 10000. |
| --gradient-accumulation-steps | 1 | Pomnoži efektivno serijo podatkov. Vrednosti nad 1 sprožijo opozorilo o akumulirani velikosti. |
| --save-steps and --save-total-limit | 1000 and 5 | Pogostost shranjevanja kontrolnih točk in koliko jih je ohranjenih. Starejše so izbrisane. |
| --weight-decay and --warmup-ratio | 1e-5 and 0.05 | Eksplicitno nastavljeno tudi v examples/finetune.sh. |
| --state-dropout-prob | 0.2 in the CLI, 0.8 in the model config | Naključno izpusti proprioceptivno stanje med treniranjem. Znižajte jo, če se vaša naloga opira na stanje. |
| --tune-llm and --tune-visual | False and False | Hrbtenica privzeto ostane zamrznjena. |
| --tune-projector and --tune-diffusion-model | True and True | Projektor in difuzijska glava za dejanja sta tista, ki se dejansko trenirata. |
| --use-percentiles | True | Normalizirajte s q01 in q99 namesto z neobdelanimi min in max vrednostmi. |
| --dataloader-num-workers | 2 | Nalaganje je zasnovano na CPE-ju. Primeri to vrednost povečajo na 4. |
| --seed | does not exist | Na tem CLI-ju ni zastavice za seme. |
Zadnja vrstica ni tipkarska napaka. launch_finetune.py je CLI orodje tyro, generirano iz podatkovnega razreda, in ta podatkovni razred nima polja za seme (seed). Datoteka README ločeno navaja 5 do 6 odstotkov variance med izvajanjem, ki jo povzroča nedeterministična augmentacija slik. Dva zagona z enakimi zastavicami ne bosta ustvarila enakih kontrolnih točk, kar je zelo pomembno, ko poskušate ugotoviti, ali je sprememba hiperparametra pomagala ali ste imeli srečo. Za primerjavo, lerobot-ov lastni trener privzeto uporablja seme 1000, in recept LeRobot GR00T eksplicitno posreduje --seed=42 eksplicitno.
Fino uglaševanje se izvaja z eval_strategy="no", zato sploh ni krivulje validacijske izgube. Dobite samo izgubo pri usposabljanju in nič drugega. Vodnik za novo utelešenje vam naroča, da jo vklopite z --eval-strategy steps --eval-steps 500, vendar ta zastavica ne obstaja na launch_finetune.py: CLI je generiran s tyro iz podatkovnega razreda FinetuneConfig, in eval_strategy, eval_steps ter eval_batch_size so namesto tega polja razreda TrainingConfig. Njihove privzete vrednosti so "no", 500 in 2. Za dostop do njih uporabite popolnejšo vstopno točko gr00t/experiment/launch_train.py, kjer je ugnezdena zastavica --training.eval-strategy. Kakorkoli že, padajoča izguba pri usposabljanju sama po sebi pove zelo malo o posploševanju, kar je natanko situacija, opisana na izguba pada, vendar politika ne dela nič.
Koliko stane zagon z 20000 koraki
GR00T N1.7 potrebuje 80 GB kartico, zato je vprašanje stroškov omejeno. Na AY-Robots se trener groot1.7 izvaja na nivoju A100 80 GB ali H100 80 GB, kjer zagon traja 3 do 6 ur po ceni 1.20 do 2.00 USD na uro na promptnem trgu. To je približno 4 do 12 USD za privzeto nalogo z 20000 koraki. Ista naloga na SmolVLA ali ACT se izvaja na 24 GB kartici po ceni 0.30 do 0.60 USD na uro in 1 do 3 USD na zagon. To je prava kompromisna odločitev: GR00T stane približno štirikrat več na poskus, in ne morete ga zagnati na kartici 4090 pod svojo mizo.
| Model | Razred GPU | Tipičen zagon | Tipični stroški | Minimalno število epizod |
|---|---|---|---|---|
| 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 |
Minimalno število epizod 50-epizod je spodnja meja, ne cilj. NVIDIA-ina lastna pogosta vprašanja so zahtevnejša: približno 100 trajektorij za preprosto pobiranje in odlaganje na fiksni lokaciji, 500 ali več za kompleksne ali večstopenjske scene ter 100 do 500 za fino manipulacijo. Če imate 20 epizod, raje preživite popoldne s snemanjem kot večer z uglaševanjem. vodnik za zbiranje podatkov zajema, kaj loči uporabno epizodo od zapravljene, posnemite svoj prvi nabor podatkov je kratka različica, in SO-100 zbiranje podatkov je tista, specifična za roko.

Korak 6: evalvacija odprte zanke, preden se dotaknete roke
Ne postavljajte svežega kontrolne točke na fizično roko, da bi ugotovili, ali je usposabljanje delovalo. Najprej zaženite odprtozančno evalvacijo. Ponovi posneto epizodo, model vpraša za dejanja na vsakem koraku in izriše napoved v primerjavi z resničnimi podatki z MSE in MAE. Ne stane nič in ujame napake pri preslikavi iz korakov 2 in 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 namerno zavrača objavo ciljnega MSE za podatke po meri, in to je pravilna odločitev: številka je odvisna od vaših akcijskih enot, vaše naloge in velikosti vašega nabora podatkov, zato prag, kopiran z roke nekoga drugega, ne pomeni nič. Pomemben je trend. Tukaj je referenčni zagon, ki ga repozitorij dokumentira na enem H100 s petepizodnim demo naborom podatkov in 2000 koraki.
| Kontrolna točka | Povprečni MSE na poti 0 | Povprečni MAE na poti 0 |
|---|---|---|
| 500 | 87.5 | 5.63 |
| 1000 | 25.4 | 3.30 |
| 1500 | 13.2 | 2.18 |
| 2000 | 10.0 | 1.76 |
Oblika je signal, ne absolutne vrednosti. Napaka bi morala enakomerno padati, ko se koraki usposabljanja kopičijo. Povprečeno čez vseh pet epizod usposabljanja namesto samo trajektorije 0, je končna kontrolna točka repozitorija dosegla približno 7.5 MSE in 1.5 MAE, tako da se celo referenčni zagon bere drugače, odvisno od tega, katere epizode povprečite. Zabeležite svojo izhodiščno vrednost z nespremenjenim demo ukazom, preden spremenite karkoli v svojih podatkih: če ne morete reproducirati znanega dobrega zagona, ne morete ločiti napake v nastavitvi od težave s podatki. Repozitorij prav tako preslikuje pogoste simptome v vzroke, in vsak od njih je operativen in ne napaka modela.
| Simptom | Verjeten vzrok |
|---|---|
| MSE je raven ali narašča skozi kontrolne točke | Stopnja učenja je prenizka, ali pa se podatki sploh ne nalagajo. Preverite --dataset-path in delavce nalagalnika podatkov. |
| Krivulja napovedi je ravna ali konstantna | Ključi modality.json ali --modality-config-path se ne ujemajo. Ključi dejanj niso preslikani. |
| MSE je ogromen, ali NaN izguba med usposabljanjem | Normalizacija akcij in stanj. Preverite meta/stats in da so razponi akcij fizično verjetni. |
| Dobro na trajektoriji 0, slabo na zadržanih epizodah | Pomanjkanje podatkov, ne napaka. Pet demo epizod se ne more posplošiti. |
Druga pot: lerobot-train namesto Isaac-GR00T
Trenutna izdaja LeRobot, 0.6.1 na PyPI od 3. avgusta 2026, ponuja drugi in precej drugačen način za fino nastavitev istih osnovnih uteži. LeRobot izpostavlja GR00T N1.7 kot tip politike in ga usposablja preko lastne vstopne točke lerobot-train. Tukaj sta pomembni dve stvari. LeRobot CLI je nabor konzolnih skript, zato je vse, kar preberete, da pravi python lerobot/scripts/train.py, zastarelo in se ne bo izvedlo. In LeRobot je v celoti odstranil podporo za GR00T N1.5, zavračajoč kontrolne točke in konfiguracije N1.5 z opombo o migraciji, tako da če potrebujete N1.5 preko LeRobot, morate pripeti lerobot==0.5.1, zadnjo izdajo, ki jo podpira, 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| Vidik | Isaac-GR00T launch_finetune.py | lerobot-train --policy.type=groot |
|---|---|---|
| Različica nabora podatkov | Samo LeRobot v2, potrebna je pretvorba | Izvorni nabor podatkov LeRobot, brez znižanja različice |
| Preslikava modalnosti | meta/modality.json plus konfiguracija podatkov Python | brez modality.json; obnašanje določeno z zastavicami --policy.* v ukazni vrstici |
| Seme | sploh ni zastavice za seme | --seed, privzeto za LeRobot 1000 |
| Relativna dejanja | ActionConfig za vsak ključ v konfiguraciji podatkov | --policy.use_relative_actions plus --policy.relative_exclude_joints |
| Objavljeni referenčni rezultati | Trend MSE odprte zanke SO-100 na demo podatkih | Zbirke LIBERO, 96.5 odstotka povprečja v štirih zbirkah |
| Pot uvajanja | run_gr00t_server.py plus eval_so100.py preko ZMQ | lerobot-rollout, z razdeljevanjem v realnem času (queue_threshold naj ostane pri ali pod 5) |
- Vsaka zastavica je vidna in spremenljiva. Lahko odmrznete vizualni kodirnik, premaknete state_dropout_prob ali skrajšate akcijski horizont.
- Grafi odprte zanke so lokalne datoteke. Primerjava checkpoint-5000 proti checkpoint-20000 je ukaz lupine.
- Ne odvisite od nobene platforme, ki ostaja na spletu, in kontrolna točka je na vašem disku v standardni obliki.
- Primeri meril uspešnosti repozitorija za LIBERO, SimplerEnv in DROID vam dajo znane dobre izvedbe za reprodukcijo, preden zaupate svojim podatkom.
- Okolje je večina dela. Različica FFmpeg, CUDA_HOME, git-lfs, zaprta hrbtenica, torchcodec: nič od tega niso težave modela in vsaka od njih ustavi izvajanje.
- Pretvorba iz v3.0 v v2.1 zahteva ločeno virtualno okolje z lastnim korakom namestitve in prepiše vaš imenik nabora podatkov na mestu.
- Najem GPU se začne zaračunavati, ko začnete z odpravljanjem napak, ne ko se začne usposabljanje, in nič ne ustavi instance, ko se izvajanje konča.
- Brez semena pomeni brez bitne ponovljivosti, poleg 5 do 6 odstotkov variabilnosti med izvajanjem samo zaradi augmentacije.
Dva načina za pridobitev iste kontrolne točke
Najamete GPU in ste odgovorni za vsak korak. Realno gledano, prvič to traja popoldne, vsakič kasneje pa dvajset minut.
- Posnemite epizode z lerobot-record na SO-100. Dobite nabor podatkov LeRobot v3.0.
- Pretvorite ga v v2.1 s scripts/lerobot_conversion/convert_v3_to_v2.py v lastnem virtualnem okolju.
- Napišite meta/modality.json in konfiguracijo modalnosti v Pythonu, registrirano pod EmbodimentTag.NEW_EMBODIMENT.
- Najamite 80 GB kartico, klonirajte s podmoduli, uv sync, avtenticirajte se proti Hugging Face.
- Zaženite launch_finetune.py, nato open_loop_eval.py na več kontrolnih točkah in primerjajte trend MSE, preden se dotaknete strojne opreme.
- Prenesite kontrolno točko z naprave, preden uničite instanco, nato zgradite pot za serviranje do roke.
Kopirajte kontrolno točko z najete instance, preden jo izklopite. `--save-total-limit 5` tudi pomeni, da se starejše kontrolne točke izbrišejo med potekom usposabljanja, zato kontrolna točka, ki ste jo želeli pri koraku 5000, morda ne bo več obstajala pri koraku 20000.
Isto delo kot obrazec. Izberete model in nabor podatkov, zaledje najame GPU na spot trgu glede na zahtevani VRAM, zažene trenerja in zapiše kontrolne točke v objektno shrambo. Vodnik GR00T N1.7 na SO-100 je točno ta kombinacija; matrika usposabljanja vsebuje vsako drugo kombinacijo modela in roke, vključno z GR00T N1.7 na SO-101.
| Kaj pošlje trener groot1.7 | Vrednost |
|---|---|
| Velikost paketa | 32 |
| Stopnja učenja | 1e-4 |
| Največ korakov | 20000 |
| Akumulacija gradienta | 1, and it does take effect for this trainer |
| Dodatni gumb, izpostavljen v obrazcu | saveSteps |
| Osnovna kontrolna točka | nvidia/GR00T-N1.7-3B |
| Sprejet format nabora podatkov | LeRobot v2.0 or v2.1 |
Nabor podatkov lahko izvira iz ID-ja repozitorija Hugging Face, iz vašega lastnega stroja ali iz seje, ki ste jo posneli z namiznim odjemalcem. Zaključevanje je ločen korak: platforma zagotovi pod, ki služi politiki, in vaš lokalni robotski odjemalec komunicira s to končno točko. Podi imajo nadzornika mirovanja in se uničijo po obdobju mirovanja, tako da pozabljen zavihek brskalnika ne povzroča stroškov čez noč. Če raje ne bi klikali, iste operacije obstajajo na CLI-ju in strežniku MCP.
GR00T N1.7 in Pi0.5 sta tukaj samo v oblaku; samo SmolVLA in ACT delujeta tudi lokalno. Zahteva v2.1 prav tako ne izgine, saj je nabor podatkov v3.0 še vedno treba pretvoriti, preden ga bo nalagalnik GR00T sprejel. In nič ne napiše vaše semantike modality.json namesto vas: če so vaši ključi kamere ali jezikovni ključ napačni, so napačni na obeh poteh. Glejte dokumentacijo za usposabljanje za to, kaj zaledje dela in česa ne dela v vašem imenu.

Prenos kontrolne točke nazaj na roko
Isaac-GR00T uporablja delitev strežnik-odjemalec preko ZMQ. Politika se izvaja na GPU-ju, tanek odjemalec na robotskem stroju pa pošilja opazovanja in prejema dele dejanj. Primer SO-100 je dovolj popoln za kopiranje: zaženite run_gr00t_server.py z vašo kontrolno točko in --embodiment-tag NEW_EMBODIMENT, nato zaženite eval_so100.py na robotski strani s serijskim priključkom, ID-jem robota, indeksi kamere in jezikovnim navodilom. Imena kamer v tem ukazu se morajo ujemati s prijaznimi imeni iz vašega modality.json, ne pa s številkami naprav OS.
# 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"Medtem ko ponovno ožičite roko: SO-100 poganja Feetech STS3215 bus servo motorje na 7.4 V napajalni liniji. Napajanje z 12 V jih uniči, in to je pogosta napaka, če imate tudi LeKiwi, katerega osnova deluje na 12 V, medtem ko njegova roka ne. Preverite napajanje pred prvim vklopom, ne po dimu. Glejte stran strojne opreme SO-100 in SO-100 proti LeKiwi. Če se roka vklopi, vendar se nič ne premika, je servo se ne odziva izhodišče.
Sedaj pa iskreni del o tem, kje se politika izvaja, saj imata usposabljanje in strežba različne zgodbe o strojni opremi. Fino nastavljanje zahteva 40 GB ali več. Inferenca ne: README navaja 16 GB ali več in izrecno omenja RTX 4090, tako da lahko kartica, ki jo že imate, streže kontrolno točko, ki je nikoli ne bi mogla ustvariti. Kar odloča, ali se politika zdi odzivna, ni VRAM, temveč kje se nahaja strežnik. Na AY-Robots je GR00T N1.7 samo v oblaku, zato kontrolna zanka plača povratno potovanje prek javnega interneta poleg 152 ms na korak dejanja, in samo SmolVLA in ACT se izvajata tudi lokalno. Za počasno pobiranje in odlaganje je oddaljeni pod preživetven. Za karkoli reaktivnega pa ne: politika postane neodločna na način, ki je videti natanko kot napaka pri usposabljanju, pa ni. ACT pri 20 ms na korak dejanja je model, ki tolerira najtesnejšo zanko, SmolVLA je pri 245 ms, in nobena količina nastavitev zakasnitve ne povrne povratnega potovanja, ki je že bilo porabljeno. Zaženite svojo prvo politiko podrobno opisuje strežniško stran.
Kaj gre dejansko narobe
- GatedRepoError ob prvem zagonu. Nimate dostopa do nvidia/Cosmos-Reason2-2B ali se niste avtenticirali. To se zgodi, ko se je ura GPU-ja že zagnala.
- Zbirka podatkov zavrnjena ob nalaganju. Skoraj vedno gre za zbirko podatkov v3.0. Pretvorite jo v nižjo različico. Glejte zbirka podatkov zavrnjena kot v3.
- IndexError glede neujemajočih se booleovih dimenzij. Spremenili ste delta_indices in niste ponovno generirali statistik.
- Zmanjka pomnilnika pri paketu 32. Zmanjšajte --global-batch-size in povečajte --gradient-accumulation-steps, ali zmanjšajte --num-shards-per-epoch, kar konfiguracija izrecno predlaga, ko je VRAM omejen. Glejte zmanjka pomnilnika med usposabljanjem.
- Izguba pada, politika ne dela nič. Privzeto ni validacijske razdelitve, zato čista krivulja usposabljanja dokazuje zelo malo. Ta stran pokriva diagnozo.
- Deluje v vaši nastavitvi in nikjer drugje. Pričakuje se pri majhni zbirki podatkov, posneti pod eno svetlobno pogoji. NVIDIA priporoča razširitev z barvnim nihanjem (colour jitter augmentation) plus 20 do 50 epizod pod različnimi svetlobnimi pogoji. Več tukaj.
- Prijemalo se nikoli ne zapre pravilno. Preverite, ali je akcija prijemala ABSOLUTNA in sklepi roke RELATIVNI, v tem vrstnem redu v action_configs. Prijemalo se ne zapre navaja druge vzroke.
- Kamera se tiho izklopi med snemanjem. Epizoda se še vedno shrani in video ključ še vedno obstaja, zato je to še posebej neprijetno. Kamera ni zaznana to pokriva.
Celoten indeks načinov odpovedi se nahaja na . Če izbirate med modeli namesto da bi odpravljali napake pri enem, in imata priložene referenčne številke z viri, in je primerjava, ki jo večina ljudi dejansko potrebuje, saj gre za izbiro med modelom, ki ga lahko trenirate na kartici pod svojo mizo, in tistim, za katerega morate najeti 80 GB vozlišče za fino uglaševanje. Za ozadje, zakaj se ti modeli obnašajo tako, kot se, sta in vredna branja. In če še nimate roke, pretaka fizični SO-100 brez prijave.
Koliko epizod potrebujem, preden se splača fino uglaševanje GR00T N1.7?▾
AY-Robots določa spodnjo mejo 50 epizod za trenerja groot1.7. NVIDIA-in lastni FAQ je bolj zahteven: približno 100 trajektorij za preprosto pobiranje in odlaganje na fiksni lokaciji, 500 ali več za kompleksne ali večstopenjske scene, in 100 do 500 za fino manipulacijo. Pod 50 je skoraj vedno bolje posneti več podatkov kot uglaševati hiperparametre. Če se uspeh po tem ustali, NVIDIA priporoča HG-DAgger: zaženite politiko, posredujte, ko ne uspe, in dodajte te popravke v zbirko podatkov.
Zakaj se moja zbirka podatkov ne naloži in kako ugotovim, katera različica je?▾
Odprite meta/info.json in preberite codebase_version. Trenutna CODEBASE_VERSION LeRobota na main je v3.0, zato je vse, kar je posneto z nedavnim orodjem, v3.0, in nalagalnik GR00T pričakuje v2. Pretvorite s scripts/lerobot_conversion/convert_v3_to_v2.py iz repozitorija Isaac-GR00T, ki zapiše codebase_version: v2.1 v pretvorjeno zbirko podatkov. Skripta se izvaja v lastnem virtualnem okolju, ker potrebuje drugačno različico lerobot kot jo določa GR00T.
Ali lahko fino uglašujem GR00T N1.7 na RTX 4090?▾
Ne. NVIDIA priporoča 40 GB ali več VRAM-a za fino uglaševanje in navaja vozlišča H100 ali L40; druge kartice delujejo, vendar trajajo veliko dlje. 4090 ima 24 GB. AY-Robots iz istega razloga ponuja GR00T N1.7 samo na ravni A100 80 GB in H100 80 GB. Zaključevanje (inference) je druga zgodba: 16 GB je dovolj za strežbo modela, tako da 4090 lahko poganja politiko, ki je ne more trenirati. Če želite VLA, ki ga lahko trenirate na 24 GB, je to SmolVLA z približno 450 M parametri ali ACT z približno 80 M.
Zakaj dva zagona z enakimi zastavicami dajeta različne kontrolne točke?▾
Ker launch_finetune.py nima semena (--seed). Gre za tyro CLI, generiran iz podatkovnega razreda, ki ne vsebuje polja za seme, zato nič ne določa RNG. Repozitorij ločeno navaja 5 do 6 odstotkov variance med zagoni, ki jo povzroča nedeterministična razširitev slik. Če je ponovljivost pomembna, uporabite pot LeRobot: lerobot-train sprejme --seed in objavljeni recept GR00T posreduje --seed=42.
Ali naj uporabim Isaac-GR00T ali lerobot-train?▾
Uporabite Isaac-GR00T, če želite referenčno implementacijo, nadzor nad predstavitvijo akcij po ključu, izvoz TensorRT ali referenčne primere za reprodukcijo, preden zaupate svojim podatkom. Uporabite lerobot-train, če je vaša zbirka podatkov že LeRobot v3.0 in je ne želite pretvarjati, če želite seme (--seed), ali če je preostali del vašega sklada že LeRobot. Oba fino uglašujeta iste uteži nvidia/GR00T-N1.7-3B. Upoštevajte, da je LeRobot popolnoma opustil podporo za GR00T N1.5: kontrolne točke N1.5 so zavrnjene z opombo o migraciji, in morate določiti lerobot==0.5.1, da jih še naprej uporabljate.
Ali res potrebujem zapestno kamero poleg sprednje kamere?▾
Priložena konfiguracija SO-100 uporablja obe, in modality.json preslikuje sprednjo in zapestno kamero kot ločena video ključa. Lahko trenirate z eno kamero, in tabela latence modelne kartice je izmerjena z eno kamero, vendar je pogled zapestja tisti, ki politiki daje uporabne informacije o prijemalu v trenutku stika. Če se prijemalo zapre ob napačnem času v vaših izvedbah, je manjkajoča ali slabo usmerjena zapestna kamera ena prvih stvari, ki jih je treba preveriti.
Fino uglašujte GR00T N1.7 na vašem SO-100, ne da bi prej zgradili okolje
Izberite model, zbirko podatkov in hiperparametre v obrazcu. Zaledje najame A100 80 GB ali H100 na spot trgu, zažene trenerja s paketom 32, učno hitrostjo 1e-4 in 20000 koraki ter zapiše kontrolne točke v shrambo objektov. Približno 4 do 12 USD na zagon.
Odprite vodnik za usposabljanje 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