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

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

AY-Robots ResearchAugust 23, 202628 min čitanja

Provjereni vodič za fino podešavanje NVIDIA GR00T N1.7 na SO-100 LeRobot skupu podataka: stvarne zastavice, modality.json, zahtjev v2.1, koliko košta pokretanje i zamke.

NVIDIA isporučuje primjer finog podešavanja za tačno ruku koju vjerovatno posjedujete. Unutar Isaac-GR00T repozitorijumu postoji folder pod nazivom demo_data/cube_to_bowl_5: pet epizoda, 4.148 frejmova pri 30 fps, već napisanih kao LeRobot v2.1, sa odgovarajućom konfiguracijom modaliteta pod examples/SO100/. Njegov meta/info.json izvještava robot_type: so101_follower, što je u LeRobotu 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 vijest je udaljenost između I recorded 60 episodes i the arm does the task. Postoji oko šest mjesta gdje ovaj cjevovod tiho, a ne glasno, zataji, a četiri od njih se nalaze u datotekama koje većina ljudi nikada ne otvara: meta/modality.json, Python konfiguracija podataka, meta/relative_stats.json, i vlastiti verzijski string skupa podataka. Ovaj vodič prolazi 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 provjereno u odnosu na glavnu granu Isaac-GR00T od 20. avgusta 2026. (linija izdanja n1.7) i lerobot 0.6.1, objavljen na PyPI-u 3. avgusta 2026. Uzvodno se brzo mijenja, i gdje je zastavica preimenovana, ovaj članak to navodi.

Šta trebate znati prije nego što počnete

  • Fino podešavanje GR00T N1.7 zahtijeva 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čni meta/modality.json. Skup podataka LeRobot v3.0 se ne učitava i mora se konvertovati na nižu verziju.
  • Ulazna tačka je gr00t/experiment/launch_finetune.py, tyro CLI. Nema zastavicu --seed, tako da pokretanja nisu bit-za-bit reproduktivna.
  • Za prilagođenu ruku oznaka utjelovljenja je NEW_EMBODIMENT, i ta oznaka čini --modality-config-path obaveznim.
  • Isporučena SO-100 receptura predviđa zglobove ruke kao RELATIVNE delte, a hvataljku kao APSOLUTNU metu. Obrnuto uparivanje je tihi neuspjeh, 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 zapravo GR00T N1.7

GR00T N1.7 je model vida, jezika i akcije sa rasporedom dvostrukog sistema opisanim u originalnom GR00T N1 radu: modul vida i jezika koji čita kamere i instrukcije, i difuzioni transformator koji to pretvara u blok kontinuiranih motornih komandi. N1.7 je zamijenio prvu polovinu. Eagle okosnica iz N1.6 je uklonjena, zamijenjena sa nvidia/Cosmos-Reason2-2B na Qwen3-VL arhitekturi, a model je preobučen na otprilike 20.000 sati egocentričnog ljudskog videa povrh robotskih podataka. NVIDIA-in vlastiti izvještaj navodi cifru od 20.854 sata i izvještava da prelazak sa 1k na 20k sati više nego udvostručuje prosječnu stopu izvršenja zadataka.

Druga polovina se takođe promijenila, na načine koji su važni za vaše pokretanje. Glava akcije je smanjena sa 32 difuziona sloja na 16, predviđeni akcioni blok je porastao sa 16 koraka na 40, a maksimalna širina stanja i akcije je porasla sa 29 na 132. Ova tri broja potiču iz changeloga u README-u repozitorijuma; NVIDIA-in vlastiti post o lansiranju i dalje opisuje Sistem 1 kao 32-slojni DiT, tako da tamo gdje se ova dva ne slažu, vjerujte repozitorijumu koji ćete klonirati. Akcije su podrazumijevano izražene u relativnom krajnjem efektoru prostoru, delte od trenutne poze, a ne apsolutne mete, što omogućava prenos manipulativnih predznanja naučenih iz ljudskog videa u kontrolu robota. Sama glava je flow-matching difuzioni transformator, iste porodice kao Pi0.5, ali sa drugačijom okosnicom ispred. Ako ste još uvijek na prethodnoj generaciji, N1.7 u odnosu na N1.5 pokriva da li nadogradnja opravdava ponovno pravljenje vašeg cjevovoda.

OsobinaVrijednostIzvor
Parametri3,000,000,000Hugging Face kartica modela
Okosnica vida i jezikanvidia/Cosmos-Reason2-2B (Qwen3-VL), gated on Hugging Facerepo README
Glava akcijeFlow-matching diffusion transformer, 16 layers (N1.6 had 32)repo README
Predviđeni akcioni horizont40 koraka za osnovnu kontrolnu tačku (N1.6 je imao 16)getting_started/policy.md and repo README
Maksimalna širina stanja i akcije132 (N1.6 je imao 29)repo README
Licenca kodaApache 2.0Isaac-GR00T repository
Licenca za težineNVIDIA Open Model License Agreementkartica modela
Latencija, H100 80 GB, PyTorch eager, 4 koraka denoisiranja, 1 kamera85.8 ms od kraja do kraja, 11.7 Hztabela vremena kartice modela
Isti hardver, TensorRT puni cjevovod27.9 ms od kraja do kraja, 35.9 Hztabela vremena kartice modela
Latencija koju AY-Robots navodi za svoj servisirani GR00T N1.7152 ms po akcionom korakuAY-Robots katalog politika

Ova posljednja 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 denoisiranja. Običan PyTorch na istoj kartici je 85.8 ms, a kartica modela navodi razliku od 3.08x. Nijedan broj ne uključuje sloj za posluživanje, drugu kameru ili mrežni skok. 152 ms po akcionom koraku koje AY-Robots navodi za svoj servisirani GR00T N1.7 je cifra sa posluživanjem u petlji, a javni internet povratni put se nalazi povrh toga. Više o ovome na kraju. Za brojeve pored drugih modela, GR00T N1.7 u odnosu na Pi0.5 i GR00T N1.7 u odnosu na 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 prije nego što išta ukucate

ZahtjevFino podešavanjeInferencija
VRAM, NVIDIA smjernice40 GB ili više, preporučuje se H100 ili L4016 GB ili više, radi RTX 4090
Python i CUDA na dGPU-u3.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 primjenjivo
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 obezbijeđen
Zaključana okosnica će vas zaustaviti pri prvom pokretanju

Svaka GR00T kontrolna tačka, uključujući osnovni nvidia/GR00T-N1.7-3B, učitava nvidia/Cosmos-Reason2-2B pri prvoj upotrebi, a taj repozitorijum je zaključan. README tačno navodi grešku: učitavanje modela ne uspijeva sa GatedRepoError / 401 Client Error. Ono što se ne spominje 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 prije nego što išta iznajmite.

Korak 0: same epizode

Sve ispod 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 oporaviti informacije koje nisu u podacima. Prvo kalibrirajte obje ruke, zatim vozite pratioca sa vodećom rukom dok lerobot-record piše parquet datoteke i tokove kamere. Ako je kalibracija isključena, vrijednosti 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 LeRobotu. Dužina epizode podrazumevano je 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.

LeRobotov savet je da snimite najmanje 50 epizoda sa oko 10 po lokaciji objekta, držite kamere fiksirane i održavajte dosledno ponašanje hvatanja. Dodajte varijacije kasnije, ne na početku. Pravilo koje vredi zapamtiti: ako sami niste mogli izvršiti zadatak samo na osnovu slika kamere, politika takođe ne može. Za postavku specifičnu za ruku, SO-100 početak rada i stranica SO-100 LeRobot pokrivaju portove, kalibraciju i indekse kamere. Na AY-Robotima to takođe možete učiniti preko interneta iz pregledač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 pokreće se u sopstvenom virtuelnom okruženju iz konkretnog razloga: scripts/lerobot_conversion nosi sopstveni pyproject koji zahteva Python 3.10 ili 3.11 i vezuje lerobot za jedan git commit, dok sam Isaac-GR00T zahteva Python 3.12. Instalirajte konverter 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
Konverter prihvata --repo-id, opcioni --root, i --force-conversion, što briše bilo koju postojeću lokalnu snimku i ponovo je preuzima. On upisuje codebase_version: v2.1 u meta/info.json.
Konverzija prepisuje na licu mjesta

Ako skup podataka v3.0 već postoji lokalno, skripta gradi raspored v2.1 pored njega, a zatim ih zamjenjuje: original se premješta u sestrinsku fasciklu sa dodatom verzijom, <name>_v3.0, a konvertovana kopija preuzima originalnu putanju. (Sopstveni docstring skripte tu fasciklu naziva _v30; kod dodaje string verzije, tako da zapravo dobijate _v3.0.) Drugo iznenađenje: izlaz uvijek 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, parquet datoteke pod data/chunk-000/, MP4 datoteke pod videos/chunk-000/observation.images./, i jedna dodatna datoteka koju standardni LeRobot nema. Ta dodatna datoteka je mjesto gdje 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 pohranjeni su 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 parquet datoteci ne govori koji je indeks koji. meta/modality.json pruža to mapiranje, i GR00T neće trenirati bez njega. Evo ga, onako kako ga repozitorij 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 slice-ovanje, tako da je single_arm [0:5] i gripper je [5:6].

Kopirajte ga u svoj 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 biti usaglašena, i nijedno od njih ne proverava drugo 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 autor skupa 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 svodi na 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 RELATIVNE delte od trenutnog stanja i hvataljku kao APSOLUTNU ciljnu poziciju, jer se binarni signal otvorenog ili zatvorenog stanja 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ćeno na bitno. 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 jasno 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 apsolutni cilj, i nema poruke o grešci. Drugo, register_modality_config tvrdi da tag nije već registrovan, tako da druga NEW_EMBODIMENT konfiguracija u istom Python procesu umire sa Embodiment tag ... already registered. Ne možete uvesti dve ovakve konfiguracije 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 statistike

Statistike normalizacije, posebno meta/relative_stats.json, izračunavaju se za dužinu horizonta koju ste imali kada ste ih generisali. Skratite horizont akcije sa 16 na 8 bez ponovnog generisanja i trening će prestati 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 premjestio repozitorij na i Python 3.12. Stara conda plus pip install -e . putanja i dalje postoji u sažetom dijelu README-a, ali upozorava da GPU zavisnosti, uključujući flash-attn i TensorRT, možda zahtijevaju 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 štedi zabunu: vidjet ćete Installing flash-attn ispisano pri svakom uv run. Ne vrši se ponovna izgradnja. uv ponovo validira URL-prikvačeni wheel koji je već keširan, i to traje dvije ili tri sekunde.

  1. 1
    Instalirajte git-lfs, zatim klonirajte sa podmodulima

    git-lfs je obavezan, nije opcionalan. Bez njega, parquet datoteke u demo_data/ dolaze kao pokazivački stubovi, a demo pokretanje ne uspijeva na skupu podataka koji izgleda prisutan u popisu datoteka.

    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

    Podrazumijevana instalacija povlači GPU zavisnosti uključujući flash-attn i TensorRT. Na svježoj A100 ili H100 slici ovo je najduži pojedinačni korak, pa ga uradite prije nego što počnete obraćati 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 prije prvog pokretanja treninga, a ne nakon što ne uspije osam minuta kasnije.

    bash
    uv run huggingface-cli login   # or: export HF_TOKEN=<your_token>
  4. 4
    Provjera ispravnosti na isporučenim SO-100 demo podacima

    Prije nego što dodirnete vlastiti 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 uspije, ništa što učinite 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
Dvije 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 pokvarena instalacija, a ne konflikt verzija. Instalirajte stariju verziju runtime-a, na primjer conda install -c conda-forge 'ffmpeg<8', i postavite njene biblioteke na LD_LIBRARY_PATH. CUDA_HOME nije postavljen. Fino podešavanje potpuno ne uspijeva. Pokrenite bash scripts/deployment/dgpu/install_deps.sh jednom, ili samo export CUDA_HOME=/usr/local/cuda.

Korak 5: naredba za fino podešavanje i stvarne 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 serija podataka preko svih GPU-a pre akumulacije gradijenta. Isporučeni primeri koriste 32.
--learning-rate1e-4Ista vrednost koju AY-Robots šalje za svoj groot1.7 trener.
--max-steps10000Ukupni koraci optimizatora. Omotač examples/finetune.sh takođe podrazumevano koristi 10000.
--gradient-accumulation-steps1Množi efektivnu seriju podataka. Vrednosti iznad 1 emituju upozorenje koje vam govori o akumuliranoj veličini.
--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 podrazumevano ostaje zamrznuta.
--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 minimalnih i maksimalnih vrednosti.
--dataloader-num-workers2Učitavač je po dizajnu baziran na CPU-u. Primeri ovo podižu na 4.
--seedne postojiNe postoji zastavica za seme na ovom CLI-u.

Taj posljednji 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 posto varijacije između pokretanja uzrokovane nedeterminističkom augmentacijom slike. Dva pokretanja sa identičnim zastavicama neće proizvesti identične kontrolne tačke, što je veoma važno kada pokušavate da odlučite da li je promjena hiperparametra pomogla ili ste imali sreće. Poređenja radi, lerobotov vlastiti trener podrazumevano koristi seed 1000, a LeRobot GR00T recept prosleđuje --seed=42 eksplicitno.

Validacija je podrazumevano isključena, a dokumentovana zastavica nije 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 drugo. Vodič za novo utjelovljenje vam govori da ga uključite sa --eval-strategy steps --eval-steps 500, ali ta zastavica 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 umjesto toga. Njihove podrazumevane vrednosti su "no", 500 i 2. Da biste im pristupili, koristite potpuniju ulaznu tačku gr00t/experiment/launch_train.py, gdje je ugniježđena zastavica --training.eval-strategy. U svakom slučaju, padajući gubitak treninga sam po sebi vam 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 zahtijeva karticu od 80 GB, tako da pitanje troškova ima uski odgovor. Na AY-Robots, groot1.7 trener radi na A100 80 GB ili H100 80 GB nivou, gdje pokretanje traje 3 do 6 sati po cijeni 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 radi na kartici od 24 GB po cijeni od 0.30 do 0.60 USD po satu i 1 do 3 USD po pokretanju. To je pravi kompromis: GR00T košta otprilike četiri puta više po pokušaju, i ne možete ga pokrenuti na 4090 ispod vašeg stola.

ModelGPU nivoTipično trajanjeTipični trošakMinimalni 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 je donja granica, a ne cilj. NVIDIA-in FAQ je zahtjevniji: otprilike 100 putanja za jednostavno podizanje i postavljanje na fiksnoj lokaciji, 500 ili više za složene scene sa više koraka, i 100 do 500 za finu manipulaciju. Ako ste na 20 epizoda, provedite popodne snimajući umjesto da uveče podešavate. Vodič za prikupljanje podataka pokriva šta korisnu epizodu odvaja od protraćene, snimite svoj prvi skup podataka je kratka verzija, a prikupljanje podataka za SO-100 je specifična za ruku.

Korak 6: evaluacija otvorene petlje pre nego što dodirnete ruku

Ne stavljajte svježi kontrolna tačka na fizičku ruku da biste saznali da li je obuka uspjela. 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 vrijednost sa MSE i MAE. Ne košta ništa i hvata greške mapiranja 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
Grafici se spremaju u /tmp/open_loop_eval/traj_<id>.jpeg osim ako ne proslijedite --save-plot-path. Podrazumijevane vrijednosti: --execution-horizon 16, --steps 200, --denoising-steps 4, --traj-ids 0.

Repozitorij namjerno odbija objaviti ciljani 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 repozitorij dokumentuje na jednom H100 sa demo skupom podataka od pet epizoda i 2000 koraka.

Kontrolna tačkaProsječni MSE na putanji 0Prosječni MAE na putanji 0
50087.55.63
100025.43.30
150013.22.18
200010.01.76

Oblik je signal, a ne apsolutne vrijednosti. Greška bi trebala postepeno opadati kako se koraci obuke akumuliraju. U prosjeku, preko svih pet epizoda obuke, a ne samo putanje 0, konačna kontrolna tačka repozitorijuma postigla je otprilike 7.5 MSE i 1.5 MAE, tako da se čak i referentno pokretanje različito tumači u zavisnosti od toga koje epizode prosječite. Zabilježite svoju početnu vrijednost na nemodifikovanoj demo komandi prije nego što promijenite bilo šta u vezi sa svojim podacima: ako ne možete reprodukovati poznato dobro pokretanje, ne možete razlikovati grešku u postavljanju od problema sa podacima. Repozitorijum takođe mapira uobičajene simptome na uzroke, i svaki od njih je operativan, a ne greška modela.

SimptomVjerovatan uzrok
MSE ravan ili raste kroz kontrolne tačkeStopa učenja preniska, ili se podaci uopšte ne učitavaju. Provjerite --dataset-path i radnike dataloader-a.
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 obukeNormalizacija akcije i stanja. Provjerite meta/stats i da su rasponi akcija fizički prihvatljivi.
Dobro na putanji 0, loše na zadržanim epizodamaNedostatak podataka, nije greška. Pet demo epizoda ne može generalizovati.

Drugi put: lerobot-train umjesto 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 obučava ga putem sopstvene lerobot-train ulazne tačke. Dvije stvari su ovdje važne. LeRobot CLI je skup konzolnih skripti, tako da sve što pročitate da kaže python lerobot/scripts/train.py je zastarjelo i neće se pokrenuti. A LeRobot je u potpunosti uklonio podršku za GR00T N1.5, odbijajući N1.5 kontrolne tačke i konfiguracije sa napomenom o migraciji, tako da ako vam je potreban N1.5 putem LeRobot-a, morate fiksirati lerobot==0.5.1, posljednje 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. Obratite pažnju na 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
Verzija skupa podatakaSamo LeRobot v2, potrebna konverzijaNativni LeRobot skup podataka, bez degradacije
Mapiranje modalitetameta/modality.json plus Python konfiguracija podatakanema modality.json; ponašanje postavljeno --policy.* zastavicama u komandnoj liniji
Sjemeuopšte nema zastavice za sjeme--seed, LeRobot podrazumijevano 1000
Relativne akcijeActionConfig po ključu u konfiguraciji podataka--policy.use_relative_actions plus --policy.relative_exclude_joints
Objavljeni referentni rezultatiSO-100 trend MSE-a otvorene petlje na demo podacimaLIBERO paketi, 96.5 posto prosjeka kroz četiri paketa
Putanja implementacijerun_gr00t_server.py plus eval_so100.py preko ZMQ-alerobot-rollout, sa chunkingom u realnom vremenu (queue_threshold bi trebao ostati na ili ispod 5)
Samostalno pokretanje finog podešavanja
Prednosti
  • Svaka zastavica je vidljiva i promjenjiva. Možete odmrznuti vizualni enkoder, pomjeriti state_dropout_prob, ili skratiti akcioni horizont.
  • Grafikoni otvorene petlje su lokalne datoteke. Poređenje checkpoint-5000 sa checkpoint-20000 je shell komanda.
  • Ne zavisite od toga da li će neka platforma ostati online, a kontrolna tačka se nalazi na vašem disku u standardnom formatu.
  • Primjeri benchmarka repozitorija za LIBERO, SimplerEnv i DROID daju vam poznate dobre pokretanja za reprodukciju prije nego što povjerujete vlastitim 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 pokretanje.
  • Konverzija v3.0 u v2.1 zahtijeva zasebno virtualno okruženje sa vlastitim korakom instalacije, i prepisuje vaš direktorij skupa podataka na mjestu.
  • Iznajmljivanje GPU-a počinje naplatu kada počnete sa otklanjanjem grešaka, a ne kada počne obuka, i ništa ne zaustavlja instancu kada se pokretanje završi.
  • Nema sjemena znači nema bit-po-bit ponovljivosti, povrh 5 do 6 posto varijacije od pokretanja do pokretanja samo od augmentacije.

Dva načina za dobijanje iste kontrolne tačke

Iznajmljujete GPU i kontrolišete svaki korak. Realno, prvi put će vam trebati jedno popodne, a svaki sledeći put dvadesetak minuta.

  1. Snimite epizode sa lerobot-record na SO-100. Dobijate LeRobot v3.0 skup podataka.
  2. Pretvorite ga u 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 se predviđenih koraka izvršava prije 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 baznog modela. Isporučena SO-100 konfiguracija predviđa 16, tako da je 16 vaš maksimum; bazni nvidia/GR00T-N1.7-3B checkpoint je konfigurisan za 40, a policy.md jasno kaže da se finetuned checkpointi mogu razlikovati. Prekoračite ga i dobićete ValueError koji imenuje oba broja. 8 je vrijednost koju dokumentacija predlaže za implementaciju u realnom vremenu. Staro ime 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 sa 12 V ih uništava, i to je laka greška ako posjedujete i LeKiwi, čija baza radi na 12 V dok ruka ne. Provjerite napajanje prije 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 pomjera, servo ne reaguje je mjesto za početak.

Sada iskreni dio o tome gdje se politika izvršava, jer obuka i posluživanje imaju različite hardverske priče. Fino podešavanje zahtijeva 40 GB ili više. Inferencija ne: README navodi 16 GB ili više i eksplicitno imenuje RTX 4090, tako da kartica koju već posjedujete može poslužiti checkpoint koji nikada nije mogla proizvesti. Ono što odlučuje da li se politika čini responzivnom nije VRAM, već gdje se server nalazi. Na AY-Robots GR00T N1.7 je samo u oblaku, tako da kontrolna petlja plaća povratno putovanje preko javnog interneta povrh 152 ms po koraku akcije, i samo SmolVLA i ACT takođe rade lokalno. Za sporo uzimanje i postavljanje, udaljeni pod je održiv. Za bilo šta reaktivno nije: politika postaje neodlučna na način koji izgleda tačno kao neuspjeh 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šavanje latencije ne vraća povratno putovanje koje je već potrošeno. Pokrenite svoju prvu politiku prolazi kroz stranu posluživanja od kraja do kraja.

Šta zapravo krene po zlu

  • 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.
  • Skup podataka odbijen pri učitavanju. Gotovo uvijek skup podataka v3.0. Konvertujte ga na nižu verziju. Pogledajte skup podataka odbijen kao v3.
  • IndexError zbog neusklađenih boolean dimenzija. Promijenili 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. Podrazumijevano nema validacione podjele, tako da čista kriva treninga malo dokazuje. Ova stranica pokriva dijagnozu.
  • Radi u vašem podešavanju i nigdje drugdje. Očekivano sa malim skupom podataka snimljenim pod jednim uslovom osvjetljenja. NVIDIA preporučuje augmentaciju boja (colour jitter) plus 20 do 50 epizoda pod različitim osvjetljenjem. Više ovdje.
  • Hvataljka se nikada ne zatvara pravilno. Provjerite da je akcija hvataljke ABSOLUTE, a zglobovi ruke RELATIVE, tim redoslijedom 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.

Cijeli indeks načina kvara nalazi se na . Ako birate između modela umjesto da otklanjate greške na jednom, i imaju benchmark brojeve sa priloženim izvorima, i je poređenje koje većina 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 pozadinu o tome zašto se ovi modeli ponašaju na način na koji se ponašaju, i vrijedi prvo pročitati. A ako još nemate ruku, prenosi fizički SO-100 bez prijave.

Koliko epizoda mi je potrebno prije nego što se isplati fino podešavanje GR00T N1.7?

AY-Robots postavlja minimalno 50 epizoda za groot1.7 trener. NVIDIA-in vlastiti FAQ je zahtjevniji: 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 uvijek je bolje snimiti više podataka nego podešavati hiperparametre. Ako se uspjeh stabilizuje nakon toga, NVIDIA preporučuje HG-DAgger: pokrenite politiku, intervenišite kada zakaže i dodajte te korekcije skupu podataka.

Zašto se moj skup podataka ne učitava i kako da znam koja je verzija?

Otvorite meta/info.json i pročitajte codebase_version. Trenutni CODEBASE_VERSION LeRobota 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 verzija lerobota 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 mnogo duže. 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 RNG. Repozitorijum zasebno bilježi 5 do 6 posto varijacije između pokretanja uzrokovane nedeterminističkom augmentacijom slike. Ako je reproduktivnost važna, koristite LeRobot putanju umjesto toga: lerobot-train prihvata --seed, a objavljeni GR00T recept prosleđuje --seed=42.

Trebam li koristiti Isaac-GR00T ili lerobot-train?

Koristite Isaac-GR00T ako želite referentnu implementaciju, kontrolu nad reprezentacijom akcija po ključu, TensorRT izvoz, ili benchmark primjere za reprodukciju prije nego što povjerujete vlastitim 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 obje, a modality.json mapira prednju i zglobnu kameru kao zasebne video ključeve. Možete trenirati sa jednom kamerom, a tabela latencije modela je izmjerena 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 vrijeme u vašim izvođenjima, nedostajuća ili loše usmjerena kamera na zglobu je jedna od prvih stvari koje treba provjeriti.

Fino podesite GR00T N1.7 na vašem SO-100 bez prethodnog postavljanja okruženja

Odaberite model, skup podataka i hiperparametre u obrascu. 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 piše kontrolne tačke u skladište objekata. Otprilike 4 do 12 USD po pokretanju.

Otvorite vodič za trening GR00T N1.7

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started