
lerobot తో SO-100 పై యాక్షన్ చంకింగ్ ట్రాన్స్ఫార్మర్ను మొదటి నుండి శిక్షణ ఇవ్వండి: act config, chunk_size మరియు n_action_steps, 100000 స్టెప్ షెడ్యూల్, 20 ms ఇన్ఫరెన్స్.
SO-100 పాలసీలలో ACT ప్రత్యేకమైనది. GR00T N1.7 మరియు N1.5 ప్రారంభమవుతాయి nvidia/GR00T-N1.7-3B మరియు nvidia/GR00T-N1.5-3B, Pi0.5 నుండి lerobot/pi05_base. ACT ఏమీ లేకుండా ప్రారంభమవుతుంది: దీనికి బేస్ చెక్పాయింట్ లేదు, ఎందుకంటే ఇది ఫౌండేషన్ మోడల్ కాదు. ఇది సుమారు 80 మిలియన్ పారామీటర్ల ట్రాన్స్ఫార్మర్, మీరు మీ చేతిపై, మీ లైటింగ్ కింద, ఒకే పని కోసం మొదటి నుండి శిక్షణ ఇస్తారు.
అందుకే ఇది 20 ms లో ఒక కంట్రోల్ స్టెప్ను నడుపుతుంది, అయితే 3 బిలియన్ పారామీటర్ల VLA కు 152 నుండి 485 ms అవసరం, మరియు ఒక్కో రన్కు 4 నుండి 12 USD బదులుగా 1 నుండి 3 USD ఖర్చవుతుంది. ఈ గైడ్ మాన్యువల్ మార్గాన్ని వివరిస్తుంది lerobot పై ఒక SO-100: రికార్డ్, act కాన్ఫిగ్, ఏమిటి chunk_size మరియు n_action_steps నియంత్రిస్తాయి, 100000 స్టెప్ షెడ్యూల్, రోల్అవుట్. ఆపై AY-Robots లో అదే పని, ప్లాట్ఫారమ్ సహాయం చేయని చోట కూడా.
మీరు తెలుసుకోవలసినవి
- •ACT మొదటి నుండి శిక్షణ పొందుతుంది: బేస్ మోడల్ లేదు, ప్రీట్రైనింగ్ లేదు, భాషా ఇన్పుట్ లేదు. ఒక చెక్పాయింట్, ఒక పని.
- •పేపర్: సుమారు 80 M పారామీటర్లు, 11 GB RTX 2080 Ti లో సుమారు 5 గంటలు, 0.01 s ఇన్ఫరెన్స్.
- •lerobot డిఫాల్ట్లు: chunk_size 100, n_action_steps 100, batch 8, lr 1e-5, 100000 స్టెప్లు, seed 1000.
- •AY-Robots లో: ఒక్కో స్టెప్కు 20 ms, ఐదింటిలో వేగవంతమైనది. కనీసం 50 ఎపిసోడ్లు, LeRobot v3.0, 24 GB కార్డ్, ఒక్కో రన్కు 1 నుండి 3 USD.
- •ఇది చూసిన పనిలో గెలుస్తుంది, మరియు మీరు భాషా కండిషనింగ్ కోరుకున్న క్షణంలో ఓడిపోతుంది.
23 ఆగస్టు 2026 న lerobot 0.6.x కు వ్యతిరేకంగా తనిఖీ చేయబడింది: pyproject.toml లో main version = "0.6.2" అని చదువుతుంది, సరికొత్త ట్యాగ్ v0.6.1, 3 ఆగస్టు 2026. python lerobot/scripts/train.py తో ప్రారంభమయ్యే ఒక ట్యుటోరియల్ కన్సోల్ ఎంట్రీ పాయింట్ల lerobot-train, lerobot-record మరియు lerobot-rollout కంటే ముందుంది.
ACT అంటే ఏమిటి
యాక్షన్ చంకింగ్ విత్ ట్రాన్స్ఫార్మర్స్ (ACT) ALOHA పేపర్ నుండి వచ్చింది, Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware, Zhao, కుమార్, లెవిన్ మరియు ఫిన్ ద్వారా, arXiv, 23 ఏప్రిల్ 2023. ఈ రిగ్ 50 Hz వద్ద రికార్డ్ చేస్తుంది, నాలుగు వెబ్క్యామ్లు 480x640 రిజల్యూషన్తో 30 fps వద్ద స్ట్రీమ్ చేస్తాయి: రెండు గ్రిప్పర్లపై, ఒకటి పైన, ఒకటి ముందు. 10 నిమిషాల ప్రదర్శనల నుండి, ఆరు నైపుణ్యాలలో 80 నుండి 90 శాతం విజయాన్ని సాధించినట్లు సారాంశం పేర్కొంది, వాటిలో పారదర్శక కండిమెంట్ కప్పును తెరవడం మరియు బ్యాటరీని స్లాట్ చేయడం ఉన్నాయి.
రికార్డింగ్ సెషన్ను ప్లాన్ చేసేటప్పుడు ఈ భాగం మరింత ఉపయోగకరంగా ఉంటుంది: ప్రతి పనికి 50 ప్రదర్శనలు, థ్రెడ్ వెల్క్రోకు 100 మినహా, ఇది 10 నుండి 20 నిమిషాల డేటా మరియు రీసెట్లను లెక్కించిన తర్వాత 30 నుండి 60 నిమిషాల వాల్-క్లాక్ సమయం. విజయం కూడా ఏకరీతిగా లేదు: థ్రెడ్ వెల్క్రో 20 శాతంతో ముగుస్తుంది, పుట్ ఆన్ షూ 92, కప్ ఓపెన్ 84, ప్రెప్ టేప్ 64.
| హైపర్పారామీటర్ | ALOHA paper, Table III | lerobot on main |
|---|---|---|
| లెర్నింగ్ రేట్ | 1e-5 | optimizer_lr = 1e-5 |
| బ్యాచ్ సైజు | 8 | batch_size = 8, in TrainPipelineConfig not ACTConfig |
| ఎన్కోడర్ / డీకోడర్ లేయర్లు | 4 / 7 | n_encoder_layers = 4 / n_decoder_layers = 1 |
| చంక్ సైజు k | 100 | chunk_size = 100 |
| z యొక్క లేటెంట్ డైమెన్షన్ | లేదు; Fig. 11 32 నుండి 512 ప్రొజెక్షన్ను చూపుతుంది | latent_dim = 32 |
| టెంపోరల్ ఎన్సెంబ్లింగ్ | లేదు; రిఫరెన్స్ కోడ్లో --temporal_agg | temporal_ensemble_coeff = None |
పేపర్ 7 డీకోడర్ లేయర్లను జాబితా చేస్తుంది, లెరోబోట్ ఉద్దేశపూర్వకంగా 1ని పంపుతుంది. configuration_act.pyలోని వ్యాఖ్య ప్రకారం, అసలు ఇంప్లిమెంటేషన్లో ఒక బగ్ ఉంది, అంటే మొదటి లేయర్ మాత్రమే ఉపయోగించబడుతుంది, tonyzhaozh/actలో ఇష్యూ 25ని ఉటంకిస్తూ: యాక్షన్ హెడ్ hs[0]ని చదువుతుంది, కాబట్టి అన్ని ఏడు లేయర్లు నడుస్తాయి కానీ మొదటి అవుట్పుట్ మాత్రమే అంచనాకు చేరుకుంటుంది. ఆ ఇష్యూ 23 ఏప్రిల్ 2024 నుండి తెరిచి ఉంది మరియు సమాధానం లేదు. లెరోబోట్ ప్రచురించిన ఫలితాలను ఉత్పత్తి చేసిన ప్రవర్తనకు సరిపోతుంది, ముద్రించిన సంఖ్యకు కాదు. --policy.n_decoder_layersని పెంచండి మరియు పేపర్ ఎప్పుడూ మూల్యాంకనం చేయని మోడల్ను మీరు శిక్షణ ఇస్తారు.
యాక్షన్ చంకింగ్ అనేది మొత్తం ఆలోచన
సాధారణ ప్రవర్తనా క్లోనింగ్ ఒక పరిశీలనను ఒక చర్యకు మ్యాప్ చేస్తుంది, మరియు లోపాలు పెరుగుతాయి: ఒక విచలనం చేయిని పంపిణీ నుండి దూరం చేస్తుంది, చెత్త చర్యను ఉత్పత్తి చేస్తుంది, మరియు ముప్పై అడుగుల తర్వాత గ్రిప్పర్ వస్తువుకు దగ్గరగా ఉండదు. యాక్షన్ చంకింగ్ ఒకేసారి k చర్యలను అంచనా వేస్తుంది మరియు వాటిని అమలు చేస్తుంది, k కారకం ద్వారా సమర్థవంతమైన హోరిజోన్ను తగ్గిస్తుంది. ఇది మానవ డేటాకు ప్రత్యేకమైన ఒక సమస్యను కూడా నిర్వహిస్తుంది: టెలిఆపరేటర్లు పాజ్ చేస్తారు, మరియు ఒకే-దశ మార్కోవియన్ పాలసీ ముందు వచ్చిన దానిపై ఆధారపడిన పాజ్ను మోడల్ చేయదు.
పేపర్ kని నొక్కి చెప్పకుండా దానిని అబ్లేట్ చేస్తుంది. టెంపోరల్ ఎన్సెంబ్లింగ్ ఆఫ్ చేయబడినప్పుడు, నాలుగు సెట్టింగ్లలో సగటున, k = 1 వద్ద 1 శాతం నుండి k = 100 వద్ద 44 శాతానికి విజయం పెరుగుతుంది, ఆపై పాలసీ ఓపెన్-లూప్ నియంత్రణకు దగ్గరగా ఉన్నప్పుడు 200 మరియు 400 వద్ద తగ్గుతుంది. ఆ వక్రరేఖే డిఫాల్ట్ 100 కావడానికి కారణం.
- chunk_size: డీకోడర్ ప్రతి ఫార్వర్డ్ పాస్కు ఎన్ని భవిష్యత్ చర్యలను అంచనా వేస్తుంది. డిఫాల్ట్ 100.
- n_action_steps: మళ్లీ ప్రశ్నించే ముందు మీరు వాటిలో ఎన్నింటిని అమలు చేస్తారు. డిఫాల్ట్ 100, కాబట్టి lerobot మొత్తం చంక్ను ఓపెన్ లూప్లో నడుపుతుంది.
- లెరోబోట్
n_action_steps <= chunk_sizeను ధృవీకరిస్తుంది మరియు మీరు దాన్ని తప్పుగా ఇస్తేValueErrorను పెంచుతుంది.
కార్యాచరణపరంగా ముఖ్యమైనది ఫ్రేమ్ రేట్ ద్వారా భాగించబడిన chunk_size. లెరోబోట్ యొక్క SO-100 ఉదాహరణలు ఉపయోగించే 30 fps వద్ద, 100 చర్యల చంక్ ఒక పరిశీలన నుండి సుమారు 3.3 సెకన్ల కాలాన్ని సూచిస్తుంది. ఆ విండోలో పనికి దిద్దుబాటు అవసరమైతే, తగ్గించండి n_action_steps, కాదు chunk_size: మీరు సుదీర్ఘ అంచనాను ఉంచుతారు మరియు తరచుగా మళ్లీ పరిశీలిస్తారు.
# predict 100 actions, re-query after 25 of them (about 0.8 s at 30 fps)
lerobot-train \
--dataset.repo_id=${HF_USER}/so100_cube \
--policy.type=act \
--policy.chunk_size=100 \
--policy.n_action_steps=25 \
--policy.device=cudaSet --policy.temporal_ensemble_coeff మరియు lerobot n_action_steps = 1ను కోరుతుంది, లేకపోతే NotImplementedErrorను పెంచుతుంది. ఎన్సెంబ్లింగ్ ప్రతి టైమ్స్టెప్లో పాలసీని ప్రశ్నిస్తుంది మరియు ఆ టైమ్స్టెప్ కోసం అతివ్యాప్తి చెందుతున్న అంచనాలను w_i = exp(-m * i) వెయిట్లతో మిళితం చేస్తుంది, అత్యంత పాతది w_0 పొందుతుంది. పేపర్ ACT కోసం దీనిని 3.3 శాతం వద్ద ఉంచుతుంది: వాస్తవమైనది కానీ నిరాడంబరమైనది, మరియు ఇది ఇన్ఫరెన్స్ కౌంట్ను చంక్ పొడవుతో గుణిస్తుంది. ప్రతి స్టెప్కు 20 ms వద్ద సరసమైనది, 485 ms వద్ద కాదు. చూడండి ఇన్ఫరెన్స్ లేటెన్సీ.
ACT ఒక ఫౌండేషన్ మోడల్ను ఓడించినప్పుడు
ఐదు శిక్షణ పొందే విధానాలు పక్కపక్కన, AY-Robots కొలిచి, అద్దెకు తీసుకున్న GPU పరిమాణాన్ని నిర్ణయించడానికి ఉపయోగించే సంఖ్యలతో.
| పాలసీ | ఫ్యామిలీ | పారామీటర్లు | ప్రతి అడుగుకు | GPU శ్రేణి | కనీస ఎపిసోడ్లు | డేటాసెట్ |
|---|---|---|---|---|---|---|
| ACT | స్క్రాచ్ నుండి చంకింగ్ ట్రాన్స్ఫార్మర్ | ~80 M | 20 ms | RTX 4090 / 24 GB | 50 | LeRobot v3.0 |
| SmolVLA | కాంపాక్ట్ VLA | ~450 M | 245 ms | RTX 4090 / 24 GB | 30 | LeRobot v3.0 |
| GR00T N1.7 | VLA ఫౌండేషన్, డిఫ్యూజన్ హెడ్ | ~3 B (~40 M trained) | 152 ms | A100 / H100 80 GB | 50 | LeRobot v2.0 or v2.1 |
| GR00T N1.5 | VLA ఫౌండేషన్, పూర్వగామి | ~3 B | 165 ms | A100 / H100 80 GB | 50 | LeRobot v2.0 or v2.1 |
| Pi0.5 | ఫ్లో-మ్యాచింగ్ VLA, చూడండి ఫ్లో మ్యాచింగ్ | ~3 B, PaliGemma బ్యాక్బోన్ | 485 ms | A100 / H100 80 GB | 50 | LeRobot v3.0 |

- ప్రతి చర్య దశకు 20 ms, ఐదింటిలో వేగవంతమైనది, A100 కాకుండా 24 GB కార్డ్లో.
- 3 B క్లాస్కు 4 నుండి 12 USDతో పోలిస్తే ప్రతి రన్కు 1 నుండి 3 USD.
- ఇది చూసిన కాంటాక్ట్-రిచ్ పనిలో ఖచ్చితమైనది: స్లైడ్ జిప్లాక్ మరియు స్లాట్ బ్యాటరీపై 88 మరియు 96 శాతం, ఇక్కడ మునుపటి పద్ధతులు మొదటి దశను ఎప్పుడూ దాటలేదు.
- భాషా కండిషనింగ్ లేదు: టాస్క్ స్ట్రింగ్ విస్మరించబడుతుంది, కాబట్టి ఒక చెక్పాయింట్ ఒక టాస్క్.
- సెమాంటిక్ ప్రయర్లు లేవు: దానికి తెలిసినవన్నీ మీ 50 ఎపిసోడ్ల నుండి వచ్చాయి.
- పరిమిత సాధారణీకరణ: కెమెరాను కదిపితే, మీరు తిరిగి శిక్షణ ఇవ్వాలి.
- ఇది నిశ్శబ్దంగా విఫలమవుతుంది: నష్టం తగ్గుతుంది, చేయి ఏమీ చేయదు, లాగ్లు ఏమీ చెప్పవు.
- ఇన్ఫరెన్స్ సర్వోల పక్కన ఉంటేనే వేగం ప్రయోజనం ఉంటుంది.
టాస్క్ మరియు సీన్ స్థిరంగా ఉన్నప్పుడు మరియు కదలిక వేగంగా మరియు ఖచ్చితంగా ఉండాల్సినప్పుడు ACTని ఎంచుకోండి. ఒక ఒక చెక్పాయింట్ అనేక సూచనలను కవర్ చేయాల్సినప్పుడు ఎంచుకోండి. రెండు పేజీలు నిర్ణయాన్ని తలపడి పని చేస్తాయి: మరియు . ప్రచురించబడిన బెంచ్మార్క్ల కోసం, ప్రతి సంఖ్యను దాని మూలానికి లింక్ చేస్తుంది.
మీరు ప్రారంభించడానికి ముందు మీకు ఏమి కావాలి
ఒక ఫాలోవర్ ఆర్మ్, కోసం ఒక లీడర్ ఆర్మ్, కనీసం ఒక కెమెరా, 24 GB GPU. ACT చిత్రాలను మరియు జాయింట్ పొజిషన్లను మాత్రమే చదువుతుంది. రెండు కెమెరాలు సరైనవి: వస్తువులు ఎక్కడ ఉన్నాయో చూపడానికి స్థిరమైన ముందు వీక్షణ, ఏమి తాకబోతోందో చూపడానికి ఒక మణికట్టు కెమెరా, ALOHAలో వలె.
| చేయి | సర్వోలు | వోల్టేజ్ | విడిభాగాల ఖర్చు | స్థితి |
|---|---|---|---|---|
| SO-100 | Feetech STS3215 | 7.4 V | ~110 to 150 EUR | పూర్తి మద్దతు, రిఫరెన్స్ ఆర్మ్ |
| SO-101 | Feetech STS3215 | 7.4 V | ~130 to 170 EUR | పూర్తి మద్దతు |
| Koch v1.1 | Dynamixel XL330 / XL430 | 5 V and 12 V rails | ~250 to 350 EUR | అనుకూలమైనది |
| LeKiwi | Feetech STS3215 (arm) | 7.4 V arm, 12 V base | ~400 to 500 EUR | అనుకూలమైనది |
SO-100 మరియు SO-101 Feetech STS3215 సర్వోలను 7.4 V రైల్లో నడుపుతాయి. వాటికి 12 V సరఫరా చేస్తే అవి పాడైపోతాయి, చాలా నిశ్శబ్దంగా పాడవుతాయి కాబట్టి ప్రజలు మొదట సాఫ్ట్వేర్ను నిందిస్తారు, మరియు ఒక Koch 12 V సరఫరా SO-100 బోర్డుకు భౌతికంగా సరిపోతుంది. లేబుల్ను తనిఖీ చేయండి. లక్షణాలు: సర్వో స్పందించడం లేదు, చేయి కదులుతుంది ఆపై వంగిపోతుంది. మరియు SO-100 vs SO-101.
ఖాళీ ఆర్మ్ నుండి రికార్డ్ చేయబడిన డేటాసెట్ వరకు
దిగువన ఉన్న ఫ్లో lerobot 0.6.x. మీకు కాలిబ్రేట్ చేయబడిన ఆర్మ్ మరియు డేటాసెట్ ఉంటే దీన్ని దాటవేయండి. లేకపోతే SO-100 ప్రారంభ గైడ్, అసెంబ్లీని కవర్ చేస్తుంది, రికార్డింగ్ వాక్త్రూ క్యాప్చర్ను కవర్ చేస్తుంది మరియు డేటాసెట్ డాక్యుమెంటేషన్ ఫార్మాట్ను కవర్ చేస్తుంది.
- 1సరైన అదనపు ఫీచర్లతో లెరోబోట్ను ఇన్స్టాల్ చేయండి
రికార్డింగ్ కోసం
core_scripts, శిక్షణ కోసంtraining, Feetech సర్వోల కోసంfeetechఅవసరం. పైథాన్ 3.12+.bashconda create -y -n lerobot python=3.12 conda activate lerobot conda install ffmpeg -c conda-forge pip install 'lerobot[core_scripts,training,feetech]' lerobot-info - 2ప్రతి చేయి యొక్క USB పోర్ట్ను కనుగొనండి
రెండు చేతులను ప్లగ్ చేసి, అడిగినప్పుడు ఒకదాన్ని అన్ప్లగ్ చేయండి. లైనక్స్లో మీరు నోడ్ అనుమతులను తెరవాల్సి రావచ్చు.
bashlerobot-find-port # on Linux, if the port exists but is unreadable: sudo chmod 666 /dev/ttyACM0 - 3మోటారు ఐడిలు మరియు బాడ్రేట్ను సెట్ చేయండి
SO-100లో ఇది అసెంబ్లీకి ముందు జరుగుతుంది: SO-101 వలె కాకుండా, ఒకసారి నిర్మించిన తర్వాత కనెక్టర్లు అందుబాటులో ఉండవు. స్క్రిప్ట్ గ్రిప్పర్ నుండి ఒక మోటారును ఒకేసారి బస్సులో నడుపుతుంది, EEPROMకి ఐడిలను వ్రాస్తుంది.
bashlerobot-setup-motors \ --robot.type=so100_follower \ --robot.port=/dev/ttyACM0 lerobot-setup-motors \ --teleop.type=so100_leader \ --teleop.port=/dev/ttyACM1 - 4రెండు చేతులను కాలిబ్రేట్ చేయండి
ప్రతి జాయింట్ను దాని పరిధి మధ్యలో సెట్ చేయండి, ఎంటర్ నొక్కండి, ఆపై ప్రతిదాన్ని దాని పూర్తి పరిధిలో స్వీప్ చేయండి. కాలిబ్రేషన్ ఒక చేయిపై శిక్షణ పొందిన పాలసీని మరొక దానిపై అమలు చేయడానికి అనుమతిస్తుంది. అదే
idని తిరిగి ఉపయోగించండి.bashlerobot-calibrate \ --robot.type=so100_follower \ --robot.port=/dev/ttyACM0 \ --robot.id=my_follower lerobot-calibrate \ --teleop.type=so100_leader \ --teleop.port=/dev/ttyACM1 \ --teleop.id=my_leader - 5కెమెరాలను ఆన్ చేసి ఒకసారి టెలిఆపరేట్ చేయండి
లెరోబోట్ యొక్క సాధారణ నియమం: మీరు కెమెరా చిత్రాలను మాత్రమే చూస్తూ పనిని చేయగలగాలి. మీరు చేయలేకపోతే, ACT కూడా చేయలేదు. ఇది తదుపరి డీబగ్గింగ్ కంటే ఎక్కువ చెడ్డ డేటాసెట్లను పట్టుకుంటుంది.
bashlerobot-teleoperate \ --robot.type=so100_follower \ --robot.port=/dev/ttyACM0 \ --robot.id=my_follower \ --robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 1, width: 640, height: 480, fps: 30} }" \ --teleop.type=so100_leader \ --teleop.port=/dev/ttyACM1 \ --teleop.id=my_leader \ --display_data=true - 650 ఎపిసోడ్లను రికార్డ్ చేయండి
50 అనేది AY-Robots కనిష్ట సంఖ్య మరియు ALOHA ప్రతి పనికి ఉపయోగించినది. లెరోబోట్ ప్రతి వస్తువు స్థానానికి 10, కెమెరాలు స్థిరంగా, పట్టు స్థిరంగా ఉండాలని సలహా ఇస్తుంది.
nఒక ఎపిసోడ్ను ముగిస్తుంది,rతిరిగి రికార్డ్ చేస్తుంది,qఆపి ఎన్కోడ్ చేస్తుంది.bashHF_USER=$(NO_COLOR=1 hf auth whoami | awk -F': *' 'NR==1 {print $2}') lerobot-record \ --robot.type=so100_follower \ --robot.port=/dev/ttyACM0 \ --robot.id=my_follower \ --robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 1, width: 640, height: 480, fps: 30} }" \ --teleop.type=so100_leader \ --teleop.port=/dev/ttyACM1 \ --teleop.id=my_leader \ --dataset.repo_id=${HF_USER}/so100_cube \ --dataset.num_episodes=50 \ --dataset.single_task="Grab the black cube and put it in the bin" \ --display_data=true

ACTకి ఆధారపడటానికి ముందస్తు సమాచారం లేదు, కాబట్టి ప్రతి అస్థిరత శాశ్వతంగా మారుతుంది. అత్యంత ఖరీదైన మూడు: ఎపిసోడ్ 20 మరియు 21 మధ్య కెమెరా కదిలింది, మధ్యాహ్నం సగం సెట్ను రికార్డ్ చేయడం వల్ల కాంతి మారింది, రెండు విధాలుగా చేసిన పట్టు. ప్రతిదీ ఖచ్చితంగా కనిపించే నష్ట వక్రతను మరియు తప్పు స్థానానికి వెళ్ళే చేతిని ఇస్తుంది. చూడండి నష్టం తగ్గుతుంది, పాలసీ ఏమీ చేయదు, పాలసీ ఒక సెటప్లో మాత్రమే పనిచేస్తుంది మరియు అధిక నాణ్యత గల శిక్షణ డేటాను సేకరించడం.
శిక్షణకు ముందు, కనీసం ఐదు ఎపిసోడ్లను రీప్లే చేయండి. లెరోబోట్ డేటాసెట్ ఫార్మాట్ కెమెరా స్ట్రీమ్లు, జాయింట్ స్టేట్లు మరియు చర్యలను నిల్వ చేస్తుంది ఎపిసోడ్, మరియు రీప్లే ఆ చర్యలను తిరిగి చేయికి పంపుతుంది. రీప్లే పనిని చేయకపోతే, డేటా దానిని కలిగి ఉండదు మరియు శిక్షణ దానిని కనుగొనదు.
lerobot-replay \
--robot.type=so100_follower \
--robot.port=/dev/ttyACM0 \
--robot.id=my_follower \
--dataset.repo_id=${HF_USER}/so100_cube \
--dataset.episode=0ACT పాలసీకి శిక్షణ ఇవ్వడం
ఇది మొత్తం కమాండ్. ACT-నిర్దిష్టమైన ప్రతిదీ ఇప్పటికే డిఫాల్ట్గా ఉంది, అందుకే lerobot ACT పేజీ వాటితో ప్రారంభించమని చెబుతుంది.
lerobot-train \
--dataset.repo_id=${HF_USER}/so100_cube \
--policy.type=act \
--output_dir=outputs/train/act_so100_cube \
--job_name=act_so100_cube \
--policy.device=cuda \
--wandb.enable=true \
--policy.repo_id=${HF_USER}/act_so100_cube--policy.type=act ACTConfigను లోడ్ చేస్తుంది, ఇది మీ డేటాసెట్ రికార్డ్ చేసిన మోటార్లు మరియు కెమెరాల సంఖ్యకు అనుగుణంగా ఉంటుంది, కాబట్టి మీరు అబ్జర్వేషన్ షేప్ను ఎప్పుడూ డిక్లేర్ చేయరు. --wandb.enable=true ఐచ్ఛికం మరియు విలువైనది: 100000 స్టెప్ రన్లో లాస్ కర్వ్ మాత్రమే చౌకైన సిగ్నల్. షెడ్యూల్ ACTConfig నుండి కాకుండా లెరోబోట్ యొక్క ట్రైన్ కాన్ఫిగ్ నుండి వస్తుంది: 100000 స్టెప్లు, బ్యాచ్ 8, సీడ్ 1000, ప్రతి 20000 స్టెప్లకు ఒక చెక్పాయింట్, ప్రతి 200కి లాగింగ్.
ఒక పూర్తి రన్ ఐదు చెక్పాయింట్ డైరెక్టరీలను వదిలివేస్తుంది, 020000 నుండి 100000 వరకు, ప్లస్ ఒక last సిమ్లింక్. వాటన్నింటినీ ఉంచండి: ఉత్తమ పాలసీ తరచుగా చివరిది కాదు.
| సెట్టింగ్ | లెరోబోట్ డిఫాల్ట్ | AY-రోబోట్స్ ACT ఫారమ్ | వ్యాఖ్య |
|---|---|---|---|
| బ్యాచ్ సైజు | 8 | 8 | మీరు VRAM పరిమితులను చేరుకుంటే ముందుగా దీన్ని తగ్గించండి. |
| లెర్నింగ్ రేట్ | 1e-5 | 1e-5 | ALOHA పేపర్లో ఉన్నట్లే. |
| గరిష్ట దశలు | 100000 | 100000 | సుమారుగా 50 ఎపిసోడ్ల సెట్ మెరుగుపడటం ఆగిపోయే చోట. |
| గ్రాడియంట్ అక్యుములేషన్ | 1 | 1, వర్తించదు | బదులుగా బ్యాచ్ సైజును మార్చండి. |
| సీడ్ | 1000 | బయటపెట్టబడింది | GR00T యొక్క టైరో ఎంట్రీ పాయింట్కు సీడ్ లేదు; ACT రన్లు పునరుత్పత్తి చేయదగినవి. |
| chunk_size / n_action_steps | 100 / 100 | 100 / 100, సవరించదగినది | అంచనా మరియు అమలు పరిధి. రెండవదాన్ని తగ్గించండి, మొదటిదాన్ని కాదు. |
| చెక్పాయింట్ ఫ్రీక్వెన్సీ | 20000 | బయటపెట్టబడలేదు | ఇక్కడ saveSteps అనేది GR00T నాబ్. |
ACT బ్యాచ్ సైజు 8తో రెండు 640x480 కెమెరాలతో 24 GBలో సౌకర్యవంతంగా సరిపోతుంది. వేగం కోసం ప్రజలు బ్యాచ్ సైజును పెంచినప్పుడు, లేదా ఒక లెరోబోట్ రికార్డింగ్ ఉదాహరణ చూపిన 1920x1080 ఫ్రేమ్లను దీనికి అందించినప్పుడు ఇది సరిపోవడం ఆగిపోతుంది. 1080p వద్ద రెండు ResNet-18 బ్యాక్బోన్లు చాలా భిన్నమైన మెమరీ ప్రొఫైల్ను కలిగి ఉంటాయి. పెద్ద కార్డ్ను అద్దెకు తీసుకునే ముందు --batch_sizeను 4కి తగ్గించండి. శిక్షణలో మెమరీ లేకపోవడం చూడండి.
వ్యవధి: పేపర్లో 11 GB RTX 2080 Ti పై సుమారు 5 గంటలు, lerobot యొక్క ACT పేజీ ప్రకారం 100k స్టెప్లకు కొన్ని గంటలు, AY-Robots 24 GB టియర్లో 2 నుండి 5 గంటలు. దీనిని తగ్గించవద్దు. రిఫరెన్స్ రెపో యొక్క README ప్రకారం, ఒక జెర్కీ లేదా పాజ్ అయ్యే పాలసీకి సాధారణంగా మరింత శిక్షణ, ఎందుకంటే లాస్ ప్లాటూస్ తర్వాత విజయం మరియు సున్నితత్వం మెరుగుపడుతూనే ఉంటాయి: వాస్తవ ప్రపంచ డేటా కోసం ఇది కనీసం 5000 ఎపోచ్లను కోరుకుంటుంది, లేదా ప్లాటూ తర్వాత మళ్లీ 3 నుండి 4 రెట్లు ఎక్కువ సమయం.
lerobot-train \
--config_path=outputs/train/act_so100_cube/checkpoints/last/pretrained_model/train_config.json \
--resume=trueచేతిపై శిక్షణ పొందిన పాలసీని అమలు చేయడం
డిప్లాయ్మెంట్ ఉపయోగిస్తుంది lerobot-rollout. కెమెరా కీలు రికార్డ్ చేయబడిన వాటితో సరిపోలాలి: front మరియు wrist పై శిక్షణ పొందిన పాలసీ cam0 మరియు cam1 ను అంగీకరించదు, మరియు rename_map సహాయపడదు, ఎందుకంటే దీనికి ప్రీట్రైన్డ్ చెక్పాయింట్ అవసరం. టాస్క్ స్ట్రింగ్ను వదిలివేయవచ్చు; lerobot యొక్క స్వంత ఉదాహరణ ACT కోసం దీనిని స్కిప్ చేయదగినదిగా సూచిస్తుంది.
lerobot-rollout \
--strategy.type=base \
--policy.path=${HF_USER}/act_so100_cube \
--robot.type=so100_follower \
--robot.port=/dev/ttyACM0 \
--robot.id=my_follower \
--robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 1, width: 640, height: 480, fps: 30} }" \
--display_data=true \
--duration=60మూల్యాంకనం గతంలో lerobot-record --policy.path=... ద్వారా జరిగేది. 0.6.xలో ఇది lerobot-rollout, --strategy.type సెలెక్టర్తో ఉంటుంది: base, sentry (ఆటో-అప్లోడ్తో రికార్డింగ్), highlight (కీస్ట్రోక్ ద్వారా సేవ్ చేయబడిన రింగ్ బఫర్), dagger (లూప్లో మానవుడు) మరియు episodic. 23 ఆగస్టు 2026 నాటికి, ACT డాక్యుమెంటేషన్ పేజీ ఇప్పటికీ lerobot-rollout నడుస్తున్న బ్లాక్ పైన నేరుగా "lerobot-record కమాండ్ను ఉపయోగించడం" అని చెబుతోంది. వాక్యాన్ని కాకుండా కమాండ్ను అనుసరించండి.
చివరి మోడల్కు బదులుగా ఒక చెక్పాయింట్ను పిన్ చేయడానికి, --policy.pretrained_revision. దానికి రన్ --save_checkpoint_to_hub=true, డిఫాల్ట్గా ఆఫ్ చేయబడింది: అది లేకుండా lerobot చివరి మోడల్ను మాత్రమే పుష్ చేస్తుంది. దానితో, ప్రతి చెక్పాయింట్ దాని జీరో-ప్యాడెడ్ స్టెప్తో ట్యాగ్ చేయబడుతుంది, కాబట్టి --policy.pretrained_revision=060000 60000వ స్టెప్ దానిని తిరిగి పొందుతుంది. నిజమైన ఆర్మ్పై దానిని 100000తో పోల్చడం అనేది అందుబాటులో ఉన్న చౌకైన ప్రయోగం.
ఒకే చెక్పాయింట్కు రెండు మార్గాలు
పైన పేర్కొన్నవన్నీ మాన్యువల్ మార్గం మరియు అది పని చేస్తుంది. ప్లాట్ఫారమ్ మార్గం GPU లేదా పైథాన్ ఎన్విరాన్మెంట్ను కలిగి ఉండకుండా నియంత్రణను వదులుకుంటుంది.
core_scripts,training,feetech, ffmpeg తో lerobot 0.6.xని ఇన్స్టాల్ చేయండి.- పోర్ట్లను కనుగొనండి, మోటార్ ఐడిలను సెట్ చేయండి, రెండు చేతులను క్రమాంకనం చేయండి, 50 ఎపిసోడ్లను రికార్డ్ చేయండి.
- డేటాలో టాస్క్ ఉందని నిర్ధారించడానికి కొన్ని ఎపిసోడ్లను మళ్లీ ప్లే చేయండి.
- 24 GB GPUని అద్దెకు తీసుకోండి లేదా స్వంతం చేసుకోండి, CUDA మరియు PyTorchని సరిపోల్చండి,
lerobot-train --policy.type=actని అమలు చేయండి. - కొన్ని గంటలు వేచి ఉండండి, ఆపై ఆర్మ్ వద్ద ఉన్న మెషీన్లో
lerobot-rolloutని అమలు చేయండి.
# the two commands that matter, end to end
lerobot-record --robot.type=so100_follower --robot.port=/dev/ttyACM0 \
--teleop.type=so100_leader --teleop.port=/dev/ttyACM1 \
--dataset.repo_id=${HF_USER}/so100_cube --dataset.num_episodes=50 \
--dataset.single_task="Grab the black cube"
lerobot-train --dataset.repo_id=${HF_USER}/so100_cube --policy.type=act \
--output_dir=outputs/train/act_so100_cube --policy.device=cudaపూర్తి నియంత్రణ: configuration_act.pyని సవరించండి, కెమెరాను జోడించండి, ట్రైనర్ను ఫోర్క్ చేయండి. ఒక పనిని పంపడం కంటే పరిశోధన కోసం, ఒక ప్లాట్ఫారమ్ ఒక పరధ్యానం.
- డెస్క్టాప్ క్లయింట్తో రికార్డ్ చేయండి, లేదా Hugging Face repo id లేదా స్థానిక డేటాసెట్ను తీసుకురండి.
- ACT on SO-100 గైడ్ను తెరిచి, మోడల్ మరియు డేటాసెట్ను ఎంచుకోండి. డిఫాల్ట్లు lerobot వాటికి సంబంధించినవి; chunkSize, nActionSteps, seed మరియు logFreq సవరించదగినవి.
- బ్యాకెండ్ VRAM పరిమాణంలో GPUని అద్దెకు తీసుకుంటుంది మరియు ఆబ్జెక్ట్ స్టోరేజ్కు చెక్పాయింట్లను వ్రాస్తుంది.
/api/inference/podఅప్పుడు స్థానిక రోబోట్ క్లయింట్కు పాలసీని అందిస్తుంది. నిష్క్రియ వాచ్డాగ్ పాడ్ను నాశనం చేస్తుంది, కాబట్టి ఏదీ నిశ్శబ్దంగా బిల్ చేయబడదు.- అదే కార్యకలాపాలు CLI, MCP సర్వర్ మరియు ట్రైనింగ్ డాక్స్లో ఉన్నాయి.
ఇది మీ డేటాను సరిచేయదు: కదిలిన కెమెరాతో కూడిన డేటాసెట్ ఇక్కడ కూడా అంతే చెడుగా శిక్షణ పొందుతుంది, మరియు ఫారమ్ దానిని గుర్తించదు. ఇది లేటెన్సీ సమస్యను కూడా తొలగించదు. నియంత్రణ లూప్ ప్రతి చర్య దశకు 20 నుండి 485 ms ఉంటుంది, దీనికి పబ్లిక్-ఇంటర్నెట్ రౌండ్ ట్రిప్లు అదనం, మరియు ACT దాని దశ తక్కువగా ఉన్నందున ఎక్కువగా ప్రభావితమవుతుంది: 60 ms అనేది Pi0.5 యొక్క 485 msపై 12 శాతం మందగమనం, కానీ ACT యొక్క 20 msపై నాలుగు రెట్లు దశ. రిమోట్ ఇన్ఫరెన్స్ నెమ్మదిగా పికప్ మరియు ప్లేస్కు సరిపోతుంది, వేగవంతమైన రియాక్టివ్ మోషన్కు కాదు.

నిజానికి ఏమి తప్పు జరుగుతుంది
శిక్షణ కమాండ్లో దాదాపుగా ఎటువంటి సమస్య ఉండదు. సమస్య దాని చుట్టూ ఉన్న విషయాలలో ఉంటుంది, అవి మొదటిసారి ఎంత తరచుగా ఇబ్బంది పెడతాయో దాని ఆధారంగా క్రమబద్ధీకరించబడ్డాయి.
| లక్షణం | సాధారణ కారణం | పేజీ |
|---|---|---|
| lerobot-find-port ఏమీ చూపడం లేదు | డ్రైవర్, కేబుల్ లేదా నోడ్ అనుమతులు | చేయి గుర్తించబడలేదు |
| రికార్డు సమయంలో కెమెరా లేదు | రీబూట్ చేసినప్పుడు ఇండెక్స్ మారింది, లేదా ఒకే USB కంట్రోలర్పై రెండు కెమెరాలు | కెమెరా గుర్తించబడలేదు |
| శిక్షణ డేటాసెట్ను తిరస్కరిస్తుంది | ACTకి v3.0 కావాలి, GR00Tకి v2.1 కావాలి | డేటాసెట్ v3గా తిరస్కరించబడింది |
| CUDA మెమరీ సరిపోవడం లేదు | బ్యాచ్ పరిమాణం పెరిగింది, లేదా 480pకి బదులుగా 1080p ఫ్రేమ్లు | శిక్షణలో మెమరీ సరిపోవడం లేదు |
| లాస్ బాగుంది, చేయి ఏమీ చేయడం లేదు | డేటాలో పని లేదు, లేదా కెమెరా కదిలింది | లాస్ పడిపోతుంది, పాలసీ ఏమీ చేయడం లేదు |
| ఎపిసోడ్ మధ్యలో అస్థిరమైన కదలిక లేదా విరామం | తక్కువ శిక్షణ, ఒక చంక్ బౌండరీ స్టాల్, లేదా సమయం ముగిసిన ఇన్ఫరెన్స్ కాల్ | పాలసీ కదలిక మధ్యలో స్తంభిస్తుంది |
రెండు వరుసలు ప్రత్యేక శ్రద్ధకు అర్హమైనవి. ACT LeRobot v3.0లో శిక్షణ పొందుతుంది, అయితే GR00T యొక్క లోడర్ దానిపై క్రాష్ అవుతుంది మరియు v2.1 అవసరం, కాబట్టి ACTకి శిక్షణ ఇచ్చే డేటాసెట్ GR00T రన్ను విఫలం చేయగలదు. మరియు చివరి వరుసలో రెండు పరిష్కారాలు ఉన్నాయి: ACT రచయితలు అస్థిరమైన కదలికకు మరింత శిక్షణతో సమాధానం ఇస్తారు, అయితే n_action_steps 100 వద్ద, నిజమైన స్టాల్ ఒక చంక్ బౌండరీ వద్ద ఆగుతుంది, 30 fps వద్ద ప్రతి 3.3 సెకన్లకు ఒక స్పష్టమైన విరామం. తెలుసుకోవలసినవి మరో రెండు: ఒకే చనిపోయిన జాయింట్ సాధారణంగా ఎప్పుడూ వ్రాయబడని సర్వో ఐడి, మరియు దగ్గరకు వస్తుంది కానీ ఎప్పుడూ మూసివేయని గ్రిప్పర్ అంటే ప్రదర్శనలలో గ్రిప్పర్ పరిధి చాలా తక్కువ. పూర్తి సూచిక: వైఫల్య మోడ్ పేజీలు.
ఒక రన్ ఎంత ఖర్చవుతుంది
| Tier | Models | Run time | Price per hour | Cost per run |
|---|---|---|---|---|
| RTX 4090 / 24 GB | ACT, SmolVLA | 2 నుండి 5 గంటలు | 0.30 నుండి 0.60 USD | సుమారు 1 నుండి 3 USD |
| A100 80 GB / H100 | GR00T N1.7, GR00T N1.5, Pi0.5 | 3 నుండి 6 గంటలు | 1.20 నుండి 2.00 USD | సుమారు 4 నుండి 12 USD |
మీరు తర్వాత VLA కావాలనుకున్నా ACTతో ప్రారంభించడానికి ఇది ఒక వాదన. విఫలమైన ACT రన్ కాఫీ ధరతో సమానం మరియు మీ డేటాసెట్లో ఆ పని ఉందో లేదో కొన్ని గంటల్లో మీకు తెలియజేస్తుంది. విఫలమైన GR00T రన్ అదే పాఠం కోసం నాలుగు రెట్లు ఎక్కువ ఖర్చు అవుతుంది. తర్వాత GR00T N1.7 లేదా SmolVLAకి మారడం అనేది రూపంలో మార్పు, పునర్నిర్మాణం కాదు. నేపథ్యం: విజన్-లాంగ్వేజ్-యాక్షన్ మోడల్స్, SO-100 పూర్తి గైడ్, మీ మొదటి పాలసీని శిక్షణ ఇవ్వండి మరియు అనుకరణ అభ్యాసం. ఆర్మ్ లేదా? లైవ్ పేజీ సైన్ అప్ చేయకుండానే నిజమైన SO-100ని నడపడానికి స్ట్రీమ్ చేస్తుంది.
మీ SO-100లో ACTకి శిక్షణ ఇవ్వండి
ఈ ఖచ్చితమైన కలయిక కోసం గైడ్: డిఫాల్ట్లు, GPU టియర్ మరియు రన్ ఖర్చు ఎంత. డేటాసెట్ను ఎంచుకోండి, బ్యాకెండ్ కార్డ్ను అద్దెకు తీసుకుంటుంది మరియు చెక్పాయింట్లను వ్రాస్తుంది.
శిక్షణ గైడ్ను తెరవండిబదులుగా నేను ఫైన్-ట్యూన్ చేయగల ప్రీట్రైన్డ్ ACT మోడల్ ఉందా?▾
లేదు. ACTకి బేస్ మోడల్ లేదు; మీరు శిక్షణ ఇచ్చిన తర్వాత మాత్రమే అది ఉనికిలో ఉంటుంది. అది టూలింగ్లో లోపం కాదు, ACT అంటే అదే: పేపర్ ప్రతి పనికి మొదటి నుండి ఒక పాలసీకి శిక్షణ ఇస్తుంది. విక్రేత చెక్పాయింట్ కోసం, GR00T N1.7 లేదా Pi0.5ని ఉపయోగించండి.
నాకు నిజంగా ఎన్ని ఎపిసోడ్లు అవసరం?▾
50: ALOHA ప్రతి పనికి రికార్డ్ చేసినవి (థ్రెడ్ వెల్క్రో కోసం 100, ఇది చాలా కష్టం) మరియు AY-రోబోట్స్ కనిష్టంగా. lerobot ప్రతి వస్తువు స్థానానికి సుమారు 10, కెమెరాలు స్థిరంగా, పట్టు స్థిరంగా ఉండాలని సలహా ఇస్తుంది. కెమెరా కదిలిన వంద ఎపిసోడ్ల కంటే యాభై శుభ్రమైన ఎపిసోడ్లు మెరుగు.
నేను chunk_sizeని 100 నుండి మార్చాలా?▾
సాధారణంగా కాదు. అబ్లేషన్ k = 1 వద్ద 1 శాతం నుండి k = 100 వద్ద 44 శాతానికి పెరుగుతుంది మరియు తర్వాత తగ్గుతుంది, కాబట్టి 100 పైభాగానికి దగ్గరగా ఉంటుంది. ఆర్మ్ చాలా ఎక్కువ సమయం తీసుకుంటే, బదులుగా n_action_stepsని తగ్గించండి: 30 fps వద్ద, ప్రతి 0.8 సెకన్లకు 25 రీ-క్వెరీలు.
శిక్షణ రన్ ఎంత సమయం పడుతుంది, మరియు నేను దానిని ముందుగానే ఆపవచ్చా?▾
100000 స్టెప్ల కోసం 24 GB కార్డ్లో రెండు నుండి ఐదు గంటలు. ప్రతి 20000 స్టెప్లకు చెక్పాయింట్లు వస్తాయి మరియు --resume=true రన్ను తిరిగి ప్రారంభిస్తుంది, కాబట్టి ముందుగానే ఆపడం సురక్షితం. మొదటి ఫ్లాట్ స్ట్రెచ్ వద్ద మాత్రం కాదు: లాస్ ప్లాటూస్ తర్వాత స్మూత్నెస్ మెరుగుపడుతుంది.
లాస్ తగ్గింది మరియు ఆర్మ్ ఇంకా విఫలమవుతోంది. ఇప్పుడు ఏమి చేయాలి?▾
దాదాపు ఎల్లప్పుడూ డేటాసెట్. ఆర్మ్ వద్ద రికార్డ్ చేసిన ఎపిసోడ్లను రీప్లే చేయండి: రీప్లే పనిని చేయకపోతే, డేటాలో అది లేదు. అప్పుడు ఏదైనా కదిలిందో లేదో తనిఖీ చేయండి, ముఖ్యంగా కెమెరా. ACTకి ముందస్తు జ్ఞానం లేదు, కాబట్టి ఎపిసోడ్ 21లో ఒక చిన్న కదలిక శాశ్వతం.
Sources
- Zhao, Kumar, Levine, Finn: Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware (ACT), arXiv 2304.13705
- ALOHA / ACT project page
- tonyzhaozh/act, the reference implementation and its training-length advice
- tonyzhaozh/act issue 25: the action head reads only the first decoder layer
- huggingface/lerobot
- lerobot ACTConfig: chunk_size, n_action_steps, n_decoder_layers and the rest of the defaults
- lerobot TrainPipelineConfig: steps, batch_size, seed, save_freq, log_freq, save_checkpoint_to_hub
- lerobot train_utils: zero-padded checkpoint dirs, the last symlink and checkpoint push tagging
- lerobot v0.6.1 release, 3 August 2026
- LeRobot docs: ACT
- LeRobot docs: imitation learning on real robots (record, replay, train, rollout)
- LeRobot docs: SO-100 setup, motor ids and calibration
- LeRobot docs: installation and the optional extras
- Hugging Face blog: LeRobot Community Datasets, the ImageNet of Robotics, When and How?
- TheRobotStudio/SO-ARM100: Standard Open Arm 100
Ready for high-quality robotics data?
AY-Robots connects your robots to skilled operators worldwide.
Get Started