Stranica vodiča AY-Robots za treniranje GR00T N1.7 na SO-100 ruci, prikazujući potrebni nivo GPU-a, format skupa podataka i podrazumevane postavke trenera
GR00T N1.7SO-100Fino podešavanjeLeRobotVLA

Kako trenirati GR00T N1.7 na sopstvenom SO-100 skupu podataka

AY-Robots ResearchAugust 23, 202628 min čitanja

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.

SvojstvoVrednostIzvor
Parametri3,000,000,000Hugging Face kartica modela
Okosnica vida-jezikanvidia/Cosmos-Reason2-2B (Qwen3-VL), gated on Hugging Facerepo README
Glava akcijeFlow-matching difuzioni transformator, 16 slojeva (N1.6 je imao 32)repo README
Predviđeni horizont akcije40 steps for the base checkpoint (N1.6 had 16)getting_started/policy.md and repo README
Maksimalna širina stanja i akcije132 (N1.6 had 29)repo README
Licenca kodaApache 2.0Isaac-GR00T repository
Licenca težinaNVIDIA Open Model License Agreementkartica modela
Kašnjenje, H100 80 GB, PyTorch eager, 4 koraka denoisovanja, 1 kamera85.8 ms end to end, 11.7 Hztabela vremena kartice modela
Isti hardver, TensorRT puni pajplajn27.9 ms end to end, 35.9 Hztabela vremena kartice modela
Kašnjenje koje AY-Robots navodi za svoj servisirani GR00T N1.7152 ms per action stepAY-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.

Stranica modela AY-Robots za GR00T N1.7 koja prikazuje broj parametara, nivo GPU-a, kašnjenje inferencije i navedene snage i ograničenja modela
Stranica /policies/groot-n1-7 sadrži istu traku sa specifikacijama koju biste inače ručno sastavili iz kartice modela i README datoteke repozitorijuma.

Šta je potrebno za pokretanje pre nego što bilo šta ukucate

ZahtevFino podešavanjeInferencija
VRAM, NVIDIA preporuka40 GB ili više, preporučuje se H100 ili L4016 GB ili više, radi RTX 4090
Python i CUDA na dGPU3.12 i CUDA 12.83.12 i CUDA 12.8
Video pozadinatorchcodec 0.8.0, samo FFmpeg 4 do 7isto
Format skupa podatakaLeRobot v2 plus meta/modality.jsonnije primenljivo
Hugging Face pristupodobreno za nvidia/Cosmos-Reason2-2Bisto
Ostali alatigit-lfs i uvuv
AY-Robots GPU nivo za groot1.7 trenerA100 80 GB ili H100 80 GBpod automatski obezbeđen
Zaštićena okosnica će vas zaustaviti pri prvom pokretanju

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.

bash
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=true
lerobot-record na trenutnom LeRobot-u. Dužina epizode podrazumevano iznosi 60 s, a vreme resetovanja 60 s. so100_follower i so101_follower su oba registrovana u istoj LeRobot konfiguracionoj klasi, zbog čega Isaac-GR00T SO100 primer koristi so101 imena; oba rade na SO-100. Imena kamera koja ovde odaberete (front, wrist) su imena koja se moraju ponovo pojaviti u modality.json.

Sopstveni 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.

bash
# 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
Konvertor prihvata --repo-id, opcioni --root, i --force-conversion, koji briše sve postojeće lokalne snimke i ponovo ih preuzima. On upisuje codebase_version: v2.1 u meta/info.json.
Konverzija prepisuje na mestu

Ako 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./, i jedan dodatni fajl koji standardni LeRobot nema. Taj dodatni fajl je mesto gde se nalazi većina preostalih grešaka.

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.

json
{
  "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"
    }
  }
}
examples/SO100/modality.json. Indeksi su bazirani na nuli i prate Python sečenje, tako da je single_arm [0:5] a gripper [5:6].

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.

SlojDatotekaSO-100 forma korišćena u repozitorijumu
Parquet kolonadata/chunk-*/episode_*.parquetannotation.human.task_description
modality.json ključmeta/modality.json, under "annotation", without the annotation. prefixhuman.task_description
modality_keys u konfiguraciji podatakayour so100_config.pyannotation.human.task_description
Zašto jezički ključ zbunjuje ljude

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.

python
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)
examples/SO100/so100_config.py, skraćen na najbitnije. NON_EEF znači prostor zglobova; EEF bi očekivao devetodimenzionalni vektor x, y, z plus 6D rotaciju.

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.

Promenite delta_indices i morate ponovo generisati statistiku

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.

  1. 1
    Instalirajte 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.

    bash
    sudo apt install git-lfs && git lfs install
    git clone --recurse-submodules https://github.com/NVIDIA/Isaac-GR00T
    cd Isaac-GR00T
  2. 2
    Instalirajte 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.

    bash
    curl -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')"
  3. 3
    Autentifikujte se sa Hugging Face-om

    Uradite ovo pre prvog pokretanja obuke, a ne nakon što ne uspe osam minuta kasnije.

    bash
    uv run huggingface-cli login   # or: export HF_TOKEN=<your_token>
  4. 4
    Provera 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.

    bash
    CUDA_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
Dve zamke okruženja koje izgledaju kao greške modela

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.

bash
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
Jedan GPU. Za osam kartica, zamenite pokretač sa uv run torchrun --nproc_per_node=8 --master_port=29500 i postavite --num-gpus 8. Koristite uv run torchrun, a ne samo torchrun, inače ćete dobiti pogrešno okruženje.
ZastavicaPodrazumevano u FinetuneConfigŠta radi
--global-batch-size64Ukupna veličina paketa (batch) preko svih GPU-a pre akumulacije gradijenata. Isporučeni primeri koriste 32.
--learning-rate1e-4Ista vrednost koju AY-Robots šalje za svoj groot1.7 trener.
--max-steps10000Ukupan broj koraka optimizatora. Omotač examples/finetune.sh takođe podrazumevano koristi 10000.
--gradient-accumulation-steps1Množi efektivnu veličinu paketa. Vrednosti iznad 1 emituju upozorenje koje vam govori akumuliranu veličinu.
--save-steps and --save-total-limit1000 and 5Učestalost kontrolnih tačaka i koliko ih se čuva. Starije se brišu.
--weight-decay and --warmup-ratio1e-5 and 0.05Takođe eksplicitno postavljeno od strane examples/finetune.sh.
--state-dropout-prob0.2 in the CLI, 0.8 in the model configNasumično ispušta proprioceptivno stanje tokom treninga. Smanjite ako se vaš zadatak oslanja na stanje.
--tune-llm and --tune-visualFalse and FalseOkosnica ostaje zamrznuta po podrazumevanoj vrednosti.
--tune-projector and --tune-diffusion-modelTrue and TrueProjektor i difuziona akciona glava su ono što se zapravo trenira.
--use-percentilesTrueNormalizujte sa q01 i q99 umesto sirovih minimuma i maksimuma.
--dataloader-num-workers2Učitavač je po dizajnu baziran na CPU-u. Primeri ovo podižu na 4.
--seedne postojiNe 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.

Validacija je podrazumevano isključena, a dokumentovani flag nije dostupan na ovom CLI-ju

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.

ModelGPU nivoTipično trajanjeTipična cenaMinimalan broj epizoda
GR00T N1.7A100 80 GB or H100 80 GB3 to 6 hours4 to 12 USD50
GR00T N1.5A100 80 GB or H100 80 GB3 to 6 hours4 to 12 USD50
Pi0.5A100 80 GB or H100 80 GB3 to 6 hours4 to 12 USD50
SmolVLARTX 4090 or any 24 GB card2 to 5 hours1 to 3 USD30
ACTRTX 4090 or any 24 GB card2 to 5 hours1 to 3 USD50

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.

AY-Robots vodič za obuku za GR00T N1.7 na SO-100, prikazuje traku sa specifikacijama sa GPU nivoom, potrebnim formatom skupa podataka i podrazumevanim vrednostima trenera
Vodič /train/groot-n1-7-on-so-100 prikazuje činjenice koje biste inače ručno rekonstruisali: GPU nivo, format skupa podataka i tačne podrazumevane vrednosti koje trener šalje.

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.

bash
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 gripper
Grafikoni se nalaze u /tmp/open_loop_eval/traj_<id>.jpeg osim ako ne prosledite --save-plot-path. Podrazumevane vrednosti: --execution-horizon 16, --steps 200, --denoising-steps 4, --traj-ids 0.

Repozitorijum 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čkaProsečan MSE na putanji 0Prosečan MAE na putanji 0
50087.55.63
100025.43.30
150013.22.18
200010.01.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.

SimptomVerovatan uzrok
MSE ravno ili raste kroz kontrolne tačkeStopa 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 konstantnamodality.json ključevi ili --modality-config-path se ne podudaraju. Ključevi akcija nisu mapirani.
MSE ogroman, ili NaN gubitak tokom treningaNormalizacija akcije i stanja. Proverite meta/stats i da su opsezi akcija fizički verodostojni.
Dobro na traj 0, loše na zadržanim epizodamaNedostatak 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.

bash
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
LeRobot-nativna GR00T N1.7 receptura. Napomena o relative_exclude_joints: hvataljka je isključena iz relativnih akcija, što je ista odluka koju so100_config.py donosi sa ActionRepresentation.ABSOLUTE.
AspektIsaac-GR00T launch_finetune.pylerobot-train --policy.type=groot
Samo LeRobot v2, potrebna konverzijaNativni LeRobot skup podataka, bez degradacije
meta/modality.json plus Python konfiguracija podatakanema 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 podacimaLIBERO paketi, 96.5 procenata prosečno kroz četiri paketa
run_gr00t_server.py plus eval_so100.py preko ZMQ-alerobot-rollout, sa chunkingom u realnom vremenu (queue_threshold bi trebalo da ostane na ili ispod 5)
Pokretanje finog podešavanja samostalno
Prednosti
  • 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.
Kompromisi
  • 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.

  1. Snimite epizode pomoću lerobot-record na SO-100. Dobijate LeRobot v3.0 skup podataka.
  2. Konvertujte ga na v2.1 pomoću scripts/lerobot_conversion/convert_v3_to_v2.py u sopstvenom virtuelnom okruženju.
  3. Napišite meta/modality.json i Python konfiguraciju modaliteta, registrovanu pod EmbodimentTag.NEW_EMBODIMENT.
  4. Iznajmite karticu od 80 GB, klonirajte sa podmodulima, uv sync, autentifikujte se na Hugging Face.
  5. Pokrenite launch_finetune.py, zatim open_loop_eval.py na nekoliko kontrolnih tačaka i uporedite trend MSE pre nego što dodirnete hardver.
  6. Preuzmite kontrolnu tačku sa mašine pre nego što uništite instancu, a zatim izgradite putanju za serviranje do ruke.
Korak koji svi zaborave

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.

AY-Robots matrica obuke sa pet modela politike kao redovima i četiri robotske ruke kao kolonama, gde svaka ćelija vodi do specifičnog vodiča za obuku
Matrica /train: pet modela naspram četiri ruke. Red GR00T N1.7 takođe pokriva SO-101, Koch v1.1 i LeKiwi.

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.

bash
# 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"
--execution-horizon kontroliše koliko predviđenih koraka se izvršava pre ponovnog planiranja. Mora biti najviše policy's action_horizon, a taj broj je dužina action delta_indices u vašoj konfiguraciji modaliteta, a ne osnovnog modela. Isporučena SO-100 konfiguracija predviđa 16, tako da je 16 vaš maksimum; osnovni nvidia/GR00T-N1.7-3B checkpoint je konfigurisan za 40, a policy.md jasno kaže da se finetunovani checkpointi mogu razlikovati. Prekoračite ga i dobićete ValueError koji imenuje oba broja. 8 je vrednost koju dokumentacija predlaže za primenu u realnom vremenu. Stari naziv zastavice --action-horizon i dalje radi, ali upozorava.
7.4 V, ne 12 V

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 trening

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started