Stránka sprievodcu AY-Robots pre trénovanie GR00T N1.7 na ramene SO-100, zobrazujúca požadovanú úroveň GPU, formát datasetu a predvolené nastavenia trénera
GR00T N1.7SO-100Jemné ladenieLeRobotVLA

Ako trénovať GR00T N1.7 na vlastnom datasete SO-100

AY-Robots ResearchAugust 23, 202628 min čítania

Otestovaný návod na jemné ladenie NVIDIA GR00T N1.7 na datasete LeRobot pre SO-100: skutočné flagy, modality.json, požiadavka v2.1, čo stojí spustenie a nástrahy.

NVIDIA dodáva príklad jemného doladenia presne pre rameno, ktoré pravdepodobne vlastníte. Vo vnútri úložiska Isaac-GR00T sa nachádza priečinok s názvom demo_data/cube_to_bowl_5: päť epizód, 4 148 snímok pri 30 fps, už napísaných ako LeRobot v2.1, so zodpovedajúcou konfiguráciou modality pod examples/SO100/. Jeho meta/info.json hlási robot_type: so101_follower, čo je v LeRobot rovnaká trieda konfigurácie ako so100_follower. To je skutočne užitočné, pretože to znamená, že referenčná cesta pre GR00T N1.7 na šesť-stupňov voľnosti hobby ramene je udržiavaná ľuďmi, ktorí model napísali. Nie je to zmenšená humanoidná ukážka, je to to isté rameno.

Zlou správou je vzdialenosť medzi I recorded 60 episodes a the arm does the task. Existuje asi šesť miest, kde tento pipeline zlyháva ticho, namiesto hlasno, a štyri z nich sa nachádzajú v súboroch, ktoré väčšina ľudí nikdy neotvorí: meta/modality.json, konfigurácia dát Pythonu, meta/relative_stats.json, a vlastný reťazec verzie datasetu. Táto príručka prechádza manuálnou cestou od začiatku do konca so skutočnými príkazmi, potom ukazuje rovnakú úlohu ako formulár na AY-Robots. Všetko nižšie bolo skontrolované oproti hlavnej vetve Isaac-GR00T k 20. augustu 2026 (riadok n1.7-release) a lerobot 0.6.1, publikovanému na PyPI 3. augusta 2026. Upstream sa rýchlo mení, a ak bol premenovaný nejaký príznak, tento článok to uvádza.

Čo potrebujete vedieť predtým, ako začnete

  • Jemné doladenie GR00T N1.7 vyžaduje 40 GB alebo viac VRAM. NVIDIA odporúča uzly H100 alebo L40. 24 GB RTX 4090 túto prácu nezvládne, hoci dokáže trénovať SmolVLA a ACT.
  • Dataset musí byť LeRobot v2 (v2.0 alebo v2.1) plus GR00T-špecifický meta/modality.json. Dataset LeRobot v3.0 sa nenačíta a musí byť konvertovaný na nižšiu verziu.
  • Vstupným bodom je gr00t/experiment/launch_finetune.py, tyro CLI. Nemá príznak --seed, takže spustenia nie sú bitovo reprodukovateľné.
  • Pre vlastné rameno je tag embodiment NEW_EMBODIMENT, a tento tag robí --modality-config-path povinným.
  • Dodávaný recept SO-100 predpovedá kĺby ramena ako RELATÍVNE delty a uchopovač ako ABSOLÚTNY cieľ. Získanie tohto párovania naopak je tiché zlyhanie, nie chyba.
  • Na AY-Robots je rovnaká úloha formulár: 20000 steps, batch 32, learning rate 1e-4, približne 4 to 12 USD na úrovni A100 80 GB alebo H100.

Čo je GR00T N1.7 v skutočnosti

GR00T N1.7 je vizuálno-jazykovo-akčný model s dvoj-systémovým usporiadaním opísaným v pôvodnom článku GR00T N1: vizuálno-jazykový modul, ktorý číta kamery a inštrukcie, a difúzny transformátor, ktorý to premieňa na blok súvislých motorických príkazov. N1.7 nahradil prvú polovicu. Chrbtica Eagle z N1.6 je preč, vymenená za nvidia/Cosmos-Reason2-2B na architektúre Qwen3-VL, a model bol predtrenovaný na približne 20 000 hodinách egocentrického ľudského videa navyše k robotickým dátam. Vlastný popis spoločnosti NVIDIA uvádza číslo 20 854 hodín a hlási, že prechod z 1k na 20k hodín viac ako zdvojnásobuje priemerné dokončenie úloh.

Zmenila sa aj druhá polovica, a to spôsobmi, ktoré sú dôležité pre váš beh. Akčná hlava klesla z 32 difúznych vrstiev na 16, predpovedaný akčný blok narástol zo 16 krokov na 40 a maximálna šírka stavu a akcie sa zmenila z 29 na 132. Tieto tri čísla pochádzajú zo zoznamu zmien v README repozitára; vlastný oznam spoločnosti NVIDIA stále opisuje Systém 1 ako 32-vrstvový DiT, takže tam, kde sa tieto dva údaje rozchádzajú, dôverujte repozitáru, ktorý sa chystáte klonovať. Akcie sú štandardne vyjadrené v relatívnom koncovom efektore priestore, ako delty od aktuálnej pozície namiesto absolútnych cieľov, čo umožňuje prenos manipulačných priorít naučených z ľudského videa do riadenia robota. Samotná hlava je flow-matching difúzny transformátor, rovnaká rodina ako Pi0.5, ale s inou chrbticou pred ním. Ak stále používate predchádzajúcu generáciu, N1.7 oproti N1.5 pokrýva, či upgrade ospravedlňuje prepracovanie vášho pipeline.

VlastnosťHodnotaOdkiaľ pochádza
Parametre3,000,000,000karta modelu Hugging Face
Vizuálno-jazyková chrbticanvidia/Cosmos-Reason2-2B (Qwen3-VL), gated on Hugging Facerepo README
Akčná hlavaFlow-matching difúzny transformátor, 16 vrstiev (N1.6 mal 32)repo README
Predpovedaný akčný horizont40 krokov pre základný checkpoint (N1.6 mal 16)getting_started/policy.md a repo README
Maximálna šírka stavu a akcie132 (N1.6 mal 29)repo README
Licencia kóduApache 2.0repozitár Isaac-GR00T
Licencia váhNVIDIA Open Model License Agreementkarta modelu
Latencia, H100 80 GB, PyTorch eager, 4 kroky denoisovania, 1 kamera85.8 ms end to end, 11.7 Hztabuľka časovania karty modelu
Rovnaký hardvér, TensorRT plný pipeline27.9 ms end to end, 35.9 Hztabuľka časovania karty modelu
Latencia, ktorú AY-Robots uvádza pre svoj obsluhovaný GR00T N1.7152 ms na akčný krokkatalóg politík AY-Robots

Tieto posledné tri riadky vysvetľujú väčšinu sklamania, ktoré ľudia hlásia. Titulných 27.9 ms je TensorRT engine na H100 s jednou kamerou a štyrmi krokmi denoisovania. Čistý PyTorch na rovnakej karte je 85.8 ms a karta modelu uvádza rozdiel 3.08x. Ani jedno číslo nezahŕňa obslužnú vrstvu, druhú kameru alebo sieťový skok. Údaj 152 ms na akčný krok, ktorý AY-Robots uvádza pre svoj obsluhovaný GR00T N1.7, je hodnota s obsluhou v slučke, a k tomu sa pridáva aj spiatočná cesta cez verejný internet. Viac o tom na konci. Pre čísla vedľa iných modelov, GR00T N1.7 oproti Pi0.5 a GR00T N1.7 oproti SmolVLA ich porovnávajú vedľa seba.

Stránka modelu AY-Robots pre GR00T N1.7 zobrazujúca počet parametrov, úroveň GPU, latenciu inferencie a uvedené silné stránky a obmedzenia modelu
Stránka /policies/groot-n1-7 obsahuje rovnaký pásik špecifikácií, aký by ste inak ručne zostavili z karty modelu a súboru README repozitára.

Čo je potrebné pre spustenie, než čokoľvek napíšete

PožiadavkaJemné doladenieInferencia
VRAM, odporúčanie NVIDIA40 GB or more, H100 or L40 recommended16 GB or more, an RTX 4090 works
Python a CUDA na dGPU3.12 and CUDA 12.83.12 and CUDA 12.8
Video backendtorchcodec 0.8.0, FFmpeg 4 to 7 onlysame
Formát dátovej sadyLeRobot v2 plus meta/modality.jsonnot applicable
Prístup k Hugging Faceapproved for nvidia/Cosmos-Reason2-2Bsame
Ďalšie nástrojegit-lfs and uvuv
Úroveň GPU AY-Robots pre tréner groot1.7A100 80 GB or H100 80 GBpod provisioned automatically
Uzavretá chrbticová sieť vás zastaví pri prvom spustení

Každý kontrolný bod GR00T, vrátane základného nvidia/GR00T-N1.7-3B, na prvé použitie načíta nvidia/Cosmos-Reason2-2B, a tento repozitár je uzavretý. Súbor README presne uvádza zlyhanie: načítanie modelu zlyhá s chybou GatedRepoError / 401 Client Error. Čo však nespomína, je kedy sa to stane, a to je po tom, ako si prenajmete kartu a spustenie sa začne. Požiadajte o prístup na stránke modelu, potom spustite uv run huggingface-cli login alebo exportujte HF_TOKEN predtým, ako si čokoľvek prenajmete.

Krok 0: samotné epizódy

Všetko nižšie predpokladá, že už máte nahrané epizódy. Ak nie, to je skutočný prvý krok a je to ten, ktorý rozhoduje o tom, aký dobrý môže byť výsledok, pretože učenie napodobňovaním nedokáže obnoviť informácie, ktoré nie sú v dátach. Najprv kalibrujte obe ramená, potom riaďte sledovacie rameno pomocou vodiaceho ramena zatiaľ čo lerobot-record zapisuje parquet súbory a streamy z kamier. Ak kalibrácia je nesprávna, hodnoty kĺbov vo vašom datasete popisujú mierne odlišného robota, než ten, ktorý bude neskôr vykonávať politiku, a žiadne množstvo tréningu to nenapraví.

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 aktuálnom LeRobot. Dĺžka epizódy je štandardne 60 s a čas resetu 60 s. so100_follower a so101_follower sú oba registrované proti rovnakej konfiguračnej triede LeRobot, preto príklad Isaac-GR00T SO100 používa názvy so101; oba fungujú na SO-100. Názvy kamier, ktoré si tu zvolíte (front, wrist), sú názvy, ktoré sa musia znova objaviť v modality.json.

Vlastná rada LeRobotu je nahrať aspoň 50 epizód, približne 10 pre každú polohu objektu, udržiavať kamery pevné a zachovať konzistentné správanie pri uchopení. Variácie pridajte neskôr, nie na začiatku. Pravidlo, ktoré si treba zapamätať: ak by ste úlohu nedokázali vykonať sami len z obrázkov kamery, politika to tiež nedokáže. Pre nastavenie špecifické pre rameno, začíname s SO-100 a stránka LeRobot pre SO-100 pokrývajú porty, kalibráciu a indexy kamier. Na AY-Robots to môžete urobiť aj cez internet z prehliadača pomocou teleoperácie a nahrávať priamo zo sedenia.

Krok 1: súbor dát musí byť LeRobot v2.1

Toto je najčastejšia prekážka. Aktuálna verzia CODEBASE_VERSION LeRobot v hlavnej vetve je v3.0, takže čokoľvek, čo dnes nahráte s aktuálnym reťazcom nástrojov, bude vo verzii v3.0. Loader GR00T očakáva v2. Repozitár jasne vysvetľuje prečo: mnohé upstream datasety ako DROID, LIBERO a Bridge sú publikované vo verzii v2 a natívna podpora pre obe je plánovaná, ale zatiaľ nie je dodaná. Konverzia je teda na vás a beží vo vlastnom virtualenv z konkrétneho dôvodu: scripts/lerobot_conversion obsahuje vlastný pyproject, ktorý vyžaduje Python 3.10 alebo 3.11 a fixuje lerobot na jeden git commit, zatiaľ čo samotný Isaac-GR00T vyžaduje Python 3.12. Nainštalujte konvertor z koreňa repozitára a namiesto toho získate balík gr00t, čo je chyba, pred ktorou varuje jeho README. Ak ste noví v tomto formáte, záznam v glosári datasetu LeRobot vysvetľuje, čo sa v ňom skutočne nachádza.

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 prijíma --repo-id, voliteľný --root a --force-conversion, ktorý odstráni akúkoľvek existujúcu lokálnu snímku a znova ju stiahne. Zapíše codebase_version: v2.1 do meta/info.json.
Konverzia prepisuje na mieste

Ak dataset v3.0 už existuje lokálne, skript vytvorí rozloženie v2.1 vedľa neho a potom ich vymení: originál sa presunie do súrodeneckého priečinka s pripojenou verziou, <name>_v3.0, a konvertovaná kópia prevezme pôvodnú cestu. (Vlastný docstring skriptu nazýva tento priečinok _v30; kód pripojí reťazec verzie, takže v skutočnosti dostanete _v3.0.) Druhé prekvapenie: výstup vždy skončí pod <root>/<repo-id>, takže --root examples/SO100/my_dataset_lerobot vám dá examples/SO100/my_dataset_lerobot/<your-hf-user>/<your-dataset>, a táto dlhšia cesta je tá, ktorú neskôr vyžaduje --dataset-path. Keď tréningová úloha odmietne váš dataset z dôvodov verzie, stránka o odmietnutí datasetu ako v3 uvádza presné príznaky.

Štruktúra, ktorú GR00T vyžaduje po konverzii, je klasické rozloženie v2: meta/info.json, meta/episodes.jsonl, meta/tasks.jsonl, súbory parquet pod data/chunk-000/, súbory MP4 pod videos/chunk-000/observation.images./, a jeden dodatočný súbor, ktorý štandardný LeRobot nemá. V tomto dodatočnom súbore sa nachádza väčšina zostávajúcich chýb.

Krok 2: modality.json, šesť čísel, ktoré rozhodujú o všetkom

V datasete LeRobot sú stav robota a akcia uložené ako ploché polia float32. Pre SO-100 majú obe tvar [6]: päť kĺbov ramena a uchopovač. Demo dataset ich nazýva shoulder_pan.pos, shoulder_lift.pos, elbow_flex.pos, wrist_flex.pos, wrist_roll.pos, gripper.pos, ale tieto názvy sú v info.json a nič v súbore parquet nehovorí, ktorý index je ktorý. meta/modality.json poskytuje toto mapovanie a GR00T bez neho nebude trénovať. Tu je to, čo repozitár dodáva pre SO-100, doslovne.

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. Indexy sú založené na nule a riadia sa Python slicingom, takže single_arm je [0:5] a gripper je [5:6].

Skopírujte ho do vášho konvertovaného datasetu na meta/modality.json a premenujte kľúče videí na to, ako sa vaše kamery skutočne volajú. Ak ste nahrávali s jednou stropnou kamerou s názvom top, potom original_key je observation.images.top a priateľský názov je to, na čo sa bude odkazovať vaša dátová konfigurácia. Tieto dve veci sa musia zhodovať a ani jedna z nich nekontroluje tú druhú za vás. Jazyková anotácia je horšia, pretože rovnaký kľúč sa musí objaviť na troch miestach.

VrstvaSúborFormát SO-100 použitý v repozitári
Stĺpec Parquetdata/chunk-*/episode_*.parquetannotation.human.task_description
Kľúč modality.jsonmeta/modality.json, under "annotation", without the annotation. prefixhuman.task_description
modality_keys v dátovej konfiguráciiyour so100_config.pyannotation.human.task_description
Prečo kľúč jazyka mätie ľudí

Segmenty za annotation. sú zvolené autorom datasetu. Demo dáta SO-100 používajú annotation.human.task_description; LIBERO a SimplerEnv používajú annotation.human.action.task_description. Oba sú platné. Ak ste skopírovali konfiguráciu z príkladu LIBERO a nasmerovali ju na vlastnú nahrávku SO-100, jazykový kanál sa vyrieši na nič a model sa trénuje na prázdnej inštrukcii. Strata stále klesá. Politika stále niečo robí. Len ignoruje to, čo ste jej povedali, aby urobila.

Krok 3: dátová konfigurácia, relatívne rameno a absolútny uchopovač

Konfigurácia modality je súbor Pythonu, nie JSON, pretože tiež rozhoduje o tom, ako je reprezentovaná každá akčná skupina. Toto je tá časť pracovného postupu N1.7, ktorá v N1.5 neexistovala v rovnakej forme, a tá časť, ktorú sa oplatí prečítať dvakrát. Dodávaná konfigurácia SO-100 predpovedá päť kĺbov ramena ako RELATIVE delty z aktuálneho stavu a chápadlo ako ABSOLUTE cieľovú pozíciu, pretože binárny signál otvorenia/zatvorenia sa správa lepšie ako cieľ než ako 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, skrátené na podstatné. NON_EEF znamená priestor kĺbov; EEF by očakávalo deväťrozmerný vektor x, y, z plus 6D rotáciu.

Dva detaily vás tu budú stáť deň, ak ich nepoznáte. Po prvé, action_configs je pozičný: dokumentácia vyžaduje rovnakú dĺžku a rovnaké poradie ako modality_keys, a sú priame ohľadom dôsledkov chyby, ktorou je tiché aplikovanie nesprávnej reprezentácie. Vaše chápadlo sa trénuje ako delta a vaše rameno ako absolútny cieľ, a neexistuje žiadna chybová správa. Po druhé, register_modality_config tvrdí, že značka ešte nie je zaregistrovaná, takže druhá konfigurácia NEW_EMBODIMENT v rovnakom procese Pythonu zlyhá s Embodiment tag ... already registered. Nemôžete importovať dve z nich do jedného skriptu. Tretie pravidlo sa vynucuje neskôr, pri nasadení: akcia delta_indices musí byť súvislý rozsah začínajúci nulou. Riedke okno ako [0, 4, 8] je odmietnuté, pretože všetko následné indexuje predpovedaný blok lineárne a inak by vykonalo nesprávne riadky.

Zmeňte delta_indices a musíte znova vygenerovať štatistiky

Normalizačné štatistiky, najmä meta/relative_stats.json, sa vypočítavajú pre dĺžku horizontu, ktorú ste mali pri ich generovaní. Skráťte akčný horizont zo 16 na 8 bez opätovného generovania a tréning zlyhá s IndexError: boolean index did not match indexed array ... dimension is 8 but corresponding boolean dimension is 16. Oprava je jeden príkaz: python gr00t/data/stats.py --dataset-path <path> --embodiment-tag NEW_EMBODIMENT --modality-config-path examples/SO100/so100_config.py. Spustite ho po každej zmene delta_indices.

Krok 4: prostredie

N1.7 presunul repozitár na a Python 3.12. Stará cesta s conda plus pip install -e . cesta stále existuje v zbalenej sekcii README, ale upozorňuje, že závislosti GPU vrátane flash-attn a TensorRT môžu vyžadovať manuálnu inštaláciu. Použite uv, pokiaľ nemáte špecifický dôvod to neurobiť. Pokiaľ ide o flash-attn, jeden detail šetrí zmätok: uvidíte Installing flash-attn vytlačené pri každom uv run. Neprebieha prebudovanie. uv znovu overuje wheel pripnutý k URL, ktorý je už v cache, a trvá to dve alebo tri sekundy.

  1. 1
    Nainštalujte git-lfs, potom klonujte so submodulmi

    git-lfs je povinný, nie voliteľný. Bez neho sa súbory parquet v demo_data/ stiahnu ako zástupné ukazovatele a demo spustenie zlyhá na datasete, ktorý sa javí ako prítomný v zozname súborov.

    bash
    sudo apt install git-lfs && git lfs install
    git clone --recurse-submodules https://github.com/NVIDIA/Isaac-GR00T
    cd Isaac-GR00T
  2. 2
    Nainštalujte uv a synchronizujte prostredie

    Predvolená inštalácia stiahne závislosti GPU vrátane flash-attn a TensorRT. Na čerstvom obraze A100 alebo H100 je to najdlhší samostatný krok, takže ho urobte predtým, než začnete venovať pozornosť čomukoľvek inému.

    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 sa voči Hugging Face

    Urobte to pred prvým spustením trénovania, nie potom, čo zlyhá po ôsmich minútach.

    bash
    uv run huggingface-cli login   # or: export HF_TOKEN=<your_token>
  4. 4
    Kontrola funkčnosti na dodaných demo dátach SO-100

    Predtým, než sa dotknete vlastného záznamu, spustite 2000 krokov na demo_data/cube_to_bowl_5. Je to päť epizód, dokončí sa rýchlo a preukáže prostredie, nie vaše dáta. Ak toto spustenie zlyhá, nič, čo urobíte s vaším datasetom, nepomôže.

    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 pasce prostredia, ktoré vyzerajú ako chyby modelu

FFmpeg 8. torchcodec 0.8.0 podporuje iba FFmpeg 4 až 7 a Ubuntu 25.10 a novšie verzie dodávajú verziu 8. Chyba je Could not load libtorchcodec, čo vyzerá skôr ako poškodená inštalácia než konflikt verzií. Nainštalujte staršiu runtime verziu, napríklad conda install -c conda-forge 'ffmpeg<8', a umiestnite jej knižnice do LD_LIBRARY_PATH. CUDA_HOME nie je nastavený. Jemné doladenie zlyhá úplne. Spustite bash scripts/deployment/dgpu/install_deps.sh raz, alebo jednoducho export CUDA_HOME=/usr/local/cuda.

Krok 5: príkaz na jemné doladenie a aké sú skutočné predvolené hodnoty jeho príznakov

Vymeňte demo dátovú sadu za vašu a pridajte nastavenia, ktoré skutočne chcete. Nižšie je uvedená úplná forma, ktorú úložisko používa vo svojom vlastnom tutoriáli pre nové stelesnenie, vrátane príznakov pre augmentáciu a ukladanie kontrolných bodov, ktoré krátky príklad v README vynecháva. Toto je v užšom zmysle: jazyková chrbtica a vizuálny kodér zostávajú zmrazené a trénuje sa projektor a difúzna akčná hlava.

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
Jedna GPU. Pre osem kariet nahraďte spúšťač s uv run torchrun --nproc_per_node=8 --master_port=29500 a nastavte --num-gpus 8. Použite uv run torchrun, nie holý torchrun, inak získate nesprávne prostredie.
PríznakPredvolené v FinetuneConfigČo robí
--global-batch-size64Celková dávka naprieč všetkými GPU pred akumuláciou gradientu. Dodané príklady používajú 32.
--learning-rate1e-4Rovnaká hodnota, ktorú AY-Robots posiela pre svoj tréner groot1.7.
--max-steps10000Celkový počet krokov optimalizátora. Wrapper examples/finetune.sh má tiež predvolenú hodnotu 10000.
--gradient-accumulation-steps1Násobí efektívnu dávku. Hodnoty nad 1 vydajú varovanie o akumulovanej veľkosti.
--save-steps and --save-total-limit1000 and 5Frekvencia kontrolných bodov a koľko ich je zachovaných. Staršie sú vymazané.
--weight-decay and --warmup-ratio1e-5 and 0.05Explicitne nastavené aj v examples/finetune.sh.
--state-dropout-prob0.2 in the CLI, 0.8 in the model configNáhodne vynecháva proprioceptívny stav počas tréningu. Znížte ho, ak vaša úloha závisí od stavu.
--tune-llm and --tune-visualFalse and FalseChrbtica zostáva predvolene zmrazená.
--tune-projector and --tune-diffusion-modelTrue and TrueProjektor a difúzna akčná hlava sú to, čo sa skutočne trénuje.
--use-percentilesTrueNormalizujte pomocou q01 a q99 namiesto surových min a max.
--dataloader-num-workers2Načítavač je navrhnutý ako CPU-založený. Príklady to zvyšujú na 4.
--seedneexistujeNa tomto CLI neexistuje príznak pre seed.

Ten posledný riadok nie je preklep. launch_finetune.py je CLI tyro generované z dátovej triedy a táto dátová trieda nemá pole pre seed. Súbor README samostatne uvádza 5 až 6 percentnú varianciu medzi spusteniami spôsobenú nedeterministickou augmentáciou obrazu. Dve spustenia s identickými príznakmi nebudú produkovať identické kontrolné body, čo je veľmi dôležité, keď sa snažíte rozhodnúť, či zmena hyperparametrov pomohla, alebo či ste mali šťastie. Pre porovnanie, vlastný tréner lerobot predvolene používa seed 1000 a recept LeRobot GR00T explicitne odovzdáva --seed=42 explicitne.

Validácia je predvolene vypnutá a zdokumentovaný príznak nie je v tomto CLI

Jemné ladenie beží s eval_strategy="no", takže vôbec neexistuje krivka validačnej straty. Získate tréningovú stratu a nič iné. Sprievodca pre nové stelesnenie vám hovorí, aby ste to zapli pomocou --eval-strategy steps --eval-steps 500, ale tento príznak neexistuje na launch_finetune.py: CLI je generované tyro z dátovej triedy FinetuneConfig a eval_strategy, eval_steps a eval_batch_size sú namiesto toho polia dátovej triedy TrainingConfig. Ich predvolené hodnoty sú "no", 500 a 2. Ak ich chcete dosiahnuť, použite úplnejší vstupný bod gr00t/experiment/launch_train.py, kde vnorený príznak je --training.eval-strategy. Tak či onak, klesajúca tréningová strata sama o sebe vám povie veľmi málo o generalizácii, čo je presne situácia opísaná na strata klesá, ale politika nič nerobí.

Čo stojí spustenie s 20000 krokmi

GR00T N1.7 potrebuje 80 GB kartu, takže otázka nákladov má úzku odpoveď. Na AY-Robots beží tréner groot1.7 na úrovni A100 80 GB alebo H100 80 GB, kde spustenie trvá 3 až 6 hodín pri 1.20 až 2.00 USD za hodinu na spotovom trhu. To je približne 4 až 12 USD za predvolenú úlohu s 20000 krokmi. Rovnaká úloha na SmolVLA alebo ACT pristane na 24 GB karte pri 0.30 až 0.60 USD za hodinu a 1 až 3 USD za spustenie. To je skutočný kompromis: GR00T stojí približne štyrikrát viac za pokus a nemôžete ho spustiť na 4090 pod vaším stolom.

ModelÚroveň GPUTypický behTypické nákladyMinimálny počet epizód
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

Minimálny počet epizód 50-epizód je spodná hranica, nie cieľ. Vlastné FAQ spoločnosti NVIDIA je náročnejšie: približne 100 trajektórií pre jednoduché uchopenie a umiestnenie na pevnom mieste, 500 alebo viac pre komplexné alebo viacstupňové scény a 100 až 500 pre jemnú manipuláciu. Ak máte 20 epizód, strávte popoludnie nahrávaním namiesto večerného ladenia. Sprievodca zberom dát pokrýva, čo odlišuje užitočnú epizódu od zbytočnej, nahrajte svoj prvý dataset je krátka verzia a zber dát SO-100 je verzia špecifická pre rameno.

Tréningový sprievodca AY-Robots pre GR00T N1.7 na SO-100, zobrazujúci špecifikačný pás s úrovňou GPU, požadovaným formátom datasetu a predvolenými nastaveniami trénera
Sprievodca /train/groot-n1-7-on-so-100 uvádza fakty, ktoré by ste inak rekonštruovali ručne: úroveň GPU, formát datasetu a presné predvolené hodnoty, ktoré posiela tréner.

Krok 6: vyhodnotenie v otvorenej slučke predtým, ako sa dotknete ramena

Neumiestňujte čerstvý kontrolný bod na fyzické rameno, aby ste zistili, či tréning fungoval. Najprv spustite vyhodnotenie v otvorenej slučke. Prehrá zaznamenanú epizódu, požiada model o akcie v každom kroku a vykreslí predikciu oproti skutočnej hodnote s MSE a MAE. Nič to nestojí a zachytáva chyby mapovania z krokov 2 a 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
Grafy sa ukladajú do /tmp/open_loop_eval/traj_<id>.jpeg, pokiaľ neprejdete --save-plot-path. Predvolené hodnoty: --execution-horizon 16, --steps 200, --denoising-steps 4, --traj-ids 0.

Úložisko zámerne odmieta zverejniť cieľové MSE pre vlastné dáta, a to je správne rozhodnutie: číslo závisí od vašich akčných jednotiek, vašej úlohy a veľkosti vášho datasetu, takže prahová hodnota skopírovaná z ramena niekoho iného nič neznamená. Zmysluplný je trend. Tu je referenčný beh, ktorý úložisko dokumentuje na jednom H100 s demo datasetom piatich epizód a 2000 krokmi.

Kontrolný bodPriemerné MSE na trajektórii 0Priemerné MAE na trajektórii 0
50087.55.63
100025.43.30
150013.22.18
200010.01.76

Tvar je signál, nie absolútne hodnoty. Chyba by mala neustále klesať, ako sa tréningové kroky akumulujú. Priemerne za všetkých päť tréningových epizód, a nie len za trajektóriu 0, dosiahol finálny kontrolný bod repozitára približne 7.5 MSE a 1.5 MAE, takže aj referenčný beh sa číta inak v závislosti od toho, ktoré epizódy spriemerujete. Zaznamenajte si vlastnú základnú líniu na neupravenom demo príkaze predtým, ako zmeníte čokoľvek vo svojich vlastných dátach: ak nedokážete reprodukovať známy dobrý beh, nedokážete rozlíšiť chybu nastavenia od problému s dátami. Repozitár tiež mapuje bežné symptómy k príčinám a každý z nich je prevádzkový, nie chyba modelu.

SymptómPravdepodobná príčina
MSE ploché alebo stúpajúce naprieč kontrolnými bodmiPríliš nízka rýchlosť učenia, alebo sa dáta vôbec nenačítavajú. Skontrolujte --dataset-path a dataloader workers.
Predikčná krivka je plochá alebo konštantnáKľúče modality.json alebo --modality-config-path sa nezhodujú. Kľúče akcií nie sú namapované.
MSE obrovské, alebo NaN strata počas tréninguNormalizácia akcie a stavu. Overte meta/stats a to, že rozsahy akcií sú fyzicky vierohodné.
Dobré na traj 0, slabé na vynechaných epizódachNedostatok dát, nie chyba. Päť demo epizód nemôže zovšeobecniť.

Iná cesta: lerobot-train namiesto Isaac-GR00T

Aktuálna verzia LeRobot, 0.6.1 na PyPI od 3. augusta 2026, ponúka druhý a celkom odlišný spôsob jemného doladenia rovnakých základných váh. LeRobot vystavuje GR00T N1.7 ako typ politiky a trénuje ju prostredníctvom vlastného lerobot-train vstupného bodu. Dve veci sú tu dôležité. LeRobot CLI je sada konzolových skriptov, takže čokoľvek, čo čítate a hovorí python lerobot/scripts/train.py je zastarané a nebude fungovať. A LeRobot úplne odstránil podporu GR00T N1.5, odmietajúc kontrolné body a konfigurácie N1.5 s poznámkou o migrácii, takže ak potrebujete N1.5 cez LeRobot, musíte pripnúť lerobot==0.5.1, poslednú verziu, ktorá ju podporuje, vydanú 7. apríla 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
Recept GR00T N1.7 natívny pre LeRobot. Všimnite si relative_exclude_joints: uchopovač je vylúčený z relatívnych akcií, čo je rovnaké rozhodnutie, aké robí so100_config.py s ActionRepresentation.ABSOLUTE.
AspektIsaac-GR00T launch_finetune.pylerobot-train --policy.type=groot
Verzia datasetuLen LeRobot v2, vyžaduje sa konverziaNatívny dataset LeRobot, bez downgradu
Mapovanie modalitymeta/modality.json plus dátová konfigurácia v Pythonežiadny modality.json; správanie nastavené príznakmi --policy.* na príkazovom riadku
Seedžiadny príznak seed--seed, predvolené pre LeRobot 1000
Relatívne akcieActionConfig pre každý kľúč v dátovej konfigurácii--policy.use_relative_actions plus --policy.relative_exclude_joints
Publikované referenčné výsledkyTrend MSE SO-100 v otvorenej slučke na demo dátachSady LIBERO, priemer 96.5 percenta naprieč štyrmi sadami
Cesta nasadeniarun_gr00t_server.py plus eval_so100.py cez ZMQlerobot-rollout, s chunkovaním v reálnom čase (queue_threshold by mal zostať na alebo pod 5)
Spustenie jemného doladenia sami
Výhody
  • Každý príznak je viditeľný a meniteľný. Môžete odmraziť vizuálny kódovač, presunúť state_dropout_prob alebo skrátiť akčný horizont.
  • Grafy otvorenej slučky sú lokálne súbory. Porovnávanie checkpoint-5000 s checkpoint-20000 je príkaz shellu.
  • Nezávisíte od toho, či nejaká platforma zostane online, a checkpoint sedí na vašom disku v štandardnom formáte.
  • Príklady benchmarkov repozitára pre LIBERO, SimplerEnv a DROID vám poskytnú známe dobré behy na reprodukciu predtým, ako budete dôverovať vlastným dátam.
Kompromisy
  • Prostredie je väčšina práce. Verzia FFmpeg, CUDA_HOME, git-lfs, gated backbone, torchcodec: žiadny z nich nie je problém modelu a každý z nich zastaví beh.
  • Konverzia z v3.0 na v2.1 vyžaduje samostatné virtuálne prostredie s vlastným inštalačným krokom a prepíše váš adresár datasetu na mieste.
  • Prenájom GPU začína účtovať, keď začnete ladiť, nie keď začne trénovanie, a nič nezastaví inštanciu, keď sa beh dokončí.
  • Žiadny seed znamená žiadnu bitovú reprodukovateľnosť, navyše k 5 až 6 percentnej variancii medzi behmi len z augmentácie.

Dva spôsoby, ako získať rovnaký checkpoint

Prenajmete si GPU a každý krok je vo vašej réžii. Realisticky to prvýkrát zaberie jedno popoludnie a potom už len dvadsať minút zakaždým.

  1. Nahrávajte epizódy s lerobot-record na SO-100. Získate dataset LeRobot v3.0.
  2. Preveďte ho na v2.1 pomocou scripts/lerobot_conversion/convert_v3_to_v2.py vo vlastnom virtualenv.
  3. Napíšte meta/modality.json a Python konfig modality, zaregistrovaný pod EmbodimentTag.NEW_EMBODIMENT.
  4. Prenajmite si 80 GB kartu, klonujte so submodulmi, uv sync, autentifikujte sa voči Hugging Face.
  5. Spustite launch_finetune.py, potom open_loop_eval.py na niekoľkých checkpointoch a porovnajte trend MSE pred dotykom hardvéru.
  6. Stiahnite checkpoint zo stroja predtým, než zničíte inštanciu, a potom vytvorte cestu pre servírovanie k ramenu.
Krok, na ktorý každý zabúda

Skopírujte checkpoint z prenajatej inštancie predtým, než ju vypnete. --save-total-limit 5 tiež znamená, že staršie checkpointy sú vymazané počas tréningu, takže checkpoint, ktorý ste chceli v kroku 5000, už nemusí existovať v kroku 20000.

Tréningová matica AY-Robots s piatimi modelmi politík ako riadkami a štyrmi robotickými ramenami ako stĺpcami, pričom každá bunka odkazuje na konkrétneho sprievodcu tréningom
Matica /train: päť modelov proti štyrom ramenám. Riadok GR00T N1.7 pokrýva aj SO-101, Koch v1.1 a LeKiwi.

Návrat checkpointu na rameno

Isaac-GR00T používa rozdelenie server-klient cez ZMQ. Politika beží na GPU a tenký klient na robotickom stroji posiela pozorovania a prijíma akčné bloky. Príklad SO-100 je dostatočne kompletný na skopírovanie: spustite run_gr00t_server.py s vaším checkpointom a --embodiment-tag NEW_EMBODIMENT, potom spustite eval_so100.py na strane robota so sériovým portom, id robota, indexmi kamier a jazykovou inštrukciou. Názvy kamier v tomto príkaze musia zodpovedať priateľským názvom z vášho modality.json, nie číslam zariadení OS.

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 riadi, koľko z predpovedaných krokov sa vykoná pred preplánovaním. Musí byť nanajvýš action_horizon politiky, a toto číslo je dĺžka action delta_indices vo vašej konfigurácii modality, nie základného modelu. Dodaná konfigurácia SO-100 predpovedá 16, takže 16 je váš strop; základný checkpoint nvidia/GR00T-N1.7-3B je nakonfigurovaný na 40, a policy.md jasne uvádza, že jemne doladené checkpointy sa môžu líšiť. Ak ho prekročíte, dostanete ValueError s uvedením oboch čísel. 8 je hodnota, ktorú dokumentácia navrhuje pre nasadenie v reálnom čase. Starý názov flagu --action-horizon stále funguje, ale upozorňuje.
7.4 V, nie 12 V

Zatiaľ čo zapájate rameno späť: SO-100 používa zbernicové servá Feetech STS3215 na 7.4 V napájaní. Napájanie 12 V ich zničí, a je to ľahká chyba, ak vlastníte aj LeKiwi, ktorého základňa beží na 12 V, zatiaľ čo jeho rameno nie. Skontrolujte napájanie pred prvým zapnutím, nie po dyme. Pozrite si hardvérovú stránku SO-100 a SO-100 proti LeKiwi. Ak sa rameno zapne, ale nič sa nehýbe, servo nereaguje je miesto, kde začať.

Teraz úprimná časť o tom, kde beží politika, pretože trénovanie a obsluha majú odlišné hardvérové požiadavky. Jemné doladenie vyžaduje 40 GB alebo viac. Inferencie nie: README uvádza 16 GB alebo viac a explicitne spomína RTX 4090, takže karta, ktorú už vlastníte, môže obsluhovať checkpoint, ktorý by nikdy nemohla vyprodukovať. To, čo rozhoduje o tom, či sa politika cíti citlivo, nie je VRAM, ale to, kde sa nachádza server. Na AY-Robots je GR00T N1.7 iba v cloude, takže riadiaca slučka platí za okružnú cestu cez verejný internet navyše k 152 ms na akčný krok, a iba SmolVLA a ACT bežia aj lokálne. Pre pomalé uchopenie a umiestnenie je vzdialený pod prežiteľný. Pre čokoľvek reaktívne to nie je: politika sa stáva váhavou spôsobom, ktorý vyzerá presne ako zlyhanie tréningu a nie je ním. ACT s 20 ms na akčný krok je model, ktorý toleruje najtesnejšiu slučku, SmolVLA je na 245 ms, a žiadne množstvo ladenia latencie nevráti okružnú cestu, ktorá už bola strávená. Spustite svoju prvú politiku prechádza obslužnou stranou od začiatku do konca.

Čo sa skutočne pokazí

  • GatedRepoError pri prvom spustení. Nebol vám udelený prístup k nvidia/Cosmos-Reason2-2B, alebo ste sa neautentifikovali. Stáva sa to po tom, čo sa už spustili hodiny GPU.
  • Dátový súbor odmietnutý pri načítaní. Takmer vždy dátový súbor v3.0. Preveďte ho na nižšiu verziu. Pozrite si dátový súbor odmietnutý ako v3.
  • IndexError o nesúladných booleovských dimenziách. Zmenili ste delta_indices a nepregenerovali ste štatistiky.
  • Nedostatok pamäte pri dávke 32. Znížte --global-batch-size a zvýšte --gradient-accumulation-steps, alebo znížte --num-shards-per-epoch, čo konfigurácia výslovne navrhuje, keď je VRAM obmedzená. Pozrite si nedostatok pamäte počas trénovania.
  • Strata klesá, politika nič nerobí. Predvolene neexistuje validačné rozdelenie, takže čistá tréningová krivka dokazuje veľmi málo. Táto stránka pokrýva diagnostiku.
  • Funguje vo vašom nastavení a nikde inde. Očakávané pri malom dátovom súbore natočenom za jednej svetelnej podmienky. NVIDIA odporúča augmentáciu farebného chvenia plus 20 až 50 epizód pri rôznom osvetlení. Viac tu.
  • Chápadlo sa nikdy správne nezatvorí. Skontrolujte, či je akcia chápadla ABSOLÚTNA a kĺby ramena RELATÍVNE, v tomto poradí v action_configs. Chápadlo sa nezatvára uvádza ďalšie príčiny.
  • Kamera sa potichu vypne uprostred nahrávania. Epizóda sa stále uloží a video kľúč stále existuje, preto je to nepríjemné. Kamera nerozpoznaná to pokrýva.

Celý index režimov zlyhania nájdete na . Ak si vyberáte medzi modelmi namiesto ladenia jedného, a majú benchmarkové čísla s priloženými zdrojmi, a je porovnanie, ktoré väčšina ľudí skutočne potrebuje, pretože ide o voľbu medzi modelom, ktorý môžete trénovať na karte pod vaším stolom, a takým, pre ktorý si musíte prenajať 80 GB uzol na doladenie. Pre pochopenie, prečo sa tieto modely správajú tak, ako sa správajú, a sa oplatí prečítať ako prvé. A ak ešte nevlastníte rameno, streamuje fyzické SO-100 bez registrácie.

Koľko epizód potrebujem, kým sa oplatí doladiť GR00T N1.7?

AY-Robots stanovuje minimálny počet 50 epizód pre tréner groot1.7. Vlastné FAQ spoločnosti NVIDIA je náročnejšie: približne 100 trajektórií pre jednoduché uchopenie a umiestnenie na pevnom mieste, 500 alebo viac pre komplexné alebo viacstupňové scény a 100 až 500 pre jemnú manipuláciu. Pod 50 epizód je takmer vždy lepšie zaznamenať viac dát ako ladiť hyperparametre. Ak sa úspešnosť potom stabilizuje, NVIDIA odporúča HG-DAgger: spustite politiku, zasiahnite, keď zlyhá, a pridajte tieto korekcie do dátového súboru.

Prečo sa môj dátový súbor nenačíta a ako zistím, akú má verziu?

Otvorte meta/info.json a prečítajte codebase_version. Aktuálna CODEBASE_VERSION LeRobot na main je v3.0, takže čokoľvek zaznamenané s nedávnym nástrojovým reťazcom je v3.0, a GR00T loader očakáva v2. Konvertujte pomocou scripts/lerobot_conversion/convert_v3_to_v2.py z repozitára Isaac-GR00T, ktorý zapíše codebase_version: v2.1 do konvertovaného dátového súboru. Skript beží vo vlastnom virtualenv, pretože potrebuje inú verziu lerobot ako GR00T.

Môžem doladiť GR00T N1.7 na RTX 4090?

Nie. NVIDIA odporúča 40 GB alebo viac VRAM pre doladenie a uvádza uzly H100 alebo L40; iné karty fungujú, ale trvá to oveľa dlhšie. 4090 má 24 GB. AY-Robots ponúka GR00T N1.7 iba na úrovni A100 80 GB a H100 80 GB z rovnakého dôvodu. Inferencie sú iný príbeh: 16 GB stačí na obsluhu modelu, takže 4090 môže spustiť politiku, ktorú nemôže trénovať. Ak chcete VLA, ktorý môžete trénovať na 24 GB, je to SmolVLA s približne 450 miliónmi parametrov alebo ACT s približne 80 miliónmi.

Prečo dve spustenia s identickými príznakmi dávajú rôzne kontrolné body?

Pretože launch_finetune.py nemá seed. Je to tyro CLI generované z dátovej triedy, ktorá neobsahuje pole seed, takže nič nefixuje RNG. Repozitár samostatne uvádza 5 až 6 percentnú varianciu medzi spusteniami spôsobenú nedeterministickou augmentáciou obrazu. Ak záleží na reprodukovateľnosti, použite namiesto toho cestu LeRobot: lerobot-train prijíma --seed a publikovaný recept GR00T odovzdáva --seed=42.

Mám použiť Isaac-GR00T alebo lerobot-train?

Použite Isaac-GR00T, ak chcete referenčnú implementáciu, kontrolu nad reprezentáciou akcií pre každý kľúč, export TensorRT alebo benchmarkové príklady na reprodukciu predtým, ako budete dôverovať vlastným dátam. Použite lerobot-train, ak je váš dátový súbor už LeRobot v3.0 a radšej by ste ho nekonvertovali, ak chcete seed, alebo ak je zvyšok vášho stacku už LeRobot. Obidva doladia rovnaké váhy nvidia/GR00T-N1.7-3B. Všimnite si, že LeRobot úplne zrušil podporu GR00T N1.5: kontrolné body N1.5 sú odmietnuté s poznámkou o migrácii a musíte použiť lerobot==0.5.1, aby ste ich mohli naďalej používať.

Naozaj potrebujem okrem prednej kamery aj kameru na zápästí?

Dodávaná konfigurácia SO-100 používa obe, a modality.json mapuje prednú kameru a kameru na zápästí ako samostatné video kľúče. Môžete trénovať s jednou kamerou, a tabuľka latencie modelovej karty je meraná s jednou kamerou, ale pohľad zo zápästia je to, čo poskytuje politike použiteľné informácie o chápadle v momente kontaktu. Ak sa chápadlo zatvorí v nesprávnom čase vo vašich rollouts, chýbajúca alebo zle nasmerovaná kamera na zápästí je jednou z prvých vecí, ktoré treba skontrolovať.

Doladte GR00T N1.7 na vašom SO-100 bez toho, aby ste najprv vytvorili prostredie

Vyberte model, dátový súbor a hyperparametre vo formulári. Backend si prenajme A100 80 GB alebo H100 na spotovom trhu, spustí tréner s dávkou 32, rýchlosťou učenia 1e-4 a 20000 krokmi a zapíše kontrolné body do objektového úložiska. Približne 4 až 12 USD za spustenie.

Otvorte sprievodcu trénovaním GR00T N1.7

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started