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

మీరు ఏదైనా టైప్ చేసే ముందు రన్ కి అవసరమైనవి
| అవసరం | ఫైన్-ట్యూనింగ్ | ఇన్ఫరెన్స్ |
|---|---|---|
| VRAM, NVIDIA మార్గదర్శకత్వం | 40 GB లేదా అంతకంటే ఎక్కువ, H100 లేదా L40 సిఫార్సు చేయబడింది | 16 GB లేదా అంతకంటే ఎక్కువ, RTX 4090 పని చేస్తుంది |
| dGPUలో పైథాన్ మరియు CUDA | 3.12 and CUDA 12.8 | 3.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 uv | uv |
| 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 పారేక్ ఫైల్లను మరియు కెమెరా స్ట్రీమ్లను వ్రాస్తుంది. ఒకవేళ క్రమాంకనం సరిగ్గా లేకపోతే, మీ డేటాసెట్లోని జాయింట్ విలువలు తర్వాత పాలసీని అమలు చేసే రోబోట్ కంటే కొద్దిగా భిన్నమైన రోబోట్ను వివరిస్తాయి, మరియు ఎంత శిక్షణ ఇచ్చినా అది సరికాదు.
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=trueLeRobot యొక్క సలహా ఏమిటంటే, ప్రతి వస్తువు స్థానానికి సుమారు 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 డేటాసెట్ గ్లోసరీ ఎంట్రీ దానిలో వాస్తవానికి ఏమి ఉందో వివరిస్తుంది.
# 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_lerobotv3.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.
దశ 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 కోసం రిపోజిటరీ అందించేది ఇక్కడ యథాతథంగా ఉంది.
{
"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"
}
}
}మీ మార్చబడిన డేటాసెట్లో దీనిని కాపీ చేయండి meta/modality.json వద్ద మరియు వీడియో కీలను మీ కెమెరాలకు వాస్తవంగా ఉన్న పేర్లకు మార్చండి. మీరు ఒకే ఓవర్హెడ్ కెమెరాతో రికార్డ్ చేసి ఉంటే, దానికి పేరు top, అప్పుడు original_key అనేది observation.images.top మరియు స్నేహపూర్వక పేరు మీ డేటా కాన్ఫిగరేషన్ సూచించేది అవుతుంది. ఈ రెండూ ఒకదానికొకటి సరిపోలాలి, మరియు వాటిలో ఏదీ మీ కోసం మరొకదాన్ని తనిఖీ చేయదు. భాషా ఉల్లేఖనం మరింత క్లిష్టంగా ఉంటుంది, ఎందుకంటే అదే కీ మూడు చోట్ల కనిపించాలి.
| లేయర్ | ఫైల్ | రెపోలో ఉపయోగించిన SO-100 ఫారం |
|---|---|---|
| పార్కెట్ కాలమ్ | data/chunk-*/episode_*.parquet | annotation.human.task_description |
| modality.json కీ | meta/modality.json, under "annotation", without the annotation. prefix | human.task_description |
| డేటా కాన్ఫిగరేషన్లో modality_keys | your so100_config.py | annotation.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 టార్గెట్ పొజిషన్గా అంచనా వేస్తుంది, ఎందుకంటే బైనరీ ఓపెన్-ఆర్-క్లోజ్డ్ సిగ్నల్ డెల్టా కంటే టార్గెట్గా మెరుగ్గా పనిచేస్తుంది.
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)ఇక్కడ రెండు వివరాలు మీకు తెలియకపోతే ఒక రోజు ఖర్చు అవుతుంది. ముందుగా, action_configs స్థానపరమైనది: డాక్యుమెంట్లు modality_keys వలె అదే పొడవు మరియు అదే క్రమాన్ని కోరుతాయి, మరియు తప్పుగా పొందినట్లయితే దాని పర్యవసానం గురించి అవి స్పష్టంగా ఉంటాయి, అంటే తప్పు ప్రాతినిధ్యం నిశ్శబ్దంగా వర్తించబడుతుంది. మీ గ్రిప్పర్ డెల్టాగా మరియు మీ ఆర్మ్ అబ్సొల్యూట్ టార్గెట్గా శిక్షణ పొందుతుంది, మరియు ఎటువంటి ఎర్రర్ మెసేజ్ ఉండదు. రెండవది, register_modality_config ట్యాగ్ ఇప్పటికే నమోదు చేయబడలేదని ధృవీకరిస్తుంది, కాబట్టి అదే పైథాన్ ప్రాసెస్లో రెండవ NEW_EMBODIMENT కాన్ఫిగ్ Embodiment tag ... already registered తో ఆగిపోతుంది. మీరు వీటిలో రెండింటిని ఒకే స్క్రిప్ట్లోకి దిగుమతి చేసుకోలేరు. మూడవ నియమం తరువాత, డిప్లాయ్మెంట్ వద్ద అమలు చేయబడుతుంది: యాక్షన్ delta_indices సున్నా నుండి ప్రారంభమయ్యే నిరంతర పరిధి అయి ఉండాలి. [0, 4, 8] వంటి స్పార్స్ విండో తిరస్కరించబడుతుంది, ఎందుకంటే డౌన్స్ట్రీమ్లోని ప్రతిదీ అంచనా వేసిన భాగాన్ని సరళంగా సూచిస్తుంది మరియు లేకపోతే తప్పు వరుసలను అమలు చేస్తుంది.
నార్మలైజేషన్ గణాంకాలు, ముఖ్యంగా 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-పిన్ చేయబడిన వీల్ను తిరిగి ధృవీకరిస్తోంది మరియు దీనికి రెండు లేదా మూడు సెకన్లు పడుతుంది.
- 1git-lfsని ఇన్స్టాల్ చేయండి, ఆపై సబ్మాడ్యూల్స్తో క్లోన్ చేయండి
git-lfs తప్పనిసరి, ఐచ్ఛికం కాదు. ఇది లేకుండా demo_data/లోని పారేక్ ఫైల్లు పాయింటర్ స్టబ్లుగా వస్తాయి మరియు ఫైల్ జాబితాలో ఉన్నట్లు కనిపించే డేటాసెట్లో డెమో రన్ విఫలమవుతుంది.
bashsudo apt install git-lfs && git lfs install git clone --recurse-submodules https://github.com/NVIDIA/Isaac-GR00T cd Isaac-GR00T - 2uvని ఇన్స్టాల్ చేయండి మరియు పర్యావరణాన్ని సమకాలీకరించండి
డిఫాల్ట్ ఇన్స్టాల్ ఫ్లాష్-అటెన్షన్ మరియు టెన్సర్ఆర్టితో సహా GPU డిపెండెన్సీలను లాగుతుంది. కొత్త A100 లేదా H100 ఇమేజ్లో ఇది అతి పొడవైన ఒకే దశ, కాబట్టి మీరు మరేదైనా శ్రద్ధ పెట్టడం ప్రారంభించే ముందు దీన్ని చేయండి.
bashcurl -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హగ్గింగ్ ఫేస్కు వ్యతిరేకంగా ప్రామాణీకరించండి
మొదటి శిక్షణ ప్రారంభానికి ముందు దీన్ని చేయండి, ఎనిమిది నిమిషాల తర్వాత అది విఫలమైన తర్వాత కాదు.
bashuv run huggingface-cli login # or: export HF_TOKEN=<your_token> - 4షిప్ చేయబడిన SO-100 డెమో డేటాపై శానిటీ-చెక్
మీ స్వంత రికార్డింగ్ను తాకడానికి ముందు, demo_data/cube_to_bowl_5లో 2000 స్టెప్లను అమలు చేయండి. ఇది ఐదు ఎపిసోడ్లు, ఇది త్వరగా పూర్తవుతుంది మరియు ఇది మీ డేటా కాకుండా పర్యావరణాన్ని రుజువు చేస్తుంది. ఈ రన్ విఫలమైతే, మీ డేటాసెట్కు మీరు చేసేది ఏదీ సహాయపడదు.
bashCUDA_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 ఉదాహరణ వదిలివేసిన ఆగ్మెంటేషన్ మరియు చెక్పాయింటింగ్ ఫ్లాగ్లు కూడా ఉన్నాయి. ఇది సంకుచిత అర్థంలో: భాషా బ్యాక్బోన్ మరియు విజువల్ ఎన్కోడర్ స్తంభింపజేయబడతాయి, మరియు శిక్షణ పొందేవి ప్రొజెక్టర్ మరియు డిఫ్యూషన్ యాక్షన్ హెడ్.
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| ఫ్లాగ్ | FinetuneConfigలో డిఫాల్ట్ | ఇది ఏమి చేస్తుంది |
|---|---|---|
| --global-batch-size | 64 | గ్రాడియంట్ అక్యుములేషన్ ముందు అన్ని GPUలలో మొత్తం బ్యాచ్. పంపిన ఉదాహరణలు 32ని ఉపయోగిస్తాయి. |
| --learning-rate | 1e-4 | AY-Robots దాని groot1.7 ట్రైనర్ కోసం పంపే అదే విలువ. |
| --max-steps | 10000 | మొత్తం ఆప్టిమైజర్ స్టెప్స్. examples/finetune.sh వ్రాపర్ కూడా 10000కి డిఫాల్ట్ అవుతుంది. |
| --gradient-accumulation-steps | 1 | ప్రభావవంతమైన బ్యాచ్ను గుణిస్తుంది. 1 కంటే ఎక్కువ విలువలు సేకరించిన పరిమాణాన్ని మీకు తెలియజేసే హెచ్చరికను విడుదల చేస్తాయి. |
| --save-steps and --save-total-limit | 1000 and 5 | చెక్పాయింట్ ఫ్రీక్వెన్సీ, మరియు ఎన్ని ఉంచబడతాయి. పాతవి తొలగించబడతాయి. |
| --weight-decay and --warmup-ratio | 1e-5 and 0.05 | examples/finetune.sh ద్వారా కూడా స్పష్టంగా సెట్ చేయబడింది. |
| --state-dropout-prob | 0.2 in the CLI, 0.8 in the model config | శిక్షణ సమయంలో ప్రొప్రియోసెప్టివ్ స్థితిని యాదృచ్ఛికంగా తొలగిస్తుంది. మీ పని స్థితిపై ఆధారపడి ఉంటే దానిని తగ్గించండి. |
| --tune-llm and --tune-visual | False and False | బ్యాక్బోన్ డిఫాల్ట్గా స్తంభింపజేయబడుతుంది. |
| --tune-projector and --tune-diffusion-model | True and True | ప్రొజెక్టర్ మరియు డిఫ్యూషన్ యాక్షన్ హెడ్ వాస్తవానికి శిక్షణ పొందేవి. |
| --use-percentiles | True | ముడి కనిష్ట మరియు గరిష్ట విలువలకు బదులుగా q01 మరియు q99తో నార్మలైజ్ చేయండి. |
| --dataloader-num-workers | 2 | లోడర్ డిజైన్ ద్వారా CPU-ఆధారితమైనది. ఉదాహరణలు దీనిని 4కి పెంచుతాయి. |
| --seed | does not exist | ఈ CLIలో సీడ్ ఫ్లాగ్ లేదు. |
ఆ చివరి వరుస తప్పు కాదు. launch_finetune.py అనేది డేటాక్లాస్ నుండి రూపొందించబడిన టైరో CLI, మరియు ఆ డేటాక్లాస్లో సీడ్ ఫీల్డ్ లేదు. నాన్-డిటర్మినిస్టిక్ ఇమేజ్ ఆగ్మెంటేషన్ కారణంగా రన్ల మధ్య 5 నుండి 6 శాతం వ్యత్యాసం ఉంటుందని README విడిగా పేర్కొంది. ఒకే ఫ్లాగ్లతో కూడిన రెండు రన్లు ఒకే చెక్పాయింట్లను ఉత్పత్తి చేయవు, ఇది హైపర్పారామీటర్ మార్పు సహాయపడిందా లేదా మీరు అదృష్టవంతులయ్యారా అని నిర్ణయించడానికి ప్రయత్నిస్తున్నప్పుడు చాలా ముఖ్యం. పోలిక కోసం, lerobot యొక్క సొంత ట్రైనర్ డిఫాల్ట్గా సీడ్ 1000కి సెట్ చేయబడింది, మరియు LeRobot GR00T రెసిపీ --seed=42ని స్పష్టంగా పంపుతుంది.
ఫైన్-ట్యూనింగ్ 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.7 | A100 80 GB or H100 80 GB | 3 to 6 hours | 4 to 12 USD | 50 |
| GR00T N1.5 | A100 80 GB or H100 80 GB | 3 to 6 hours | 4 to 12 USD | 50 |
| Pi0.5 | A100 80 GB or H100 80 GB | 3 to 6 hours | 4 to 12 USD | 50 |
| SmolVLA | RTX 4090 or any 24 GB card | 2 to 5 hours | 1 to 3 USD | 30 |
| ACT | RTX 4090 or any 24 GB card | 2 to 5 hours | 1 to 3 USD | 50 |
50-ఎపిసోడ్ కనీసం ఒక ఫ్లోర్, లక్ష్యం కాదు. NVIDIA యొక్క FAQ మరింత డిమాండ్ చేస్తుంది: సాధారణ స్థిర-స్థాన పిక్ అండ్ ప్లేస్ కోసం సుమారు 100 ట్రాజెక్టరీలు, సంక్లిష్ట లేదా బహుళ-దశల దృశ్యాల కోసం 500 లేదా అంతకంటే ఎక్కువ, మరియు సూక్ష్మ మానిప్యులేషన్ కోసం 100 నుండి 500. మీరు 20 ఎపిసోడ్ల వద్ద ఉంటే, సాయంత్రం ట్యూనింగ్ చేయడానికి బదులు మధ్యాహ్నం రికార్డింగ్ చేయండి. డేటా సేకరణ గైడ్ ఉపయోగకరమైన ఎపిసోడ్ను వృధా అయిన దాని నుండి వేరు చేసే వాటిని వివరిస్తుంది, మీ మొదటి డేటాసెట్ను రికార్డ్ చేయండి అనేది చిన్న వెర్షన్, మరియు SO-100 డేటా సేకరణ అనేది ఆర్మ్-నిర్దిష్టమైనది.

Step 6: చేతిని తాకడానికి ముందు ఓపెన్-లూప్ మూల్యాంకనం
శిక్షణ పనిచేసిందో లేదో తెలుసుకోవడానికి భౌతిక చేయిపై కొత్త చెక్పాయింట్ను ఉంచవద్దు. ముందుగా ఓపెన్-లూప్ మూల్యాంకనాన్ని అమలు చేయండి. ఇది రికార్డ్ చేయబడిన ఎపిసోడ్ను తిరిగి ప్లే చేస్తుంది, ప్రతి దశలో చర్యల కోసం మోడల్ను అడుగుతుంది మరియు MSE మరియు MAEతో గ్రౌండ్ ట్రూత్కు వ్యతిరేకంగా అంచనాను ప్లాట్ చేస్తుంది. దీనికి ఎటువంటి ఖర్చు ఉండదు మరియు ఇది 2 మరియు 3 దశల నుండి మ్యాపింగ్ లోపాలను పట్టుకుంటుంది.
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రిపోజిటరీ కస్టమ్ డేటా కోసం లక్ష్య MSEని ప్రచురించడానికి ఉద్దేశ్యపూర్వకంగా నిరాకరిస్తుంది, మరియు అది సరైన నిర్ణయం: ఈ సంఖ్య మీ యాక్షన్ యూనిట్లు, మీ పని మరియు మీ డేటాసెట్ పరిమాణంపై ఆధారపడి ఉంటుంది, కాబట్టి మరొకరి చేయి నుండి కాపీ చేయబడిన థ్రెషోల్డ్ అర్థరహితం. ముఖ్యమైనది ట్రెండ్. ఐదు-ఎపిసోడ్ డెమో డేటాసెట్ మరియు 2000 దశలతో ఒకే H100లో రిపోజిటరీ డాక్యుమెంట్ చేసిన రిఫరెన్స్ రన్ ఇక్కడ ఉంది.
| చెక్పాయింట్ | ట్రాజ్ 0లో సగటు MSE | ట్రాజ్ 0లో సగటు MAE |
|---|---|---|
| 500 | 87.5 | 5.63 |
| 1000 | 25.4 | 3.30 |
| 1500 | 13.2 | 2.18 |
| 2000 | 10.0 | 1.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న ప్రచురించబడింది.
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| అంశం | Isaac-GR00T launch_finetune.py | lerobot-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.py | lerobot-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ని అద్దెకు తీసుకుంటారు మరియు ప్రతి దశ మీ నియంత్రణలో ఉంటుంది. వాస్తవానికి, మొదటిసారి దీనికి ఒక మధ్యాహ్నం పడుతుంది, ఆ తర్వాత ప్రతిసారి ఇరవై నిమిషాలు మాత్రమే.
- SO-100లో lerobot-recordతో ఎపిసోడ్లను రికార్డ్ చేయండి. మీకు LeRobot v3.0 డేటాసెట్ లభిస్తుంది.
- దీనిని దాని స్వంత virtualenvలో scripts/lerobot_conversion/convert_v3_to_v2.py ఉపయోగించి v2.1కి మార్చండి.
- meta/modality.json మరియు ఒక పైథాన్ మోడాలిటీ కాన్ఫిగ్ను వ్రాయండి, ఇది EmbodimentTag.NEW_EMBODIMENT కింద నమోదు చేయబడుతుంది.
- 80 GB కార్డ్ను అద్దెకు తీసుకోండి, సబ్మాడ్యూల్స్తో క్లోన్ చేయండి, uv సింక్ చేయండి, Hugging Faceకి వ్యతిరేకంగా ప్రామాణీకరించండి.
- launch_finetune.pyని అమలు చేయండి, ఆపై అనేక చెక్పాయింట్లపై open_loop_eval.pyని అమలు చేయండి మరియు హార్డ్వేర్ను తాకడానికి ముందు MSE ట్రెండ్ను సరిపోల్చండి.
- మీరు ఇన్స్టాన్స్ను నాశనం చేయడానికి ముందు మెషిన్ నుండి చెక్పాయింట్ను తీసివేయండి, ఆపై ఆర్మ్కు సర్వింగ్ పాత్ను నిర్మించండి.
మీరు అద్దెకు తీసుకున్న ఇన్స్టాన్స్ను షట్డౌన్ చేయడానికి ముందు చెక్పాయింట్ను కాపీ చేయండి. --save-total-limit 5 అంటే శిక్షణ కొనసాగుతున్నప్పుడు పాత చెక్పాయింట్లు తొలగించబడతాయి, కాబట్టి మీరు స్టెప్ 5000 వద్ద కోరుకున్న చెక్పాయింట్ స్టెప్ 20000 వద్ద ఉండకపోవచ్చు.
ఫారమ్గా అదే పని. మీరు మోడల్ మరియు డేటాసెట్ను ఎంచుకుంటారు, బ్యాకెండ్ అవసరమైన VRAM ద్వారా స్పాట్ మార్కెట్లో GPUని అద్దెకు తీసుకుంటుంది, ట్రైనర్ను నడుపుతుంది మరియు చెక్పాయింట్లను ఆబ్జెక్ట్ స్టోరేజ్కు వ్రాస్తుంది. GR00T N1.7 on SO-100 గైడ్ అనేది ఈ ఖచ్చితమైన కలయిక; ట్రైనింగ్ మ్యాట్రిక్స్లో SO-101లో GR00T N1.7తో సహా ప్రతి ఇతర మోడల్ మరియు ఆర్మ్ జత ఉన్నాయి.
| groot1.7 ట్రైనర్ పంపేది | Value |
|---|---|
| బ్యాచ్ సైజు | 32 |
| లెర్నింగ్ రేట్ | 1e-4 |
| గరిష్ట స్టెప్స్ | 20000 |
| గ్రాడియంట్ అక్యుములేషన్ | 1, and it does take effect for this trainer |
| ఫారమ్లో బహిర్గతమైన అదనపు నాబ్ | saveSteps |
| బేస్ చెక్పాయింట్ | nvidia/GR00T-N1.7-3B |
| ఆమోదించబడిన డేటాసెట్ ఫార్మాట్ | LeRobot v2.0 or v2.1 |
డేటాసెట్ Hugging Face రెపో ఐడి నుండి, మీ స్వంత మెషిన్ నుండి, లేదా మీరు డెస్క్టాప్ క్లయింట్తో రికార్డ్ చేసిన సెషన్ నుండి రావచ్చు. ఇన్ఫరెన్స్ ఒక ప్రత్యేక దశ: ప్లాట్ఫారమ్ పాలసీని అందించే ఒక పాడ్ను అందిస్తుంది, మరియు మీ స్థానిక రోబోట్ క్లయింట్ ఆ ఎండ్పాయింట్తో మాట్లాడుతుంది. పాడ్లు ఐడిల్ వాచ్డాగ్ను కలిగి ఉంటాయి మరియు ఐడిల్ పీరియడ్ తర్వాత తమను తాము నాశనం చేసుకుంటాయి, కాబట్టి మర్చిపోయిన బ్రౌజర్ ట్యాబ్ రాత్రిపూట బిల్లు చేయదు. మీరు క్లిక్ చేయకూడదనుకుంటే, అదే ఆపరేషన్లు CLIలో మరియు MCP సర్వర్లో కూడా ఉన్నాయి.
GR00T N1.7 మరియు Pi0.5 ఇక్కడ క్లౌడ్-మాత్రమే; SmolVLA మరియు ACT మాత్రమే స్థానికంగా కూడా నడుస్తాయి. v2.1 అవసరం కూడా పోదు, ఎందుకంటే GR00T లోడర్ దానిని అంగీకరించడానికి ముందు v3.0 డేటాసెట్ను ఇప్పటికీ మార్చాలి. మరియు మీ modality.json సెమాంటిక్స్ను ఏదీ మీ కోసం వ్రాయదు: మీ కెమెరా కీలు లేదా మీ భాషా కీ తప్పుగా ఉంటే, అవి రెండు మార్గాల్లోనూ తప్పుగా ఉంటాయి. బ్యాకెండ్ మీ తరపున ఏమి చేస్తుంది మరియు ఏమి చేయదు అనే దాని కోసం ట్రైనింగ్ డాక్యుమెంట్లను చూడండి.

ఆర్మ్పై చెక్పాయింట్ను తిరిగి పొందడం
Isaac-GR00T ZMQ ద్వారా సర్వర్-క్లయింట్ విభజనను ఉపయోగిస్తుంది. పాలసీ GPUలో నడుస్తుంది, మరియు రోబోట్ మెషీన్లోని సన్నని క్లయింట్ పరిశీలనలను పంపుతుంది మరియు యాక్షన్ చంక్లను స్వీకరిస్తుంది. SO-100 ఉదాహరణ కాపీ చేయడానికి సరిపోతుంది: ప్రారంభించండి run_gr00t_server.py మీ చెక్పాయింట్ మరియు --embodiment-tag NEW_EMBODIMENT, ఆపై అమలు చేయండి eval_so100.py రోబోట్ వైపు సీరియల్ పోర్ట్, రోబోట్ ఐడి, కెమెరా సూచికలు మరియు భాషా సూచనతో. ఆ కమాండ్లోని కెమెరా పేర్లు మీ modality.json నుండి స్నేహపూర్వక పేర్లతో సరిపోలాలి, OS పరికర సంఖ్యలతో కాదు.
# 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"మీరు ఆర్మ్ను తిరిగి వైరింగ్ చేస్తున్నప్పుడు: 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 శిక్షణ గైడ్ను తెరవండిSources
- NVIDIA Isaac-GR00T repository README, N1.7 main branch
- Isaac-GR00T: Fine-tune on Custom Embodiments (NEW_EMBODIMENT)
- Isaac-GR00T: Finetuning Models for the SO100/SO101 Robot
- Isaac-GR00T: Robot Data Preparation Guide, the GR00T LeRobot format
- Isaac-GR00T: modality config and ActionConfig reference
- Isaac-GR00T: Policy API Guide and the embodiment tag list
- Isaac-GR00T: FinetuneConfig dataclass with every CLI default
- Isaac-GR00T: the shared finetune launcher wrapper
- GR00T N1.7 FAQ: data volume, augmentation and deployment
- nvidia/GR00T-N1.7-3B model card, including the inference timing table
- nvidia/Cosmos-Reason2-2B, the gated VLM backbone used by N1.7
- GR00T N1: An Open Foundation Model for Generalist Humanoid Robots
- NVIDIA Isaac GR00T N1.7: Open Reasoning VLA Model for Humanoid Robots
- LeRobot: GR00T Policy, the lerobot-train recipe
- LeRobot: Imitation Learning on Real-World Robots (lerobot-record, lerobot-train)
Ready for high-quality robotics data?
AY-Robots connects your robots to skilled operators worldwide.
Get Started