AY-Robots juhendleht GR00T N1.7 treenimiseks SO-100 robotkäel, näidates nõutavat GPU taset, andmestiku formaati ja treeneri vaikesätteid
GR00T N1.7SO-100PeenhäälestamineLeRobotVLA

Kuidas treenida GR00T N1.7 oma SO-100 andmestikul

AY-Robots ResearchAugust 23, 202628 min lugemist

Testitud juhend NVIDIA GR00T N1.7 peenhäälestamiseks SO-100 LeRoboti andmestikul: tegelikud lipud, modality.json, v2.1 nõue, mida üks käitus maksab ja lõksud.

NVIDIA tarnib peenhäälestuse näite täpselt sellele robotkäele, mis teil tõenäoliselt on. Sees Isaac-GR00T repositooriumis on kaust nimega demo_data/cube_to_bowl_5: viis episoodi, 4148 kaadrit 30 kaadrit sekundis, juba kirjutatud LeRobot v2.1 formaadis, sobiva modaalsuse konfiguratsiooniga asukohas examples/SO100/. Selle meta/info.json teatab robot_type: so101_follower, mis LeRobotis on sama konfiguratsiooniklass nagu so100_follower. See on tõeliselt kasulik, sest see tähendab, et viitetee GR00T N1.7 jaoks kuue-vabadusastmega hobirobotkäel on hooldatud mudeli loojate poolt. See ei ole vähendatud humanoidi demo, see on sama robotkäsi.

Halb uudis on vahemaa I recorded 60 episodes ja the arm does the task. Selles töövoos on umbes kuus kohta, kus see vaikselt, mitte valjuhäälselt ebaõnnestub, ja neli neist asuvad failides, mida enamik inimesi kunagi ei ava: meta/modality.json, Pythoni andmekonfiguratsioon, meta/relative_stats.json, ja andmestiku enda versioonistring. See juhend läbib käsitsi tee algusest lõpuni reaalsete käskudega, seejärel näitab sama tööd vormina AY-Robots. Kõik allolev kontrolliti Isaac-GR00T põhiharu vastu seisuga 20. august 2026 (n1.7-release haru) ja lerobot 0.6.1 vastu, mis avaldati PyPI-s 3. augustil 2026. Ülesvoolu areng on kiire, ja kui mõni lipp nimetati ümber, on see artiklis märgitud.

Mida peate enne alustamist teadma

  • GR00T N1.7 peenhäälestus vajab 40 GB või rohkem VRAM-i. NVIDIA soovitab H100 või L40 sõlmi. 24 GB RTX 4090 selle tööga hakkama ei saa, kuigi see treenib SmolVLA-d ja ACT-d.
  • Andmestik peab olema LeRobot v2 (v2.0 või v2.1) pluss GR00T-spetsiifiline meta/modality.json. LeRobot v3.0 andmestikku ei laeta ja see tuleb teisendada vanemaks versiooniks.
  • Sisendpunkt on gr00t/experiment/launch_finetune.py, tyro CLI. Sellel puudub --seed lipp, seega käivitused ei ole bitipõhiselt reprodutseeritavad.
  • Kohandatud robotkäe puhul on kehastuse silt NEW_EMBODIMENT, ja see silt muudab --modality-config-path kohustuslikuks.
  • Kaasasolev SO-100 retsept ennustab robotkäe liigeseid RELATIIVSETE deltatena ja haaratsit ABSOLUUTSE sihtmärgina. Selle paari tagurpidi seadistamine on vaikne ebaõnnestumine, mitte viga.
  • AY-Robotsis on sama töö vormina: 20000 sammu, partii 32, õppimiskiirus 1e-4, umbes 4 kuni 12 USD A100 80 GB või H100 tasemel.

Mis GR00T N1.7 tegelikult on

GR00T N1.7 on nägemis-keele-tegevuse mudel kahesüsteemse paigutusega, mida on kirjeldatud algses GR00T N1 artiklis: nägemis-keele moodul, mis loeb kaameraid ja juhiseid, ning difusioonitransformer, mis muudab selle pidevateks mootorikäskude plokiks. N1.7 asendas esimese poole. N1.6 Eagle'i selgroog on kadunud, asendatud nvidia/Cosmos-Reason2-2B Qwen3-VL arhitektuuril, ja mudel oli eelkoolitatud ligikaudu 20 000 tunni egotsentrilise inimvideo peal lisaks robotandmetele. NVIDIA enda kirjutis märgib arvuks 20 854 tundi ja teatab, et 1k-lt 20k tunnile minnes kahekordistub keskmine ülesannete täitmine enam kui kaks korda.

Ka teine pool muutus viisil, mis on teie käitamise jaoks oluline. Tegevuspea langes 32 difusioonikihilt 16-le, ennustatud tegevusplokk kasvas 16 sammult 40-le ning maksimaalne oleku ja tegevuse laius kasvas 29-lt 132-le. Need kolm numbrit pärinevad hoidla README muudatuste logist; NVIDIA enda käivituspostitus kirjeldab endiselt Süsteem 1 kui 32-kihilist DiT-d, seega kui need kaks on vastuolus, usaldage hoidlat, mida te kloonima hakkate. Tegevused on vaikimisi väljendatud suhtelises lõppefektori ruumis, deltasid praegusest poosist, mitte absoluutseid sihtmärke, mis võimaldab inimvideost õpitud manipulatsiooniprioriteedid robotjuhtimisse üle kanda. Pea ise on voolu sobitamise difusioonitransformer, sama perekond nagu Pi0.5, kuid erineva selgrooga selle ees. Kui olete endiselt eelmise põlvkonna peal, siis N1.7 versus N1.5 käsitleb, kas uuendus õigustab teie torujuhtme ümbertegemist.

OmadusVäärtusAllikas
Parameetrid3,000,000,000Hugging Face model card
Nägemis-keele selgroognvidia/Cosmos-Reason2-2B (Qwen3-VL), gated on Hugging Facerepo README
TegevuspeaFlow-matching diffusion transformer, 16 layers (N1.6 had 32)repo README
Ennustatud tegevushorisont40 steps for the base checkpoint (N1.6 had 16)getting_started/policy.md and repo README
Maksimaalne oleku ja tegevuse laius132 (N1.6 had 29)repo README
Koodi litsentsApache 2.0Isaac-GR00T repository
Kaalude litsentsNVIDIA Open Model License Agreementmodel card
Latentsus, H100 80 GB, PyTorch eager, 4 müra eemaldamise sammu, 1 kaamera85.8 ms end to end, 11.7 Hzmodel card timing table
Sama riistvara, TensorRT täielik torujuhe27.9 ms end to end, 35.9 Hzmodel card timing table
Latentsus, mida AY-Robots pakub oma teenindatava GR00T N1.7 jaoks152 ms per action stepAY-Robots policy catalog

Need kolm viimast rida selgitavad enamiku pettumustest, millest inimesed teatavad. Pealkirjas olev 27.9 ms on TensorRT mootor H100-l ühe kaamera ja nelja müra eemaldamise sammuga. Tavaline PyTorch samal kaardil on 85.8 ms ja mudelikaart märgib vaheks 3.08x. Kumbki number ei sisalda teeninduskihti, teist kaamerat ega võrguhüpet. AY-Robotsi poolt oma teenindatava GR00T N1.7 jaoks pakutud 152 ms tegevussammu kohta on see näitaja koos teenindusega ahelas, ja sellele lisandub avaliku interneti edasi-tagasi reis. Sellest lähemalt lõpus. Teiste mudelite numbrite kohta, GR00T N1.7 versus Pi0.5 ja GR00T N1.7 versus SmolVLA esitavad need kõrvuti.

AY-Robots mudelileht GR00T N1.7 jaoks, mis näitab parameetrite arvu, GPU taset, järeldamise latentsust ning mudeli deklareeritud tugevusi ja piiranguid
Lehel /policies/groot-n1-7 on sama spetsifikatsiooniriba, mille muidu paneksid käsitsi kokku mudelikaardist ja repo README-st.

Mida jooks vajab enne, kui midagi trükid

NõuePeenhäälestusJäreldamine
VRAM, NVIDIA juhised40 GB või rohkem, soovitatav H100 või L4016 GB või rohkem, RTX 4090 töötab
Python ja CUDA dGPU-l3.12 ja CUDA 12.83.12 ja CUDA 12.8
Video taustaprogrammtorchcodec 0.8.0, FFmpeg ainult 4 kuni 7sama
Andmestiku formaatLeRobot v2 pluss meta/modality.jsonei kohaldata
Hugging Face ligipääsheaks kiidetud nvidia/Cosmos-Reason2-2B jaokssama
Muud tööriistadgit-lfs ja uvuv
AY-Robots GPU tase groot1.7 treeneri jaoksA100 80 GB või H100 80 GBpod varustatakse automaatselt
Piiratud ligipääsuga selgroog peatab teid esimesel käivitamisel

Iga GR00T kontrollpunkt, sealhulgas baas nvidia/GR00T-N1.7-3B, laadib esmakordsel kasutamisel nvidia/Cosmos-Reason2-2B ja see repositoorium on piiratud ligipääsuga. README kirjeldab viga täpselt: mudeli laadimine ebaõnnestub GatedRepoError / 401 Client Error veaga. Mida see ei maini, on see, millal see juhtub, mis on pärast seda, kui olete kaardi rentinud ja jooks on alanud. Taotlege ligipääsu mudeli lehel, seejärel käivitage uv run huggingface-cli login või eksportige HF_TOKEN enne, kui midagi rendite.

Samm 0: episoodid ise

Kõik alljärgnev eeldab, et olete juba episoode salvestanud. Kui te seda teinud ei ole, on see tegelik esimene samm ja see on see, mis otsustab, kui hea tulemus saab olla, sest imitatsioonõpe ei suuda taastada teavet, mida andmetes ei ole. Kalibreerige esmalt mõlemad käed, seejärel juhtige järgijat juhtkäega samal ajal kui lerobot-record kirjutab parquet-failid ja kaamera vooged. Kui kalibreerimine on vale, kirjeldavad teie andmestiku liigendväärtused veidi teistsugust robotit kui see, mis hiljem poliitikat täidab, ja ükski treening ei paranda seda.

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 praegusel LeRobotil. Episoodi pikkus on vaikimisi 60 s ja lähtestamisaeg 60 s. so100_follower ja so101_follower on mõlemad registreeritud sama LeRoboti konfiguratsiooniklassi vastu, mistõttu Isaac-GR00T SO100 näide kasutab so101 nimesid; mõlemad töötavad SO-100-l. Kaameranimed, mille siin valite (front, wrist), on nimed, mis peavad uuesti ilmuma failis modality.json.

LeRoboti enda soovitus on salvestada vähemalt 50 episoodi, umbes 10 objekti asukoha kohta, hoida kaamerad fikseerituna ja hoida haaramiskäitumine järjepidevana. Lisage variatsioone hiljem, mitte alguses. Meelespidamist väärt rusikareegel: kui te ei suutnud ülesannet ise ainult kaamerakujutiste põhjal täita, siis poliitika ei suuda seda samuti. Käe-spetsiifilise seadistuse jaoks SO-100 alustamine ja SO-100 LeRoboti leht käsitlevad porte, kalibreerimist ja kaamera indekseid. AY-Robotsil saate seda teha ka interneti kaudu brauserist, kasutades teleoperatsiooni ja salvestada otse sessioonist.

1. samm: andmestik peab olema LeRobot v2.1

See on kõige levinum takistus. LeRoboti praegune CODEBASE_VERSION peaharus on v3.0, nii et kõik, mida täna praeguse tööriistaketiga salvestate, väljub versioonina v3.0. GR00T-i laadur eeldab v2. Repositoorium selgitab selgelt, miks: paljud ülesvoolu andmestikud, nagu DROID, LIBERO ja Bridge, on avaldatud v2-s ning mõlema natiivne tugi on planeeritud, kuid pole veel välja antud. Seega on teisendamine teie ülesanne ja see töötab omaette virtuaalkeskkonnas konkreetsel põhjusel: scripts/lerobot_conversion sisaldab oma pyproject-faili, mis nõuab Python 3.10 või 3.11 ja seob lerobot'i ühe git-kommitiga, samas kui Isaac-GR00T ise nõuab Python 3.12. Installige teisendaja repositooriumi juurkaustast ja saate gr00t paketi asemel, mis on viga, mille eest selle README hoiatab. Kui olete formaadiga uus, selgitab LeRoboti andmestik sõnastiku kirje, mis tegelikult selle sees on.

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
Teisendaja võtab argumendid --repo-id, valikulise --root ja --force-conversion, mis kustutab kõik olemasolevad kohalikud hetktõmmised ja laadib need uuesti alla. See kirjutab codebase_version: v2.1 faili meta/info.json.
Teisendamine kirjutab üle kohapeal

Kui v3.0 andmestik on juba kohapeal olemas, loob skript selle kõrvale v2.1 paigutuse ja seejärel vahetab: algne teisaldatakse versiooniga lisatud samasse kausta, <name>_v3.0, ja teisendatud koopia võtab algse tee. (Skripti enda docstring nimetab seda kausta _v30; kood lisab versioonistringi, nii et tegelikult saate _v3.0.) Teine üllatus: väljund maandub alati kausta <root>/<repo-id> alla, nii et --root examples/SO100/my_dataset_lerobot annab teile examples/SO100/my_dataset_lerobot/<your-hf-user>/<your-dataset>, ja see pikem tee on see, mida --dataset-path hiljem soovib. Kui treeningtöö lükkab teie andmestiku versiooniprobleemide tõttu tagasi, loetleb v3-na tagasi lükatud andmestiku leht täpsed sümptomid.

Struktuur, mida GR00T pärast teisendust soovib, on klassikaline v2 paigutus: meta/info.json, meta/episodes.jsonl, meta/tasks.jsonl, parkettfailid kaustas data/chunk-000/, MP4-failid kaustas videos/chunk-000/observation.images./, ja üks lisafail, mida standardne LeRobot ei oma. See lisafail on koht, kus elab enamik ülejäänud tõrkeid.

2. samm: modality.json, kuus numbrit, mis otsustavad kõik

LeRoboti andmestikus salvestatakse roboti olek ja tegevus lamedate float32 massiividena. SO-100 puhul on mõlema kuju [6]: viis käeliigest ja haarats. Demoandmestik nimetab neid shoulder_pan.pos, shoulder_lift.pos, elbow_flex.pos, wrist_flex.pos, wrist_roll.pos, gripper.pos, kuid need nimed asuvad failis info.json ja parkettfailis pole öeldud, milline indeks on milline. meta/modality.json pakub seda vastendust ja GR00T ilma selleta ei treeni. Siin on see, mida hoidla SO-100 jaoks pakub, sõna-sõnalt.

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. Indeksid on nullipõhised ja järgivad Pythoni viilutamist, seega single_arm on [0:5] ja gripper on [5:6].

Kopeerige see oma teisendatud andmestikku asukohas meta/modality.json ja nimetage videovõtmed ümber vastavalt sellele, kuidas teie kaamerad tegelikult nimetatud on. Kui salvestasite ühe laekaameraga nimega top, siis original_key on observation.images.top ja sõbralik nimi on see, millele teie andmekonfiguratsioon viitab. Need kaks peavad kokku langema ja kumbki neist ei kontrolli teist teie eest. Keele annotatsioon on hullem, sest sama võti peab esinema kolmes kohas.

KihtFailSO-100 vorm, mida repos kasutatakse
Parquet veergdata/chunk-*/episode_*.parquetannotation.human.task_description
modality.json võtimeta/modality.json, jaotises "annotation", ilma eesliiteta annotation.human.task_description
modality_keys andmekonfiguratsioonisyour so100_config.pyannotation.human.task_description
Miks keelevõti inimestele probleeme tekitab

Segmendid pärast annotation. valib andmestiku autor. SO-100 demoandmed kasutavad annotation.human.task_description; LIBERO ja SimplerEnv kasutavad annotation.human.action.task_description. Mõlemad on kehtivad. Kui kopeerisite konfiguratsiooni LIBERO näitest ja suunasite selle oma SO-100 salvestusele, siis keelekanal ei lahendu millekski ja mudel treenib tühja juhise peal. Kadu langeb ikkagi. Poliitika teeb ikkagi midagi. See lihtsalt ignoreerib seda, mida te talle ütlesite.

Samm 3: andmekonfiguratsioon, suhteline käsi ja absoluutne haarats

Modaalsuse konfiguratsioon on Pythoni fail, mitte JSON, sest see otsustab ka, kuidas iga tegevusgrupp on esindatud. See on N1.7 töövoo osa, mida N1.5-s samal kujul ei eksisteerinud, ja osa, mida tasub kaks korda lugeda. Kaasasolev SO-100 konfiguratsioon ennustab viit käe liigest kui RELATIVE deltasid praegusest olekust ja haaratsit kui ABSOLUTE sihtpositsiooni, sest binaarne avatud-või-suletud signaal käitub paremini sihtmärgina kui deltana.

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, kärbitud oluliste osadeni. NON_EEF tähendab liigeste ruumi; EEF eeldaks üheksadimõõtmelist x, y, z vektori ja 6D pöörde kombinatsiooni.

Kaks detaili siin maksavad teile päeva, kui te neid ei tea. Esiteks, action_configs on positsiooniline: dokumendid nõuavad sama pikkust ja sama järjekorda nagu modality_keys, ja nad on otsekohesed selle kohta, mis juhtub, kui see valesti läheb: vale esitusviis rakendatakse vaikselt. Teie haarats treenitakse deltana ja teie käsi absoluutse sihtmärgina, ja veateadet ei ole. Teiseks, register_modality_config kinnitab, et silt ei ole veel registreeritud, nii et teine NEW_EMBODIMENT konfiguratsioon samas Pythoni protsessis sureb veaga Embodiment tag ... already registered. Te ei saa kahte neist ühte skripti importida. Kolmas reegel jõustatakse hiljem, juurutamisel: tegevuse delta_indices peab olema pidev vahemik, mis algab nullist. Hõre aken nagu [0, 4, 8] lükatakse tagasi, sest kõik allavoolu olevad süsteemid indekseerivad ennustatud tükki lineaarselt ja muidu täidaksid valed read.

Muutke delta_indices ja peate statistika uuesti genereerima

Normaliseerimisstatistikad, eriti meta/relative_stats.json, arvutatakse selle horisondi pikkuse jaoks, mis teil oli nende genereerimisel. Lühendage tegevuse horisonti 16-lt 8-le ilma uuesti genereerimata ja treening katkeb veaga IndexError: boolean index did not match indexed array ... dimension is 8 but corresponding boolean dimension is 16. Lahendus on üks käsk: python gr00t/data/stats.py --dataset-path <path> --embodiment-tag NEW_EMBODIMENT --modality-config-path examples/SO100/so100_config.py. Käivitage see pärast iga muudatust delta_indices-s.

Samm 4: keskkond

N1.7 viis hoidla üle aadressile ja Python 3.12-le. Vana conda pluss pip install -e . tee on endiselt olemas README kokkuvolditud osas, kuid see hoiatab, et GPU sõltuvused, sealhulgas flash-attn ja TensorRT, võivad vajada käsitsi installimist. Kasutage uv-d, välja arvatud juhul, kui teil on konkreetne põhjus seda mitte teha. Flash-attn osas säästab üks detail segadust: näete Installing flash-attn prinditakse iga uv run. See ei ehita uuesti. uv valideerib uuesti URL-iga kinnitatud paketi, mis on juba vahemällu salvestatud, ja see võtab kaks või kolm sekundit.

  1. 1
    Installige git-lfs, seejärel kloonige alamoodulitega

    git-lfs on kohustuslik, mitte valikuline. Ilma selleta laaditakse demo_data/ kaustas olevad parquet-failid alla viitena ja demo käivitamine ebaõnnestub andmestiku puhul, mis faililoendis näib olevat olemas.

    bash
    sudo apt install git-lfs && git lfs install
    git clone --recurse-submodules https://github.com/NVIDIA/Isaac-GR00T
    cd Isaac-GR00T
  2. 2
    Installige uv ja sünkroonige keskkond

    Vaikimisi install tõmbab kaasa GPU sõltuvused, sealhulgas flash-attn ja TensorRT. Värskel A100 või H100 kujutisel on see pikim üksik samm, seega tehke see enne, kui hakkate millelegi muule tähelepanu pöörama.

    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
    Autentimine Hugging Face'i vastu

    Tehke seda enne esimest treeningu käivitamist, mitte pärast seda, kui see kaheksa minuti pärast ebaõnnestub.

    bash
    uv run huggingface-cli login   # or: export HF_TOKEN=<your_token>
  4. 4
    Tervisekontroll kaasasolevate SO-100 demoandmete peal

    Enne oma salvestuse puudutamist käivitage 2000 sammu demo_data/cube_to_bowl_5 peal. See on viis episoodi, see lõpeb kiiresti ja see tõestab keskkonda, mitte teie andmeid. Kui see käivitus ebaõnnestub, ei aita miski, mida te oma andmestikuga teete.

    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
Kaks keskkonnapüünist, mis näivad mudeli vigadena

FFmpeg 8. torchcodec 0.8.0 toetab ainult FFmpeg 4 kuni 7, ja Ubuntu 25.10 ning uuemad versioonid tarnivad versiooni 8. Viga on Could not load libtorchcodec, mis kõlab pigem katkise installi kui versioonikonfliktina. Installige vanem käitusaeg, näiteks conda install -c conda-forge 'ffmpeg<8', ja lisage selle teegid LD_LIBRARY_PATH-i. CUDA_HOME on määramata. Peenhäälestus ebaõnnestub täielikult. Käivitage bash scripts/deployment/dgpu/install_deps.sh üks kord või lihtsalt export CUDA_HOME=/usr/local/cuda.

5. samm: peenhäälestuse käsk ja selle lippude tegelikud vaikeväärtused

Asenda demoandmestik enda omaga ja lisa tegelikult soovitud seaded. Allpool on täielik vorm, mida hoidla kasutab oma uue kehastuse õpetuses, sealhulgas laienduse ja kontrollpunktide lipud, mis lühikesest README näitest välja jäävad. See on kitsamas mõttes: keeleline selgroog ja visuaalne kodeerija jäävad külmutatuks ning treenitakse projektorit ja difusiooni tegevuspead.

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
Üks GPU. Kaheksa kaardi puhul asenda käivitaja käsuga uv run torchrun --nproc_per_node=8 --master_port=29500 ja määra --num-gpus 8. Kasuta uv run torchrun, mitte lihtsalt torchrun, vastasel juhul saad vale keskkonna.
LippVaikeväärtus FinetuneConfigisMida see teeb
--global-batch-size64Kogupartii kõikide GPU-de vahel enne gradiendi akumulatsiooni. Kaasasolevad näited kasutavad 32.
--learning-rate1e-4Sama väärtus, mida AY-Robots saadab oma groot1.7 treenerile.
--max-steps10000Optimeerija sammude koguarv. examples/finetune.sh wrapper kasutab samuti vaikeväärtusena 10000.
--gradient-accumulation-steps1Korrutab efektiivset partiid. Väärtused üle 1 annavad hoiatuse akumuleeritud suuruse kohta.
--save-steps and --save-total-limit1000 and 5Kontrollpunktide sagedus ja nende arv, mida säilitatakse. Vanemad kustutatakse.
--weight-decay and --warmup-ratio1e-5 and 0.05Määratud selgesõnaliselt ka examples/finetune.sh poolt.
--state-dropout-prob0.2 in the CLI, 0.8 in the model configJuhuslikult jätab treeningu ajal välja propriotseptiivse oleku. Vähenda seda, kui sinu ülesanne sõltub olekust.
--tune-llm and --tune-visualFalse and FalseSelgroog jääb vaikimisi külmutatuks.
--tune-projector and --tune-diffusion-modelTrue and TrueProjektor ja difusiooni tegevuspea on need, mida tegelikult treenitakse.
--use-percentilesTrueNormaliseeri q01 ja q99 abil, mitte toore miinimumi ja maksimumi abil.
--dataloader-num-workers2Laadija on disaini poolest CPU-põhine. Näited tõstavad selle 4-le.
--seeddoes not existSellel CLI-l puudub seemne lipp.

See viimane rida ei ole trükiviga. launch_finetune.py on tyro CLI, mis on genereeritud andmeklassist, ja sellel andmeklassil puudub seemnevälja (seed field). README märgib eraldi 5–6-protsendilist varieeruvust käivituste vahel, mis on põhjustatud mitte-deterministlikust pilditöötlusest. Kaks identsete lippudega käivitust ei anna identseid kontrollpunkte, mis on väga oluline, kui proovite otsustada, kas hüperparameetri muutus aitas või teil lihtsalt vedas. Võrdluseks, leroboti enda treeneri vaikesäte on seeme 1000, ja LeRobot GR00T retsept edastab --seed=42 selgesõnaliselt.

Valideerimine on vaikimisi välja lülitatud ja dokumenteeritud lipp puudub sellel CLI-l

Peenhäälestus käivitub `eval_strategy="no"` abil, seega puudub valideerimiskadu kõver üldse. Saate ainult treeningukao ja mitte midagi muud. Uue kehastuse juhend käsib selle sisse lülitada `eval-strategy steps --eval-steps 500` abil, kuid seda lippu ei eksisteeri `launch_finetune.py` failis: CLI on genereeritud tyro poolt `FinetuneConfig` andmeklassist, ja `eval_strategy`, `eval_steps` ning `eval_batch_size` on hoopis `TrainingConfig` väljad. Nende vaikesätted on seal `"no"`, `500` ja `2`. Nendeni jõudmiseks kasutage täielikumat sisenemispunkti `gr00t/experiment/launch_train.py`, kus pesastatud lipp on `--training.eval-strategy`. Igal juhul annab ainuüksi langev treeningukadu väga vähe teavet üldistamise kohta, mis on täpselt olukord, mida kirjeldatakse lehel kadu langeb, kuid poliitika ei tee midagi.

Mida maksab 20000-sammuline käivitus

GR00T N1.7 vajab 80 GB kaarti, seega on kuluküsimusel kitsas vastus. AY-Robots platvormil töötab groot1.7 treener A100 80 GB või H100 80 GB tasemel, kus käivitus võtab 3 kuni 6 tundi hinnaga 1.20 kuni 2.00 USD tunnis spot-turul. See on ligikaudu 4 kuni 12 USD vaikimisi 20000-sammulise töö eest. Sama ülesanne SmolVLA või ACT puhul maandub 24 GB kaardil hinnaga 0.30 kuni 0.60 USD tunnis ja 1 kuni 3 USD käivituse kohta. See ongi tegelik kompromiss: GR00T maksab umbes neli korda rohkem katse kohta ja te ei saa seda käivitada oma laua all oleval 4090-l.

MudelGPU taseTüüpiline käitusTüüpiline maksumusMinimaalne episoodide arv
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

50-episoodi miinimum on alampiir, mitte siht. NVIDIA enda KKK on nõudlikum: umbes 100 trajektoori lihtsa fikseeritud asukohaga haaramise ja paigutamise jaoks, 500 või enam keerukate või mitmeastmeliste stseenide jaoks, ja 100 kuni 500 peene manipulatsiooni jaoks. Kui teil on 20 episoodi, veetke pärastlõuna salvestades, mitte õhtul häälestades. andmete kogumise juhend käsitleb, mis eristab kasulikku episoodi raisatud episoodist, salvesta oma esimene andmestik on lühiversioon ja SO-100 andmete kogumine on käe-spetsiifiline.

AY-Robots treeningjuhend GR00T N1.7 jaoks SO-100-l, näidates spetsifikatsiooniriba GPU taseme, nõutava andmestiku formaadi ja treeneri vaikeseadetega.
The /train/groot-n1-7-on-so-100 juhend esitab faktid, mida muidu peaksite käsitsi rekonstrueerima: GPU tase, andmestiku formaat ja treeneri saadetud täpsed vaikeseaded.

Samm 6: avatud ahelaga hindamine enne, kui kätt puudutate

Ärge pange värsket kontrollpunkti füüsilisele käele, et teada saada, kas treening õnnestus. Käivitage esmalt avatud ahela hindamine. See esitab uuesti salvestatud episoodi, küsib mudelilt igal sammul tegevusi ja joonistab ennustuse võrdluseks tegeliku olukorraga, kasutades MSE-d ja MAE-d. See ei maksa midagi ja püüab kinni sammude 2 ja 3 kaardistamisvead.

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
Joonised salvestatakse kausta /tmp/open_loop_eval/traj_<id>.jpeg, kui te ei edasta parameetrit --save-plot-path. Vaikimisi: --execution-horizon 16, --steps 200, --denoising-steps 4, --traj-ids 0.

Hoidla keeldub tahtlikult avaldamast kohandatud andmete siht-MSE-d ja see on õige otsus: number sõltub teie tegevusühikutest, ülesandest ja andmestiku suurusest, seega kellegi teise käest kopeeritud lävi ei tähenda midagi. Oluline on trend. Siin on viiterun, mille hoidla dokumenteerib ühel H100-l viie episoodi demoandmestiku ja 2000 sammuga.

KontrollpunktKeskmine MSE trajektooril 0Keskmine MAE trajektooril 0
50087.55.63
100025.43.30
150013.22.18
200010.01.76

Kuju on signaal, mitte absoluutväärtused. Viga peaks pidevalt langema, kui treeningusammud kogunevad. Keskmistatuna kõigi viie treeningepisoodi, mitte ainult trajektoori 0 põhjal, saavutas hoidla lõplik kontrollpunkt ligikaudu 7.5 MSE ja 1.5 MAE, seega isegi võrdlusjooks annab erinevaid tulemusi sõltuvalt sellest, milliseid episoode keskmistate. Salvestage oma baasjoon muutmata demo käsu abil enne, kui muudate midagi oma andmetes: kui te ei suuda korrata teadaolevalt head jooksu, ei saa te eristada seadistusviga andmeprobleemist. Hoidla kaardistab ka levinud sümptomid põhjustega ja igaüks neist on operatiivne, mitte mudeli viga.

SümptomTõenäoline põhjus
MSE on kontrollpunktides tasane või tõusevÕppimiskiirus on liiga madal või andmed ei lae üldse. Kontrollige --dataset-path ja andmelaadija töölisi.
Ennustuskõver on tasane või konstantnemodality.json võtmed või --modality-config-path ei ühti. Tegevusvõtmed ei ole kaardistatud.
MSE on tohutu või NaN kadu treeningu ajalTegevuse ja oleku normaliseerimine. Kontrollige meta/stats ja veenduge, et tegevusvahemikud on füüsiliselt usutavad.
Hea trajektooril 0, halb väljajäetud episoodidelAndmete nappus, mitte viga. Viis demoepisoodi ei saa üldistada.

Teine tee: lerobot-train Isaac-GR00T asemel

Praegune LeRoboti versioon, 0.6.1 PyPI-s alates 3. augustist 2026, pakub teist ja üsna erinevat viisi samade baaskaalude peenhäälestamiseks. LeRobot eksponeerib GR00T N1.7 poliitikatüübina ja treenib seda oma lerobot-train sisenemispunkti kaudu. Siin on olulised kaks asja. LeRoboti CLI on konsooliskriptide komplekt, seega kõik, mida loete ja mis ütleb python lerobot/scripts/train.py on aegunud ega tööta. Ja LeRobot eemaldas GR00T N1.5 toe täielikult, lükates N1.5 kontrollpunktid ja konfiguratsioonid tagasi migratsioonimärkusega, nii et kui vajate N1.5 LeRoboti kaudu, peate määrama lerobot==0.5.1, viimase versiooni, mis seda toetab, avaldatud 7. aprillil 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-i natiivne GR00T N1.7 retsept. Märkus relative_exclude_joints: haarats on välistatud suhtelistest tegevustest, mis on sama otsus, mille so100_config.py teeb ActionRepresentation.ABSOLUTE abil.
AspektIsaac-GR00T launch_finetune.pylerobot-train --policy.type=groot
Andmestiku versioonAinult LeRobot v2, vajalik teisendamineNatiivne LeRobot andmestik, allapoole versiooni pole vaja
Modaalsuse kaardistaminemeta/modality.json pluss Pythoni andmekonfiguratsioonmodality.json puudub; käitumine määratakse käsurea --policy.* lippudega
Seemejuhuslikkuse seeme puudub täielikult--seed, LeRobot vaikeväärtus 1000
Suhtelised tegevusedandmekonfiguratsioonis võtmepõhine ActionConfig--policy.use_relative_actions pluss --policy.relative_exclude_joints
Avaldatud võrdlustulemusedSO-100 avatud ahela MSE trend demoandmetelLIBERO sviidid, 96.5 protsenti keskmiselt nelja sviidi peale
Kasutuselevõtu teerun_gr00t_server.py pluss eval_so100.py üle ZMQlerobot-rollout, reaalajas tükeldamisega (queue_threshold peaks jääma 5-le või alla selle)
Peenhäälestuse ise käivitamine
Eelised
  • Iga lipp on nähtav ja muudetav. Saate visuaalse kodeerija lahti külmutada, liigutada state_dropout_prob-i või lühendada tegevushorisonti.
  • Avatud ahela graafikud on kohalikud failid. Checkpoint-5000 võrdlemine checkpoint-20000-ga on shelli käsk.
  • Te ei sõltu ühegi platvormi võrgus püsimisest ja kontrollpunkt asub teie kettal standardvormingus.
  • Repositooriumi võrdlusaluste näited LIBERO, SimplerEnv ja DROID jaoks annavad teile teadaolevalt head käivitused, mida reprodutseerida enne, kui usaldate oma andmeid.
Kompromissid
  • Keskkond on enamik tööst. FFmpeg versioon, CUDA_HOME, git-lfs, piiratud tagapõhi, torchcodec: ükski neist pole mudeliprobleem ja igaüks neist peatab käivituse.
  • V3.0 kuni v2.1 teisendamine vajab eraldi virtuaalkeskkonda oma installietapiga ja see kirjutab teie andmestiku kataloogi kohapeal üle.
  • GPU rentimine algab arveldamisega, kui alustate silumist, mitte siis, kui treening algab, ja miski ei peata eksemplari, kui käivitus lõpeb.
  • Seemne puudumine tähendab, et bitt-bitilt reprodutseeritavus puudub, lisaks 5 kuni 6 protsendi suurusele käivituste vahelisele varieeruvusele ainuüksi augmentatsioonist.

Kaks viisi sama kontrollpunkti saamiseks

Rendite GPU ja kontrollite iga sammu. Realistlikult võtab see esimest korda aega ühe pärastlõuna ja iga järgmine kord kakskümmend minutit.

  1. Salvestage episoode lerobot-record abil SO-100-l. Saate LeRobot v3.0 andmestiku.
  2. Teisendage see v2.1-ks, kasutades scripts/lerobot_conversion/convert_v3_to_v2.py oma virtuaalkeskkonnas.
  3. Kirjutage meta/modality.json ja Pythoni modaalsuse konfiguratsioon, mis on registreeritud EmbodimentTag.NEW_EMBODIMENT all.
  4. Rentige 80 GB kaart, kloonige alamoodulitega, sünkroonige uv-ga, autentige Hugging Face'i vastu.
  5. Käivitage launch_finetune.py, seejärel open_loop_eval.py mitme kontrollpunkti peal ja võrrelge MSE trendi enne riistvaraga tegelemist.
  6. Tõmmake kontrollpunkt masinast maha enne eksemplari hävitamist, seejärel ehitage teenindusrada robotkäe juurde.
Samm, mille kõik unustavad

Kopeerige kontrollpunkt renditud eksemplarilt enne selle väljalülitamist. --save-total-limit 5 tähendab ka seda, et vanemad kontrollpunktid kustutatakse treeningu edenedes, nii et kontrollpunkt, mida soovisite sammul 5000, ei pruugi enam sammul 20000 eksisteerida.

AY-Robots treeningmaatriks viie poliitikamudeliga ridadena ja nelja robotkäega veergudena, kus iga lahter viitab konkreetsele treeningjuhendile
The /train maatriks: viis mudelit nelja käe vastu. GR00T N1.7 rida hõlmab ka SO-101, Koch v1.1 ja LeKiwi.

Kontrollpunkti tagasi robotkäele saamine

Isaac-GR00T kasutab serveri-kliendi jaotust üle ZMQ. Poliitika töötab GPU-l ja õhuke klient robotmasinas saadab vaatlusi ning võtab vastu tegevusplokke. SO-100 näide on piisavalt täielik kopeerimiseks: käivita run_gr00t_server.py oma kontrollpunktiga ja --embodiment-tag NEW_EMBODIMENT, seejärel käivita eval_so100.py roboti poolel koos jadapordi, roboti ID, kaamera indeksite ja keelejuhisega. Selles käsus olevad kaameranimed peavad vastama teie modality.json faili sõbralikele nimedele, mitte operatsioonisüsteemi seadmenumbritele.

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 kontrollib, mitu ennustatud sammu täidetakse enne ümberplaneerimist. See peab olema maksimaalselt poliitika action_horizon ja see number on teie modaalsuse konfiguratsioonis action delta_indices pikkus, mitte baasmudeli oma. Kaasasolev SO-100 konfiguratsioon ennustab 16, seega 16 on teie lagi; baas nvidia/GR00T-N1.7-3B kontrollpunkt on konfigureeritud 40 jaoks ja policy.md ütleb selgelt, et peenhäälestatud kontrollpunktid võivad erineda. Ületades selle, saate ValueError'i, mis nimetab mõlemad numbrid. 8 on väärtus, mida dokumendid soovitavad reaalajas juurutamiseks. Vana lipu nimi --action-horizon töötab endiselt, kuid annab hoiatuse.
7.4 V, mitte 12 V

Käe tagasi ühendamise ajal: SO-100 kasutab Feetech STS3215 bussiservosid 7.4 V liinil. Nende toitmine 12 V-ga hävitab need ja see on lihtne viga, kui teil on ka LeKiwi, mille alus töötab 12 V-ga, samas kui selle käsi mitte. Kontrollige toiteallikat enne esimest sisselülitamist, mitte pärast suitsu. Vaadake SO-100 riistvara lehte ja SO-100 vs LeKiwi. Kui käsi lülitub sisse, kuid midagi ei liigu, on servo ei reageeri õige koht alustamiseks.

Nüüd aus osa sellest, kus poliitika töötab, sest treeningul ja teenindamisel on erinevad riistvaralood. Peenhäälestus vajab 40 GB või rohkem. Järeldus mitte: README märgib selle 16 GB või rohkem ja nimetab selgesõnaliselt RTX 4090, nii et kaart, mis teil juba on, saab teenindada kontrollpunkti, mida see poleks kunagi suutnud toota. See, mis otsustab, kas poliitika tundub reageeriv, ei ole VRAM, vaid see, kus server asub. AY-Robots GR00T N1.7 on ainult pilvepõhine, seega maksab juhtimissilmus avaliku interneti edasi-tagasi reisi lisaks 152 ms-le tegevussammu kohta, ja ainult SmolVLA ja ACT töötavad ka lokaalselt. Aeglaseks valimiseks ja paigutamiseks on kaugpod ellujääv. Reaktiivsete asjade puhul mitte: poliitika muutub kõhklevaks viisil, mis näeb välja täpselt nagu treeningu ebaõnnestumine, kuid seda ei ole. ACT 20 ms tegevussammu kohta on mudel, mis talub kõige tihedamat silmust, SmolVLA on 245 ms ja ükski latentsuse häälestamine ei osta tagasi juba kulutatud edasi-tagasi reisi. Käivita oma esimene poliitika juhendab teeninduspoole algusest lõpuni.

Mis tegelikult valesti läheb

  • GatedRepoError esimesel käivitamisel. Teile pole antud juurdepääsu nvidia/Cosmos-Reason2-2B-le või te ei autentinud end. See juhtub pärast seda, kui GPU kell on juba käivitunud.
  • Andmestik laadimisel tagasi lükatud. Peaaegu alati v3.0 andmestik. Teisendage see vanemaks versiooniks. Vaadake andmestik tagasi lükatud kui v3.
  • IndexError sobimatute boolean-mõõtmete kohta. Te muutsite delta_indices'i ja ei genereerinud statistikat uuesti.
  • Mälu otsas pakis 32. Vähendage --global-batch-size ja suurendage --gradient-accumulation-steps või vähendage --num-shards-per-epoch, mida konfiguratsioon VRAM-i piirangu korral selgesõnaliselt soovitab. Vaadake mälu otsas treeningu ajal.
  • Kadu langeb, poliitika ei tee midagi. Vaikimisi puudub valideerimisjaotus, seega puhas treeningkurv tõestab väga vähe. See leht käsitleb diagnoosi.
  • Töötab teie seadistuses ja mitte kusagil mujal. Ootuspärane väikese andmestikuga, mis on filmitud ühes valgustingimuses. NVIDIA soovitab värvivärina augmentatsiooni pluss 20 kuni 50 episoodi erinevates valgustingimustes. Rohkem siin.
  • Haarats ei sulgu kunagi korralikult. Kontrollige, et haaratsi tegevus on ABSOLUUTNE ja käe liigendid RELATIIVSED, selles järjekorras action_configs'is. Haarats ei sulgu loetleb teised põhjused.
  • Kaamera katkeb salvestamise ajal vaikselt. Episood salvestub endiselt ja videovõti on endiselt olemas, mistõttu see on ebameeldiv. Kaamerat ei tuvastatud käsitleb seda.

Kõigi vearežiimide register asub . Kui valite mudelite vahel, mitte ei silu ühte, siis ja sisaldavad võrdlusandmeid koos allikatega, ja on võrdlus, mida enamik inimesi tegelikult vajab, sest see on valik mudeli vahel, mida saate treenida oma laua all oleval kaardil, ja mudeli vahel, mille peenhäälestamiseks peate rentima 80 GB sõlme. Taustaks selle kohta, miks need mudelid nii käituvad, on ja väärivad esmalt lugemist. Ja kui teil veel kätt pole, siis edastab füüsilise SO-100 ilma registreerimiseta.

Mitu episoodi on vaja, enne kui GR00T N1.7 peenhäälestamine on seda väärt?

AY-Robots seab groot1.7 treenerile minimaalseks piiriks 50 episoodi. NVIDIA enda KKK on nõudlikum: umbes 100 trajektoori lihtsa "pick and place" jaoks fikseeritud asukohas, 500 või rohkem keerukate või mitmeastmeliste stseenide jaoks ning 100 kuni 500 peene manipulatsiooni jaoks. Alla 50 episoodi on peaaegu alati parem salvestada rohkem andmeid kui häälestada hüperparameetreid. Kui edu pärast seda stabiliseerub, soovitab NVIDIA HG-DAggerit: käivitage poliitika, sekkuge, kui see ebaõnnestub, ja lisage need parandused andmestikku.

Miks minu andmestik ei lae ja kuidas ma tean, mis versioon see on?

Avage meta/info.json ja lugege codebase_version. LeRoboti praegune CODEBASE_VERSION main-harus on v3.0, seega kõik hiljutise tööriistaketiga salvestatud on v3.0, ja GR00T laadija ootab v2. Teisendage Isaac-GR00T repositooriumist pärit scripts/lerobot_conversion/convert_v3_to_v2.py abil, mis kirjutab teisendatud andmestikku codebase_version: v2.1. Skript töötab oma virtuaalkeskkonnas, sest see vajab teistsugust lerobot versiooni kui GR00T nõuab.

Kas ma saan GR00T N1.7 peenhäälestada RTX 4090-l?

Ei. NVIDIA soovitab peenhäälestamiseks 40 GB või rohkem VRAM-i ja nimetab H100 või L40 sõlmi; teised kaardid töötavad, kuid võtavad palju kauem aega. 4090-l on 24 GB. AY-Robots pakub GR00T N1.7 ainult A100 80 GB ja H100 80 GB tasemel samal põhjusel. Järeldamine on teine lugu: 16 GB on mudeli teenindamiseks piisav, nii et 4090 saab käivitada poliitika, mida see treenida ei saa. Kui soovite VLA-d, mida saate treenida 24 GB-l, siis see on SmolVLA umbes 450 miljoni parameetriga või ACT umbes 80 miljoni parameetriga.

Miks annavad kaks identsete lippudega käivitust erinevad kontrollpunktid?

Sest launch_finetune.py-l puudub seeme. See on tyro CLI, mis on genereeritud andmeklassist, mis ei sisalda seemne välja, seega miski ei fikseeri juhuslike numbrite generaatorit (RNG). Repositoorium märgib eraldi 5 kuni 6 protsendi suurust varieeruvust käivituste vahel, mis on põhjustatud mittedeterministlikust pildi augmentatsioonist. Kui reprodutseeritavus on oluline, kasutage selle asemel LeRoboti teed: lerobot-train võtab --seed ja avaldatud GR00T retsept edastab --seed=42.

Kas ma peaksin kasutama Isaac-GR00T-i või lerobot-train-i?

Kasutage Isaac-GR00T-i, kui soovite referentsimplementatsiooni, võtmepõhist kontrolli tegevuse esituse üle, TensorRT eksporti või võrdlusnäiteid, mida reprodutseerida enne oma andmete usaldamist. Kasutage lerobot-train-i, kui teie andmestik on juba LeRobot v3.0 ja te ei soovi seda teisendada, kui soovite seemet või kui ülejäänud teie süsteem on juba LeRobot. Mõlemad peenhäälestavad samu nvidia/GR00T-N1.7-3B kaalusid. Pange tähele, et LeRobot loobus GR00T N1.5 toetusest täielikult: N1.5 kontrollpunktid lükatakse tagasi migratsioonimärkusega ja peate nende kasutamiseks fikseerima lerobot==0.5.1.

Kas ma vajan tõesti randmekaamerat lisaks esikaamerale?

Kaasasolev SO-100 konfiguratsioon kasutab mõlemat, ja modality.json kaardistab esikaamera ja randmekaamera eraldi videovõtmetena. Saate treenida ühe kaameraga ja mudelikaardi latentsustabel on mõõdetud ühe kaameraga, kuid randmevaade annab poliitikale kasutatavat teavet haaratsi kohta kokkupuute hetkel. Kui haarats sulgub teie väljundites valel ajal, on puuduv või halvasti suunatud randmekaamera üks esimesi asju, mida kontrollida.

Peenhäälestage GR00T N1.7 oma SO-100-l ilma keskkonda eelnevalt ehitamata

Valige mudel, andmestik ja hüperparameetrid vormis. Taustasüsteem rendib A100 80 GB või H100 kohapealselt turult, käivitab treeneri pakiga 32, õppimiskiirusega 1e-4 ja 20000 sammuga ning kirjutab kontrollpunktid objektisalvestusse. Ligikaudu 4 kuni 12 USD käivituse kohta.

Avage GR00T N1.7 treeningjuhend

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started