SO-100 ఆర్మ్‌పై GR00T N1.7కి శిక్షణ ఇవ్వడానికి AY-Robots మార్గదర్శక పేజీ, అవసరమైన GPU టైర్, డేటాసెట్ ఫార్మాట్ మరియు ట్రైనర్ డిఫాల్ట్‌లను చూపుతుంది
GR00T N1.7SO-100ఫైన్-ట్యూనింగ్LeRobotVLA

మీ స్వంత SO-100 డేటాసెట్‌పై GR00T N1.7కి ఎలా శిక్షణ ఇవ్వాలి

AY-Robots ResearchAugust 23, 202628 నిమిషాల చదువు

SO-100 LeRobot డేటాసెట్‌పై NVIDIA GR00T N1.7ని ఫైన్-ట్యూనింగ్ చేయడానికి పరీక్షించబడిన వాక్‌త్రూ: నిజమైన ఫ్లాగ్‌లు, modality.json, v2.1 అవసరం, ఒక రన్ ఎంత ఖర్చవుతుంది మరియు ఎదురయ్యే సమస్యలు.

NVIDIA మీరు బహుశా కలిగి ఉన్న ఆర్మ్ కోసం ఖచ్చితమైన ఫైన్-ట్యూనింగ్ ఉదాహరణను అందిస్తుంది. లోపల ఐజాక్-GR00T రిపోజిటరీ అనే ఫోల్డర్ ఉంది demo_data/cube_to_bowl_5: ఐదు ఎపిసోడ్‌లు, 30 fps వద్ద 4,148 ఫ్రేమ్‌లు, ఇప్పటికే LeRobot v2.1గా వ్రాయబడ్డాయి, దీనికి సరిపోలే మోడాలిటీ కాన్ఫిగరేషన్ కింద ఉంది examples/SO100/. దీని meta/info.json నివేదిస్తుంది robot_type: so101_follower, ఇది LeRobotలో అదే కాన్ఫిగరేషన్ క్లాస్ so100_follower. ఇది నిజంగా ఉపయోగకరంగా ఉంటుంది, ఎందుకంటే దీని అర్థం దీనికి రిఫరెన్స్ పాత్ GR00T N1.7 ఆరు-డిగ్రీ-ఆఫ్-ఫ్రీడమ్ హాబీ ఆర్మ్ కోసం మోడల్‌ను వ్రాసిన వ్యక్తులచే నిర్వహించబడుతుంది. ఇది స్కేల్ డౌన్ చేయబడిన హ్యూమనాయిడ్ డెమో కాదు, ఇది అదే ఆర్మ్.

చెడు వార్త ఏమిటంటే, మధ్య దూరం నేను 60 ఎపిసోడ్‌లను రికార్డ్ చేసాను మరియు ఆర్మ్ పనిని చేస్తుంది. ఈ పైప్‌లైన్ బిగ్గరగా కాకుండా నిశ్శబ్దంగా విఫలమయ్యే ఆరు ప్రదేశాలు ఉన్నాయి, మరియు వాటిలో నాలుగు చాలా మంది ఎప్పుడూ తెరవని ఫైల్‌లలో ఉంటాయి: meta/modality.json, పైథాన్ డేటా కాన్ఫిగరేషన్, meta/relative_stats.json, మరియు డేటాసెట్ యొక్క స్వంత వెర్షన్ స్ట్రింగ్. ఈ గైడ్ నిజమైన ఆదేశాలతో మాన్యువల్ మార్గాన్ని ఎండ్-టు-ఎండ్ నడుపుతుంది, ఆపై అదే పనిని ఫారమ్‌గా చూపిస్తుంది AY-Robots. కింద ఉన్నవన్నీ 20 ఆగస్టు 2026 నాటికి (n1.7-రిలీజ్ లైన్) ఐజాక్-GR00T మెయిన్ బ్రాంచ్ మరియు 3 ఆగస్టు 2026న PyPIలో ప్రచురించబడిన lerobot 0.6.1కి వ్యతిరేకంగా తనిఖీ చేయబడ్డాయి. అప్‌స్ట్రీమ్ వేగంగా కదులుతుంది, మరియు ఒక ఫ్లాగ్ పేరు మార్చబడిన చోట ఈ కథనం అలా చెబుతుంది.

మీరు ప్రారంభించడానికి ముందు తెలుసుకోవలసినవి

  • GR00T N1.7 ఫైన్-ట్యూనింగ్‌కు 40 GB లేదా అంతకంటే ఎక్కువ VRAM అవసరం. NVIDIA H100 లేదా L40 నోడ్‌లను సిఫార్సు చేస్తుంది. 24 GB RTX 4090 ఈ పనిని చేయదు, అయినప్పటికీ అది SmolVLA మరియు ACTని శిక్షణ ఇస్తుంది.
  • డేటాసెట్ LeRobot v2 (v2.0 లేదా v2.1) మరియు GR00T-నిర్దిష్ట meta/modality.json అయి ఉండాలి. LeRobot v3.0 డేటాసెట్ లోడ్ అవ్వదు మరియు దానిని కిందికి మార్చాలి.
  • ఎంట్రీ పాయింట్ gr00t/experiment/launch_finetune.py, ఇది టైరో CLI. దీనికి --seed ఫ్లాగ్ లేదు, కాబట్టి రన్‌లు బిట్-ఫర్-బిట్ పునరుత్పత్తి చేయబడవు.
  • కస్టమ్ ఆర్మ్ కోసం ఎంబోడిమెంట్ ట్యాగ్ NEW_EMBODIMENT, మరియు ఆ ట్యాగ్ --modality-config-pathని తప్పనిసరి చేస్తుంది.
  • షిప్ చేయబడిన SO-100 రెసిపీ ఆర్మ్ జాయింట్‌లను RELATIVE డెల్టాలుగా మరియు గ్రిప్పర్‌ను ABSOLUTE టార్గెట్‌గా అంచనా వేస్తుంది. ఆ జతను వెనుకకు పొందడం నిశ్శబ్ద వైఫల్యం, లోపం కాదు.
  • AY-Robotsలో అదే పని ఒక ఫారమ్: 20000 స్టెప్స్, బ్యాచ్ 32, లెర్నింగ్ రేట్ 1e-4, A100 80 GB లేదా H100 టైర్‌లో సుమారు 4 నుండి 12 USD.

GR00T N1.7 వాస్తవానికి ఏమిటి

GR00T N1.7 అనేది ఒక విజన్-లాంగ్వేజ్-యాక్షన్ మోడల్ అసలు GR00T N1 పేపర్లో వివరించిన డ్యూయల్-సిస్టమ్ లేఅవుట్‌తో కూడినది: కెమెరాలు మరియు సూచనలను చదివే విజన్-లాంగ్వేజ్ మాడ్యూల్, మరియు నిరంతర మోటార్ కమాండ్‌ల భాగాన్ని మార్చే డిఫ్యూజన్ ట్రాన్స్‌ఫార్మర్. N1.7 మొదటి సగాన్ని భర్తీ చేసింది. N1.6 నుండి ఈగిల్ బ్యాక్‌బోన్ తొలగించబడింది, దీని స్థానంలో nvidia/Cosmos-Reason2-2B Qwen3-VL ఆర్కిటెక్చర్‌పై, మరియు రోబోట్ డేటాకు అదనంగా సుమారు 20,000 గంటల ఈగోసెంట్రిక్ మానవ వీడియోపై మోడల్ ప్రీట్రైన్ చేయబడింది. NVIDIA యొక్క స్వంత నివేదిక ఈ సంఖ్యను 20,854 గంటలుగా పేర్కొంది మరియు 1k నుండి 20k గంటలకు వెళ్లడం సగటు టాస్క్ పూర్తిని రెట్టింపు కంటే ఎక్కువ చేస్తుందని నివేదించింది.

రెండవ సగం కూడా మారింది, ఇది మీ రన్‌కు ముఖ్యమైన మార్గాల్లో. యాక్షన్ హెడ్ 32 డిఫ్యూజన్ లేయర్‌ల నుండి 16కి తగ్గింది, అంచనా వేయబడిన యాక్షన్ చంక్ 16 స్టెప్‌ల నుండి 40కి పెరిగింది, మరియు గరిష్ట స్టేట్ మరియు యాక్షన్ వెడల్పు 29 నుండి 132కి పెరిగింది. ఈ మూడు సంఖ్యలు రిపోజిటరీ READMEలోని చేంజ్‌లాగ్ నుండి వచ్చాయి; NVIDIA యొక్క స్వంత లాంచ్ పోస్ట్ ఇప్పటికీ సిస్టమ్ 1ని 32-లేయర్ DiTగా వివరిస్తుంది, కాబట్టి రెండూ విభేదించిన చోట, మీరు క్లోన్ చేయబోయే రెపోను విశ్వసించండి. చర్యలు డిఫాల్ట్‌గా సాపేక్ష ఎండ్-ఎఫెక్టర్ స్పేస్‌లో వ్యక్తీకరించబడతాయి, ప్రస్తుత భంగిమ నుండి డెల్టాలు, సంపూర్ణ లక్ష్యాలు కావు, ఇది మానవ వీడియో నుండి నేర్చుకున్న మానిప్యులేషన్ ప్రయర్‌లను రోబోట్ నియంత్రణలోకి బదిలీ చేయడానికి అనుమతిస్తుంది. హెడ్ స్వయంగా ఒక ఫ్లో-మ్యాచింగ్ డిఫ్యూజన్ ట్రాన్స్‌ఫార్మర్, Pi0.5 వలె అదే కుటుంబానికి చెందినది కానీ దాని ముందు వేరే బ్యాక్‌బోన్‌తో. మీరు ఇప్పటికీ మునుపటి తరంపై ఉంటే, N1.7 వర్సెస్ N1.5 అప్‌గ్రేడ్ మీ పైప్‌లైన్‌ను మళ్లీ చేయడానికి సమర్థవంతంగా ఉందో లేదో వివరిస్తుంది.

లక్షణంవిలువఎక్కడ నుండి వచ్చింది
పారామీటర్లు3,000,000,000హగ్గింగ్ ఫేస్ మోడల్ కార్డ్
విజన్-లాంగ్వేజ్ బ్యాక్‌బోన్nvidia/Cosmos-Reason2-2B (Qwen3-VL), హగ్గింగ్ ఫేస్‌లో గేటెడ్రెపో README
యాక్షన్ హెడ్ఫ్లో-మ్యాచింగ్ డిఫ్యూజన్ ట్రాన్స్‌ఫార్మర్, 16 లేయర్‌లు (N1.6లో 32 ఉన్నాయి)రెపో README
అంచనా వేయబడిన యాక్షన్ హారిజన్బేస్ చెక్‌పాయింట్ కోసం 40 స్టెప్‌లు (N1.6లో 16 ఉన్నాయి)getting_started/policy.md మరియు రెపో README
గరిష్ట స్టేట్ మరియు యాక్షన్ వెడల్పు132 (N1.6లో 29 ఉన్నాయి)రెపో README
కోడ్ లైసెన్స్Apache 2.0ఐజాక్-GR00T రిపోజిటరీ
వెయిట్స్ లైసెన్స్NVIDIA Open Model License Agreementమోడల్ కార్డ్
లేటెన్సీ, H100 80 GB, పైటార్చ్ ఈగర్, 4 డెనాయిసింగ్ స్టెప్‌లు, 1 కెమెరా85.8 ms ఎండ్ టు ఎండ్, 11.7 Hzమోడల్ కార్డ్ టైమింగ్ టేబుల్
అదే హార్డ్‌వేర్, టెన్సార్‌ఆర్‌టి పూర్తి పైప్‌లైన్27.9 ms ఎండ్ టు ఎండ్, 35.9 Hzమోడల్ కార్డ్ టైమింగ్ టేబుల్
AY-రోబోట్స్ దాని అందించిన GR00T N1.7 కోసం పేర్కొన్న లేటెన్సీప్రతి యాక్షన్ స్టెప్‌కు 152 msAY-రోబోట్స్ పాలసీ కేటలాగ్

ఆ చివరి మూడు వరుసలు ప్రజలు నివేదించిన నిరాశలో ఎక్కువ భాగాన్ని వివరిస్తాయి. హెడ్‌లైన్ 27.9 ms అనేది ఒక కెమెరా మరియు నాలుగు డెనాయిసింగ్ స్టెప్‌లతో H100లో టెన్సార్‌ఆర్‌టి ఇంజిన్. అదే కార్డ్‌లో ప్లెయిన్ పైటార్చ్ 85.8 ms, మరియు మోడల్ కార్డ్ అంతరాన్ని 3.08x వద్ద ఉంచుతుంది. ఈ సంఖ్యలలో సర్వింగ్ లేయర్, రెండవ కెమెరా లేదా నెట్‌వర్క్ హాప్ ఏదీ చేర్చబడలేదు. AY-రోబోట్స్ దాని అందించిన GR00T N1.7 కోసం పేర్కొన్న ప్రతి యాక్షన్ స్టెప్‌కు 152 ms అనేది లూప్‌లో సర్వింగ్‌తో కూడిన సంఖ్య, మరియు పబ్లిక్-ఇంటర్నెట్ రౌండ్ ట్రిప్ దాని పైన ఉంటుంది. దీని గురించి చివరలో మరింత. ఇతర మోడల్‌ల పక్కన ఉన్న సంఖ్యల కోసం, GR00T N1.7 వర్సెస్ Pi0.5 మరియు GR00T N1.7 వర్సెస్ SmolVLA వాటిని పక్కపక్కన ఉంచుతాయి.

The AY-Robots model page for GR00T N1.7 showing parameter count, GPU tier, inference latency and the model's stated strengths and limits
The /policies/groot-n1-7 page carries the same spec strip you would otherwise assemble by hand from the model card and the repo README.

మీరు ఏదైనా టైప్ చేసే ముందు రన్ కి అవసరమైనవి

అవసరంఫైన్-ట్యూనింగ్ఇన్‌ఫరెన్స్
VRAM, NVIDIA మార్గదర్శకత్వం40 GB లేదా అంతకంటే ఎక్కువ, H100 లేదా L40 సిఫార్సు చేయబడింది16 GB లేదా అంతకంటే ఎక్కువ, RTX 4090 పని చేస్తుంది
dGPUలో పైథాన్ మరియు CUDA3.12 and CUDA 12.83.12 and CUDA 12.8
వీడియో బ్యాకెండ్torchcodec 0.8.0, FFmpeg 4 to 7 onlyఅదే
డేటాసెట్ ఫార్మాట్LeRobot v2 plus meta/modality.jsonవర్తించదు
Hugging Face యాక్సెస్approved for nvidia/Cosmos-Reason2-2Bఅదే
ఇతర టూలింగ్git-lfs and uvuv
groot1.7 ట్రైనర్ కోసం AY-Robots GPU టియర్A100 80 GB or H100 80 GBపాడ్ స్వయంచాలకంగా అందించబడుతుంది
గేటెడ్ బ్యాక్‌బోన్ మొదటి రన్‌లో మిమ్మల్ని ఆపివేస్తుంది

బేస్ nvidia/GR00T-N1.7-3Bతో సహా ప్రతి GR00T చెక్‌పాయింట్, మొదటిసారి ఉపయోగించినప్పుడు nvidia/Cosmos-Reason2-2Bను లోడ్ చేస్తుంది, మరియు ఆ రిపోజిటరీ గేటెడ్ చేయబడింది. README వైఫల్యాన్ని ఖచ్చితంగా పేర్కొంటుంది: మోడల్ లోడింగ్ GatedRepoError / 401 Client Errorతో విఫలమవుతుంది. అది ఎప్పుడు జరుగుతుందో అది పేర్కొనదు, అది మీరు కార్డ్‌ను అద్దెకు తీసుకున్న తర్వాత మరియు రన్ ప్రారంభమైన తర్వాత జరుగుతుంది. మోడల్ పేజీలో యాక్సెస్ కోసం అభ్యర్థించండి, ఆపై రన్ చేయండి uv run huggingface-cli login లేదా HF_TOKENను ఎగుమతి చేయండి మీరు ఏదైనా అద్దెకు తీసుకునే ముందు.

దశ 0: ఎపిసోడ్‌లు

దిగువన ఉన్నవన్నీ మీరు ఇప్పటికే రికార్డ్ చేసిన ఎపిసోడ్‌లను కలిగి ఉన్నారని ఊహిస్తాయి. మీకు లేకపోతే, అది నిజమైన మొదటి దశ మరియు ఫలితం ఎంత బాగుంటుందో నిర్ణయించేది అదే, ఎందుకంటే అనుకరణ అభ్యాసం డేటాలో లేని సమాచారాన్ని తిరిగి పొందలేదు. ముందుగా రెండు చేతులను క్రమాంకనం చేయండి, ఆపై ఫాలోవర్‌ను లీడర్ ఆర్మ్ తో నడపండి, అదే సమయంలో lerobot-record పారేక్ ఫైల్‌లను మరియు కెమెరా స్ట్రీమ్‌లను వ్రాస్తుంది. ఒకవేళ క్రమాంకనం సరిగ్గా లేకపోతే, మీ డేటాసెట్‌లోని జాయింట్ విలువలు తర్వాత పాలసీని అమలు చేసే రోబోట్ కంటే కొద్దిగా భిన్నమైన రోబోట్‌ను వివరిస్తాయి, మరియు ఎంత శిక్షణ ఇచ్చినా అది సరికాదు.

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లో lerobot-record. ఎపిసోడ్ నిడివి 60 s మరియు రీసెట్ సమయం 60 s డిఫాల్ట్ అవుతుంది. so100_follower మరియు so101_follower రెండూ ఒకే LeRobot కాన్ఫిగ్ క్లాస్‌కు వ్యతిరేకంగా నమోదు చేయబడ్డాయి, అందుకే Isaac-GR00T SO100 ఉదాహరణ so101 పేర్లను ఉపయోగిస్తుంది; ఏదైనా SO-100లో పనిచేస్తుంది. మీరు ఇక్కడ ఎంచుకున్న కెమెరా పేర్లు (front, wrist) modality.jsonలో మళ్లీ కనిపించాల్సిన పేర్లు.

LeRobot యొక్క సలహా ఏమిటంటే, ప్రతి వస్తువు స్థానానికి సుమారు 10 చొప్పున కనీసం 50 ఎపిసోడ్‌లను రికార్డ్ చేయాలి, కెమెరాలను స్థిరంగా ఉంచాలి మరియు పట్టుకునే ప్రవర్తనను స్థిరంగా ఉంచాలి. ప్రారంభంలో కాకుండా తర్వాత వైవిధ్యాన్ని జోడించండి. గుర్తుంచుకోవలసిన సాధారణ నియమం: మీరు కెమెరా చిత్రాల నుండి మాత్రమే పనిని చేయలేకపోతే, పాలసీ కూడా చేయలేదు. ఆర్మ్-నిర్దిష్ట సెటప్ కోసం, SO-100 ప్రారంభించడం మరియు SO-100 LeRobot పేజీ పోర్ట్‌లు, క్రమాంకనం మరియు కెమెరా సూచికలను కవర్ చేస్తాయి. AY-Robotsలో మీరు బ్రౌజర్ నుండి ఇంటర్నెట్ ద్వారా టెలిఆపరేషన్ ఉపయోగించి దీన్ని చేయవచ్చు మరియు సెషన్ నుండి నేరుగా రికార్డ్ చేయవచ్చు.

దశ 1: డేటాసెట్ LeRobot v2.1 అయి ఉండాలి

ఇది అత్యంత సాధారణ అడ్డంకి. LeRobot యొక్క ప్రస్తుత CODEBASE_VERSION మెయిన్‌లో v3.0, కాబట్టి మీరు ఈరోజు ప్రస్తుత టూల్‌చెయిన్‌తో రికార్డ్ చేసే ఏదైనా v3.0గా వస్తుంది. GR00T యొక్క లోడర్ v2ని ఆశిస్తుంది. రిపోజిటరీ ఎందుకు స్పష్టంగా చెబుతుంది: DROID, LIBERO మరియు Bridge వంటి అనేక అప్‌స్ట్రీమ్ డేటాసెట్‌లు v2లో ప్రచురించబడ్డాయి మరియు రెండింటికీ స్థానిక మద్దతు ప్రణాళిక చేయబడింది కానీ ఇంకా విడుదల చేయబడలేదు. కాబట్టి మార్పిడి మీపై ఆధారపడి ఉంటుంది, మరియు ఇది ఒక నిర్దిష్ట కారణం కోసం దాని స్వంత వర్చువల్ ఎన్విరాన్‌మెంట్‌లో నడుస్తుంది: scripts/lerobot_conversion దాని స్వంత పైప్రాజెక్ట్‌ను కలిగి ఉంది, ఇది పైథాన్ 3.10 లేదా 3.11ని అడుగుతుంది మరియు లెరోబోట్‌ను ఒక గిట్ కమిట్‌కు పిన్ చేస్తుంది, అయితే ఐజాక్-GR00Tకి పైథాన్ 3.12 అవసరం. రిపోజిటరీ రూట్ నుండి కన్వర్టర్‌ను ఇన్‌స్టాల్ చేయండి మరియు మీకు gr00t ప్యాకేజీ వస్తుంది, ఇది దాని README హెచ్చరించే తప్పు. మీరు ఫార్మాట్‌కు కొత్తవారైతే, LeRobot డేటాసెట్ గ్లోసరీ ఎంట్రీ దానిలో వాస్తవానికి ఏమి ఉందో వివరిస్తుంది.

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
కన్వర్టర్ --repo-id, ఐచ్ఛిక --root, మరియు --force-conversionలను తీసుకుంటుంది, ఇది ఇప్పటికే ఉన్న ఏదైనా స్థానిక స్నాప్‌షాట్‌ను తొలగించి, దానిని మళ్లీ డౌన్‌లోడ్ చేస్తుంది. ఇది codebase_version: v2.1ని meta/info.jsonలోకి వ్రాస్తుంది.
మార్పిడి స్థానంలో ఓవర్‌రైట్ చేస్తుంది

v3.0 డేటాసెట్ ఇప్పటికే స్థానికంగా ఉంటే, స్క్రిప్ట్ దాని పక్కన v2.1 లేఅవుట్‌ను నిర్మిస్తుంది మరియు ఆపై మార్పిడి చేస్తుంది: అసలు వెర్షన్ జోడించబడిన సోదర ఫోల్డర్‌కు తరలించబడుతుంది, <name>_v3.0, మరియు మార్చబడిన కాపీ అసలు మార్గాన్ని తీసుకుంటుంది. (స్క్రిప్ట్ యొక్క డాక్‌స్ట్రింగ్ ఆ ఫోల్డర్‌ను _v30 అని పిలుస్తుంది; కోడ్ వెర్షన్ స్ట్రింగ్‌ను జోడిస్తుంది, కాబట్టి మీకు వాస్తవానికి _v3.0 వస్తుంది.) రెండవ ఆశ్చర్యం: అవుట్‌పుట్ ఎల్లప్పుడూ <root>/<repo-id> కిందకు వస్తుంది, కాబట్టి --root examples/SO100/my_dataset_lerobot మీకు examples/SO100/my_dataset_lerobot/<your-hf-user>/<your-dataset>ని ఇస్తుంది, మరియు ఆ పొడవైన మార్గం --dataset-path తర్వాత కోరుకునేది. వెర్షన్ కారణాల వల్ల శిక్షణ ఉద్యోగం మీ డేటాసెట్‌ను తిరస్కరించినప్పుడు, v3గా తిరస్కరించబడిన డేటాసెట్ పేజీ ఖచ్చితమైన లక్షణాలను జాబితా చేస్తుంది.

మార్పిడి తర్వాత GR00T కోరుకునే నిర్మాణం క్లాసిక్ v2 లేఅవుట్: meta/info.json, meta/episodes.jsonl, meta/tasks.jsonl, కింద పారేక్ ఫైల్‌లు data/chunk-000/, కింద MP4 ఫైల్‌లు videos/chunk-000/observation.images./, మరియు ప్రామాణిక LeRobot వద్ద లేని ఒక అదనపు ఫైల్. మిగిలిన చాలా లోపాలు ఆ అదనపు ఫైల్‌లోనే ఉంటాయి.

దశ 2: modality.json, ప్రతిదీ నిర్ణయించే ఆరు సంఖ్యలు

LeRobot డేటాసెట్‌లో రోబోట్ స్థితి మరియు చర్య ఫ్లాట్ float32 శ్రేణులుగా నిల్వ చేయబడతాయి. SO-100 కోసం రెండింటి ఆకారం [6]: ఐదు ఆర్మ్ జాయింట్లు మరియు ఒక గ్రిప్పర్. డెమో డేటాసెట్ వాటికి ఈ పేర్లను ఇస్తుంది shoulder_pan.pos, shoulder_lift.pos, elbow_flex.pos, wrist_flex.pos, wrist_roll.pos, gripper.pos, కానీ ఆ పేర్లు info.json లో ఉంటాయి మరియు పారేక్ ఫైల్‌లో ఏ ఇండెక్స్ ఏది అని ఏమీ చెప్పదు. meta/modality.json ఆ మ్యాపింగ్‌ను అందిస్తుంది, మరియు అది లేకుండా GR00T శిక్షణ ఇవ్వదు. SO-100 కోసం రిపోజిటరీ అందించేది ఇక్కడ యథాతథంగా ఉంది.

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. ఇండెక్స్‌లు సున్నా-ఆధారితమైనవి మరియు పైథాన్ స్లైసింగ్‌ను అనుసరిస్తాయి, కాబట్టి single_arm [0:5] మరియు gripper [5:6].

మీ మార్చబడిన డేటాసెట్‌లో దీనిని కాపీ చేయండి meta/modality.json వద్ద మరియు వీడియో కీలను మీ కెమెరాలకు వాస్తవంగా ఉన్న పేర్లకు మార్చండి. మీరు ఒకే ఓవర్‌హెడ్ కెమెరాతో రికార్డ్ చేసి ఉంటే, దానికి పేరు top, అప్పుడు original_key అనేది observation.images.top మరియు స్నేహపూర్వక పేరు మీ డేటా కాన్ఫిగరేషన్ సూచించేది అవుతుంది. ఈ రెండూ ఒకదానికొకటి సరిపోలాలి, మరియు వాటిలో ఏదీ మీ కోసం మరొకదాన్ని తనిఖీ చేయదు. భాషా ఉల్లేఖనం మరింత క్లిష్టంగా ఉంటుంది, ఎందుకంటే అదే కీ మూడు చోట్ల కనిపించాలి.

లేయర్ఫైల్రెపోలో ఉపయోగించిన SO-100 ఫారం
పార్కెట్ కాలమ్data/chunk-*/episode_*.parquetannotation.human.task_description
modality.json కీmeta/modality.json, under "annotation", without the annotation. prefixhuman.task_description
డేటా కాన్ఫిగరేషన్‌లో modality_keysyour so100_config.pyannotation.human.task_description
భాషా కీ ఎందుకు సమస్యలను సృష్టిస్తుంది

annotation. తర్వాత ఉన్న విభాగాలు డేటాసెట్‌ను రూపొందించిన వారిచే ఎంపిక చేయబడతాయి. SO-100 డెమో డేటా annotation.human.task_descriptionను ఉపయోగిస్తుంది; LIBERO మరియు SimplerEnv annotation.human.action.task_descriptionను ఉపయోగిస్తాయి. రెండూ చెల్లుబాటు అవుతాయి. మీరు LIBERO ఉదాహరణ నుండి ఒక కాన్ఫిగరేషన్‌ను కాపీ చేసి, దానిని మీ స్వంత SO-100 రికార్డింగ్‌కు సూచించినట్లయితే, భాషా ఛానెల్ ఏమీ లేకుండా పోతుంది మరియు మోడల్ ఖాళీ సూచనపై శిక్షణ పొందుతుంది. నష్టం ఇంకా తగ్గుతుంది. విధానం ఇంకా ఏదో చేస్తుంది. మీరు దానికి ఏమి చేయమని చెప్పారో అది విస్మరిస్తుంది.

దశ 3: డేటా కాన్ఫిగరేషన్, సాపేక్ష ఆర్మ్ మరియు సంపూర్ణ గ్రిప్పర్

మోడాలిటీ కాన్ఫిగ్ JSON కాకుండా పైథాన్ ఫైల్, ఎందుకంటే ఇది ప్రతి యాక్షన్ గ్రూప్ ఎలా ప్రాతినిధ్యం వహిస్తుందో కూడా నిర్ణయిస్తుంది. ఇది N1.7 వర్క్‌ఫ్లోలో N1.5లో అదే రూపంలో లేని భాగం, మరియు రెండుసార్లు చదవదగిన భాగం. షిప్ చేయబడిన SO-100 కాన్ఫిగ్ ఐదు ఆర్మ్ జాయింట్‌లను ప్రస్తుత స్థితి నుండి RELATIVE డెల్టాలుగా మరియు గ్రిప్పర్‌ను ABSOLUTE టార్గెట్ పొజిషన్‌గా అంచనా వేస్తుంది, ఎందుకంటే బైనరీ ఓపెన్-ఆర్-క్లోజ్డ్ సిగ్నల్ డెల్టా కంటే టార్గెట్‌గా మెరుగ్గా పనిచేస్తుంది.

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, ముఖ్యమైన వాటికి తగ్గించబడింది. NON_EEF అంటే జాయింట్ స్పేస్; EEF x, y, z ప్లస్ 6D రొటేషన్ యొక్క తొమ్మిది-డైమెన్షనల్ వెక్టర్‌ను ఆశిస్తుంది.

ఇక్కడ రెండు వివరాలు మీకు తెలియకపోతే ఒక రోజు ఖర్చు అవుతుంది. ముందుగా, action_configs స్థానపరమైనది: డాక్యుమెంట్లు modality_keys వలె అదే పొడవు మరియు అదే క్రమాన్ని కోరుతాయి, మరియు తప్పుగా పొందినట్లయితే దాని పర్యవసానం గురించి అవి స్పష్టంగా ఉంటాయి, అంటే తప్పు ప్రాతినిధ్యం నిశ్శబ్దంగా వర్తించబడుతుంది. మీ గ్రిప్పర్ డెల్టాగా మరియు మీ ఆర్మ్ అబ్సొల్యూట్ టార్గెట్‌గా శిక్షణ పొందుతుంది, మరియు ఎటువంటి ఎర్రర్ మెసేజ్ ఉండదు. రెండవది, register_modality_config ట్యాగ్ ఇప్పటికే నమోదు చేయబడలేదని ధృవీకరిస్తుంది, కాబట్టి అదే పైథాన్ ప్రాసెస్‌లో రెండవ NEW_EMBODIMENT కాన్ఫిగ్ Embodiment tag ... already registered తో ఆగిపోతుంది. మీరు వీటిలో రెండింటిని ఒకే స్క్రిప్ట్‌లోకి దిగుమతి చేసుకోలేరు. మూడవ నియమం తరువాత, డిప్లాయ్‌మెంట్ వద్ద అమలు చేయబడుతుంది: యాక్షన్ delta_indices సున్నా నుండి ప్రారంభమయ్యే నిరంతర పరిధి అయి ఉండాలి. [0, 4, 8] వంటి స్పార్స్ విండో తిరస్కరించబడుతుంది, ఎందుకంటే డౌన్‌స్ట్రీమ్‌లోని ప్రతిదీ అంచనా వేసిన భాగాన్ని సరళంగా సూచిస్తుంది మరియు లేకపోతే తప్పు వరుసలను అమలు చేస్తుంది.

delta_indicesని మార్చినట్లయితే మీరు గణాంకాలను పునరుత్పత్తి చేయాలి

నార్మలైజేషన్ గణాంకాలు, ముఖ్యంగా meta/relative_stats.json, మీరు వాటిని రూపొందించినప్పుడు ఉన్న హారిజన్ పొడవు కోసం లెక్కించబడతాయి. పునరుత్పత్తి చేయకుండా యాక్షన్ హారిజన్‌ను 16 నుండి 8కి తగ్గించినట్లయితే, శిక్షణ IndexError: boolean index did not match indexed array ... dimension is 8 but corresponding boolean dimension is 16 తో ఆగిపోతుంది. పరిష్కారం ఒక కమాండ్: python gr00t/data/stats.py --dataset-path <path> --embodiment-tag NEW_EMBODIMENT --modality-config-path examples/SO100/so100_config.py. delta_indicesకి ఏదైనా మార్పు చేసిన తర్వాత దీన్ని అమలు చేయండి.

దశ 4: పర్యావరణం

N1.7 రిపోజిటరీని దీనికి తరలించింది మరియు పైథాన్ 3.12కి. పాత కాండా ప్లస్ pip install -e . మార్గం READMEలోని కుదించబడిన విభాగంలో ఇప్పటికీ ఉంది, అయితే ఫ్లాష్-అటెన్షన్ మరియు టెన్సర్‌ఆర్‌టితో సహా GPU డిపెండెన్సీలకు మాన్యువల్ ఇన్‌స్టాలేషన్ అవసరం కావచ్చని ఇది హెచ్చరిస్తుంది. మీకు ప్రత్యేక కారణం లేకపోతే uvని ఉపయోగించండి. ఫ్లాష్-అటెన్షన్ విషయంలో, ఒక వివరాలు గందరగోళాన్ని నివారిస్తాయి: మీరు చూస్తారు Installing flash-attn ప్రతి uv runలో ముద్రించబడుతుంది. ఇది పునర్నిర్మించబడటం లేదు. uv ఇప్పటికే కాష్ చేయబడిన URL-పిన్ చేయబడిన వీల్‌ను తిరిగి ధృవీకరిస్తోంది మరియు దీనికి రెండు లేదా మూడు సెకన్లు పడుతుంది.

  1. 1
    git-lfsని ఇన్‌స్టాల్ చేయండి, ఆపై సబ్‌మాడ్యూల్స్‌తో క్లోన్ చేయండి

    git-lfs తప్పనిసరి, ఐచ్ఛికం కాదు. ఇది లేకుండా demo_data/లోని పారేక్ ఫైల్‌లు పాయింటర్ స్టబ్‌లుగా వస్తాయి మరియు ఫైల్ జాబితాలో ఉన్నట్లు కనిపించే డేటాసెట్‌లో డెమో రన్ విఫలమవుతుంది.

    bash
    sudo apt install git-lfs && git lfs install
    git clone --recurse-submodules https://github.com/NVIDIA/Isaac-GR00T
    cd Isaac-GR00T
  2. 2
    uvని ఇన్‌స్టాల్ చేయండి మరియు పర్యావరణాన్ని సమకాలీకరించండి

    డిఫాల్ట్ ఇన్‌స్టాల్ ఫ్లాష్-అటెన్షన్ మరియు టెన్సర్‌ఆర్‌టితో సహా GPU డిపెండెన్సీలను లాగుతుంది. కొత్త A100 లేదా H100 ఇమేజ్‌లో ఇది అతి పొడవైన ఒకే దశ, కాబట్టి మీరు మరేదైనా శ్రద్ధ పెట్టడం ప్రారంభించే ముందు దీన్ని చేయండి.

    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
    హగ్గింగ్ ఫేస్‌కు వ్యతిరేకంగా ప్రామాణీకరించండి

    మొదటి శిక్షణ ప్రారంభానికి ముందు దీన్ని చేయండి, ఎనిమిది నిమిషాల తర్వాత అది విఫలమైన తర్వాత కాదు.

    bash
    uv run huggingface-cli login   # or: export HF_TOKEN=<your_token>
  4. 4
    షిప్ చేయబడిన SO-100 డెమో డేటాపై శానిటీ-చెక్

    మీ స్వంత రికార్డింగ్‌ను తాకడానికి ముందు, demo_data/cube_to_bowl_5లో 2000 స్టెప్‌లను అమలు చేయండి. ఇది ఐదు ఎపిసోడ్‌లు, ఇది త్వరగా పూర్తవుతుంది మరియు ఇది మీ డేటా కాకుండా పర్యావరణాన్ని రుజువు చేస్తుంది. ఈ రన్ విఫలమైతే, మీ డేటాసెట్‌కు మీరు చేసేది ఏదీ సహాయపడదు.

    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
మోడల్ బగ్‌ల వలె కనిపించే రెండు పర్యావరణ ఉచ్చులు

FFmpeg 8. torchcodec 0.8.0 FFmpeg 4 నుండి 7 వరకు మాత్రమే మద్దతు ఇస్తుంది, మరియు ఉబుంటు 25.10 మరియు తరువాత వెర్షన్ 8ని షిప్ చేస్తాయి. లోపం Could not load libtorchcodec, ఇది వెర్షన్ వైరుధ్యం కాకుండా విరిగిన ఇన్‌స్టాల్ లాగా చదువుతుంది. పాత రన్‌టైమ్‌ను ఇన్‌స్టాల్ చేయండి, ఉదాహరణకు conda install -c conda-forge 'ffmpeg<8', మరియు దాని లైబ్రరీలను LD_LIBRARY_PATHలో ఉంచండి. CUDA_HOME సెట్ చేయబడలేదు. ఫైన్-ట్యూనింగ్ పూర్తిగా విఫలమవుతుంది. bash scripts/deployment/dgpu/install_deps.shని ఒకసారి అమలు చేయండి, లేదా కేవలం export CUDA_HOME=/usr/local/cuda.

దశ 5: ఫైన్-ట్యూన్ కమాండ్ మరియు దాని ఫ్లాగ్‌లు నిజంగా డిఫాల్ట్‌గా దేనికి సెట్ చేయబడతాయి

మీ డెమో డేటాసెట్‌ను మీ దానితో మార్చుకోండి మరియు మీకు నిజంగా కావలసిన నాబ్‌లను జోడించండి. దిగువన, రిపోజిటరీ దాని స్వంత కొత్త-ఎంబోడిమెంట్ ట్యుటోరియల్‌లో ఉపయోగించే పూర్తి ఫారమ్ ఉంది, ఇందులో చిన్న README ఉదాహరణ వదిలివేసిన ఆగ్మెంటేషన్ మరియు చెక్‌పాయింటింగ్ ఫ్లాగ్‌లు కూడా ఉన్నాయి. ఇది సంకుచిత అర్థంలో: భాషా బ్యాక్‌బోన్ మరియు విజువల్ ఎన్‌కోడర్ స్తంభింపజేయబడతాయి, మరియు శిక్షణ పొందేవి ప్రొజెక్టర్ మరియు డిఫ్యూషన్ యాక్షన్ హెడ్.

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
ఒకే GPU. ఎనిమిది కార్డ్‌ల కోసం, లాంచర్‌ను uv run torchrun --nproc_per_node=8 --master_port=29500 తో భర్తీ చేయండి మరియు --num-gpus 8ని సెట్ చేయండి. uv run torchrun ఉపయోగించండి, కేవలం torchrun కాదు, లేకపోతే మీకు తప్పు వాతావరణం లభిస్తుంది.
ఫ్లాగ్FinetuneConfigలో డిఫాల్ట్ఇది ఏమి చేస్తుంది
--global-batch-size64గ్రాడియంట్ అక్యుములేషన్ ముందు అన్ని GPUలలో మొత్తం బ్యాచ్. పంపిన ఉదాహరణలు 32ని ఉపయోగిస్తాయి.
--learning-rate1e-4AY-Robots దాని groot1.7 ట్రైనర్ కోసం పంపే అదే విలువ.
--max-steps10000మొత్తం ఆప్టిమైజర్ స్టెప్స్. examples/finetune.sh వ్రాపర్ కూడా 10000కి డిఫాల్ట్ అవుతుంది.
--gradient-accumulation-steps1ప్రభావవంతమైన బ్యాచ్‌ను గుణిస్తుంది. 1 కంటే ఎక్కువ విలువలు సేకరించిన పరిమాణాన్ని మీకు తెలియజేసే హెచ్చరికను విడుదల చేస్తాయి.
--save-steps and --save-total-limit1000 and 5చెక్‌పాయింట్ ఫ్రీక్వెన్సీ, మరియు ఎన్ని ఉంచబడతాయి. పాతవి తొలగించబడతాయి.
--weight-decay and --warmup-ratio1e-5 and 0.05examples/finetune.sh ద్వారా కూడా స్పష్టంగా సెట్ చేయబడింది.
--state-dropout-prob0.2 in the CLI, 0.8 in the model configశిక్షణ సమయంలో ప్రొప్రియోసెప్టివ్ స్థితిని యాదృచ్ఛికంగా తొలగిస్తుంది. మీ పని స్థితిపై ఆధారపడి ఉంటే దానిని తగ్గించండి.
--tune-llm and --tune-visualFalse and Falseబ్యాక్‌బోన్ డిఫాల్ట్‌గా స్తంభింపజేయబడుతుంది.
--tune-projector and --tune-diffusion-modelTrue and Trueప్రొజెక్టర్ మరియు డిఫ్యూషన్ యాక్షన్ హెడ్ వాస్తవానికి శిక్షణ పొందేవి.
--use-percentilesTrueముడి కనిష్ట మరియు గరిష్ట విలువలకు బదులుగా q01 మరియు q99తో నార్మలైజ్ చేయండి.
--dataloader-num-workers2లోడర్ డిజైన్ ద్వారా CPU-ఆధారితమైనది. ఉదాహరణలు దీనిని 4కి పెంచుతాయి.
--seeddoes not existఈ CLIలో సీడ్ ఫ్లాగ్ లేదు.

ఆ చివరి వరుస తప్పు కాదు. launch_finetune.py అనేది డేటాక్లాస్ నుండి రూపొందించబడిన టైరో CLI, మరియు ఆ డేటాక్లాస్‌లో సీడ్ ఫీల్డ్ లేదు. నాన్-డిటర్మినిస్టిక్ ఇమేజ్ ఆగ్మెంటేషన్ కారణంగా రన్‌ల మధ్య 5 నుండి 6 శాతం వ్యత్యాసం ఉంటుందని README విడిగా పేర్కొంది. ఒకే ఫ్లాగ్‌లతో కూడిన రెండు రన్‌లు ఒకే చెక్‌పాయింట్‌లను ఉత్పత్తి చేయవు, ఇది హైపర్‌పారామీటర్ మార్పు సహాయపడిందా లేదా మీరు అదృష్టవంతులయ్యారా అని నిర్ణయించడానికి ప్రయత్నిస్తున్నప్పుడు చాలా ముఖ్యం. పోలిక కోసం, lerobot యొక్క సొంత ట్రైనర్ డిఫాల్ట్‌గా సీడ్ 1000కి సెట్ చేయబడింది, మరియు LeRobot GR00T రెసిపీ --seed=42ని స్పష్టంగా పంపుతుంది.

వాలిడేషన్ డిఫాల్ట్‌గా నిలిపివేయబడింది, మరియు డాక్యుమెంట్ చేయబడిన ఫ్లాగ్ ఈ CLIలో లేదు

ఫైన్-ట్యూనింగ్ eval_strategy="no"తో నడుస్తుంది, కాబట్టి వాలిడేషన్ లాస్ కర్వ్ అస్సలు ఉండదు. మీకు ట్రైనింగ్ లాస్ మాత్రమే లభిస్తుంది. కొత్త-ఎంబోడిమెంట్ గైడ్ --eval-strategy steps --eval-steps 500తో దీన్ని ఆన్ చేయమని చెబుతుంది, కానీ ఆ ఫ్లాగ్ launch_finetune.pyలో లేదు: CLI అనేది టైరో ద్వారా FinetuneConfig డేటాక్లాస్ నుండి రూపొందించబడింది, మరియు eval_strategy, eval_steps మరియు eval_batch_size బదులుగా TrainingConfig యొక్క ఫీల్డ్‌లు. వాటి డిఫాల్ట్‌లు "no", 500 మరియు 2. వాటిని చేరుకోవడానికి, పూర్తి ఎంట్రీ పాయింట్ gr00t/experiment/launch_train.pyని ఉపయోగించండి, ఇక్కడ నెస్టెడ్ ఫ్లాగ్ --training.eval-strategy. ఏదేమైనా, తగ్గుతున్న ట్రైనింగ్ లాస్ మాత్రమే జనరలైజేషన్ గురించి చాలా తక్కువ చెబుతుంది, ఇది లాస్ తగ్గుతుంది కానీ పాలసీ ఏమీ చేయదులో వివరించబడిన పరిస్థితి.

20000-స్టెప్ రన్ ఖర్చు ఎంత

GR00T N1.7కి 80 GB కార్డ్ అవసరం, కాబట్టి ఖర్చు ప్రశ్నకి పరిమిత సమాధానం ఉంది. AY-Robotsలో groot1.7 ట్రైనర్ A100 80 GB లేదా H100 80 GB టైర్‌లో నడుస్తుంది, ఇక్కడ ఒక రన్ స్పాట్ మార్కెట్‌లో గంటకు 1.20 నుండి 2.00 USD చొప్పున 3 నుండి 6 గంటలు పడుతుంది. డిఫాల్ట్ 20000-స్టెప్ జాబ్‌కు ఇది సుమారు 4 నుండి 12 USD. అదే పని SmolVLA లేదా ACTలో గంటకు 0.30 నుండి 0.60 USD మరియు రన్‌కు 1 నుండి 3 USD చొప్పున 24 GB కార్డ్‌లో జరుగుతుంది. అదే నిజమైన ట్రేడ్-ఆఫ్: GR00T ప్రతి ప్రయత్నానికి సుమారు నాలుగు రెట్లు ఎక్కువ ఖర్చవుతుంది, మరియు మీరు దానిని మీ డెస్క్ కింద ఉన్న 4090లో అమలు చేయలేరు.

మోడల్GPU శ్రేణిసాధారణ రన్ సమయంసాధారణ ఖర్చుకనీస ఎపిసోడ్‌లు
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-ఎపిసోడ్ కనీసం ఒక ఫ్లోర్, లక్ష్యం కాదు. NVIDIA యొక్క FAQ మరింత డిమాండ్ చేస్తుంది: సాధారణ స్థిర-స్థాన పిక్ అండ్ ప్లేస్ కోసం సుమారు 100 ట్రాజెక్టరీలు, సంక్లిష్ట లేదా బహుళ-దశల దృశ్యాల కోసం 500 లేదా అంతకంటే ఎక్కువ, మరియు సూక్ష్మ మానిప్యులేషన్ కోసం 100 నుండి 500. మీరు 20 ఎపిసోడ్‌ల వద్ద ఉంటే, సాయంత్రం ట్యూనింగ్ చేయడానికి బదులు మధ్యాహ్నం రికార్డింగ్ చేయండి. డేటా సేకరణ గైడ్ ఉపయోగకరమైన ఎపిసోడ్‌ను వృధా అయిన దాని నుండి వేరు చేసే వాటిని వివరిస్తుంది, మీ మొదటి డేటాసెట్‌ను రికార్డ్ చేయండి అనేది చిన్న వెర్షన్, మరియు SO-100 డేటా సేకరణ అనేది ఆర్మ్-నిర్దిష్టమైనది.

AY-Robots యొక్క GR00T N1.7 కోసం SO-100 పై శిక్షణ గైడ్, GPU టియర్, అవసరమైన డేటాసెట్ ఫార్మాట్ మరియు ట్రైనర్ డిఫాల్ట్‌లతో కూడిన స్పెక్ స్ట్రిప్‌ను చూపుతుంది.
The /train/groot-n1-7-on-so-100 గైడ్ మీరు చేతితో పునర్నిర్మించాల్సిన వాస్తవాలతో ప్రారంభమవుతుంది: GPU టియర్, డేటాసెట్ ఫార్మాట్ మరియు ట్రైనర్ పంపే ఖచ్చితమైన డిఫాల్ట్‌లు.

Step 6: చేతిని తాకడానికి ముందు ఓపెన్-లూప్ మూల్యాంకనం

శిక్షణ పనిచేసిందో లేదో తెలుసుకోవడానికి భౌతిక చేయిపై కొత్త చెక్‌పాయింట్‌ను ఉంచవద్దు. ముందుగా ఓపెన్-లూప్ మూల్యాంకనాన్ని అమలు చేయండి. ఇది రికార్డ్ చేయబడిన ఎపిసోడ్‌ను తిరిగి ప్లే చేస్తుంది, ప్రతి దశలో చర్యల కోసం మోడల్‌ను అడుగుతుంది మరియు MSE మరియు MAEతో గ్రౌండ్ ట్రూత్‌కు వ్యతిరేకంగా అంచనాను ప్లాట్ చేస్తుంది. దీనికి ఎటువంటి ఖర్చు ఉండదు మరియు ఇది 2 మరియు 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
మీరు --save-plot-pathని పాస్ చేయకపోతే ప్లాట్‌లు /tmp/open_loop_eval/traj_<id>.jpegలో సేవ్ చేయబడతాయి. డిఫాల్ట్‌లు: --execution-horizon 16, --steps 200, --denoising-steps 4, --traj-ids 0.

రిపోజిటరీ కస్టమ్ డేటా కోసం లక్ష్య MSEని ప్రచురించడానికి ఉద్దేశ్యపూర్వకంగా నిరాకరిస్తుంది, మరియు అది సరైన నిర్ణయం: ఈ సంఖ్య మీ యాక్షన్ యూనిట్లు, మీ పని మరియు మీ డేటాసెట్ పరిమాణంపై ఆధారపడి ఉంటుంది, కాబట్టి మరొకరి చేయి నుండి కాపీ చేయబడిన థ్రెషోల్డ్ అర్థరహితం. ముఖ్యమైనది ట్రెండ్. ఐదు-ఎపిసోడ్ డెమో డేటాసెట్ మరియు 2000 దశలతో ఒకే H100లో రిపోజిటరీ డాక్యుమెంట్ చేసిన రిఫరెన్స్ రన్ ఇక్కడ ఉంది.

చెక్‌పాయింట్ట్రాజ్ 0లో సగటు MSEట్రాజ్ 0లో సగటు MAE
50087.55.63
100025.43.30
150013.22.18
200010.01.76

ఆకారం సంకేతం, సంపూర్ణ విలువలు కాదు. లోపం స్థిరంగా తగ్గాలి, పేరుకుపోతున్న కొద్దీ. ట్రాజెక్టరీ 0 మాత్రమే కాకుండా, ఐదు శిక్షణ ఎపిసోడ్‌లన్నింటిలో సగటున, రెపో యొక్క చివరి చెక్‌పాయింట్ సుమారుగా 7.5 MSE మరియు 1.5 MAE స్కోర్ చేసింది, కాబట్టి మీరు ఏ ఎపిసోడ్‌లను సగటున తీసుకుంటారనే దానిపై ఆధారపడి రిఫరెన్స్ రన్ కూడా భిన్నంగా ఉంటుంది. మీ స్వంత డేటా గురించి ఏదైనా మార్చడానికి ముందు సవరించని డెమో కమాండ్‌లో మీ స్వంత బేస్‌లైన్‌ను రికార్డ్ చేయండి: మీకు తెలిసిన-మంచి రన్‌ను పునరుత్పత్తి చేయలేకపోతే, మీరు సెటప్ పొరపాటును డేటా సమస్య నుండి వేరు చేయలేరు. రిపోజిటరీ సాధారణ లక్షణాలను కారణాలకు కూడా మ్యాప్ చేస్తుంది, మరియు వాటిలో ప్రతి ఒక్కటి మోడల్ బగ్ కాకుండా కార్యాచరణకు సంబంధించినది.

లక్షణంసంభావ్య కారణం
MSE చెక్‌పాయింట్‌లలో స్థిరంగా లేదా పెరుగుతోందిలెర్నింగ్ రేట్ చాలా తక్కువగా ఉంది, లేదా డేటా అస్సలు లోడ్ అవ్వడం లేదు. --dataset-path మరియు డేటాలోడర్ వర్కర్‌లను తనిఖీ చేయండి.
అంచనా వక్రత స్థిరంగా లేదా స్థిరంగా ఉందిmodality.json కీలు లేదా --modality-config-path సరిపోలడం లేదు. యాక్షన్ కీలు మ్యాప్ చేయబడలేదు.
MSE చాలా ఎక్కువ, లేదా శిక్షణ సమయంలో NaN నష్టంయాక్షన్ మరియు స్టేట్ నార్మలైజేషన్. meta/stats మరియు యాక్షన్ పరిధులు భౌతికంగా ఆమోదయోగ్యమైనవిగా ఉన్నాయని ధృవీకరించండి.
ట్రాజ్ 0లో బాగుంది, నిలిపి ఉంచిన ఎపిసోడ్‌లలో పేలవంగా ఉందిడేటా కొరత, బగ్ కాదు. ఐదు డెమో ఎపిసోడ్‌లు సాధారణీకరించలేవు.

మరొక మార్గం: Isaac-GR00T బదులుగా lerobot-train

ప్రస్తుత LeRobot విడుదల, 2026 ఆగస్టు 3 నుండి PyPIలో 0.6.1, అదే బేస్ వెయిట్‌లను ఫైన్-ట్యూన్ చేయడానికి రెండవ మరియు చాలా భిన్నమైన మార్గాన్ని అందిస్తుంది. LeRobot GR00T N1.7ని పాలసీ రకంగా బహిర్గతం చేస్తుంది మరియు దాని స్వంత lerobot-train ఎంట్రీ పాయింట్ ద్వారా శిక్షణ ఇస్తుంది. ఇక్కడ రెండు విషయాలు ముఖ్యమైనవి. LeRobot CLI అనేది కన్సోల్ స్క్రిప్ట్‌ల సమితి, కాబట్టి మీరు చదివిన ఏదైనా python lerobot/scripts/train.py పాతది మరియు అమలు కాదు. మరియు LeRobot GR00T N1.5 మద్దతును పూర్తిగా తొలగించింది, N1.5 చెక్‌పాయింట్‌లు మరియు కాన్ఫిగ్‌లను మైగ్రేషన్ నోట్‌తో తిరస్కరించింది, కాబట్టి మీకు LeRobot ద్వారా N1.5 అవసరమైతే మీరు lerobot==0.5.1ని పిన్ చేయాలి, ఇది దానికి మద్దతు ఇచ్చే చివరి విడుదల, 2026 ఏప్రిల్ 7న ప్రచురించబడింది.

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-నేటివ్ GR00T N1.7 రెసిపీ. relative_exclude_joints గమనించండి: గ్రిప్పర్ సాపేక్ష చర్యల నుండి మినహాయించబడింది, ఇది ActionRepresentation.ABSOLUTE తో so100_config.py తీసుకునే నిర్ణయం లాంటిదే.
అంశంIsaac-GR00T launch_finetune.pylerobot-train --policy.type=groot
డేటాసెట్ వెర్షన్LeRobot v2 మాత్రమే, మార్పిడి అవసరంస్థానిక LeRobot డేటాసెట్, డౌన్‌గ్రేడ్ లేదు
మోడాలిటీ మ్యాపింగ్meta/modality.json మరియు పైథాన్ డేటా కాన్ఫిగ్modality.json లేదు; కమాండ్ లైన్‌లో --policy.* ఫ్లాగ్‌ల ద్వారా ప్రవర్తన సెట్ చేయబడుతుంది
సీడ్సీడ్ ఫ్లాగ్ అస్సలు లేదు--seed, LeRobot డిఫాల్ట్ 1000
సాపేక్ష చర్యలుడేటా కాన్ఫిగ్‌లో ప్రతి-కీ ActionConfig--policy.use_relative_actions మరియు --policy.relative_exclude_joints
ప్రచురించబడిన రిఫరెన్స్ ఫలితాలుడెమో డేటాపై SO-100 ఓపెన్-లూప్ MSE ట్రెండ్LIBERO సూట్‌లు, నాలుగు సూట్‌లలో సగటు 96.5 శాతం
డిప్లాయ్‌మెంట్ మార్గంZMQ ద్వారా run_gr00t_server.py మరియు eval_so100.pylerobot-rollout, రియల్-టైమ్ చంకింగ్‌తో (queue_threshold 5 లేదా అంతకంటే తక్కువ ఉండాలి)
ఫైన్-ట్యూన్‌ను మీరే నడపడం
ప్రయోజనాలు
  • ప్రతి ఫ్లాగ్ కనిపిస్తుంది మరియు మార్చదగినది. మీరు విజువల్ ఎన్‌కోడర్‌ను అన్‌ఫ్రీజ్ చేయవచ్చు, state_dropout_probని తరలించవచ్చు లేదా యాక్షన్ హారిజన్‌ను తగ్గించవచ్చు.
  • ఓపెన్-లూప్ ప్లాట్లు స్థానిక ఫైల్‌లు. చెక్‌పాయింట్-5000ను చెక్‌పాయింట్-20000తో పోల్చడం ఒక షెల్ కమాండ్.
  • మీరు ఏ ప్లాట్‌ఫారమ్ ఆన్‌లైన్‌లో ఉండటంపై ఆధారపడరు, మరియు చెక్‌పాయింట్ మీ డిస్క్‌లో ప్రామాణిక ఫార్మాట్‌లో ఉంటుంది.
  • LIBERO, SimplerEnv మరియు DROID కోసం రెపో యొక్క బెంచ్‌మార్క్ ఉదాహరణలు మీ స్వంత డేటాను విశ్వసించే ముందు పునరుత్పత్తి చేయడానికి తెలిసిన-మంచి రన్‌లను అందిస్తాయి.
ట్రేడ్-ఆఫ్‌లు
  • ఎన్విరాన్‌మెంట్ చాలా పని. FFmpeg వెర్షన్, CUDA_HOME, git-lfs, గేటెడ్ బ్యాక్‌బోన్, టార్చ్‌కోడెక్: ఇవేవీ మోడల్ సమస్యలు కావు మరియు ప్రతి ఒక్కటి రన్‌ను ఆపివేస్తాయి.
  • v3.0 నుండి v2.1 మార్పిడికి దాని స్వంత ఇన్‌స్టాల్ స్టెప్‌తో ప్రత్యేక వర్చువల్ ఎన్విరాన్‌మెంట్ అవసరం, మరియు ఇది మీ డేటాసెట్ డైరెక్టరీని అక్కడికక్కడే తిరిగి వ్రాస్తుంది.
  • మీరు డీబగ్గింగ్ ప్రారంభించినప్పుడు GPU అద్దె బిల్లింగ్ ప్రారంభమవుతుంది, శిక్షణ ప్రారంభమైనప్పుడు కాదు, మరియు రన్ పూర్తయినప్పుడు ఏదీ ఇన్‌స్టాన్స్‌ను ఆపదు.
  • సీడ్ లేకపోవడం అంటే బిట్-ఫర్-బిట్ పునరుత్పత్తి సాధ్యం కాదు, అదనంగా ఆగ్మెంటేషన్ నుండి మాత్రమే 5 నుండి 6 శాతం రన్-టు-రన్ వ్యత్యాసం ఉంటుంది.

అదే చెక్‌పాయింట్‌ను పొందడానికి రెండు మార్గాలు

మీరు GPUని అద్దెకు తీసుకుంటారు మరియు ప్రతి దశ మీ నియంత్రణలో ఉంటుంది. వాస్తవానికి, మొదటిసారి దీనికి ఒక మధ్యాహ్నం పడుతుంది, ఆ తర్వాత ప్రతిసారి ఇరవై నిమిషాలు మాత్రమే.

  1. SO-100లో lerobot-recordతో ఎపిసోడ్‌లను రికార్డ్ చేయండి. మీకు LeRobot v3.0 డేటాసెట్ లభిస్తుంది.
  2. దీనిని దాని స్వంత virtualenvలో scripts/lerobot_conversion/convert_v3_to_v2.py ఉపయోగించి v2.1కి మార్చండి.
  3. meta/modality.json మరియు ఒక పైథాన్ మోడాలిటీ కాన్ఫిగ్‌ను వ్రాయండి, ఇది EmbodimentTag.NEW_EMBODIMENT కింద నమోదు చేయబడుతుంది.
  4. 80 GB కార్డ్‌ను అద్దెకు తీసుకోండి, సబ్‌మాడ్యూల్స్‌తో క్లోన్ చేయండి, uv సింక్ చేయండి, Hugging Faceకి వ్యతిరేకంగా ప్రామాణీకరించండి.
  5. launch_finetune.pyని అమలు చేయండి, ఆపై అనేక చెక్‌పాయింట్‌లపై open_loop_eval.pyని అమలు చేయండి మరియు హార్డ్‌వేర్‌ను తాకడానికి ముందు MSE ట్రెండ్‌ను సరిపోల్చండి.
  6. మీరు ఇన్‌స్టాన్స్‌ను నాశనం చేయడానికి ముందు మెషిన్ నుండి చెక్‌పాయింట్‌ను తీసివేయండి, ఆపై ఆర్మ్‌కు సర్వింగ్ పాత్‌ను నిర్మించండి.
అందరూ మర్చిపోయే దశ

మీరు అద్దెకు తీసుకున్న ఇన్‌స్టాన్స్‌ను షట్‌డౌన్ చేయడానికి ముందు చెక్‌పాయింట్‌ను కాపీ చేయండి. --save-total-limit 5 అంటే శిక్షణ కొనసాగుతున్నప్పుడు పాత చెక్‌పాయింట్‌లు తొలగించబడతాయి, కాబట్టి మీరు స్టెప్ 5000 వద్ద కోరుకున్న చెక్‌పాయింట్ స్టెప్ 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.

ఆర్మ్‌పై చెక్‌పాయింట్‌ను తిరిగి పొందడం

Isaac-GR00T ZMQ ద్వారా సర్వర్-క్లయింట్ విభజనను ఉపయోగిస్తుంది. పాలసీ GPUలో నడుస్తుంది, మరియు రోబోట్ మెషీన్‌లోని సన్నని క్లయింట్ పరిశీలనలను పంపుతుంది మరియు యాక్షన్ చంక్‌లను స్వీకరిస్తుంది. SO-100 ఉదాహరణ కాపీ చేయడానికి సరిపోతుంది: ప్రారంభించండి run_gr00t_server.py మీ చెక్‌పాయింట్ మరియు --embodiment-tag NEW_EMBODIMENT, ఆపై అమలు చేయండి eval_so100.py రోబోట్ వైపు సీరియల్ పోర్ట్, రోబోట్ ఐడి, కెమెరా సూచికలు మరియు భాషా సూచనతో. ఆ కమాండ్‌లోని కెమెరా పేర్లు మీ modality.json నుండి స్నేహపూర్వక పేర్లతో సరిపోలాలి, OS పరికర సంఖ్యలతో కాదు.

bash
# GPU side
uv run python gr00t/eval/run_gr00t_server.py \
  --model-path /tmp/so100/checkpoint-20000 \
  --embodiment-tag NEW_EMBODIMENT \
  --device cuda:0 \
  --host 0.0.0.0 --port 5555

# robot side, from gr00t/eval/real_robot/SO100
uv run --no-sync python eval_so100.py \
  --robot.type=so101_follower \
  --robot.port=/dev/ttyACM2 \
  --robot.id=orange_follower \
  --robot.cameras="{ front: {type: opencv, index_or_path: 6, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 2, width: 640, height: 480, fps: 30}}" \
  --policy_host=localhost --policy_port=5555 \
  --lang_instruction="put the cube in the yellow bowl"
--execution-horizon ముందుగా అంచనా వేసిన ఎన్ని దశలు తిరిగి ప్లాన్ చేయడానికి ముందు అమలు చేయబడతాయో నియంత్రిస్తుంది. ఇది పాలసీ యొక్క action_horizon కంటే ఎక్కువగా ఉండకూడదు, మరియు ఆ సంఖ్య మీ మోడాలిటీ కాన్ఫిగ్‌లోని యాక్షన్ delta_indices పొడవు, బేస్ మోడల్ యొక్కది కాదు. షిప్ చేయబడిన SO-100 కాన్ఫిగ్ 16ని అంచనా వేస్తుంది, కాబట్టి 16 మీ గరిష్ట పరిమితి; బేస్ nvidia/GR00T-N1.7-3B చెక్‌పాయింట్ 40 కోసం కాన్ఫిగర్ చేయబడింది, మరియు policy.md స్పష్టంగా ఫైన్‌ట్యూన్ చేయబడిన చెక్‌పాయింట్లు భిన్నంగా ఉండవచ్చని చెబుతుంది. దీనిని మించిపోతే, మీరు రెండు సంఖ్యలను పేర్కొంటూ ValueError పొందుతారు. రియల్-టైమ్ డిప్లాయ్‌మెంట్ కోసం డాక్యుమెంట్లు సూచించే విలువ 8. పాత ఫ్లాగ్ పేరు --action-horizon ఇప్పటికీ పనిచేస్తుంది కానీ హెచ్చరిస్తుంది.
7.4 V, 12 V కాదు

మీరు ఆర్మ్‌ను తిరిగి వైరింగ్ చేస్తున్నప్పుడు: SO-100 7.4 V రైల్‌లో Feetech STS3215 బస్ సర్వోలను నడుపుతుంది. వాటికి 12 V సరఫరా చేస్తే అవి పాడైపోతాయి, మరియు మీకు LeKiwi కూడా ఉంటే ఇది సులభమైన పొరపాటు, దాని బేస్ 12 V వద్ద నడుస్తుంది కానీ దాని ఆర్మ్ కాదు. మొదటిసారి పవర్ ఆన్ చేయడానికి ముందు సరఫరాను తనిఖీ చేయండి, పొగ వచ్చిన తర్వాత కాదు. SO-100 హార్డ్‌వేర్ పేజీని మరియు LeKiwiకి వ్యతిరేకంగా SO-100ని చూడండి. ఆర్మ్ పవర్ ఆన్ అయినా ఏమీ కదలకపోతే, సర్వో స్పందించడం లేదు అనే చోట ప్రారంభించండి.

ఇప్పుడు పాలసీ ఎక్కడ నడుస్తుందనే దాని గురించి నిజాయితీగా చెప్పాలంటే, శిక్షణ మరియు సర్వింగ్ వేర్వేరు హార్డ్‌వేర్ కథనాలను కలిగి ఉంటాయి. ఫైన్-ట్యూనింగ్ 40 GB లేదా అంతకంటే ఎక్కువ కోరుకుంటుంది. ఇన్‌ఫరెన్స్ అలా కాదు: README దీనిని 16 GB లేదా అంతకంటే ఎక్కువ అని పేర్కొంటుంది మరియు RTX 4090ని స్పష్టంగా పేర్కొంటుంది, కాబట్టి మీరు ఇప్పటికే కలిగి ఉన్న కార్డ్ అది ఎప్పుడూ ఉత్పత్తి చేయలేని చెక్‌పాయింట్‌ను అందించగలదు. పాలసీ ప్రతిస్పందించేలా ఉందో లేదో నిర్ణయించేది VRAM కాదు, సర్వర్ ఎక్కడ ఉందో అది. AY-Robotsలో GR00T N1.7 క్లౌడ్-మాత్రమే, కాబట్టి కంట్రోల్ లూప్ ప్రతి యాక్షన్ స్టెప్‌కు 152 ms అదనంగా పబ్లిక్-ఇంటర్నెట్ రౌండ్ ట్రిప్‌ను చెల్లిస్తుంది, మరియు కేవలం SmolVLA మరియు ACT కూడా స్థానికంగా నడుస్తాయి. నెమ్మదిగా పికప్ మరియు ప్లేస్ కోసం రిమోట్ పాడ్ తట్టుకోగలదు. ప్రతిస్పందించే దేనికైనా అది కాదు: పాలసీ శిక్షణ వైఫల్యం వలె కనిపించే విధంగా సంకోచిస్తుంది కానీ అది కాదు. ప్రతి యాక్షన్ స్టెప్‌కు 20 ms వద్ద ACT అత్యంత కఠినమైన లూప్‌ను తట్టుకునే మోడల్, SmolVLA 245 ms వద్ద ఉంటుంది, మరియు ఎంత లేటెన్సీ ట్యూనింగ్ ఇప్పటికే ఖర్చు చేసిన రౌండ్ ట్రిప్‌ను తిరిగి కొనుగోలు చేయదు. మీ మొదటి పాలసీని అమలు చేయండి సర్వింగ్ వైపును పూర్తిగా వివరిస్తుంది.

నిజంగా ఏమి తప్పు జరుగుతుంది

  • మొదటిసారి రన్ చేసినప్పుడు GatedRepoError. మీకు nvidia/Cosmos-Reason2-2Bకి యాక్సెస్ మంజూరు చేయబడలేదు, లేదా మీరు ప్రామాణీకరించలేదు. GPU క్లాక్ ఇప్పటికే ప్రారంభమైన తర్వాత ఇది జరుగుతుంది.
  • లోడ్ చేసేటప్పుడు డేటాసెట్ తిరస్కరించబడింది. దాదాపు ఎల్లప్పుడూ v3.0 డేటాసెట్. దీన్ని కింది వెర్షన్‌కు మార్చండి. v3గా తిరస్కరించబడిన డేటాసెట్ చూడండి.
  • సరిపోలని బూలియన్ డైమెన్షన్‌ల గురించి IndexError. మీరు delta_indicesని మార్చారు మరియు గణాంకాలను తిరిగి రూపొందించలేదు.
  • బ్యాచ్ 32 వద్ద మెమరీ అయిపోయింది. --global-batch-sizeని తగ్గించండి మరియు --gradient-accumulation-stepsని పెంచండి, లేదా --num-shards-per-epochని తగ్గించండి, VRAM పరిమితంగా ఉన్నప్పుడు కాన్ఫిగ్ స్పష్టంగా సూచిస్తుంది. శిక్షణ సమయంలో మెమరీ అయిపోయింది చూడండి.
  • నష్టం తగ్గుతుంది, పాలసీ ఏమీ చేయదు. డిఫాల్ట్‌గా వాలిడేషన్ స్ప్లిట్ లేదు, కాబట్టి క్లీన్ ట్రైనింగ్ కర్వ్ చాలా తక్కువ రుజువు చేస్తుంది. ఈ పేజీ నిర్ధారణను వివరిస్తుంది.
  • మీ సెటప్‌లో మాత్రమే పని చేస్తుంది, మరెక్కడా కాదు. ఒకే లైటింగ్ కండిషన్‌లో చిత్రీకరించబడిన చిన్న డేటాసెట్‌తో ఇది ఆశించబడుతుంది. NVIDIA రంగు జిట్టర్ ఆగ్మెంటేషన్ ప్లస్ 20 నుండి 50 ఎపిసోడ్‌లను వివిధ లైటింగ్‌లలో సిఫార్సు చేస్తుంది. ఇక్కడ మరింత.
  • గ్రిప్పర్ ఎప్పుడూ సరిగ్గా మూసుకోదు. action_configsలో గ్రిప్పర్ చర్య ABSOLUTE మరియు ఆర్మ్ జాయింట్లు RELATIVE అని, ఆ క్రమంలో ఉన్నాయని తనిఖీ చేయండి. గ్రిప్పర్ మూసుకోదు ఇతర కారణాలను జాబితా చేస్తుంది.
  • రికార్డింగ్ మధ్యలో కెమెరా నిశ్శబ్దంగా ఆగిపోతుంది. ఎపిసోడ్ ఇప్పటికీ సేవ్ అవుతుంది మరియు వీడియో కీ ఇప్పటికీ ఉంది, అందుకే ఇది చాలా ఇబ్బందికరమైనది. కెమెరా గుర్తించబడలేదు దీన్ని వివరిస్తుంది.

వైఫల్య మోడ్‌ల మొత్తం సూచిక ఇక్కడ ఉంది . మీరు ఒక మోడల్‌ను డీబగ్ చేయకుండా మోడల్‌ల మధ్య ఎంచుకుంటున్నట్లయితే, మరియు బెంచ్‌మార్క్ నంబర్‌లను మూలాలతో కలిగి ఉన్నాయి, మరియు చాలా మందికి నిజంగా అవసరమైన పోలిక, ఎందుకంటే ఇది మీ డెస్క్ కింద ఉన్న కార్డ్‌లో మీరు శిక్షణ ఇవ్వగల మోడల్ మరియు ఫైన్-ట్యూన్ చేయడానికి మీరు 80 GB నోడ్‌ను అద్దెకు తీసుకోవాల్సిన మోడల్ మధ్య ఎంపిక. ఈ మోడల్‌లు ఎందుకు అలా ప్రవర్తిస్తాయో నేపథ్యం కోసం, మరియు ముందుగా చదవడం విలువ. మరియు మీకు ఇంకా ఆర్మ్ లేకపోతే, సైన్అప్ లేకుండా భౌతిక SO-100ని ప్రసారం చేస్తుంది.

GR00T N1.7ని ఫైన్-ట్యూన్ చేయడానికి ముందు నాకు ఎన్ని ఎపిసోడ్‌లు అవసరం?

AY-Robots groot1.7 ట్రైనర్ కోసం 50 ఎపిసోడ్‌ల హార్డ్ ఫ్లోర్‌ను సెట్ చేస్తుంది. NVIDIA యొక్క FAQ మరింత డిమాండింగ్‌గా ఉంది: స్థిరమైన ప్రదేశంలో సాధారణ పిక్ అండ్ ప్లేస్ కోసం సుమారు 100 ట్రాజెక్టరీలు, సంక్లిష్ట లేదా బహుళ-దశల సన్నివేశాల కోసం 500 లేదా అంతకంటే ఎక్కువ, మరియు చక్కటి మానిప్యులేషన్ కోసం 100 నుండి 500. 50 కంటే తక్కువ ఉంటే, హైపర్‌పారామీటర్‌లను ట్యూన్ చేయడం కంటే ఎక్కువ డేటాను రికార్డ్ చేయడం దాదాపు ఎల్లప్పుడూ మంచిది. ఆ తర్వాత విజయం స్థిరంగా ఉంటే, NVIDIA HG-DAggerని సిఫార్సు చేస్తుంది: పాలసీని అమలు చేయండి, అది విఫలమైనప్పుడు జోక్యం చేసుకోండి మరియు ఆ దిద్దుబాట్లను డేటాసెట్‌కు జోడించండి.

నా డేటాసెట్ ఎందుకు లోడ్ అవ్వడం లేదు, మరియు అది ఏ వెర్షన్ అని నేను ఎలా చెప్పగలను?

meta/info.jsonని తెరిచి codebase_versionని చదవండి. LeRobot యొక్క ప్రస్తుత CODEBASE_VERSION మెయిన్‌లో v3.0, కాబట్టి ఇటీవలి టూల్‌చెయిన్‌తో రికార్డ్ చేయబడిన ఏదైనా v3.0, మరియు GR00T లోడర్ v2ని ఆశిస్తుంది. Isaac-GR00T రెపో నుండి scripts/lerobot_conversion/convert_v3_to_v2.pyతో మార్చండి, ఇది మార్చబడిన డేటాసెట్‌లోకి codebase_version: v2.1ని వ్రాస్తుంది. స్క్రిప్ట్ దాని స్వంత వర్చువల్‌ఎన్వ్‌లో నడుస్తుంది ఎందుకంటే దీనికి GR00T పిన్‌ల కంటే భిన్నమైన lerobot వెర్షన్ అవసరం.

నేను RTX 4090లో GR00T N1.7ని ఫైన్-ట్యూన్ చేయవచ్చా?

లేదు. NVIDIA ఫైన్-ట్యూనింగ్ కోసం 40 GB లేదా అంతకంటే ఎక్కువ VRAMని సిఫార్సు చేస్తుంది మరియు H100 లేదా L40 నోడ్‌లను పేర్కొంటుంది; ఇతర కార్డ్‌లు పని చేస్తాయి కానీ చాలా ఎక్కువ సమయం పడుతుంది. 4090కి 24 GB ఉంది. AY-Robots అదే కారణంతో A100 80 GB మరియు H100 80 GB టైర్‌లో మాత్రమే GR00T N1.7ని అందిస్తుంది. ఇన్ఫరెన్స్ వేరే కథ: మోడల్‌ను అందించడానికి 16 GB సరిపోతుంది, కాబట్టి 4090 శిక్షణ ఇవ్వలేని పాలసీని అమలు చేయగలదు. మీరు 24 GBలో శిక్షణ ఇవ్వగల VLA కావాలంటే, అది సుమారు 450 M పారామీటర్‌లతో SmolVLA లేదా సుమారు 80 Mతో ACT.

ఒకే ఫ్లాగ్‌లతో రెండు రన్‌లు వేర్వేరు చెక్‌పాయింట్‌లను ఎందుకు ఇస్తాయి?

ఎందుకంటే launch_finetune.pyకి సీడ్ లేదు. ఇది సీడ్ ఫీల్డ్‌ను కలిగి లేని డేటాక్లాస్ నుండి రూపొందించబడిన టైరో CLI, కాబట్టి ఏదీ RNGని పిన్ చేయదు. నాన్-డిటర్మినిస్టిక్ ఇమేజ్ ఆగ్మెంటేషన్ వల్ల రన్‌ల మధ్య 5 నుండి 6 శాతం వ్యత్యాసం ఉంటుందని రెపో విడిగా పేర్కొంది. పునరుత్పత్తి ముఖ్యం అయితే, బదులుగా LeRobot మార్గాన్ని ఉపయోగించండి: lerobot-train --seedని తీసుకుంటుంది మరియు ప్రచురించబడిన GR00T రెసిపీ --seed=42ని పాస్ చేస్తుంది.

నేను Isaac-GR00T లేదా lerobot-trainని ఉపయోగించాలా?

మీరు రిఫరెన్స్ ఇంప్లిమెంటేషన్, యాక్షన్ రిప్రజెంటేషన్ పై కీ-వారీ నియంత్రణ, TensorRT ఎగుమతి, లేదా మీ స్వంత డేటాను విశ్వసించే ముందు పునరుత్పత్తి చేయడానికి బెంచ్‌మార్క్ ఉదాహరణలు కావాలంటే Isaac-GR00Tని ఉపయోగించండి. మీ డేటాసెట్ ఇప్పటికే LeRobot v3.0 అయితే మరియు మీరు దానిని మార్చకూడదనుకుంటే, మీకు సీడ్ కావాలంటే, లేదా మీ స్టాక్‌లో మిగిలినవి ఇప్పటికే LeRobot అయితే lerobot-trainని ఉపయోగించండి. రెండూ ఒకే nvidia/GR00T-N1.7-3B వెయిట్‌లను ఫైన్-ట్యూన్ చేస్తాయి. LeRobot GR00T N1.5 మద్దతును పూర్తిగా నిలిపివేసిందని గమనించండి: N1.5 చెక్‌పాయింట్‌లు మైగ్రేషన్ నోట్‌తో తిరస్కరించబడతాయి, మరియు వాటిని ఉపయోగించడం కొనసాగించడానికి మీరు lerobot==0.5.1ని పిన్ చేయాలి.

నాకు ముందు కెమెరాతో పాటు మణికట్టు కెమెరా కూడా నిజంగా అవసరమా?

షిప్ చేయబడిన SO-100 కాన్ఫిగరేషన్ రెండింటినీ ఉపయోగిస్తుంది, మరియు modality.json ముందు మరియు మణికట్టును ప్రత్యేక వీడియో కీలుగా మ్యాప్ చేస్తుంది. మీరు ఒక కెమెరాతో శిక్షణ ఇవ్వవచ్చు, మరియు మోడల్ కార్డ్ యొక్క లేటెన్సీ పట్టిక ఒక కెమెరాతో కొలవబడుతుంది, కానీ మణికట్టు వీక్షణ అనేది సంపర్కం సమయంలో గ్రిప్పర్ గురించి పాలసీకి ఉపయోగపడే సమాచారాన్ని ఇస్తుంది. మీ రోల్‌అవుట్‌లలో గ్రిప్పర్ తప్పు సమయంలో మూసుకుంటే, తప్పిపోయిన లేదా తప్పుగా లక్ష్యంగా చేసుకున్న మణికట్టు కెమెరా తనిఖీ చేయవలసిన మొదటి విషయాలలో ఒకటి.

ముందుగా ఎన్విరాన్‌మెంట్‌ను నిర్మించకుండా మీ SO-100లో GR00T N1.7ని ఫైన్-ట్యూన్ చేయండి

ఒక ఫారమ్‌లో మోడల్, డేటాసెట్ మరియు హైపర్‌పారామీటర్‌లను ఎంచుకోండి. బ్యాకెండ్ స్పాట్ మార్కెట్‌లో A100 80 GB లేదా H100ని అద్దెకు తీసుకుంటుంది, బ్యాచ్ 32, లెర్నింగ్ రేట్ 1e-4 మరియు 20000 స్టెప్‌లతో ట్రైనర్‌ను నడుపుతుంది, మరియు చెక్‌పాయింట్‌లను ఆబ్జెక్ట్ స్టోరేజ్‌కు వ్రాస్తుంది. ఒక్కో రన్‌కు సుమారు 4 నుండి 12 USD.

GR00T N1.7 శిక్షణ గైడ్‌ను తెరవండి

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started