
Pārbaudīts ceļvedis NVIDIA GR00T N1.7 precizētai apmācībai ar SO-100 LeRobot datu kopu: reāli karodziņi, modality.json, v2.1 prasība, cik maksā viena izpilde un slazdi.
NVIDIA piegādā precizēšanas piemēru tieši tai robotrokai, kas jums, visticamāk, pieder. Iekš Isaac-GR00T repozitorija ir mape ar nosaukumu demo_data/cube_to_bowl_5: piecas epizodes, 4148 kadri ar 30 kadriem sekundē, jau uzrakstīti kā LeRobot v2.1, ar atbilstošu modalitātes konfigurāciju zem examples/SO100/. Tās meta/info.json ziņo robot_type: so101_follower, kas LeRobot ir tā pati konfigurācijas klase kā so100_follower. Tas ir patiesi noderīgi, jo tas nozīmē, ka atsauces ceļš priekš GR00T N1.7 uz sešu-brīvības pakāpju hobija robotrokas tiek uzturēts no cilvēkiem, kas rakstīja modeli. Tā nav samazināta humanoīda demonstrācija, tā ir tā pati robotroka.
Sliktā ziņa ir attālums starp I recorded 60 episodes un the arm does the task. Ir aptuveni sešas vietas, kur šī cauruļvads klusi, nevis skaļi, neizdodas, un četras no tām atrodas failos, ko lielākā daļa cilvēku nekad neatver: meta/modality.json, Python datu konfigurācija, meta/relative_stats.json, un datu kopas paša versijas virkne. Šī rokasgrāmata iziet manuālo ceļu no sākuma līdz beigām ar reālām komandām, pēc tam parāda to pašu darbu kā veidlapu vietnē AY-Robots. Viss zemāk minētais tika pārbaudīts pret Isaac-GR00T galveno zaru no 2026. gada 20. augusta (the n1.7-release line) un lerobot 0.6.1, kas publicēts PyPI 2026. gada 3. augustā. Augšupējā plūsma kustas ātri, un, ja karodziņš tika pārdēvēts, šis raksts to norāda.
Kas jāzina pirms sākšanas
- •GR00T N1.7 precizēšanai nepieciešami 40 GB vai vairāk VRAM. NVIDIA iesaka H100 vai L40 mezglus. 24 GB RTX 4090 šo darbu neveiks, lai gan tā apmācīs SmolVLA un ACT.
- •Datu kopai jābūt LeRobot v2 (v2.0 vai v2.1) plus GR00T-specifiskam meta/modality.json. LeRobot v3.0 datu kopa netiek ielādēta un ir jākonvertē uz leju.
- •Ieejas punkts ir gr00t/experiment/launch_finetune.py, tyro CLI. Tam nav --seed karodziņa, tāpēc izpildes nav bitu-par-bitu reproducējamas.
- •Pielāgotai robotrokai iemiesojuma tags ir NEW_EMBODIMENT, un šis tags padara --modality-config-path obligātu.
- •Piegādātā SO-100 recepte prognozē robotrokas savienojumus kā RELATĪVĀS deltas un satvērēju kā ABSOLŪTU mērķi. Šīs pārošanas apgriešana ir klusa kļūme, nevis kļūda.
- •AY-Robots platformā tas pats darbs ir veidlapa: 20000 steps, batch 32, learning rate 1e-4, aptuveni 4 to 12 USD A100 80 GB vai H100 līmenī.
Kas patiesībā ir GR00T N1.7
GR00T N1.7 ir redzes-valodas-darbības modelis ar divu sistēmu izkārtojumu, kas aprakstīts oriģinālajā GR00T N1 rakstā: redzes-valodas modulis, kas nolasa kameras un instrukciju, un difūzijas transformators, kas to pārvērš nepārtrauktu motoru komandu blokā. N1.7 aizstāja pirmo pusi. Eagle mugurkauls no N1.6 ir pazudis, nomainīts pret nvidia/Cosmos-Reason2-2B uz Qwen3-VL arhitektūras, un modelis tika iepriekš apmācīts aptuveni 20 000 stundu egocentriska cilvēka video materiāla, papildus robota datiem. NVIDIA pašu aprakstā šis skaitlis ir 20 854 stundas un tiek ziņots, ka, palielinoties no 1 tūkst. līdz 20 tūkst. stundām, vidējā uzdevumu izpilde vairāk nekā dubultojas.
Mainījās arī otrā puse, veidos, kas ir svarīgi jūsu izpildei. Darbības galva samazinājās no 32 difūzijas slāņiem līdz 16, paredzētais darbības bloks pieauga no 16 soļiem līdz 40, un maksimālais stāvokļa un darbības platums pieauga no 29 līdz 132. Šie trīs skaitļi nāk no izmaiņu žurnāla repozitorija README; NVIDIA pašu palaišanas ziņojums joprojām apraksta 1. sistēmu kā 32 slāņu DiT, tāpēc, ja abi atšķiras, uzticieties repozitorijam, ko gatavojaties klonēt. Darbības pēc noklusējuma tiek izteiktas relatīvā gala izpildmehānisma telpā, kā deltas no pašreizējās pozas, nevis absolūti mērķi, kas ļauj manipulācijas priekšzināšanām, kas apgūtas no cilvēka video, vispār pārnest uz robotu kontroli. Pati galva ir plūsmas saskaņošanas difūzijas transformators, tā pati saime kā Pi0.5, bet ar atšķirīgu mugurkaulu priekšā. Ja joprojām izmantojat iepriekšējo paaudzi, N1.7 pret N1.5 aptver, vai jauninājums attaisno jūsu cauruļvada pārveidošanu.
| Property | Value | Where it comes from |
|---|---|---|
| Parametri | 3,000,000,000 | Hugging Face model card |
| Redzes-valodas mugurkauls | nvidia/Cosmos-Reason2-2B (Qwen3-VL), gated on Hugging Face | repo README |
| Darbības galva | Flow-matching diffusion transformer, 16 layers (N1.6 had 32) | repo README |
| Paredzamais darbības horizonts | 40 steps for the base checkpoint (N1.6 had 16) | getting_started/policy.md and repo README |
| Maksimālais stāvokļa un darbības platums | 132 (N1.6 had 29) | repo README |
| Koda licence | Apache 2.0 | Isaac-GR00T repository |
| Svaru licence | NVIDIA Open Model License Agreement | model card |
| Latentums, H100 80 GB, PyTorch eager, 4 trokšņu samazināšanas soļi, 1 kamera | 85.8 ms end to end, 11.7 Hz | model card timing table |
| Tāda pati aparatūra, TensorRT pilna cauruļvads | 27.9 ms end to end, 35.9 Hz | model card timing table |
| Latentums, ko AY-Robots norāda savam apkalpotajam GR00T N1.7 | 152 ms per action step | AY-Robots policy catalog |
Šīs pēdējās trīs rindas izskaidro lielāko daļu vilšanās, par ko ziņo cilvēki. Virsrakstā minētie 27.9 ms ir TensorRT dzinējs uz H100 ar vienu kameru un četriem trokšņu samazināšanas soļiem. Vienkāršs PyTorch uz tās pašas kartes ir 85.8 ms, un modeļa karte norāda atšķirību 3.08x. Neviens no šiem skaitļiem neietver apkalpošanas slāni, otru kameru vai tīkla lēcienu. AY-Robots norādītie 152 ms par darbības soli savam apkalpotajam GR00T N1.7 ir skaitlis ar apkalpošanu cilpā, un tam virsū nāk publiskā interneta turp-atpakaļ ceļš. Vairāk par to beigās. Lai uzzinātu skaitļus blakus citiem modeļiem, GR00T N1.7 pret Pi0.5 un GR00T N1.7 pret SmolVLA izklāsta tos blakus.

Kas nepieciešams palaišanai, pirms kaut ko ievadāt
| Prasība | Precizēšana (Fine-tuning) | Secinājumi (Inference) |
|---|---|---|
| VRAM, NVIDIA vadlīnijas | 40 GB vai vairāk, ieteicams H100 vai L40 | 16 GB vai vairāk, der RTX 4090 |
| Python un CUDA uz dGPU | 3.12 un CUDA 12.8 | 3.12 un CUDA 12.8 |
| Video aizmugursistēma | torchcodec 0.8.0, tikai FFmpeg 4 līdz 7 | tas pats |
| Datu kopas formāts | LeRobot v2 plus meta/modality.json | nav piemērojams |
| Hugging Face piekļuve | apstiprināts nvidia/Cosmos-Reason2-2B | tas pats |
| Citi rīki | git-lfs un uv | uv |
| AY-Robots GPU līmenis groot1.7 apmācītājam | A100 80 GB vai H100 80 GB | pods nodrošināts automātiski |
Katrs GR00T kontrolpunkts, ieskaitot bāzes nvidia/GR00T-N1.7-3B, pirmajā lietošanas reizē ielādē nvidia/Cosmos-Reason2-2B, un šis repozitorijs ir aizsargāts. README precīzi norāda kļūdu: modeļa ielāde neizdodas ar GatedRepoError / 401 Client Error. Tas, kas nav minēts, ir tas, kad tas notiek, proti, pēc tam, kad esat iznomājis karti un palaišana ir sākusies. Pieprasiet piekļuvi modeļa lapā, pēc tam palaidiet uv run huggingface-cli login vai eksportējiet HF_TOKEN, pirms kaut ko nomājat.
0. solis: pašas epizodes
Viss zemāk minētais pieņem, ka jums jau ir ierakstītas epizodes. Ja jums to nav, tas ir īstais pirmais solis, un tas ir tas, kas nosaka, cik labs var būt rezultāts, jo imitācijas mācīšanās nevar atgūt informāciju, kas nav datos. Vispirms kalibrējiet abas rokas, pēc tam vadiet sekotāju ar vadošo roku kamēr lerobot-record raksta parketa failus un kameras plūsmas. Ja kalibrēšana ir nepareiza, jūsu datu kopas savienojumu vērtības apraksta nedaudz atšķirīgu robotu no tā, kas vēlāk izpildīs politiku, un nekāda apmācība to neizlabos.
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=trueLeRobot paša padoms ir ierakstīt vismaz 50 epizodes, aptuveni 10 katrai objekta atrašanās vietai, saglabāt kameras fiksētas un saglabāt satveršanas uzvedību konsekventu. Pievienojiet variācijas vēlāk, nevis sākumā. Atcerēšanās vērts īkšķa likums: ja jūs pats nevarētu veikt uzdevumu tikai no kameras attēliem, tad politika arī nevar. Roku specifiskai iestatīšanai, SO-100 darba sākšana un SO-100 LeRobot lapa aptver portus, kalibrēšanu un kameras indeksus. AY-Robots jūs to varat darīt arī internetā no pārlūkprogrammas, izmantojot teleoperācija un ierakstīt tieši no sesijas.
1. solis: datu kopai jābūt LeRobot v2.1
Šī ir visbiežāk sastopamā problēma. LeRobot pašreizējā CODEBASE_VERSION galvenajā zarā ir v3.0, tāpēc viss, ko ierakstāt šodien ar pašreizējo rīku ķēdi, būs v3.0. GR00T ielādētājs sagaida v2. Repozitorijs skaidri norāda iemeslu: daudzas augšupējās datu kopas, piemēram, DROID, LIBERO un Bridge, tiek publicētas v2 versijā, un vietējais atbalsts abām ir plānots, bet vēl nav piegādāts. Tāpēc konvertēšana ir jūsu ziņā, un tā darbojas savā virtuālajā vidē konkrēta iemesla dēļ: scripts/lerobot_conversion satur savu pyproject, kas prasa Python 3.10 vai 3.11 un piesaista lerobot vienam git komitam, savukārt Isaac-GR00T pats prasa Python 3.12. Instalējiet konvertētāju no repozitorija saknes, un jūs iegūstat gr00t pakotni, kas ir kļūda, par kuru brīdina tā README. Ja esat jauns šajā formātā, LeRobot datu kopa glosārija ieraksts izskaidro, kas patiesībā atrodas iekšpusē.
# 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_lerobotJa v3.0 datu kopa jau pastāv lokāli, skripts izveido v2.1 izkārtojumu blakus tai un pēc tam veic apmaiņu: oriģināls tiek pārvietots uz blakus mapi ar pievienotu versiju, <name>_v3.0, un konvertētā kopija ieņem oriģinālo ceļu. (Skripta docstring šo mapi sauc par _v30; kods pievieno versijas virkni, tāpēc patiesībā jūs iegūstat _v3.0.) Otrais pārsteigums: izvade vienmēr nonāk zem <root>/<repo-id>, tāpēc --root examples/SO100/my_dataset_lerobot dod jums examples/SO100/my_dataset_lerobot/<your-hf-user>/<your-dataset>, un šis garākais ceļš ir tas, ko vēlāk vēlas --dataset-path. Ja apmācības uzdevums noraida jūsu datu kopu versijas dēļ, lapa par datu kopas noraidīšanu kā v3 uzskaita precīzus simptomus.
Struktūra, ko GR00T vēlas pēc konvertēšanas, ir klasiskais v2 izkārtojums: meta/info.json, meta/episodes.jsonl, meta/tasks.jsonl, parketa faili zem data/chunk-000/, MP4 faili zem videos/chunk-000/observation.images.
2. solis: modality.json, seši skaitļi, kas izlemj visu
LeRobot datu kopā robota stāvoklis un darbība tiek glabāti kā plakani float32 masīvi. SO-100 gadījumā abiem ir forma [6]: piecas rokas locītavas un satvērējs. Demonstrācijas datu kopa tos nosauc shoulder_pan.pos, shoulder_lift.pos, elbow_flex.pos, wrist_flex.pos, wrist_roll.pos, gripper.pos, bet šie nosaukumi atrodas info.json un nekas parketa failā nenorāda, kurš indekss ir kurš. meta/modality.json nodrošina šo kartēšanu, un GR00T netrenēsies bez tās. Šeit ir tas, ko repozitorijs piegādā SO-100, burtiski.
{
"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"
}
}
}Kopējiet to savā konvertētajā datu kopā uz meta/modality.json un pārdēvējiet video atslēgas atbilstoši tam, kā patiesībā sauc jūsu kameras. Ja ierakstījāt ar vienu virs galvas novietotu kameru ar nosaukumu top, tad original_key ir observation.images.top un draudzīgais nosaukums ir tas, uz ko atsauksies jūsu datu konfigurācija. Abiem ir jāsakrīt, un neviens no tiem nepārbauda otru jūsu vietā. Valodu anotācija ir sliktāka, jo viena un tā pati atslēga ir jāparādās trīs vietās.
| Slānis | Fails | SO-100 forma, ko izmanto repozitorijā |
|---|---|---|
| Parquet kolonna | data/chunk-*/episode_*.parquet | annotation.human.task_description |
| modality.json atslēga | meta/modality.json, under "annotation", without the annotation. prefix | human.task_description |
| modality_keys datu konfigurācijā | your so100_config.py | annotation.human.task_description |
Segmentus pēc annotation. izvēlas tas, kurš izveidoja datu kopu. SO-100 demonstrācijas dati izmanto annotation.human.task_description; LIBERO un SimplerEnv izmanto annotation.human.action.task_description. Abi ir derīgi. Ja jūs nokopējāt konfigurāciju no LIBERO piemēra un norādījāt to uz savu SO-100 ierakstu, valodu kanāls neatrisināsies ne uz ko, un modelis apmācīsies uz tukšu instrukciju. Zudums joprojām samazinās. Politika joprojām kaut ko dara. Tā vienkārši ignorē to, ko jūs tai likāt darīt.
3. solis: datu konfigurācija, relatīvā roka un absolūtais satvērējs
Modalitātes konfigurācija ir Python fails, nevis JSON, jo tā arī nosaka, kā tiek attēlota katra darbību grupa. Šī ir N1.7 darbplūsmas daļa, kas N1.5 nepastāvēja tādā pašā formā, un tā ir daļa, ko vērts izlasīt divreiz. Piegādātā SO-100 konfigurācija paredz piecas rokas locītavas kā RELATIVE deltas no pašreizējā stāvokļa un satvērēju kā ABSOLUTE mērķa pozīciju, jo binārs atvērts vai aizvērts signāls labāk darbojas kā mērķis, nevis kā 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)Divas detaļas šeit jums izmaksās dienu, ja tās nezināsiet. Pirmkārt, action_configs ir pozicionāls: dokumentācija prasa tādu pašu garumu un tādu pašu secību kā modality_keys, un tie ir tieši par sekām, ja tas tiek izdarīts nepareizi, proti, nepareiza attēlošana tiek piemērota klusi. Jūsu satvērējs tiek apmācīts kā delta un jūsu roka kā absolūts mērķis, un nav nekāda kļūdas ziņojuma. Otrkārt, register_modality_config apgalvo, ka tags vēl nav reģistrēts, tāpēc otra NEW_EMBODIMENT konfigurācija tajā pašā Python procesā apstājas ar Embodiment tag ... already registered. Jūs nevarat importēt divas šādas konfigurācijas vienā skriptā. Trešais noteikums tiek piemērots vēlāk, izvietošanas laikā: darbības delta_indices jābūt nepārtrauktam diapazonam, kas sākas no nulles. Reti izkliedēts logs, piemēram, [0, 4, 8], tiek noraidīts, jo viss pakārtotais indeksē paredzēto fragmentu lineāri un citādi izpildītu nepareizās rindas.
Normalizācijas statistika, jo īpaši meta/relative_stats.json, tiek aprēķināta atbilstoši horizonta garumam, kas jums bija, kad tās ģenerējāt. Saīsiniet darbības horizontu no 16 uz 8 bez atkārtotas ģenerēšanas, un apmācība apstāsies ar IndexError: boolean index did not match indexed array ... dimension is 8 but corresponding boolean dimension is 16. Risinājums ir viena komanda: python gr00t/data/stats.py --dataset-path <path> --embodiment-tag NEW_EMBODIMENT --modality-config-path examples/SO100/so100_config.py. Palaidiet to pēc jebkādām izmaiņām delta_indices.
4. solis: vide
N1.7 pārvietoja repozitoriju uz un Python 3.12. Vecais conda plus pip install -e . ceļš joprojām pastāv README sakļautajā sadaļā, taču tas brīdina, ka GPU atkarībām, tostarp flash-attn un TensorRT, var būt nepieciešama manuāla instalēšana. Izmantojiet uv, ja vien jums nav īpaša iemesla to nedarīt. Attiecībā uz flash-attn, viena detaļa novērš neskaidrības: jūs redzēsiet Installing flash-attn izdrukātu katrā uv run. Tas netiek pārbūvēts. uv atkārtoti validē URL piesaistītu pakotni, kas jau ir kešatmiņā, un tas aizņem divas vai trīs sekundes.
- 1Instalējiet git-lfs, pēc tam klonējiet ar apakšmoduļiem
git-lfs ir obligāts, nevis izvēles. Bez tā parquet faili mapē demo_data/ tiek lejupielādēti kā rādītāju aizstājēji, un demonstrācijas palaišana neizdodas ar datu kopu, kas failu sarakstā izskatās esoša.
bashsudo apt install git-lfs && git lfs install git clone --recurse-submodules https://github.com/NVIDIA/Isaac-GR00T cd Isaac-GR00T - 2Instalējiet uv un sinhronizējiet vidi
Noklusējuma instalācija lejupielādē GPU atkarības, tostarp flash-attn un TensorRT. Jaunā A100 vai H100 attēlā tas ir garākais atsevišķais solis, tāpēc veiciet to, pirms pievēršat uzmanību jebkam citam.
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')" - 3Autentificējieties pret Hugging Face
Veiciet to pirms pirmās apmācības palaišanas, nevis pēc tam, kad tā neizdodas astoņas minūtes vēlāk.
bashuv run huggingface-cli login # or: export HF_TOKEN=<your_token> - 4Veselības pārbaude ar piegādātajiem SO-100 demonstrācijas datiem
Pirms pieskaraties savam ierakstam, palaidiet 2000 soļus ar demo_data/cube_to_bowl_5. Tās ir piecas epizodes, tas pabeidzas ātri un pierāda vidi, nevis jūsu datus. Ja šī palaišana neizdodas, nekas, ko darīsiet ar savu datu kopu, nepalīdzēs.
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 atbalsta tikai FFmpeg 4 līdz 7, un Ubuntu 25.10 un jaunākas versijas piegādā 8. versiju. Kļūda ir Could not load libtorchcodec, kas izskatās pēc bojātas instalācijas, nevis versiju konflikta. Instalējiet vecāku izpildlaiku, piemēram, conda install -c conda-forge 'ffmpeg<8', un ievietojiet tā bibliotēkas LD_LIBRARY_PATH. CUDA_HOME nav iestatīts. Smalka regulēšana pilnībā neizdodas. Palaidiet bash scripts/deployment/dgpu/install_deps.sh vienreiz, vai vienkārši export CUDA_HOME=/usr/local/cuda.
5. solis: fine-tune komanda un tās karodziņu noklusējuma vērtības
Nomainiet demonstrācijas datu kopu pret savu un pievienojiet vēlamās opcijas. Zemāk ir pilna forma, ko repozitorijs izmanto savā jaunā iemiesojuma apmācībā, ieskaitot paplašināšanas un kontrolpunktu karodziņus, ko īsais README piemērs izlaiž. Tā ir šaurā nozīmē: valodu pamatsistēma un vizuālais kodētājs paliek iesaldēti, un tiek apmācīts projektors un difūzijas darbības galva.
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| Karodziņš | Noklusējums FinetuneConfig | Ko tas dara |
|---|---|---|
| --global-batch-size | 64 | Kopējā partija visās GPU pirms gradienta akumulācijas. Piegādātie piemēri izmanto 32. |
| --learning-rate | 1e-4 | Tā pati vērtība, ko AY-Robots sūta savam groot1.7 apmācītājam. |
| --max-steps | 10000 | Kopējais optimizatora soļu skaits. Arī examples/finetune.sh apvalks noklusē uz 10000. |
| --gradient-accumulation-steps | 1 | Reizina efektīvo partiju. Vērtības virs 1 izsūta brīdinājumu par akumulēto izmēru. |
| --save-steps and --save-total-limit | 1000 and 5 | Kontrolpunktu biežums un to skaits, kas tiek saglabāti. Vecākie tiek dzēsti. |
| --weight-decay and --warmup-ratio | 1e-5 and 0.05 | Arī skaidri iestatīts ar examples/finetune.sh. |
| --state-dropout-prob | 0.2 in the CLI, 0.8 in the model config | Nejauši izmet proprioceptīvo stāvokli apmācības laikā. Samaziniet to, ja jūsu uzdevums balstās uz stāvokli. |
| --tune-llm and --tune-visual | False and False | Pamatsistēma pēc noklusējuma paliek iesaldēta. |
| --tune-projector and --tune-diffusion-model | True and True | Projektors un difūzijas darbības galva ir tie, kas faktiski tiek apmācīti. |
| --use-percentiles | True | Normalizēt ar q01 un q99, nevis ar neapstrādātu min un max. |
| --dataloader-num-workers | 2 | Ielādētājs pēc konstrukcijas ir balstīts uz CPU. Piemēri to palielina līdz 4. |
| --seed | does not exist | Šajā CLI nav seed karodziņa. |
Tā pēdējā rinda nav drukas kļūda. launch_finetune.py ir tyro CLI, kas ģenerēts no datu klases, un šai datu klasei nav sēklas lauka. README atsevišķi norāda 5 līdz 6 procentu atšķirību starp izpildēm, ko izraisa nedeterminēta attēlu paplašināšana. Divas izpildes ar identiskiem karodziņiem neradīs identiskus kontrolpunktus, kas ir ļoti svarīgi, mēģinot izlemt, vai hiperparametru maiņa palīdzēja, vai arī jums vienkārši paveicās. Salīdzinājumam, lerobot paša apmācītājs pēc noklusējuma izmanto sēklu 1000, un LeRobot GR00T recepte skaidri nodod --seed=42.
Precizēšana tiek veikta ar eval_strategy="no", tāpēc vispār nav validācijas zudumu līknes. Jūs iegūstat apmācības zudumus un neko citu. Jaunās iemiesošanas rokasgrāmata iesaka to ieslēgt ar --eval-strategy steps --eval-steps 500, taču šis karodziņš neeksistē launch_finetune.py: CLI ģenerē tyro no FinetuneConfig datu klases, un eval_strategy, eval_steps un eval_batch_size ir TrainingConfig lauki. To noklusējuma vērtības tur ir "no", 500 un 2. Lai tos sasniegtu, izmantojiet pilnīgāku sākumpunktu gr00t/experiment/launch_train.py, kur ligzdotais karodziņš ir --training.eval-strategy. Jebkurā gadījumā, krītoši apmācības zudumi paši par sevi sniedz ļoti maz informācijas par vispārināšanu, kas ir tieši tā situācija, kas aprakstīta zudumi krīt, bet politika neko nedara.
Cik maksā 20000 soļu izpilde
GR00T N1.7 nepieciešama 80 GB karte, tāpēc izmaksu jautājumam ir šaura atbilde. AY-Robots platformā groot1.7 apmācītājs darbojas A100 80 GB vai H100 80 GB līmenī, kur izpilde aizņem 3 līdz 6 stundas par 1.20 līdz 2.00 USD stundā spot tirgū. Tas ir aptuveni 4 līdz 12 USD par noklusējuma 20000 soļu darbu. Tas pats uzdevums uz SmolVLA vai ACT nonāk uz 24 GB kartes par 0.30 līdz 0.60 USD stundā un 1 līdz 3 USD par izpildi. Tas ir patiesais kompromiss: GR00T maksā apmēram četras reizes vairāk par katru mēģinājumu, un jūs to nevarat palaist uz 4090 zem sava galda.
| Modelis | GPU līmenis | Tipisks izpildes laiks | Tipiskās izmaksas | Minimālais epizožu skaits |
|---|---|---|---|---|
| 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 jebkura 24 GB karte | 2 to 5 hours | 1 to 3 USD | 30 |
| ACT | RTX 4090 or jebkura 24 GB karte | 2 to 5 hours | 1 to 3 USD | 50 |
50-epizodes minimums ir apakšējā robeža, nevis mērķis. NVIDIA bieži uzdotie jautājumi ir prasīgāki: aptuveni 100 trajektorijas vienkāršai fiksētas atrašanās vietas paņemšanai un novietošanai, 500 vai vairāk sarežģītām vai daudzpakāpju ainām, un 100 līdz 500 smalkai manipulācijai. Ja jums ir tikai 20 epizodes, pavadiet pēcpusdienu ierakstīšanai, nevis vakaru regulēšanai. datu vākšanas ceļvedis aptver to, kas atšķir noderīgu epizodi no izniekotas, ierakstiet savu pirmo datu kopu ir īsā versija, un SO-100 data collection ir rokas-specifiskā versija.

6. solis: atvērtās cilpas novērtēšana pirms rokas pieskaršanās
Nelieciet svaigu kontrolpunktu uz fiziska robota, lai noskaidrotu, vai apmācība ir izdevusies. Vispirms veiciet atvērtā cikla novērtēšanu. Tā atkārto ierakstītu epizodi, katrā solī jautā modelim par darbībām un attēlo prognozi pret patiesību ar MSE un MAE. Tas neko nemaksā un atklāj kartēšanas kļūdas no 2. un 3. soļa.
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 gripperRepozitorijs apzināti atsakās publicēt mērķa MSE pielāgotiem datiem, un tas ir pareizs lēmums: skaitlis ir atkarīgs no jūsu darbību vienībām, jūsu uzdevuma un jūsu datu kopas lieluma, tāpēc slieksnis, kas nokopēts no cita robota, neko nenozīmē. Svarīga ir tendence. Šeit ir atsauces izpilde, ko repozitorijs dokumentē uz viena H100 ar piecu epizožu demonstrācijas datu kopu un 2000 soļiem.
| Kontrolpunkts | Vidējais MSE uz traj 0 | Vidējais MAE uz traj 0 |
|---|---|---|
| 500 | 87.5 | 5.63 |
| 1000 | 25.4 | 3.30 |
| 1500 | 13.2 | 2.18 |
| 2000 | 10.0 | 1.76 |
Forma ir signāls, nevis absolūtās vērtības. Kļūdai vajadzētu vienmērīgi samazināties, kad apmācības soļi uzkrājas. Vidēji visās piecās apmācības epizodēs, nevis tikai trajektorijā 0, repozitorija pēdējais kontrolpunkts ieguva aptuveni 7.5 MSE un 1.5 MAE, tāpēc pat atsauces izpilde rāda atšķirīgus rezultātus atkarībā no tā, kuras epizodes tiek vidējotas. Ierakstiet savu bāzes līniju ar nemodificētu demonstrācijas komandu, pirms maināt kaut ko savos datos: ja nevarat reproducēt zināmu labu izpildi, nevarat atšķirt iestatīšanas kļūdu no datu problēmas. Repozitorijs arī kartē biežākos simptomus ar cēloņiem, un katrs no tiem ir operatīvs, nevis modeļa kļūda.
| Simptoms | Iespējamais cēlonis |
|---|---|
| MSE plakans vai pieaugošs visos kontrolpunktos | Mācīšanās ātrums ir pārāk zems, vai arī dati netiek ielādēti vispār. Pārbaudiet --dataset-path un datu ielādētāja darbiniekus. |
| Prognozes līkne ir plakana vai konstanta | modality.json atslēgas vai --modality-config-path nesakrīt. Darbības atslēgas nav kartētas. |
| MSE milzīgs, vai NaN zudums apmācības laikā | Darbības un stāvokļa normalizācija. Pārbaudiet meta/stats un to, ka darbības diapazoni ir fiziski ticami. |
| Labs uz traj 0, slikts uz neizmantotajām epizodēm | Datu trūkums, nevis kļūda. Piecas demonstrācijas epizodes nevar vispārināt. |
Cits ceļš: lerobot-train, nevis Isaac-GR00T
Pašreizējā LeRobot versija, 0.6.1 PyPI kopš 2026. gada 3. augusta, piedāvā otru un diezgan atšķirīgu veidu, kā precizēt tos pašus bāzes svarus. LeRobot atklāj GR00T N1.7 kā politikas tipu un apmāca to caur savu lerobot-train ieejas punktu. Šeit ir svarīgas divas lietas. LeRobot CLI ir konsoles skriptu kopa, tāpēc viss, ko lasāt un kas saka python lerobot/scripts/train.py ir novecojis un nedarbosies. Un LeRobot pilnībā noņēma GR00T N1.5 atbalstu, noraidot N1.5 kontrolpunktus un konfigurācijas ar migrācijas piezīmi, tāpēc, ja jums ir nepieciešams N1.5 caur LeRobot, jums ir jāpiesprauž lerobot==0.5.1, pēdējā versija, kas to atbalsta, publicēta 2026. gada 7. aprīlī.
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| Aspekts | Isaac-GR00T launch_finetune.py | lerobot-train --policy.type=groot |
|---|---|---|
| Datu kopas versija | Tikai LeRobot v2, nepieciešama konvertēšana | Vietējā LeRobot datu kopa, nav nepieciešama versijas pazemināšana |
| Modalitātes kartēšana | meta/modality.json plus Python datu konfigurācija | nav modality.json; uzvedība tiek iestatīta ar --policy.* karodziņiem komandrindā |
| Sēkla | vispār nav sēklas karodziņa | --seed, LeRobot noklusējums 1000 |
| Relatīvās darbības | ActionConfig katrai atslēgai datu konfigurācijā | --policy.use_relative_actions plus --policy.relative_exclude_joints |
| Publicētie atsauces rezultāti | SO-100 atvērtā cikla MSE tendence demonstrācijas datos | LIBERO komplekti, vidēji 96.5 procenti četrās komplektos |
| Izvietošanas ceļš | run_gr00t_server.py plus eval_so100.py caur ZMQ | lerobot-rollout, ar reāllaika sadalīšanu (queue_threshold jāpaliek 5 vai zemāk) |
- Katrs karodziņš ir redzams un maināms. Jūs varat atbloķēt vizuālo kodētāju, pārvietot state_dropout_prob vai saīsināt darbības horizontu.
- Atvērtā cikla diagrammas ir lokāli faili. Salīdzināt checkpoint-5000 ar checkpoint-20000 ir čaulas komanda.
- Jūs neesat atkarīgs no jebkuras platformas, kas paliek tiešsaistē, un kontrolpunkts atrodas jūsu diskā standarta formātā.
- Repozitorija etalonu piemēri LIBERO, SimplerEnv un DROID nodrošina zināmus labus izpildes rezultātus, ko reproducēt, pirms uzticaties saviem datiem.
- Vide ir lielākā daļa darba. FFmpeg versija, CUDA_HOME, git-lfs, aizsargātā mugurkaula arhitektūra, torchcodec: neviena no tām nav modeļa problēma, un katra no tām aptur izpildi.
- V3.0 uz v2.1 konvertēšanai nepieciešama atsevišķa virtualenv ar savu instalēšanas soli, un tā pārraksta jūsu datu kopas direktoriju uz vietas.
- GPU nomas rēķināšana sākas, kad sākat atkļūdošanu, nevis kad sākas apmācība, un nekas neaptur instanci, kad izpilde beidzas.
- Bez sēklas nav bitu-pa-bitam reproducējamības, papildus 5 līdz 6 procentu izpildes-uz-izpildi atšķirībai tikai no papildināšanas.
Divi veidi, kā iegūt vienu un to pašu kontrolpunktu
Jūs nomājat GPU un kontrolējat katru soli. Reāli pirmajā reizē tas aizņems pēcpusdienu, bet pēc tam katru reizi apmēram divdesmit minūtes.
- Ierakstiet epizodes ar lerobot-record uz SO-100. Jūs iegūsiet LeRobot v3.0 datu kopu.
- Pārveidojiet to uz v2.1, izmantojot scripts/lerobot_conversion/convert_v3_to_v2.py savā virtuālajā vidē.
- Uzrakstiet meta/modality.json un Python modalitātes konfigurāciju, reģistrētu zem EmbodimentTag.NEW_EMBODIMENT.
- Nomājiet 80 GB karti, klonējiet ar apakšmoduļiem, uv sync, autentificējieties pret Hugging Face.
- Palaidiet launch_finetune.py, pēc tam open_loop_eval.py uz vairākiem kontrolpunktiem un salīdziniet MSE tendenci pirms aparatūras izmantošanas.
- Noņemiet kontrolpunktu no mašīnas pirms instances iznīcināšanas, pēc tam izveidojiet apkalpošanas ceļu uz robotu roku.
Nokopējiet kontrolpunktu no nomātās instances pirms tās izslēgšanas. --save-total-limit 5 nozīmē arī to, ka vecāki kontrolpunkti tiek dzēsti, apmācībai turpinoties, tāpēc kontrolpunkts, ko vēlējāties 5000. solī, var vairs nepastāvēt 20000. solī.
Tas pats darbs kā veidlapa. Jūs izvēlaties modeli un datu kopu, aizmugursistēma nomā GPU spot tirgū atbilstoši nepieciešamajai VRAM, palaiž apmācītāju un ieraksta kontrolpunktus objektu krātuvē. GR00T N1.7 uz SO-100 ceļvedis ir tieši šī kombinācija; apmācības matrica satur visas citas modeļu un robotu roku kombinācijas, ieskaitot GR00T N1.7 uz SO-101.
| Ko sūta groot1.7 apmācītājs | Vērtība |
|---|---|
| Pakešu izmērs | 32 |
| Mācīšanās ātrums | 1e-4 |
| Maksimālais soļu skaits | 20000 |
| Gradientu akumulācija | 1, un tas ietekmē šo apmācītāju |
| Papildu iestatījums, kas pieejams veidlapā | saveSteps |
| Bāzes kontrolpunkts | nvidia/GR00T-N1.7-3B |
| Pieņemtais datu kopas formāts | LeRobot v2.0 or v2.1 |
Datu kopa var nākt no Hugging Face repo id, no jūsu pašu mašīnas vai no sesijas, ko ierakstījāt ar darbvirsmas klientu. Secinājumu veikšana ir atsevišķs solis: platforma nodrošina podu, kas apkalpo politiku, un jūsu lokālais robota klients sazinās ar šo galapunktu. Podi ietver dīkstāves sargsuņa funkciju un iznīcina sevi pēc dīkstāves perioda, tāpēc aizmirsta pārlūkprogrammas cilne neradīs rēķinu pa nakti. Ja nevēlaties klikšķināt, tās pašas darbības ir pieejamas CLI un MCP serverī.
GR00T N1.7 un Pi0.5 šeit ir tikai mākoņpakalpojumi; tikai SmolVLA un ACT darbojas arī lokāli. V2.1 prasība arī nepazūd, jo v3.0 datu kopa joprojām ir jāpārveido, pirms GR00T ielādētājs to pieņems. Un nekas neraksta jūsu modality.json semantiku jūsu vietā: ja jūsu kameras atslēgas vai valodas atslēga ir nepareizas, tās ir nepareizas abos maršrutos. Skatiet apmācības dokumentāciju, lai uzzinātu, ko aizmugursistēma dara un ko nedara jūsu vārdā.

Kontrolpunkta atgriešana uz rokas
Isaac-GR00T izmanto servera-klienta sadalījumu, izmantojot ZMQ. Politika darbojas uz GPU, un plāns klients uz robota mašīnas sūta novērojumus un saņem darbību fragmentus. SO-100 piemērs ir pietiekami pilnīgs, lai to kopētu: palaidiet run_gr00t_server.py ar jūsu kontrolpunktu un --embodiment-tag NEW_EMBODIMENT, tad palaidiet eval_so100.py robota pusē ar seriālo portu, robota ID, kameras indeksiem un valodas instrukciju. Kameru nosaukumiem šajā komandā jāatbilst draudzīgajiem nosaukumiem no jūsu modality.json, nevis OS ierīču numuriem.
# 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"Kamēr jūs atkal pievienojat roku: SO-100 izmanto Feetech STS3215 kopnes servomotorus uz 7.4 V sliedes. Pievadot tiem 12 V, tie tiek sabojāti, un tā ir viegla kļūda, ja jums pieder arī LeKiwi, kura bāze darbojas ar 12 V, bet roka – nē. Pārbaudiet barošanu pirms pirmās ieslēgšanas, nevis pēc dūmiem. Skatiet SO-100 aparatūras lapu un SO-100 pret LeKiwi. Ja roka ieslēdzas, bet nekas nekustas, servomotors nereaģē ir vieta, kur sākt.
Tagad godīgā daļa par to, kur darbojas politika, jo apmācībai un apkalpošanai ir atšķirīgi aparatūras stāsti. Precizēšanai nepieciešami 40 GB vai vairāk. Secinājumiem nav: README norāda 16 GB vai vairāk un skaidri nosauc RTX 4090, tāpēc karte, kas jums jau pieder, var apkalpot kontrolpunktu, ko tā nekad nebūtu varējusi radīt. Tas, kas nosaka, vai politika šķiet atsaucīga, nav VRAM, bet gan tas, kur atrodas serveris. AY-Robots GR00T N1.7 ir tikai mākonī, tāpēc vadības cilpa maksā par publiskā interneta turp un atpakaļ ceļu papildus 152 ms par katru darbības soli, un tikai SmolVLA un ACT darbojas arī lokāli. Lēnai priekšmetu paņemšanai un novietošanai attāls pods ir izdzīvojams. Jebkam reaktīvam tas nav: politika kļūst svārstīga tādā veidā, kas izskatās tieši kā apmācības kļūme un tāda nav. ACT ar 20 ms par darbības soli ir modelis, kas pieļauj visciešāko cilpu, SmolVLA ir 245 ms, un nekāda latentuma pielāgošana neatgūst jau iztērēto turp un atpakaļ ceļu. Palaidiet savu pirmo politiku izskaidro apkalpošanas pusi no sākuma līdz beigām.
Kas patiesībā noiet greizi
- GatedRepoError pirmajā palaišanā. Jums nav piešķirta piekļuve nvidia/Cosmos-Reason2-2B, vai arī jūs neautentificējāties. Tas notiek pēc tam, kad GPU pulkstenis jau ir sācis darboties.
- Datu kopa noraidīta ielādes laikā. Gandrīz vienmēr v3.0 datu kopa. Pārveidojiet to uz zemāku versiju. Skatīt datu kopa noraidīta kā v3.
- IndexError par neatbilstošām Būla dimensijām. Jūs mainījāt delta_indices un neatjauninājāt statistiku.
- Atmiņas trūkums pie 32. partijas. Samaziniet --global-batch-size un palieliniet --gradient-accumulation-steps, vai samaziniet --num-shards-per-epoch, ko konfigurācija skaidri iesaka, ja VRAM ir ierobežota. Skatīt atmiņas trūkums apmācības laikā.
- Zudums samazinās, politika neko nedara. Pēc noklusējuma nav validācijas sadalījuma, tāpēc tīra apmācības līkne pierāda ļoti maz. Šī lapa aptver diagnostiku.
- Darbojas jūsu iestatījumos un nekur citur. Sagaidāms ar nelielu datu kopu, kas filmēta vienā apgaismojuma apstākļos. NVIDIA iesaka krāsu svārstību paplašināšanu (colour jitter augmentation) plus 20 līdz 50 epizodes dažādos apgaismojumos. Vairāk šeit.
- Satvērējs nekad neaizveras pareizi. Pārbaudiet, vai satvērēja darbība ir ABSOLUTE un rokas savienojumi RELATIVE, šādā secībā action_configs. Satvērējs neaizveras uzskaita citus cēloņus.
- Kamera klusi atslēdzas ierakstīšanas vidū. Epizode joprojām tiek saglabāta un video atslēga joprojām pastāv, tāpēc šis ir nepatīkams gadījums. Kamera netiek noteikta to aptver.
Visu kļūdu režīmu indekss atrodas . Ja izvēlaties starp modeļiem, nevis atkļūdojat vienu, tad un satur etalonu numurus ar pievienotiem avotiem, un ir salīdzinājums, kas lielākajai daļai cilvēku patiešām ir nepieciešams, jo tā ir izvēle starp modeli, ko var apmācīt uz kartes zem jūsu galda, un modeli, kura precizēšanai jums ir jāīrē 80 GB mezgls. Lai iegūtu informāciju par to, kāpēc šie modeļi uzvedas tā, kā tie uzvedas, vispirms ir vērts izlasīt un . Un, ja jums vēl nav rokas, straumē fizisku SO-100 bez reģistrācijas.
Cik daudz epizožu man ir nepieciešams, pirms GR00T N1.7 precizēšana ir tā vērta?▾
AY-Robots nosaka stingru minimālo robežu 50 epizodēm groot1.7 apmācītājam. NVIDIA pašu FAQ ir prasīgāks: aptuveni 100 trajektorijas vienkāršai paņemšanai un novietošanai fiksētā vietā, 500 vai vairāk sarežģītām vai daudzpakāpju ainām, un 100 līdz 500 smalkai manipulācijai. Zem 50 epizodēm gandrīz vienmēr ir labāk ierakstīt vairāk datu, nekā pielāgot hiperparametrus. Ja pēc tam panākumi stabilizējas, NVIDIA iesaka HG-DAgger: palaidiet politiku, iejaucieties, kad tā neizdodas, un pievienojiet šos labojumus datu kopai.
Kāpēc mana datu kopa netiek ielādēta, un kā es varu noteikt, kura versija tā ir?▾
Atveriet meta/info.json un nolasiet codebase_version. LeRobot pašreizējā CODEBASE_VERSION galvenajā zarā ir v3.0, tāpēc viss, kas ierakstīts ar nesenu rīku ķēdi, ir v3.0, un GR00T ielādētājs sagaida v2. Pārveidojiet ar scripts/lerobot_conversion/convert_v3_to_v2.py no Isaac-GR00T repozitorija, kas ieraksta codebase_version: v2.1 pārveidotajā datu kopā. Skripts darbojas savā virtuālajā vidē, jo tam ir nepieciešama cita lerobot versija nekā GR00T nosaka.
Vai es varu precizēt GR00T N1.7 uz RTX 4090?▾
Nē. NVIDIA iesaka 40 GB vai vairāk VRAM precizēšanai un nosauc H100 vai L40 mezglus; citas kartes darbojas, bet aizņem daudz ilgāku laiku. 4090 ir 24 GB. AY-Robots piedāvā GR00T N1.7 tikai A100 80 GB un H100 80 GB līmenī tā paša iemesla dēļ. Secinājumi ir cits stāsts: 16 GB ir pietiekami, lai apkalpotu modeli, tāpēc 4090 var palaist politiku, ko tā nevar apmācīt. Ja vēlaties VLA, ko var apmācīt uz 24 GB, tas ir SmolVLA ar aptuveni 450 M parametriem vai ACT ar aptuveni 80 M.
Kāpēc divas palaišanas ar identiskiem karodziņiem dod atšķirīgus kontrolpunktus?▾
Tāpēc, ka launch_finetune.py nav sēklas. Tas ir tyro CLI, kas ģenerēts no datu klases, kas nesatur sēklas lauku, tāpēc nekas nefiksē RNG. Repozitorijs atsevišķi atzīmē 5 līdz 6 procentu atšķirības starp palaišanām, ko izraisa nedeterminēta attēlu paplašināšana. Ja reproducējamība ir svarīga, izmantojiet LeRobot ceļu: lerobot-train pieņem --seed un publicētā GR00T recepte nodod --seed=42.
Vai man vajadzētu izmantot Isaac-GR00T vai lerobot-train?▾
Izmantojiet Isaac-GR00T, ja vēlaties atsauces implementāciju, kontroli pār darbības attēlojumu katrai atslēgai, TensorRT eksportu vai etalonu piemērus, lai reproducētu pirms uzticaties saviem datiem. Izmantojiet lerobot-train, ja jūsu datu kopa jau ir LeRobot v3.0 un jūs nevēlaties to konvertēt, ja vēlaties sēklu, vai ja pārējā jūsu sistēma jau ir LeRobot. Abi precizē tos pašus nvidia/GR00T-N1.7-3B svarus. Ņemiet vērā, ka LeRobot pilnībā pārtrauca GR00T N1.5 atbalstu: N1.5 kontrolpunkti tiek noraidīti ar migrācijas piezīmi, un jums ir jāfiksē lerobot==0.5.1, lai turpinātu tos izmantot.
Vai man tiešām ir nepieciešama plaukstas kamera, kā arī priekšējā kamera?▾
Piegādātā SO-100 konfigurācija izmanto abas, un modality.json kartē priekšējo un plaukstas kameru kā atsevišķas video atslēgas. Jūs varat apmācīt ar vienu kameru, un modeļa kartes latentuma tabula ir mērīta ar vienu kameru, taču plaukstas skats ir tas, kas sniedz politikai noderīgu informāciju par satvērēju saskares brīdī. Ja satvērējs aizveras nepareizā laikā jūsu izpildēs, trūkstoša vai slikti mērķēta plaukstas kamera ir viena no pirmajām lietām, kas jāpārbauda.
Precizējiet GR00T N1.7 uz jūsu SO-100, vispirms neizveidojot vidi
Izvēlieties modeli, datu kopu un hiperparametrus veidlapā. Aizmugursistēma īrē A100 80 GB vai H100 spot tirgū, palaiž apmācītāju ar 32 partijām, mācīšanās ātrumu 1e-4 un 20000 soļiem, un raksta kontrolpunktus objektu krātuvē. Aptuveni 4 līdz 12 USD par katru palaišanu.
Atvērt GR00T N1.7 apmācības rokasgrāmatuSources
- 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