Leiðbeiningarsíða AY-Robots fyrir þjálfun GR00T N1.7 á SO-100 armi, sem sýnir nauðsynlega GPU stig, gagnasafnssnið og sjálfgefnar stillingar þjálfara
GR00T N1.7SO-100FínstillingLeRobotVLA

Hvernig á að þjálfa GR00T N1.7 á eigin SO-100 gagnasafni

AY-Robots ResearchAugust 23, 202628 mín lestur

Prófuð leiðbeining fyrir fínstillingu NVIDIA GR00T N1.7 á SO-100 LeRobot gagnasafni: raunverulegir fánar, modality.json, v2.1 krafan, hvað keyrsla kostar, og gildrurnar.

NVIDIA sendir með fínstillingardæmi fyrir nákvæmlega þann arm sem þú átt líklega. Inni í Isaac-GR00T geymslunni er mappa sem heitir demo_data/cube_to_bowl_5: fimm þættir, 4.148 rammar á 30 fps, þegar skrifaðir sem LeRobot v2.1, með samsvarandi stillingu fyrir mótun undir examples/SO100/. Þess meta/info.json skýrir frá robot_type: so101_follower, sem í LeRobot er sami stillingarflokkur og so100_follower. Það er sannarlega gagnlegt, því það þýðir að viðmiðunarleiðin fyrir GR00T N1.7 á sex-frelsisgráðu áhugamannaarmi er viðhaldið af fólkinu sem skrifaði líkanið. Þetta er ekki manngerð sýnikennsla minnkuð niður, þetta er sami armurinn.

Slæmu fréttirnar eru fjarlægðin á milli I recorded 60 episodes og the arm does the task. Það eru um sex staðir þar sem þessi pípa bilar hljóðlega frekar en hátt, og fjórir þeirra eru í skrám sem flestir opna aldrei: meta/modality.json, Python gagnastillingin, meta/relative_stats.json, og eigin útgáfustrengur gagnasafnsins. Þessi leiðbeining fer handvirka leiðina frá upphafi til enda með raunverulegum skipunum, sýnir síðan sama verkefni sem eyðublað á AY-Robots. Allt hér að neðan var athugað miðað við Isaac-GR00T aðalgreinina frá 20. ágúst 2026 (n1.7-útgáfulínan) og lerobot 0.6.1, gefið út á PyPI 3. ágúst 2026. Uppstreymi hreyfist hratt, og þar sem fána var breytt segir þessi grein frá því.

Það sem þú þarft að vita áður en þú byrjar

  • GR00T N1.7 fínstilling þarf 40 GB eða meira af VRAM. NVIDIA mælir með H100 eða L40 hnútum. 24 GB RTX 4090 mun ekki ráða við þetta verkefni, þó það muni þjálfa SmolVLA og ACT.
  • Gagnasafnið verður að vera LeRobot v2 (v2.0 eða v2.1) auk GR00T-sértæks meta/modality.json. LeRobot v3.0 gagnasafn hleðst ekki og þarf að breyta því niður.
  • Aðgangsstaðurinn er gr00t/experiment/launch_finetune.py, tyro CLI. Það hefur engan --seed fána, svo keyrslur eru ekki nákvæmlega endurgeranlegar.
  • Fyrir sérsniðinn arm er útfærslumerkið NEW_EMBODIMENT, og það merki gerir --modality-config-path skyldubundið.
  • Meðfylgjandi SO-100 uppskrift spáir fyrir um armliði sem HLUTFALLSLEGAR breytingar og gripinn sem ALGJÖRT markmið. Að fá þá pörun öfuga er hljóðlát bilun, ekki villa.
  • Á AY-Robots er sama verkefni eyðublað: 20000 skref, lota 32, námsferill 1e-4, um það bil 4 til 12 USD á A100 80 GB eða H100 flokki.

Hvað GR00T N1.7 raunverulega er

GR00T N1.7 er sjón-tungumál-aðgerðarlíkan með tvöföldu kerfisskipulagi sem lýst er í upprunalegu GR00T N1 greininni: sjón-tungumálseining sem les myndavélarnar og leiðbeiningarnar, og dreifingarspennir sem breytir því í samfelldan búnt af hreyfistýringum. N1.7 leysti fyrri helminginn af hólmi. Eagle burðarásinn frá N1.6 er horfinn, skipt út fyrir nvidia/Cosmos-Reason2-2B á Qwen3-VL arkitektúr, og líkanið var forþjálfað á um það bil 20.000 klukkustundum af sjálfhverfum mannlegum myndböndum auk vélmennagagna. Eigin skrif NVIDIA gefa upp töluna 20.854 klukkustundir og greina frá því að með því að fara úr 1k í 20k klukkustundir meira en tvöfaldast meðaltal verkefnalokunar.

Seinni helmingurinn breyttist líka, á vegu sem skipta máli fyrir keyrsluna þína. Aðgerðarhausinn fór úr 32 dreifingarlögum í 16, fyrirséð aðgerðarbútur stækkaði úr 16 skrefum í 40, og hámarks ástands- og aðgerðarbreidd fór úr 29 í 132. Þessar þrjár tölur koma úr breytingaskrá í README geymslunnar; eigin kynningarfærsla NVIDIA lýsir enn kerfi 1 sem 32 laga DiT, svo þar sem þau tvö eru ósammála, treystu geymslunni sem þú ert að klóna. Aðgerðir eru sjálfgefið gefnar upp í hlutfallslegu enda-áhrifara rými, frávikum frá núverandi stöðu frekar en algildum markmiðum, sem er það sem gerir það að verkum að forþekking á meðferð sem lærð er úr mannlegum myndböndum getur yfirfærst í vélmennastýringu yfirleitt. Hausinn sjálfur er flæðisjöfnunar dreifingarspennir, sama fjölskylda og Pi0.5 en með annarri burðarás fyrir framan hann. Ef þú ert enn á fyrri kynslóðinni, N1.7 á móti N1.5 fjallar um hvort uppfærslan réttlæti endurgerð leiðslunnar þinnar.

EiginleikiGildiHvaðan það kemur
Færibreytur3,000,000,000Hugging Face model card
Sjón-tungumálsgrindnvidia/Cosmos-Reason2-2B (Qwen3-VL), gated on Hugging Facerepo README
AðgerðarhausFlow-matching diffusion transformer, 16 layers (N1.6 had 32)repo README
Fyrirséður aðgerðarsjóndeildarhringur40 steps for the base checkpoint (N1.6 had 16)getting_started/policy.md and repo README
Hámarks ástands- og aðgerðarbreidd132 (N1.6 had 29)repo README
KóðaleyfiApache 2.0Isaac-GR00T repository
ÞyngdarleyfiNVIDIA Open Model License Agreementmodel card
Seinkun, H100 80 GB, PyTorch eager, 4 afhávaðaskref, 1 myndavél85.8 ms end to end, 11.7 Hzmodel card timing table
Sami vélbúnaður, TensorRT full leiðsla27.9 ms end to end, 35.9 Hzmodel card timing table
Seinkun sem AY-Robots gefur upp fyrir þjónustað GR00T N1.7152 ms per action stepAY-Robots policy catalog

Þessar síðustu þrjár raðir útskýra mest af þeim vonbrigðum sem fólk greinir frá. Fyrirsögnin 27.9 ms er TensorRT vél á H100 með einni myndavél og fjórum afhávaðaskrefum. Venjulegt PyTorch á sama korti er 85.8 ms, og líkanakortið setur bilið á 3.08x. Engin tala inniheldur þjónustulag, aðra myndavél eða netstökk. 152 ms á aðgerðarskref sem AY-Robots gefur upp fyrir þjónustað GR00T N1.7 er talan með þjónustu í lykkjunni, og almenn internetferð fram og til baka bætist ofan á það. Meira um þetta í lokin. Fyrir tölurnar við hlið annarra líkana, GR00T N1.7 á móti Pi0.5 og GR00T N1.7 á móti SmolVLA sýna þær hlið við hlið.

AY-Robots líkanasíðan fyrir GR00T N1.7 sem sýnir fjölda færibreyta, GPU flokk, ályktunartöf og tilgreinda styrkleika og takmarkanir líkansins.
Síðan /policies/groot-n1-7 inniheldur sömu forskriftarlistann og þú myndir annars setja saman handvirkt úr model card og repo README.

Hvað keyrslan þarf áður en þú slærð inn eitthvað

KrafaFínstillingÁlyktun
VRAM, leiðbeiningar frá NVIDIA40 GB eða meira, H100 eða L40 mælt með16 GB eða meira, RTX 4090 virkar
Python og CUDA á dGPU3.12 og CUDA 12.83.12 og CUDA 12.8
Myndbandsbakenditorchcodec 0.8.0, FFmpeg 4 til 7 eingöngusama
Snið gagnasafnsLeRobot v2 auk meta/modality.jsoná ekki við
Aðgangur að Hugging Facesamþykkt fyrir nvidia/Cosmos-Reason2-2Bsama
Önnur verkfærigit-lfs og uvuv
AY-Robots GPU flokkur fyrir groot1.7 þjálfarannA100 80 GB eða H100 80 GBpod úthlutað sjálfkrafa
Lokaði burðarásinn mun stöðva þig í fyrstu keyrslu

Sérhver GR00T geymslustaður, þar á meðal grunn nvidia/GR00T-N1.7-3B, hleður nvidia/Cosmos-Reason2-2B við fyrstu notkun, og það geymslusvæði er lokað. README skráin lýsir biluninni nákvæmlega: hleðsla líkans mistekst með GatedRepoError / 401 Client Error. Það sem ekki er minnst á er hvenær það gerist, sem er eftir að þú hefur leigt kortið og keyrslan er hafin. Biðja um aðgang á líkanasíðunni, keyrðu síðan uv run huggingface-cli login eða flyttu út HF_TOKEN áður en þú leigir eitthvað.

Skref 0: þættirnir sjálfir

Allt hér að neðan gerir ráð fyrir að þú hafir þegar tekið upp þætti. Ef ekki, þá er það hið raunverulega fyrsta skref og það er það sem ræður því hversu góð niðurstaðan getur orðið, því herminám getur ekki endurheimt upplýsingar sem ekki eru í gögnunum. Kvörðuðu báða armana fyrst, keyrðu síðan fylgjandann með leiðtogaarmi á meðan lerobot-record skrifar parquet skrárnar og myndavélarstraumana. Ef kvörðun er röng, lýsa liðgildin í gagnasafninu þínu örlítið öðruvísi vélmenni en því sem síðar mun framkvæma stefnuna, og engin þjálfun lagar það.

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 á núverandi LeRobot. Sjálfgefin lengd þáttar er 60 s og endurstillingartími 60 s. so100_follower og so101_follower eru báðir skráðir gegn sama LeRobot stillingarflokki, þess vegna notar Isaac-GR00T SO100 dæmið so101 nöfnin; annaðhvort virkar á SO-100. Nöfn myndavélanna sem þú velur hér (front, wrist) eru nöfnin sem verða að birtast aftur í modality.json.

Ráð LeRobot er að taka upp að minnsta kosti 50 þætti með um 10 á hvern stað hlutar, halda myndavélunum föstum og halda griphegðun stöðugri. Bættu við breytileika síðar, ekki í upphafi. Þumalputtareglan sem vert er að muna: ef þú gætir ekki framkvæmt verkefnið sjálfur út frá myndavélarmyndunum einum saman, þá getur stefnan það ekki heldur. Fyrir uppsetningu sem er sértæk fyrir arminn, SO-100 byrjunarleiðbeiningar og SO-100 LeRobot síðan fjalla um tengi, kvörðun og myndavélarvísitölur. Á AY-Robots geturðu einnig gert þetta yfir internetið úr vafranum með því að nota fjarstýringu og tekið upp beint úr lotunni.

Skref 1: gagnasafnið verður að vera LeRobot v2.1

Þetta er ein algengasta hindrunin. Núverandi CODEBASE_VERSION á aðalgreininni er v3.0, svo allt sem þú tekur upp í dag með núverandi verkfærakeðju kemur út sem v3.0. Hleðslutæki GR00T gerir ráð fyrir v2. Geymslan er skýr um ástæðuna: mörg gagnasöfn uppstreymis eins og DROID, LIBERO og Bridge eru gefin út í v2, og innfæddur stuðningur við bæði er áætlaður en ekki sendur. Svo umbreytingin er á þína ábyrgð, og hún keyrir í eigin sýndarumhverfi af ákveðinni ástæðu: scripts/lerobot_conversion ber með sér eigið pyproject sem biður um Python 3.10 eða 3.11 og festir lerobot við eina git commit, á meðan Isaac-GR00T sjálft krefst Python 3.12. Settu upp breytirann frá rót geymslunnar og þú færð gr00t pakka í staðinn, sem eru mistökin sem README þess varar við. Ef þú ert nýr í sniðinu, þá útskýrir LeRobot gagnasafnið orðalistafærslan hvað er í raun og veru inni í einu slíku.

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
Breytirinn tekur við --repo-id, valfrjálsum --root, og --force-conversion, sem eyðir öllum núverandi staðbundnum skyndimyndum og hleður þeim niður aftur. Hann skrifar codebase_version: v2.1 í meta/info.json.
Umbreytingin skrifar yfir á staðnum

Ef v3.0 gagnasafnið er þegar til staðbundið, byggir skriftan v2.1 skipulagið við hliðina á því og skiptir svo: upprunalega er fært í systurmöppu með útgáfunni bætt við, <name>_v3.0, og umbreytta afritið tekur upprunalegu slóðina. (Eigin docstring skriftunnar kallar þá möppu _v30; kóðinn bætir við útgáfustrengnum, svo það sem þú færð í raun er _v3.0.) Önnur óvænting: úttakið lendir alltaf undir <root>/<repo-id>, svo --root examples/SO100/my_dataset_lerobot gefur þér examples/SO100/my_dataset_lerobot/<your-hf-user>/<your-dataset>, og sú lengri slóð er sú sem --dataset-path vill síðar. Þegar þjálfunarverkefni hafnar gagnasafninu þínu vegna útgáfuástæðna, síðan um gagnasafninu hafnað sem v3 listar upp nákvæm einkenni.

Uppbyggingin sem GR00T vill eftir umbreytingu er klassískt v2 skipulag: meta/info.json, meta/episodes.jsonl, meta/tasks.jsonl, parquet skrár undir data/chunk-000/, MP4 skrár undir videos/chunk-000/observation.images./, og ein auka skrá sem staðlað LeRobot hefur ekki. Sú auka skrá er þar sem flestar eftirstandandi bilanir búa.

Skref 2: modality.json, tölurnar sex sem ráða öllu

Í LeRobot gagnasafni eru ástand vélmennisins og aðgerðin geymd sem flatar float32 fylki. Fyrir SO-100 hafa bæði lögun [6]: fimm armliðir og griparmi. Kynningargagnasafnið nefnir þá shoulder_pan.pos, shoulder_lift.pos, elbow_flex.pos, wrist_flex.pos, wrist_roll.pos, gripper.pos, en þessi nöfn búa í info.json og ekkert í parquet skránni segir hvaða vísir er hvaða. meta/modality.json gefur þessa kortlagningu, og GR00T mun ekki þjálfa án hennar. Hér er sú sem geymslan sendir fyrir SO-100, orðrétt.

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. Vísar eru núll-grunnaðir og fylgja Python sneiðingu, svo single_arm er [0:5] og gripper er [5:6].

Afritaðu það í umbreytt gagnasafn þitt á meta/modality.json og endurnefndu myndbandslyklana í það sem myndavélarnar þínar heita í raun. Ef þú tókst upp með einni yfirlitsmyndavél sem heitir top, þá er original_key observation.images.top og vinalega nafnið er það sem gagnastillingin þín mun vísa í. Þau tvö verða að vera sammála, og hvorugt þeirra athugar hitt fyrir þig. Tungumálaskýringin er verri, því sami lykillinn þarf að birtast á þremur stöðum.

LagSkráSO-100 form notað í geymslunni
Parquet dálkurdata/chunk-*/episode_*.parquetannotation.human.task_description
modality.json lykillmeta/modality.json, under "annotation", without the annotation. prefixhuman.task_description
modality_keys í gagnastillingunniyour so100_config.pyannotation.human.task_description
Af hverju tungumálalykillinn veldur vandræðum

Hlutarnir á eftir annotation. eru valdir af þeim sem bjó til gagnasafnið. The SO-100 demo data uses annotation.human.task_description; LIBERO and SimplerEnv use annotation.human.action.task_description. Bæði eru gild. Ef þú afritaðir stillingu úr LIBERO dæmi og beindir henni á þína eigin SO-100 upptöku, leysist tungumálaleiðin í ekki neitt og líkanið þjálfast á tómri leiðbeiningu. Tap minnkar samt. Stefna gerir samt eitthvað. Það hunsar bara það sem þú baðst það um að gera.

Skref 3: gagnastillingin, hlutfallslegur armur og algjör gripur

Stillingar fyrir mótun (modality config) eru Python skrá frekar en JSON, því hún ákveður einnig hvernig hver aðgerðahópur er táknaður. Þetta er sá hluti N1.7 vinnuflæðisins sem var ekki til í sömu mynd í N1.5, og sá hluti sem vert er að lesa tvisvar. SO-100 stillingin sem fylgir spáir fyrir um fimm armliði sem RELATIVE hlutfallslegar (relative) breytingar frá núverandi ástandi og gripinn sem ABSOLUTE algilda (absolute) markstöðu, því tvíundar opnunar- eða lokunarmerki hegðar sér betur sem markmið en sem breyting.

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, stytt niður í það helsta. NON_EEF þýðir liðrými; EEF myndi búast við níu-víddar vigri af x, y, z auk 6D snúnings.

Tvö smáatriði hér munu kosta þig heilan dag ef þú þekkir þau ekki. Í fyrsta lagi, action_configs er staðbundin: skjölun krefst sömu lengdar og sömu röðar og modality_keys, og þau eru skýr um afleiðingarnar af því að gera mistök, sem er að röng framsetning er notuð án viðvörunar. Griparinn þinn er þjálfaður sem breyting og armurinn þinn sem algilt markmið, og engin villuboð birtast. Í öðru lagi, register_modality_config staðfestir að merkið sé ekki þegar skráð, svo önnur NEW_EMBODIMENT stilling í sama Python ferli deyr með Embodiment tag ... already registered. Þú getur ekki flutt inn tvær slíkar í eitt skjal. Þriðja reglan er framfylgt síðar, við dreifingu: aðgerðin delta_indices verður að vera samliggjandi svið sem byrjar á núlli. Dreifður gluggi eins og [0, 4, 8] er hafnað, því allt niðurstreymis vísar í spáða hluta línulega og myndi annars framkvæma rangar raðir.

Breyttu delta_indices og þú verður að endurnýja tölfræðina

Staðlaðar tölfræði, sérstaklega meta/relative_stats.json, eru reiknaðar fyrir þá sjóndeildarhringslengd sem þú hafðir þegar þú bjóst þær til. Styttu aðgerðarsjóndeildarhringinn úr 16 í 8 án þess að endurnýja og þjálfunin deyr með IndexError: boolean index did not match indexed array ... dimension is 8 but corresponding boolean dimension is 16. Lausnin er ein skipun: python gr00t/data/stats.py --dataset-path <path> --embodiment-tag NEW_EMBODIMENT --modality-config-path examples/SO100/so100_config.py. Keyrðu hana eftir allar breytingar á delta_indices.

Skref 4: umhverfið

N1.7 færði geymsluna yfir á og Python 3.12. Gamla conda plús pip install -e . leiðin er enn til í samfelldum hluta README, en hún varar við því að GPU-háðir pakkar, þar á meðal flash-attn og TensorRT, gætu þurft handvirka uppsetningu. Notaðu uv nema þú hafir sérstaka ástæðu til að gera það ekki. Varðandi flash-attn, þá sparar eitt smáatriði rugling: þú munt sjá Installing flash-attn prentað út í hvert skipti sem þú keyrir uv run. Það er ekki að endurbyggja. uv er að endurstaðfesta URL-fastan hjólapakka sem er þegar í skyndiminni, og það tekur tvær eða þrjár sekúndur.

  1. 1
    Settu upp git-lfs, klónaðu síðan með undireiningum

    git-lfs er nauðsynlegt, ekki valfrjálst. Án þess koma parquet skrárnar í demo_data/ niður sem bendistubbar, og kynningin mistekst á gagnasafni sem virðist vera til staðar í skráarlistanum.

    bash
    sudo apt install git-lfs && git lfs install
    git clone --recurse-submodules https://github.com/NVIDIA/Isaac-GR00T
    cd Isaac-GR00T
  2. 2
    Settu upp uv og samstilltu umhverfið

    Sjálfgefin uppsetning sækir GPU-háðir pakka, þar á meðal flash-attn og TensorRT. Á nýrri A100 eða H100 mynd er þetta lengsta einstaka skrefið, svo gerðu það áður en þú ferð að gefa öðru gaum.

    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
    Auðkenndu þig gegn Hugging Face

    Gerðu þetta áður en fyrsta þjálfunin hefst, ekki eftir að hún mistekst eftir átta mínútur.

    bash
    uv run huggingface-cli login   # or: export HF_TOKEN=<your_token>
  4. 4
    Heilbrigðisathugun á meðfylgjandi SO-100 kynningargögnum

    Áður en þú snertir eigin upptöku skaltu keyra 2000 skref á demo_data/cube_to_bowl_5. Þetta eru fimm þættir, það klárast hratt, og það sannar umhverfið frekar en gögnin þín. Ef þessi keyrsla mistekst, mun ekkert sem þú gerir við gagnasafnið þitt hjálpa.

    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
Tvær umhverfisgildrur sem líta út eins og villur í líkaninu

FFmpeg 8. torchcodec 0.8.0 styður aðeins FFmpeg 4 til 7, og Ubuntu 25.10 og nýrri útgáfur innihalda útgáfu 8. Villan er Could not load libtorchcodec, sem lítur út eins og biluð uppsetning frekar en útgáfuágreiningur. Settu upp eldri keyrslutíma, til dæmis conda install -c conda-forge 'ffmpeg<8', og settu bókasöfnin á LD_LIBRARY_PATH. CUDA_HOME er óstillt. Fínstilling mistekst alveg. Keyrðu bash scripts/deployment/dgpu/install_deps.sh einu sinni, eða einfaldlega export CUDA_HOME=/usr/local/cuda.

Skref 5: fínstillingar skipunin og raunveruleg sjálfgefin gildi fána hennar

Skiptu út kynningargagnasafninu fyrir þitt eigið og bættu við þeim stillingum sem þú raunverulega vilt. Hér fyrir neðan er full útgáfa sem geymslan notar í sinni eigin nýju-líkamsgerðar kennsluefni, þar á meðal stækkunar- og geymslupunktafánar sem stutta README dæmið sleppir. Þetta er í þröngum skilningi: tungumálsgrindin og sjónræni kóðarinn haldast frosnir, og það sem þjálfast er skjávarpinn og dreifingar aðgerðarhausinn.

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
Eitt GPU. Fyrir átta kort, skiptu út ræsiforritinu fyrir uv run torchrun --nproc_per_node=8 --master_port=29500 og stilltu --num-gpus 8. Notaðu uv run torchrun, ekki bara torchrun, annars færðu rangt umhverfi.
FániSjálfgefið í FinetuneConfigHvað það gerir
--global-batch-size64Heildar lotustærð yfir öll GPU áður en hallasöfnun á sér stað. Dæmin sem fylgja nota 32.
--learning-rate1e-4Sama gildi og AY-Robots sendir fyrir groot1.7 þjálfarann sinn.
--max-steps10000Heildar fínstillingarskref. examples/finetune.sh umbúðirnar eru einnig sjálfgefnar 10000.
--gradient-accumulation-steps1Margfaldar virka lotustærð. Gildi yfir 1 gefa frá sér viðvörun sem segir þér uppsafnaða stærð.
--save-steps and --save-total-limit1000 and 5Tíðni geymslupunkta, og hversu margir eru geymdir. Eldri eru eytt.
--weight-decay and --warmup-ratio1e-5 and 0.05Stillt sérstaklega af examples/finetune.sh líka.
--state-dropout-prob0.2 in the CLI, 0.8 in the model configSleppir af handahófi eiginástandi meðan á þjálfun stendur. Lækkaðu það ef verkefnið þitt byggir á ástandi.
--tune-llm and --tune-visualFalse and FalseBurðarvirkið helst frosið sjálfgefið.
--tune-projector and --tune-diffusion-modelTrue and TrueSkjávarpinn og dreifingar aðgerðarhausinn eru það sem raunverulega þjálfast.
--use-percentilesTrueStaðlaðu með q01 og q99 í stað óunninna lágmarks- og hámarksgilda.
--dataloader-num-workers2Hleðslutækið er CPU-undirstaða samkvæmt hönnun. Dæmin hækka þetta í 4.
--seeddoes not existÞað er enginn seed fáni á þessu CLI.

Síðasta röðin er ekki innsláttarvilla. launch_finetune.py er tyro CLI sem er búið til úr dataclass, og sá dataclass hefur ekkert seed-svæði. README skjalið tekur sérstaklega fram 5 til 6 prósenta frávik milli keyrslna af völdum ónákvæmrar myndaukningar. Tvær keyrslur með eins flöggum munu ekki framleiða eins checkpoints, sem skiptir miklu máli þegar reynt er að ákveða hvort breyting á hyperparameter hafi hjálpað eða hvort þú hafir verið heppinn. Til samanburðar, sjálfgefinn trainer lerobot notar seed 1000, og LeRobot GR00T recipe sendir --seed=42 skýrt.

Staðfesting er sjálfgefið óvirk, og skráð flagg er ekki á þessu CLI

Fínstilling keyrir með eval_strategy="no", svo það er engin staðfestingartapferill yfirleitt. Þú færð þjálfunartap og ekkert annað. Leiðbeiningar um nýja útfærslu segja þér að kveikja á því með --eval-strategy steps --eval-steps 500, en það flagg er ekki til á launch_finetune.py: CLI er búið til af tyro úr FinetuneConfig dataclassanum, og eval_strategy, eval_steps og eval_batch_size eru svæði í TrainingConfig í staðinn. Sjálfgefin gildi þeirra þar eru "no", 500 og 2. Til að ná í þau, notaðu fullkomnari inngangspunktinn gr00t/experiment/launch_train.py, þar sem innbyggða flaggið er --training.eval-strategy. Hvort sem er, þá segir lækkandi þjálfunartap eitt og sér mjög lítið um generalization, sem er nákvæmlega sú staða sem lýst er á tap lækkar en stefnan gerir ekkert.

Hvað 20000 skrefa keyrsla kostar

GR00T N1.7 þarf 80 GB kort, svo kostnaðarspurningin hefur þröngt svar. Á AY-Robots keyrir groot1.7 trainerinn á A100 80 GB eða H100 80 GB flokki, þar sem keyrsla tekur 3 til 6 klukkustundir á 1.20 til 2.00 USD á klukkustund á spot market. Það er um það bil 4 til 12 USD fyrir sjálfgefna 20000 skrefa vinnu. Sama verkefni á SmolVLA eða ACT lendir á 24 GB korti á 0.30 til 0.60 USD á klukkustund og 1 til 3 USD á keyrslu. Það er raunverulega málamiðlunin: GR00T kostar um fjórum sinnum meira á tilraun, og þú getur ekki keyrt það á 4090 undir skrifborðinu þínu.

LíkanGPU flokkurDæmigerð keyrslaDæmigerður kostnaðurLágmarksþættir
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

Lágmarkið 50-þáttur er lágmark, ekki markmið. Algengar spurningar NVIDIA sjálfs eru kröfumeiri: um það bil 100 ferlar fyrir einfalda staðsetningu og flutning, 500 eða fleiri fyrir flóknar eða margþrepa senur, og 100 til 500 fyrir fínlega meðhöndlun. Ef þú ert með 20 þætti, eyddu síðdeginu í upptökur frekar en kvöldinu í fínstillingu. leiðbeiningar um gagnasöfnun fjalla um hvað skilur gagnlegan þátt frá sóuðum, skráðu fyrsta gagnasafnið þitt er stutta útgáfan, og SO-100 gagnasöfnun er sú sem er sérstök fyrir arminn.

Þjálfunarleiðbeiningar AY-Robots fyrir GR00T N1.7 á SO-100, sem sýna forskriftarlistann með GPU flokki, nauðsynlegu gagnasafnsformi og sjálfgefnum stillingum þjálfarans
Leiðbeiningarnar /train/groot-n1-7-on-so-100 sýna staðreyndir sem þú myndir annars þurfa að endurgera handvirkt: GPU flokk, gagnasafnsform og nákvæmar sjálfgefnar stillingar sem þjálfarinn sendir.

Skref 6: opinn lykkju mat áður en þú snertir arminn

Ekki setja nýjan eftirlitsstað á líkamlegan arm til að komast að því hvort þjálfunin virkaði. Keyrðu opna lykkju matið fyrst. Það spilar upptekinn þátt aftur, biður líkanið um aðgerðir í hverju skrefi og teiknar spá á móti raunverulegum gögnum með MSE og MAE. Það kostar ekkert og það grípur kortlagningarvillur frá skrefum 2 og 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
Myndir lenda í /tmp/open_loop_eval/traj_<id>.jpeg nema þú sendir --save-plot-path. Sjálfgefið: --execution-horizon 16, --steps 200, --denoising-steps 4, --traj-ids 0.

Gagnasafnið neitar vísvitandi að birta mark-MSE fyrir sérsniðin gögn, og það er rétt ákvörðun: talan fer eftir aðgerðareiningum þínum, verkefni þínu og stærð gagnasafnsins, svo þröskuldur afritaður frá armi einhvers annars þýðir ekkert. Það sem er þýðingarmikið er þróunin. Hér er viðmiðunaraksturinn sem gagnasafnið skjalfestir á einum H100 með fimm þátta kynningargagnasafninu og 2000 skrefum.

EftirlitsstaðurMeðal-MSE á ferli 0Meðal-MAE á ferli 0
50087.55.63
100025.43.30
150013.22.18
200010.01.76

Lögunin er merkið, ekki algildin. Villa ætti að minnka jafnt og þétt eftir því sem þjálfunarskref safnast upp. Meðaltal yfir alla fimm þjálfunarþættina, frekar en aðeins feril 0, sýndi að lokapunktur geymslunnar skoraði um það bil 7.5 MSE og 1.5 MAE, svo jafnvel viðmiðunaraksturinn lesst öðruvísi eftir því hvaða þætti þú meðaltalar. Skráðu þína eigin grunnlínu á óbreyttri kynningarskipan áður en þú breytir einhverju í þínum eigin gögnum: ef þú getur ekki endurtekið þekktan góðan akstur geturðu ekki greint uppsetningarvillu frá gagnamáli. Geymslan kortleggur einnig algeng einkenni við orsakir, og hvert þeirra er rekstrarlegt frekar en líkanagalla.

EinkenniLíkleg orsök
MSE flatt eða hækkandi yfir eftirlitsstöðvarNámsferill of lágur, eða gögnin hlaðast alls ekki. Athugaðu --dataset-path og dataloader vinnsluaðila.
Spáferill er flatur eða stöðugurmodality.json lyklar eða --modality-config-path passa ekki. Aðgerðalyklar eru ekki kortlagðir.
MSE gríðarlegt, eða NaN tap við þjálfunAðgerða- og ástandsnormalisering. Staðfestu meta/stats og að aðgerðasviðin séu líkamlega trúverðug.
Gott á ferli 0, lélegt á óþekktum þáttumGagnaskortur, ekki galli. Fimm kynningarþættir geta ekki alhæft.

Hin leiðin: lerobot-train í stað Isaac-GR00T

Núverandi LeRobot útgáfa, 0.6.1 á PyPI síðan 3. ágúst 2026, býður upp á aðra og nokkuð ólíka leið til að fínstilla sömu grunnþyngdir. LeRobot sýnir GR00T N1.7 sem stefnugerð og þjálfar hana í gegnum sinn eigin lerobot-train inngangspunkt. Tvennt skiptir máli hér. LeRobot CLI er safn af stjórnskipanaskriftum, svo allt sem þú lest sem segir python lerobot/scripts/train.py er úrelt og mun ekki keyra. Og LeRobot fjarlægði GR00T N1.5 stuðning alfarið, hafnaði N1.5 eftirlitsstöðvum og stillingum með færslutilkynningu, svo ef þú þarft N1.5 í gegnum LeRobot verður þú að festa lerobot==0.5.1, síðustu útgáfuna sem styður það, gefin út 7. apríl 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-innfædd GR00T N1.7 uppskriftin. Athugið relative_exclude_joints: griparinn er undanskilinn hlutfallslegum aðgerðum, sem er sama ákvörðun og so100_config.py tekur með ActionRepresentation.ABSOLUTE.
ÞátturIsaac-GR00T launch_finetune.pylerobot-train --policy.type=groot
Útgáfa gagnasafnsAðeins LeRobot v2, umbreyting nauðsynlegInnfætt LeRobot gagnasafn, engin niðurfærsla
Kortlagning mótunarmeta/modality.json auk Python gagnastillingarekkert modality.json; hegðun stillt með --policy.* fánum á skipanalínunni
Fræenginn fræfáni yfirleitt--seed, LeRobot sjálfgefið 1000
Hlutfallslegar aðgerðirActionConfig fyrir hvern lykil í gagnastillingunni--policy.use_relative_actions auk --policy.relative_exclude_joints
Birtar viðmiðunarniðurstöðurSO-100 opinn lykkju MSE þróun á sýnigögnumLIBERO svítur, 96.5 prósent meðaltal yfir fjórar svítur
Útfærsluleiðrun_gr00t_server.py auk eval_so100.py yfir ZMQlerobot-rollout, með rauntíma skiptingu (queue_threshold ætti að vera á eða undir 5)
Að keyra fínstillinguna sjálfur
Kostir
  • Hver fáni er sýnilegur og breytanlegur. Þú getur afþýtt sjónræna kóðarann, fært state_dropout_prob, eða stytt aðgerðarsjóndeildarhringinn.
  • Opinn lykkju myndritin eru staðbundnar skrár. Að bera saman checkpoint-5000 við checkpoint-20000 er skipanalína.
  • Þú ert ekki háður því að neinn vettvangur haldist á netinu, og gátpunkturinn situr á disknum þínum á staðlaðu sniði.
  • Viðmiðunardæmi geymslunnar fyrir LIBERO, SimplerEnv og DROID gefa þér þekktar góðar keyrslur til að endurtaka áður en þú treystir eigin gögnum.
Málamiðlanir
  • Umhverfið er mest af vinnunni. FFmpeg útgáfa, CUDA_HOME, git-lfs, gated backbone, torchcodec: ekkert af þessu eru líkanvandamál og hvert og eitt þeirra stöðvar keyrsluna.
  • Umbreytingin frá v3.0 í v2.1 þarf sérstakt sýndarumhverfi með eigin uppsetningarskrefi, og hún skrifar yfir gagnasafnsskrána þína á staðnum.
  • Leiga á GPU byrjar að rukka þegar þú byrjar að villuleita, ekki þegar þjálfun hefst, og ekkert stöðvar tilvikið þegar keyrslunni lýkur.
  • Enginn fræfáni þýðir enga bit-fyrir-bit endurgerðanleika, auk 5 til 6 prósenta breytileika milli keyrslna frá stækkun einni saman.

Tvær leiðir til að fá sama gátpunkt

Þú leigir GPU-ið og átt hvern einasta skref. Raunhæft er að þetta taki einn eftirmiðdag í fyrsta skipti og tuttugu mínútur í hvert skipti eftir það.

  1. Taktu upp þætti með lerobot-record á SO-100. Þú færð LeRobot v3.0 gagnasafn.
  2. Umbreyttu því niður í v2.1 með scripts/lerobot_conversion/convert_v3_to_v2.py í eigin sýndarumhverfi.
  3. Skrifaðu meta/modality.json og Python modality stillingu, skráða undir EmbodimentTag.NEW_EMBODIMENT.
  4. Leigðu 80 GB kort, klónaðu með undireiningum, uv sync, auðkenndu þig gegn Hugging Face.
  5. Keyrðu launch_finetune.py, síðan open_loop_eval.py á nokkrum geymslupunktum, og berðu saman MSE þróunina áður en þú snertir vélbúnað.
  6. Dragðu geymslupunktinn af vélinni áður en þú eyðir tilvikinu, byggðu síðan þjónustuleiðina að arminum.
Skrefið sem allir gleyma

Afritaðu geymslupunktinn af leigða tilvikinu áður en þú slekkur á því. --save-total-limit 5 þýðir einnig að eldri geymslupunktar eru eytt eftir því sem þjálfun heldur áfram, svo geymslupunkturinn sem þú vildir á skrefi 5000 gæti ekki verið til lengur á skrefi 20000.

AY-Robots þjálfunarfylkið með fimm stefnumódelum sem raðir og fjórum vélmennaörmum sem dálka, þar sem hver reitur tengist ákveðinni þjálfunarleiðbeiningu.
The /train fylkið: fimm módel gegn fjórum örmum. GR00T N1.7 röðin nær einnig yfir SO-101, Koch v1.1 og LeKiwi.

Að koma eftirlitsstöðinni aftur á handlegginn

Isaac-GR00T notar skiptingu milli miðlara og biðlara yfir ZMQ. Stefna keyrir á GPU, og þunnur biðlari á vélmennavélinni sendir athuganir og tekur á móti aðgerðabrotum. SO-100 dæmið er nógu fullkomið til að afrita: ræstu run_gr00t_server.py með eftirlitsstöðinni þinni og --embodiment-tag NEW_EMBODIMENT, keyrðu síðan eval_so100.py á vélmennahliðinni með raðtengi, vélmennaauðkenni, myndavélarvísitölum og tungumálaleiðbeiningum. Nöfn myndavélanna í þeirri skipun verða að passa við vinalegu nöfnin úr modality.json skránni þinni, ekki tölur stýrikerfisins.

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 stýrir því hversu mörg af spáðum skrefum eru framkvæmd áður en enduráætlun fer fram. Það má í mesta lagi vera action_horizon stefnunnar, og sú tala er lengd action delta_indices í stillingum þínum fyrir aðferð, ekki grunnlíkansins. SO-100 stillingin sem fylgir spáir 16, svo 16 er hámarkið þitt; grunn nvidia/GR00T-N1.7-3B gátpunktinum er stillt á 40, og policy.md segir skýrt að fínstilltir gátpunktar geti verið mismunandi. Ef þú ferð yfir það færðu ValueError sem nefnir báðar tölurnar. 8 er gildið sem skjöl mæla með fyrir rauntíma dreifingu. Gamla flaggið --action-horizon virkar enn en varar við.
7.4 V, ekki 12 V

Meðan þú tengir arminn aftur: SO-100 notar Feetech STS3215 strætíservó á 7.4 V spennu. Að gefa þeim 12 V eyðileggur þá, og það er auðveld mistök ef þú átt líka LeKiwi, en grunnur hans gengur á 12 V á meðan armurinn gerir það ekki. Athugaðu aflgjafann fyrir fyrstu ræsingu, ekki eftir reykinn. Sjá vélbúnaðarsíðu SO-100 og SO-100 á móti LeKiwi. Ef armurinn ræsir sig en ekkert hreyfist, er servó svarar ekki staðurinn til að byrja.

Nú kemur heiðarlegi hlutinn um hvar stefnan keyrir, því þjálfun og þjónusta hafa mismunandi vélbúnaðarsögur. Fínstilling vill 40 GB eða meira. Ályktun gerir það ekki: README segir að það sé 16 GB eða meira og nefnir RTX 4090 sérstaklega, svo kort sem þú átt nú þegar getur þjónað gátpunkti sem það hefði aldrei getað framleitt. Það sem ræður því hvort stefnan virðist móttækileg er ekki VRAM, heldur hvar netþjónninn er staðsettur. Á AY-Robots er GR00T N1.7 eingöngu í skýinu, svo stjórnunarlykkjan greiðir almenna internetferð ofan á 152 ms á hverju aðgerðarskrefi, og aðeins SmolVLA og ACT keyra einnig staðbundið. Fyrir hæga val og staðsetningu er fjarlægur podur lifandi. Fyrir allt sem er viðbragðsgott er það ekki: stefnan verður hikandi á þann hátt sem lítur nákvæmlega út eins og þjálfunarbilun og er það ekki. ACT á 20 ms á hverju aðgerðarskrefi er líkanið sem þolir þéttustu lykkjuna, SmolVLA situr á 245 ms, og engin upphæð af stillingu á biðtíma kaupir til baka ferð sem þegar hefur verið eytt. Keyrðu fyrstu stefnu þína fer í gegnum þjónustuhliðina frá upphafi til enda.

Hvað fer í raun úrskeiðis

  • GatedRepoError við fyrstu keyrslu. Þú hefur ekki fengið aðgang að nvidia/Cosmos-Reason2-2B, eða þú auðkenndir þig ekki. Þetta gerist eftir að GPU klukkan er þegar byrjuð.
  • Gagnasafni hafnað við hleðslu. Næstum alltaf v3.0 gagnasafn. Umbreyttu því niður. Sjá gagnasafni hafnað sem v3.
  • IndexError vegna ósamræmdra boolean vídda. Þú breyttir delta_indices og endurgerðir ekki tölfræðina.
  • Minni klárast við lotu 32. Minnkaðu --global-batch-size og hækkaðu --gradient-accumulation-steps, eða minnkaðu --num-shards-per-epoch, sem stillingin mælir sérstaklega með þegar VRAM er takmarkað. Sjá minni klárast við þjálfun.
  • Tap minnkar, stefna gerir ekkert. Engin staðfestingarskipting er sjálfgefin, svo hrein þjálfunarferill sannar mjög lítið. Þessi síða fjallar um greininguna.
  • Virkar í þinni uppsetningu en hvergi annars staðar. Búist við með litlu gagnasafni sem tekið er upp við eina lýsingarskilyrði. NVIDIA mælir með litabreytingum (colour jitter augmentation) auk 20 til 50 þátta við mismunandi lýsingu. Meira hér.
  • Griparinn lokast aldrei rétt. Athugaðu að griparinn sé ABSOLUTE og armliðirnir RELATIVE, í þeirri röð í action_configs. Griparinn lokast ekki listar aðrar orsakir.
  • Myndavél dettur hljóðlaust út í miðri upptöku. Þátturinn vistar samt og myndbandslykillinn er enn til, þess vegna er þetta óþægilegt. Myndavél ekki greind fjallar um það.

Heildarvísitala bilana er á . Ef þú ert að velja á milli líkana frekar en að kemba eitt, þá hafa og viðmiðunartölur með heimildum, og er sá samanburður sem flestir þurfa í raun, því það er valið á milli líkans sem þú getur þjálfað á kortinu undir skrifborðinu þínu og líkans sem þú þarft að leigja 80 GB hnút til að fínstilla. Til að fá bakgrunn um hvers vegna þessi líkön hegða sér eins og þau gera, eru og þess virði að lesa fyrst. Og ef þú átt ekki arm ennþá, þá streymir líkamlegum SO-100 án skráningar.

Hversu marga þætti þarf ég áður en fínstilling á GR00T N1.7 er þess virði?

AY-Robots setur lágmark 50 þætti fyrir groot1.7 þjálfarann. Eigin FAQ NVIDIA er krefjandi: um 100 ferlar fyrir einfalda tínslu og staðsetningu á föstum stað, 500 eða fleiri fyrir flóknar eða fjölþrepa senur, og 100 til 500 fyrir fínlega meðhöndlun. Undir 50 er næstum alltaf betra að taka upp meiri gögn en að stilla ofurfæribreytur. Ef árangur nær jafnvægi eftir það, mælir NVIDIA með HG-DAgger: keyrðu stefnuna, gríptu inn í þegar hún bilar, og bættu þeim leiðréttingum við gagnasafnið.

Hvers vegna tekst gagnasafnið mitt ekki að hlaðast, og hvernig veit ég hvaða útgáfa það er?

Opnaðu meta/info.json og lestu codebase_version. Núverandi CODEBASE_VERSION LeRobot á main er v3.0, svo allt sem er tekið upp með nýlegri verkfærakeðju er v3.0, og GR00T hleðslutækið býst við v2. Umbreyttu með scripts/lerobot_conversion/convert_v3_to_v2.py úr Isaac-GR00T geymslunni, sem skrifar codebase_version: v2.1 inn í umbreytta gagnasafnið. Skriftan keyrir í eigin sýndarumhverfi vegna þess að hún þarf aðra lerobot útgáfu en GR00T festir.

Get ég fínstillt GR00T N1.7 á RTX 4090?

Nei. NVIDIA mælir með 40 GB eða meira af VRAM fyrir fínstillingu og nefnir H100 eða L40 hnúta; önnur kort virka en taka mun lengri tíma. 4090 er með 24 GB. AY-Robots býður aðeins upp á GR00T N1.7 á A100 80 GB og H100 80 GB flokki af sömu ástæðu. Ályktun er önnur saga: 16 GB er nóg til að þjóna líkaninu, svo 4090 getur keyrt stefnu sem það getur ekki þjálfað. Ef þú vilt VLA sem þú getur þjálfað á 24 GB, þá er það SmolVLA með um 450 M færibreytur eða ACT með um 80 M.

Hvers vegna gefa tvær keyrslur með eins flöggum mismunandi gátpunkta?

Vegna þess að launch_finetune.py hefur enga fræstillingu (seed). Það er tyro CLI sem er búið til úr gagnaklassa sem inniheldur ekkert fræstillingu svið, svo ekkert festir RNG. Geymslan tekur sérstaklega fram 5 til 6 prósenta frávik milli keyrslna af völdum ógreinanlegrar myndauka. Ef endurgerðanleiki skiptir máli, notaðu LeRobot leiðina í staðinn: lerobot-train tekur --seed og birt GR00T uppskriftin sendir --seed=42.

Ætti ég að nota Isaac-GR00T eða lerobot-train?

Notaðu Isaac-GR00T ef þú vilt viðmiðunarútfærsluna, stýringu á aðgerðarframsetningu fyrir hvern lykil, TensorRT útflutning, eða viðmiðunardæmin til að endurtaka áður en þú treystir eigin gögnum. Notaðu lerobot-train ef gagnasafnið þitt er þegar LeRobot v3.0 og þú vilt frekar ekki umbreyta því, ef þú vilt fræstillingu (seed), eða ef restin af staflanum þínum er þegar LeRobot. Báðir fínstilla sömu nvidia/GR00T-N1.7-3B þyngdirnar. Athugaðu að LeRobot hætti alveg stuðningi við GR00T N1.5: N1.5 gátpunktum er hafnað með flutningsskýrslu, og þú verður að festa lerobot==0.5.1 til að halda áfram að nota þá.

Þarf ég virkilega úlnliðsmyndavél auk frammyndavélar?

SO-100 stillingin sem fylgir notar báðar, og modality.json kortleggur fram- og úlnlið sem aðskilda myndbandslykla. Þú getur þjálfað með einni myndavél, og biðtímatöflu líkanakortsins er mæld með einni myndavél, en úlnliðssýnin er það sem gefur stefnunni nothæfar upplýsingar um griparann á snertipunktinum. Ef griparinn lokast á röngum tíma í keyrslum þínum, er vantað eða illa stillt úlnliðsmyndavél eitt af því fyrsta sem þarf að athuga.

Fínstilltu GR00T N1.7 á SO-100 þínum án þess að byggja umhverfið fyrst

Veldu líkan, gagnasafn og ofurfæribreytur í formi. Bakendinn leigir A100 80 GB eða H100 á sprotamarkaði, keyrir þjálfarann með lotu 32, námsstuðli 1e-4 og 20000 skrefum, og skrifar gátpunkta í hlutageymslu. Um það bil 4 til 12 USD á hverja keyrslu.

Opnaðu GR00T N1.7 þjálfunarleiðbeiningarnar

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started