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 točno onu ruku koju vjerojatno posjedujete. Unutar Isaac-GR00T repozitorija nalazi se mapa pod nazivom demo_data/cube_to_bowl_5: pet epizoda, 4.148 sličica pri 30 fps, već napisanih kao LeRobot v2.1, s 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 stupnjeva slobode održavaju ljudi koji su napisali model. To nije smanjena humanoidna demonstracija, to je ista ruka.

Loša vijest je udaljenost između Snimio sam 60 epizoda i ruka obavlja zadatak. Postoji oko šest mjesta gdje ovaj cjevovod tiho, a ne glasno, zataji, a četiri od njih nalaze se u datotekama koje većina ljudi nikada ne otvara: meta/modality.json, konfiguracija Python podataka, meta/relative_stats.json, i vlastiti verzijski niz skupa podataka. Ovaj vodič prolazi ručnu rutu od početka do kraja sa stvarnim naredbama, a zatim prikazuje isti posao kao obrazac na AY-Robots. Sve dolje navedeno provjereno je u odnosu na glavnu granu Isaac-GR00T od 20. kolovoza 2026. (linija izdanja n1.7) i lerobot 0.6.1, objavljen na PyPI-ju 3. kolovoza 2026. Upstream se brzo mijenja, a gdje je zastavica preimenovana, ovaj članak to navodi.

Što trebate znati prije nego 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 s 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 konvertirati na nižu verziju.
  • Ulazna točka je gr00t/experiment/launch_finetune.py, tyro CLI. Nema zastavicu --seed, tako da pokretanja nisu bit-za-bit reproducibilna.
  • Za prilagođenu ruku oznaka utjelovljenja je NEW_EMBODIMENT, a ta oznaka čini --modality-config-path obveznim.
  • Isporučena SO-100 receptura predviđa zglobove ruke kao RELATIVNE delte, a hvataljku kao APSOLUTNU metu. Obrnuto uparivanje je tihi neuspjeh, a ne pogreš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 razini.

Što je zapravo GR00T N1.7

GR00T N1.7 je vizualno-jezično-akcijski model s rasporedom dvostrukog sustava opisanim u izvornom GR00T N1 radu: vizualno-jezični modul koji čita kamere i upute, te difuzijski transformator koji to pretvara u blok kontinuiranih motornih naredbi. N1.7 je zamijenio prvu polovicu. Eagle okosnica iz N1.6 je uklonjena, zamijenjena za nvidia/Cosmos-Reason2-2B na Qwen3-VL arhitekturi, a model je predobučen na otprilike 20.000 sati egocentričnog ljudskog videa povrh robotskih podataka. NVIDIA-in vlastiti izvještaj navodi brojku od 20.854 sata i izvještava da prelazak s 1k na 20k sati više nego udvostručuje prosječnu uspješnost zadatka.

Druga polovica se također promijenila, na načine koji su važni za vaše izvođenje. Akcijska glava je smanjena s 32 difuzijska sloja na 16, predviđeni akcijski blok je narastao sa 16 koraka na 40, a maksimalna širina stanja i akcije je porasla s 29 na 132. Te tri brojke dolaze iz changeloga u README-u repozitorija; NVIDIA-ina vlastita objava i dalje opisuje Sustav 1 kao 32-slojni DiT, pa gdje se ta dva izvora ne slažu, vjerujte repozitoriju koji ćete klonirati. Akcije su po zadanim postavkama izražene u relativnom prostoru krajnjeg efektora prostoru, delte od trenutne poze umjesto apsolutnih ciljeva, što omogućuje prijenos manipulacijskih predznanja naučenih iz ljudskog videa u robotsku kontrolu. Sama glava je flow-matching difuzijski transformator, iste obitelji kao Pi0.5, ali s drugačijom okosnicom ispred. Ako ste još uvijek na prethodnoj generaciji, N1.7 u usporedbi s N1.5 pokriva je li nadogradnja opravdava ponovno postavljanje vašeg cjevovoda.

SvojstvoVrijednostIzvor
Parametri3,000,000,000Hugging Face kartica modela
Vizualno-jezična okosnicanvidia/Cosmos-Reason2-2B (Qwen3-VL), gated on Hugging FaceREADME repozitorija
Akcijska glavaFlow-matching difuzijski transformator, 16 slojeva (N1.6 je imao 32)README repozitorija
Predviđeni akcijski horizont40 koraka za osnovnu kontrolnu točku (N1.6 je imao 16)getting_started/policy.md i README repozitorija
Maksimalna širina stanja i akcije132 (N1.6 je imao 29)README repozitorija
Licenca kodaApache 2.0Isaac-GR00T repozitorij
Licenca težinaNVIDIA Open Model License Agreementkartica modela
Latencija, H100 80 GB, PyTorch eager, 4 koraka denoisiranja, 1 kamera85.8 ms od kraja do kraja, 11.7 Hztablica vremena kartice modela
Isti hardver, TensorRT puni cjevovod27.9 ms od kraja do kraja, 35.9 Hztablica vremena kartice modela
Latencija koju AY-Robots navodi za svoj posluženi GR00T N1.7152 ms po akcijskom korakuAY-Robots katalog politika

Posljednja tri retka objašnjavaju većinu razočaranja koje ljudi prijavljuju. Naslovnih 27.9 ms odnosi se na TensorRT pogon na H100 s jednom kamerom i četiri koraka denoisiranja. Obični PyTorch na istoj kartici iznosi 85.8 ms, a kartica modela navodi razliku od 3.08x. Nijedna brojka ne uključuje sloj posluživanja, drugu kameru ili mrežni skok. 152 ms po akcijskom koraku koje AY-Robots navodi za svoj posluženi GR00T N1.7 je brojka s posluživanjem u petlji, a povrh toga dolazi i povratno putovanje preko javnog interneta. Više o tome na kraju. Za brojke pored drugih modela, GR00T N1.7 u usporedbi s Pi0.5 i GR00T N1.7 u usporedbi sa SmolVLA prikazuju ih usporedo.

Stranica modela AY-Robots za GR00T N1.7 koja prikazuje broj parametara, GPU razinu, latenciju inferencije te 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-a repozitorija.

Što je potrebno za pokretanje prije nego što išta upišete

ZahtjevFino podešavanjeInferencija
VRAM, NVIDIA smjernice40 GB ili više, preporučuje se H100 ili L4016 GB ili više, RTX 4090 radi
Python i CUDA na dGPU3.12 i CUDA 12.83.12 i CUDA 12.8
Video pozadinatorchcodec 0.8.0, FFmpeg 4 to 7 onlyisto
Format skupa podatakaLeRobot v2 plus meta/modality.jsonnije primjenjivo
Pristup Hugging Faceuapproved for nvidia/Cosmos-Reason2-2Bisto
Ostali alatigit-lfs and uvuv
AY-Robots GPU razina za groot1.7 trenerA100 80 GB or H100 80 GBpod automatski dodijeljen
Zaključana okosnica zaustavit će vas pri prvom pokretanju

Svaka GR00T kontrolna točka, uključujući osnovni nvidia/GR00T-N1.7-3B, učitava nvidia/Cosmos-Reason2-2B pri prvoj upotrebi, a to je repozitorij s ograničenim pristupom. README točno navodi pogrešku: učitavanje modela ne uspijeva s GatedRepoError / 401 Client Error. Ono što ne spominje je kada se to događa, a to je nakon što ste unajmili karticu i pokretanje je započelo. Zatražite pristup na stranici modela, zatim pokrenite uv run huggingface-cli login ili izvezite HF_TOKEN prije nego što išta unajmite.

Korak 0: same epizode

Sve u nastavku 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 upravljajte sljedbenikom s vodećom rukom dok lerobot-record piše parquet datoteke i streamove kamere. Ako kalibracija nije ispravna, vrijednosti zglobova u vašem skupu podataka opisuju malo 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. Duljina epizode zadano je 60 s, a vrijeme resetiranja 60 s. so100_follower i so101_follower su oba registrirana protiv iste klase konfiguracije LeRobot, zbog čega primjer Isaac-GR00T SO100 koristi so101 imena; oba rade na SO-100. Imena kamera koje ovdje odaberete (front, wrist) su imena koja se moraju ponovno pojaviti u modality.json.

Vlastiti savjet LeRobota je snimiti najmanje 50 epizoda s otprilike 10 po lokaciji objekta, držati kamere fiksiranima i održavati dosljedno ponašanje hvatanja. Dodajte varijacije kasnije, ne na početku. Pravilo koje vrijedi zapamtiti: ako sami niste mogli izvršiti zadatak samo na temelju slika s kamere, politika također ne može. Za postavljanje specifično za ruku, SO-100 početak rada i stranica SO-100 LeRobot pokrivaju portove, kalibraciju i indekse kamere. Na AY-Robotsu to također možete učiniti putem interneta iz preglednika koristeći teleoperaciju i snimati izravno iz sesije.

Korak 1: skup podataka mora biti LeRobot v2.1

Ovo je najčešća prepreka. Trenutna verzija LeRobota CODEBASE_VERSION na glavnoj grani je v3.0, tako da sve što danas snimite s trenutnim skupom alata izlazi kao v3.0. GR00T-ov učitavač očekuje v2. Repozitorij 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 vlastitom virtualnom okruženju iz konkretnog razloga: scripts/lerobot_conversion nosi vlastiti pyproject koji zahtijeva Python 3.10 ili 3.11 i fiksira lerobot na jedan git commit, dok sam Isaac-GR00T zahtijeva Python 3.12. Instalirajte konverter iz korijena repozitorija i dobit ćete paket gr00t umjesto toga, što je greška na koju upozorava njegov README. Ako ste novi u formatu, LeRobot skup podataka unos u rječniku objašnjava što 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 prihvaća --repo-id, opcionalni --root i --force-conversion, koji briše sve postojeće lokalne snimke i ponovno ih preuzima. U meta/info.json upisuje codebase_version: v2.1.
Konverzija prepisuje na mjestu

Ako skup podataka v3.0 već postoji lokalno, skripta gradi v2.1 raspored pored njega, a zatim zamjenjuje: original se premješta u sestrinsku mapu s dodanom verzijom, <name>_v3.0, a konvertirana kopija preuzima originalnu putanju. (Docstring same skripte tu mapu naziva _v30; kod dodaje niz verzije, tako da zapravo dobivate _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 kasnije traži. Kada posao obuke odbije vaš skup podataka zbog razloga verzije, stranica o skupu podataka odbijenom kao v3 navodi toč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, a GR00T neće trenirati bez njega. Evo onog koji 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 slijede Python slice-anje, tako da je single_arm [0:5], a gripper [5:6].

Kopirajte ga u svoj konvertirani skup podataka na meta/modality.json i preimenujte video ključeve u ono kako se vaše kamere zapravo zovu. Ako ste snimali s jednom nadglavnom kamerom nazvanom top, tada je original_key observation.images.top a prijateljsko ime je ono na što će se vaša konfiguracija podataka referencirati. Oboje se moraju slagati, i nijedno od njih ne provjerava drugo umjesto vas. Jezična anotacija je gora, jer se isti ključ mora pojaviti na tri mjesta.

SlojDatotekaSO-100 oblik korišten u repozitoriju
Parquet stupacdata/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čni ključ zbunjuje ljude

Segmenti nakon annotation. biraju se od strane autora skupa podataka. SO-100 demo podaci koriste annotation.human.task_description; LIBERO i SimplerEnv koriste annotation.human.action.task_description. Oba su valjana. Ako ste kopirali konfiguraciju iz LIBERO primjera i usmjerili je na vlastitu SO-100 snimku, jezični kanal se razrješava u ništa i model se trenira na praznoj instrukciji. Gubitak i dalje pada. Politika i dalje nešto radi. Samo ignorira ono što ste joj rekli da učini.

Korak 3: konfiguracija podataka, relativna ruka i apsolutni hvatač

Konfiguracija modaliteta je Python datoteka, a ne JSON, jer također određuje kako je svaka akcijska grupa predstavljena. Ovo je dio N1.7 radnog toka koji nije postojao u istom obliku u N1.5, i dio koji vrijedi 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 devet-dimenzionalni vektor x, y, z plus 6D rotaciju.

Dva detalja ovdje će vas koštati dan ako ih ne znate. Prvo, action_configs je pozicijski: dokumentacija zahtijeva istu duljinu i isti redoslijed kao modality_keys, i izravni su u vezi s posljedicama pogreške, a to je da se pogrešna reprezentacija primjenjuje tiho. Vaša hvataljka se trenira kao delta, a vaša ruka kao apsolutni cilj, i nema poruke o pogrešci. Drugo, register_modality_config tvrdi da oznaka već nije registrirana, tako da druga NEW_EMBODIMENT konfiguracija u istom Python procesu umire s Embodiment tag ... already registered. Ne možete uvesti dvije ovakve u jednu skriptu. Treće pravilo se provodi kasnije, pri implementaciji: akcija delta_indices mora biti neprekinuti raspon koji počinje od nule. Rijedak prozor kao što je [0, 4, 8] se odbija, jer sve nizvodno indeksira predviđeni dio linearno i inače bi izvršilo pogrešne retke.

Promijenite delta_indices i morate ponovno generirati statistike

Statistike normalizacije, posebno meta/relative_stats.json, izračunavaju se za duljinu horizonta koju ste imali kada ste ih generirali. Skratite horizont akcije sa 16 na 8 bez ponovnog generiranja i treniranje prestaje s IndexError: boolean index did not match indexed array ... dimension is 8 but corresponding boolean dimension is 16. Rješenje je jedna naredba: python gr00t/data/stats.py --dataset-path <path> --embodiment-tag NEW_EMBODIMENT --modality-config-path examples/SO100/so100_config.py. Pokrenite je nakon svake promjene delta_indices.

Korak 4: okruženje

N1.7 je premjestio repozitorij na i Python 3.12. Stara conda plus pip install -e . putanja još uvijek postoji u sažetom dijelu README-a, ali upozorava da GPU ovisnosti, 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 radi se o ponovnoj izgradnji. uv ponovno provjerava valjanost URL-prikvačenog wheela koji je već keširan, i to traje dvije do tri sekunde.

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

    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 sinkronizirajte okruženje

    Zadana instalacija povlači GPU ovisnosti uključujući flash-attn i TensorRT. Na svježoj A100 ili H100 slici ovo je najduži pojedinačni korak, stoga ga učinite prije nego što počnete obraćati pažnju na bilo što 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
    Autentificirajte se protiv Hugging Face-a

    Učinite 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 dirnete vlastitu snimku, pokrenite 2000 koraka na demo_data/cube_to_bowl_5. To je pet epizoda, brzo 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 neispravna instalacija, a ne kao sukob verzija. Instalirajte stariju verziju runtime-a, na primjer conda install -c conda-forge 'ffmpeg<8', i postavite njegove 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 jednostavno export CUDA_HOME=/usr/local/cuda.

Korak 5: naredba za fino podešavanje i stvarne zadane vrijednosti njezinih zastavica

Zamijenite demo skup podataka svojim i dodajte postavke koje stvarno želite. Ispod je puni oblik koji repozitorij koristi u vlastitom vodiču za novo utjelovljenje, uključujući zastavice za augmentaciju i spremanje kontrolnih točaka koje kratki primjer iz README-a izostavlja. Ovo je u užem smislu: jezična okosnica i vizualni enkoder ostaju zamrznuti, a ono što se trenira su projektor i difuzijska akcijska 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, zamijenite pokretač s 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.
FlagZadano u FinetuneConfigŠto radi
--global-batch-size64Ukupna serija preko svih GPU-a prije akumulacije gradijenata. Isporučeni primjeri koriste 32.
--learning-rate1e-4Ista vrijednost koju AY-Robots šalje za svoj groot1.7 trener.
--max-steps10000Ukupni koraci optimizatora. Omotač examples/finetune.sh također zadano postavlja na 10000.
--gradient-accumulation-steps1Množi efektivnu seriju. Vrijednosti iznad 1 emitiraju upozorenje koje vam govori akumuliranu veličinu.
--save-steps and --save-total-limit1000 and 5Učestalost kontrolnih točaka i koliko ih se zadržava. Starije se brišu.
--weight-decay and --warmup-ratio1e-5 and 0.05Također 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 tijekom treninga. Smanjite ga ako se vaš zadatak oslanja na stanje.
--tune-llm and --tune-visualFalse and FalseOkosnica ostaje zamrznuta po zadanim postavkama.
--tune-projector and --tune-diffusion-modelTrue and TrueProjektor i difuzijska akcijska glava su ono što se zapravo trenira.
--use-percentilesTrueNormalizira s q01 i q99 umjesto sirovih min i max vrijednosti.
--dataloader-num-workers2Učitavač je po dizajnu baziran na CPU-u. Primjeri ovo podižu na 4.
--seeddoes not existNa ovom CLI-ju ne postoji zastavica za seed.

Taj zadnji redak nije pogreška u tipkanju. launch_finetune.py je tyro CLI generiran iz dataclassa, a taj dataclass nema polje za seed. README zasebno navodi 5 do 6 posto varijacije između pokretanja uzrokovane nedeterminističkom augmentacijom slike. Dva pokretanja s identičnim zastavicama neće proizvesti identične kontrolne točke, što je vrlo važno kada pokušavate odlučiti je li promjena hiperparametra pomogla ili ste imali sreće. Za usporedbu, lerobotov vlastiti trener podrazumijeva seed 1000, a LeRobot GR00T recept prosljeđuje --seed=42 eksplicitno.

Validacija je isključena po zadanim postavkama, a dokumentirana zastavica nije na ovom CLI-ju

Fine-tuning se pokreće s eval_strategy="no", tako da uopće nema krivulje gubitka validacije. Dobivate samo gubitak treninga i ništa drugo. Vodič za novo utjelovljenje kaže da ga uključite s --eval-strategy steps --eval-steps 500, ali ta zastavica ne postoji na launch_finetune.py: CLI generira tyro iz FinetuneConfig dataclassa, a eval_strategy, eval_steps i eval_batch_size su polja TrainingConfig umjesto toga. Njihove zadane vrijednosti su "no", 500 i 2. Da biste ih dosegli, koristite potpuniju ulaznu toč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 vrlo malo govori o generalizaciji, što je upravo situacija opisana na gubitak pada, ali politika ne radi ništa.

Koliko košta pokretanje od 20000 koraka

GR00T N1.7 treba 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 razini, 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 zadani 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, a ne možete ga pokrenuti na 4090 ispod vašeg stola.

ModelRazina GPU-aTipično trajanjeTipičan trošakMinimalan 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 vlastiti FAQ je zahtjevniji: otprilike 100 putanja za jednostavno podizanje i postavljanje na fiksnoj lokaciji, 500 ili više za složene scene s više koraka, te 100 do 500 za finu manipulaciju. Ako imate 20 epizoda, provedite poslijepodne snimajući umjesto da navečer ugađate. vodič za prikupljanje podataka pokriva što korisnu epizodu razlikuje od protraćene, snimite svoj prvi skup podataka je kratka verzija, a prikupljanje podataka za SO-100 je specifična za ruku.

AY-Robots vodič za obuku za GR00T N1.7 na SO-100, prikazuje traku sa specifikacijama s razinom GPU-a, potrebnim formatom skupa podataka i zadanim postavkama trenera
Vodič /train/groot-n1-7-on-so-100 donosi činjenice koje biste inače ručno rekonstruirali: razinu GPU-a, format skupa podataka i točne zadane postavke koje trener šalje.

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

Nemojte stavljati svježi kontrolnu točku na fizičku ruku kako biste saznali je li trening uspio. Prvo pokrenite evaluaciju otvorene petlje. Ona ponavlja snimljenu epizodu, traži od modela akcije u svakom koraku i iscrtava predviđanje u odnosu na stvarnu vrijednost s MSE i MAE. Ne košta ništa i hvata pogreš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
Grafikoni se spremaju u /tmp/open_loop_eval/traj_<id>.jpeg osim ako ne proslijedite --save-plot-path. Zadane 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 ovisi o vašim akcijskim jedinicama, vašem zadatku i veličini vašeg skupa podataka, tako da prag kopiran s tuđe ruke ne znači ništa. Ono što je značajno je trend. Ovdje je referentno pokretanje koje repozitorij dokumentira na jednom H100 s demo skupom podataka od pet epizoda i 2000 koraka.

Kontrolna toč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. Pogreška bi trebala postojano padati kako se koraci treninga akumuliraju. Prosječno kroz svih pet epizoda treninga, a ne samo kroz trajektoriju 0, konačna kontrolna točka repozitorija postigla je otprilike 7.5 MSE i 1.5 MAE, tako da se čak i referentno pokretanje različito tumači ovisno o tome koje epizode prosječite. Zabilježite vlastitu početnu vrijednost na nemodificiranoj demo naredbi prije nego što promijenite bilo što u vezi s vlastitim podacima: ako ne možete reproducirati poznato dobro pokretanje, ne možete razlikovati pogrešku u postavljanju od problema s podacima. Repozitorij također mapira uobičajene simptome na uzroke, i svaki od njih je operativan, a ne greška modela.

SimptomVjerojatni uzrok
MSE ravno ili raste kroz kontrolne točkeStopa učenja preniska, ili se podaci uopće ne učitavaju. Provjerite --dataset-path i radnike dataloader-a.
Krivulja 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 tijekom treningaNormalizacija akcije i stanja. Provjerite meta/stats i da su rasponi akcija fizički vjerodostojni.
Dobro na traj 0, loše na zadržanim epizodamaNedostatak podataka, nije greška. Pet demo epizoda ne može generalizirati.

Drugi put: lerobot-train umjesto Isaac-GR00T

Trenutna LeRobot verzija, 0.6.1 na PyPI-ju od 3. kolovoza 2026., nudi drugi i prilično drugačiji način finog podešavanja istih baznih težina. LeRobot izlaže GR00T N1.7 kao tip politike i trenira ga kroz vlastitu lerobot-train ulaznu točku. Dvije su stvari ovdje važne. LeRobot CLI je skup konzolnih skripti, tako da je sve što pročitate što kaže python lerobot/scripts/train.py zastarjelo i neće se pokrenuti. I LeRobot je u potpunosti uklonio podršku za GR00T N1.5, odbijajući N1.5 kontrolne točke i konfiguracije s napomenom o migraciji, pa ako trebate N1.5 kroz LeRobot, morate fiksirati lerobot==0.5.1, posljednju verziju koja ga podržava, objavljenu 7. travnja 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-izvorna GR00T N1.7 receptura. Napomena relative_exclude_joints: hvataljka je isključena iz relativnih akcija, što je ista odluka koju so100_config.py donosi s ActionRepresentation.ABSOLUTE.
AspektIsaac-GR00T launch_finetune.pylerobot-train --policy.type=groot
Verzija skupa podatakaSamo LeRobot v2, potrebna konverzijaIzvorni LeRobot skup podataka, bez degradacije
Mapiranje modalitetameta/modality.json plus Python konfiguracija podatakanema modality.json; ponašanje postavljeno --policy.* zastavicama u naredbenom retku
Sjemeuopće nema zastavice za sjeme--seed, LeRobot zadano 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, s chunkingom u stvarnom 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, premjestiti state_dropout_prob, ili skratiti horizont akcije.
  • Grafikoni otvorene petlje su lokalne datoteke. Uspoređivanje checkpoint-5000 s checkpoint-20000 je naredba ljuske.
  • Ne ovisite o tome da bilo koja platforma ostane online, a kontrolna točka (checkpoint) sjedi na vašem disku u standardnom formatu.
  • Primjeri benchmarka repozitorija za LIBERO, SimplerEnv i DROID daju vam poznato dobre izvođenja za reprodukciju prije nego što vjerujete vlastitim podacima.
Kompromisi
  • Okruženje je većina posla. FFmpeg verzija, CUDA_HOME, git-lfs, gated backbone, torchcodec: nijedan od ovih nije problem modela i svaki od njih zaustavlja izvođenje.
  • Konverzija s v3.0 na v2.1 zahtijeva zasebno virtualno okruženje s vlastitim korakom instalacije, i prepisuje vaš direktorij skupa podataka na mjestu.
  • Najam GPU-a počinje se naplaćivati kada započnete s otklanjanjem pogrešaka, a ne kada počne treniranje, i ništa ne zaustavlja instancu kada se izvođenje završi.
  • Nema sjemena znači nema reproduktivnosti bit-za-bit, povrh 5 do 6 posto varijance između izvođenja samo od augmentacije.

Dva načina za dobivanje iste kontrolne točke

Unajmljujete GPU i vi ste odgovorni za svaki korak. Realno, prvi put je to popodne, a svaki sljedeći put dvadeset minuta.

  1. Snimite epizode s lerobot-record na SO-100. Dobivate LeRobot v3.0 skup podataka.
  2. Pretvorite ga u v2.1 pomoću scripts/lerobot_conversion/convert_v3_to_v2.py u vlastitom virtualnom okruženju.
  3. Napišite meta/modality.json i Python konfiguraciju modaliteta, registriranu pod EmbodimentTag.NEW_EMBODIMENT.
  4. Unajmite karticu od 80 GB, klonirajte s podmodulima, uv sync, autentificirajte se protiv Hugging Facea.
  5. Pokrenite launch_finetune.py, zatim open_loop_eval.py na nekoliko kontrolnih točaka i usporedite trend MSE-a prije nego što dodirnete hardver.
  6. Preuzmite kontrolnu točku s računala prije nego što uništite instancu, zatim izgradite put posluživanja do ruke.
Korak koji svi zaborave

Kopirajte kontrolnu točku s unajmljene instance prije nego što je isključite. --save-total-limit 5 također znači da se starije kontrolne točke brišu kako obuka napreduje, tako da kontrolna točka koju ste željeli na koraku 5000 možda više ne postoji na koraku 20000.

The AY-Robots training matrix with five policy models as rows and four robot arms as columns, each cell linking to a specific training guide
The /train matrix: five models against four arms. The GR00T N1.7 row also covers the SO-101, Koch v1.1 and LeKiwi.

Vraćanje kontrolne točke na ruku

Isaac-GR00T koristi podjelu poslužitelj-klijent preko ZMQ-a. Politika se izvodi na GPU-u, a tanki klijent na robotskom stroju šalje opažanja i prima dijelove akcija. Primjer SO-100 je dovoljno potpun za kopiranje: pokrenite run_gr00t_server.py s vašom kontrolnom točkom i --embodiment-tag NEW_EMBODIMENT, zatim pokrenite eval_so100.py na strani robota sa serijskim portom, ID-om robota, indeksima kamere i jezičnom instrukcijom. Nazivi kamera u toj naredbi moraju odgovarati prijateljskim nazivima iz vaše modality.json datoteke, a ne 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 kontrolira koliko se predviđenih koraka izvršava prije ponovnog planiranja. Mora biti najviše policy's action_horizon, a taj broj je duljina action delta_indices u vašoj konfiguraciji modaliteta, a ne u osnovnom modelu. Isporučena SO-100 konfiguracija predviđa 16, tako da je 16 vaša gornja granica; osnovna nvidia/GR00T-N1.7-3B kontrolna točka konfigurirana je za 40, a policy.md jasno navodi da se fino podešene kontrolne točke mogu razlikovati. Prekoračite je i dobit ćete ValueError koji navodi oba broja. 8 je vrijednost koju dokumentacija predlaže za implementaciju u stvarnom vremenu. Stari naziv zastavice --action-horizon i dalje radi, ali upozorava.
7.4 V, ne 12 V

Dok ponovno spajate ruku: SO-100 koristi Feetech STS3215 bus servo motore na 7.4 V napajanju. Napajanje od 12 V ih uništava, a to je laka pogreš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 pomiče, servo ne reagira je mjesto za početak.

Sada iskreni dio o tome gdje se politika izvodi, jer obuka i posluživanje imaju različite hardverske priče. Fino podešavanje zahtijeva 40 GB ili više. Zaključivanje ne: README navodi 16 GB ili više i eksplicitno spominje RTX 4090, tako da kartica koju već posjedujete može poslužiti kontrolnu točku koju nikada nije mogla proizvesti. Ono što odlučuje hoće li se politika činiti responzivnom nije VRAM, već mjesto gdje se poslužitelj 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đer rade lokalno. Za sporo podizanje i postavljanje udaljeni pod je održiv. Za bilo što reaktivno nije: politika postaje neodlučna na način koji izgleda točno kao neuspjeh obuke, a nije. ACT s 20 ms po koraku akcije je model koji tolerira najužu petlju, SmolVLA je na 245 ms, i nikakva količina podešavanja latencije ne može nadoknaditi povratno putovanje koje je već potrošeno. Pokrenite svoju prvu politiku prolazi kroz stranu posluživanja od početka do kraja.

Što zapravo pođe po zlu

  • GatedRepoError pri prvom pokretanju. Nije vam odobren pristup nvidia/Cosmos-Reason2-2B ili se niste autentificirali. To se događa nakon što je GPU sat već pokrenut.
  • Skup podataka odbijen pri učitavanju. Gotovo uvijek skup podataka v3.0. Pretvorite ga u nižu verziju. Pogledajte skup podataka odbijen kao v3.
  • IndexError zbog neusklađenih booleovih dimenzija. Promijenili ste delta_indices i niste ponovno generirali statistiku.
  • Nedostatak memorije pri batchu 32. Smanjite --global-batch-size i povećajte --gradient-accumulation-steps, ili smanjite --num-shards-per-epoch, što konfiguracija izričito predlaže kada je VRAM ograničen. Pogledajte nedostatak memorije tijekom treninga.
  • Gubitak pada, politika ne radi ništa. Prema zadanim postavkama nema podjele za validaciju, tako da čista krivulja treninga vrlo malo dokazuje. Ova stranica pokriva dijagnozu.
  • Radi u vašoj postavci i nigdje drugdje. Očekivano s malim skupom podataka snimljenim pod jednim uvjetom osvjetljenja. NVIDIA preporučuje augmentaciju podrhtavanja boja plus 20 do 50 epizoda pod različitim osvjetljenjem. Više ovdje.
  • Hvataljka se nikada ne zatvara pravilno. Provjerite je li akcija hvataljke ABSOLUTNA, a zglobovi ruke RELATIVNI, tim redoslijedom u action_configs. Hvataljka se ne zatvara navodi ostale uzroke.
  • Kamera se tiho isključi usred snimanja. Epizoda se i dalje sprema, a video ključ i dalje postoji, zbog čega je ovo neugodno. Kamera nije detektirana to pokriva.

Cijeli indeks načina kvara nalazi se na . Ako birate između modela umjesto da otklanjate pogreške na jednom, i imaju benchmark brojeve s priloženim izvorima, a je usporedba koju 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 unajmiti č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 mi je epizoda potrebno prije nego što se isplati fino podešavanje GR00T N1.7?

AY-Robots postavlja donju granicu od 50 epizoda za groot1.7 trener. NVIDIA-in vlastiti FAQ je zahtjevniji: otprilike 100 trajektorija za jednostavno podizanje i postavljanje na fiksnoj lokaciji, 500 ili više za složene scene ili scene s više koraka, te 100 do 500 za finu manipulaciju. Ispod 50 epizoda gotovo uvijek je bolje snimiti više podataka nego podešavati hiperparametre. Ako se uspjeh stabilizira nakon toga, NVIDIA preporučuje HG-DAgger: pokrenite politiku, intervenirajte kada ne uspije i dodajte te ispravke skupu podataka.

Zašto se moj skup podataka ne učitava i kako mogu znati 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 s nedavnim alatima v3.0, a GR00T učitavač očekuje v2. Pretvorite pomoću scripts/lerobot_conversion/convert_v3_to_v2.py iz Isaac-GR00T repozitorija, koji upisuje codebase_version: v2.1 u pretvoreni skup podataka. Skripta se pokreće u vlastitom 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 im treba mnogo više vremena. 4090 ima 24 GB. AY-Robots nudi GR00T N1.7 samo na A100 80 GB i H100 80 GB razini iz istog razloga. Zaključivanje je druga priča: 16 GB je dovoljno za posluživanje 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 s oko 450 M parametara ili ACT s oko 80 M.

Zašto dva pokretanja s identičnim zastavicama daju različite kontrolne točke?

Zato što launch_finetune.py nema seed. To je tyro CLI generiran iz dataclassa koji ne sadrži polje seed, tako da ništa ne fiksira RNG. Repozitorij zasebno bilježi 5 do 6 posto varijacije između pokretanja uzrokovane nedeterminističkom augmentacijom slike. Ako je reproducibilnost važna, koristite LeRobot put umjesto toga: lerobot-train prihvaća --seed, a objavljeni GR00T recept prosljeđ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 primjere benchmarka za reprodukciju prije nego što vjerujete vlastitim podacima. Koristite lerobot-train ako je vaš skup podataka već LeRobot v3.0 i radije ga ne biste pretvarali, ako želite seed, ili ako je ostatak vašeg stoga 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 točke su odbijene s napomenom o migraciji, a morate fiksirati lerobot==0.5.1 da biste ih nastavili koristiti.

Trebam li stvarno i kameru na zglobu uz prednju kameru?

Isporučena SO-100 konfiguracija koristi obje, a modality.json mapira prednju kameru i kameru na zglobu kao zasebne video ključeve. Možete trenirati s jednom kamerom, a tablica latencije modela mjeri se s 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 jedna je od prvih stvari koje treba provjeriti.

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

Odaberite model, skup podataka i hiperparametre u obrascu. Pozadinski sustav unajmljuje A100 80 GB ili H100 na spot tržištu, pokreće trener s batchom 32, stopom učenja 1e-4 i 20000 koraka, te piše kontrolne točke u objektno skladište. 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