
lerobot वापरून SO-100 वर सुरुवातीपासून ॲक्शन चंकिंग ट्रान्सफॉर्मर प्रशिक्षित करा: ॲक्ट कॉन्फिग, 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 खर्च येतो. हे मार्गदर्शक लेरोबॉट सह एसओ-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 विरुद्ध तपासले: main वरील pyproject.toml मध्ये version = "0.6.2" असे वाचले आहे, सर्वात नवीन टॅग v0.6.1, 3 ऑगस्ट 2026. python lerobot/scripts/train.py ने सुरू होणारे ट्यूटोरियल lerobot-train, lerobot-record आणि lerobot-rollout या कन्सोल एंट्री पॉईंट्सच्या आधीचे आहे.
ACT प्रत्यक्षात काय आहे
ट्रान्सफॉर्मर्ससह ॲक्शन चंकिंग (Action Chunking with Transformers) ALOHA पेपरमधून आले आहे, Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware, झाओ, कुमार, लेविन आणि फिन यांनी लिहिलेला, arXiv, 23 एप्रिल 2023. हे उपकरण 50 Hz वर रेकॉर्ड करते, ज्यामध्ये चार वेबकॅम 480x640 रिझोल्यूशनवर 30 fps ने स्ट्रीम करतात: दोन ग्रिपरवर, एक वर आणि एक समोर. अमूर्त (abstract) मध्ये 80 ते 90 टक्के यशासह सहा कौशल्यांचा दावा केला आहे, ज्यात पारदर्शक मसाल्याचा कप उघडणे आणि बॅटरी बसवणे यांचा समावेश आहे, हे सर्व 10 मिनिटांच्या प्रात्यक्षिकांवर आधारित आहे.
रेकॉर्डिंग सत्राचे नियोजन करताना मुख्य भाग अधिक उपयुक्त ठरतो: प्रत्येक कार्यासाठी 50 प्रात्यक्षिके, Thread Velcro साठी 100 वगळता, जे 10 ते 20 मिनिटांचा डेटा आणि रीसेट मोजल्यानंतर 30 ते 60 मिनिटांचा वॉल-क्लॉक वेळ असतो. यश देखील एकसमान नाही: Thread Velcro 20 टक्के, Put On Shoe 92, Cup Open 84, Prep Tape 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 चा लॅटेंट डायमेन्शन | absent; Fig. 11 shows a 32 to 512 projection | latent_dim = 32 |
| टेम्पोरल एन्सेम्बलिंग | absent; --temporal_agg in the reference code | temporal_ensemble_coeff = None |
पेपरमध्ये 7 डीकोडर लेयर्सची यादी आहे, lerobot जाणूनबुजून 1 पाठवते. configuration_act.py मधील टिप्पणीनुसार मूळ अंमलबजावणीमध्ये एक बग आहे, ज्यामुळे फक्त पहिला लेयर वापरला जातो, tonyzhaozh/act मधील इश्यू 25 चा संदर्भ देत: ॲक्शन हेड hs[0] वाचते, त्यामुळे सर्व सात लेयर्स चालतात पण फक्त पहिले आउटपुट प्रेडिक्शनपर्यंत पोहोचते. हा इश्यू 23 एप्रिल 2024 पासून खुला आणि अनुत्तरित आहे. lerobot प्रकाशित परिणाम देणाऱ्या वर्तनाशी जुळते, छापलेल्या संख्येशी नाही. --policy.n_decoder_layers वाढवा आणि तुम्ही असे मॉडेल प्रशिक्षित कराल ज्याचे पेपरमध्ये कधीही मूल्यांकन केले गेले नाही.
ॲक्शन चंकिंग हीच मुख्य कल्पना आहे
सामान्य बिहेवियरल क्लोनिंग एका निरीक्षणाचे एका ॲक्शनमध्ये मॅपिंग करते आणि चुका वाढत जातात: विचलन हाताला ऑफ-डिस्ट्रिब्यूशन करते, ज्यामुळे वाईट ॲक्शन तयार होते आणि तीस पावले पुढे ग्रिपर वस्तूजवळही नसतो. ॲक्शन चंकिंग एकाच वेळी k ॲक्शन्सचा अंदाज लावते आणि त्यांना कार्यान्वित करते, ज्यामुळे प्रभावी क्षितिज k च्या पटीने कमी होते. हे मानवी डेटासाठी विशिष्ट असलेल्या त्रासाला देखील हाताळते: टेलिऑपरेटर थांबतात आणि एक-स्टेप मार्कोव्हियन पॉलिसी आधी काय घडले यावर अवलंबून असलेल्या थांब्याचे मॉडेल करू शकत नाही.
पेपर k ला सिद्ध करण्याऐवजी त्याचे ॲब्लेशन करतो. टेम्पोरल एन्सेम्बलिंग बंद असताना, चार सेटिंग्जमध्ये सरासरी काढल्यास, k = 1 असताना 1 टक्क्यांवरून k = 100 असताना 44 टक्क्यांपर्यंत यश वाढते, नंतर पॉलिसी ओपन-लूप कंट्रोलच्या जवळ आल्यावर 200 आणि 400 वर कमी होते. तो वक्र (curve) हेच कारण आहे की डिफॉल्ट 100 आहे.
- chunk_size: डिकोडर प्रति फॉरवर्ड पास किती भविष्यातील क्रियांचा अंदाज लावतो. Default 100.
- n_action_steps: पुन्हा क्वेरी करण्यापूर्वी तुम्ही त्यापैकी किती क्रिया कार्यान्वित करता. Default 100, त्यामुळे lerobot संपूर्ण चंक ओपन लूपमध्ये चालवतो.
- lerobot प्रमाणित करतो
n_action_steps <= chunk_sizeआणि जर तुम्ही ते उलट केले तरValueErrorवाढवतो.
कार्यक्षमतेच्या दृष्टीने महत्त्वाचे म्हणजे chunk_size भागिले फ्रेम दर. lerobot च्या 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=cuda--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 backbone | 485 ms | A100 / H100 80 GB | 50 | LeRobot v3.0 |

- प्रत्येक कृतीसाठी 20 ms, पाचपैकी सर्वात वेगवान, A100 नव्हे तर 24 GB कार्डवर.
- 3 B क्लाससाठी 4 ते 12 च्या तुलनेत प्रति रन 1 ते 3 USD.
- त्यांनी पाहिलेल्या संपर्क-समृद्ध कामांवर अचूक: स्लाइड झिपलॉक आणि स्लॉट बॅटरीवर 88 आणि 96 टक्के, जिथे मागील पद्धतींनी कधीही पहिला टप्पा पार केला नाही.
- कोणतीही भाषा कंडिशनिंग नाही: कार्य स्ट्रिंग दुर्लक्षित केली जाते, त्यामुळे एक चेकपॉईंट म्हणजे एक कार्य.
- कोणतेही सिमेंटिक पूर्वज्ञान नाही: त्याला जे काही माहित आहे ते तुमच्या 50 एपिसोड्समधून आले आहे.
- संकीर्ण सामान्यीकरण: कॅमेरा हलवला की तुम्हाला पुन्हा प्रशिक्षण द्यावे लागते.
- ते शांतपणे अयशस्वी होते: लॉस कमी होतो, आर्म काहीही करत नाही, लॉगमध्ये काहीही नसते.
- गतीचा फायदा तेव्हाच होतो जेव्हा इन्फरन्स सर्व्होजवळ असतो.
जेव्हा कार्य आणि दृश्य निश्चित असतात आणि हालचाल जलद आणि अचूक असणे आवश्यक असते, तेव्हा ACT निवडा. जेव्हा एका चेकपॉईंटमध्ये अनेक सूचना समाविष्ट असाव्यात, तेव्हा एक निवडा. दोन पृष्ठे या निर्णयावर थेट काम करतात: आणि . प्रकाशित बेंचमार्क्ससाठी, प्रत्येक संख्येला त्याच्या स्रोताशी जोडते.
सुरुवात करण्यापूर्वी तुम्हाला काय हवे आहे
एक फॉलोअर आर्म, साठी एक लीडर आर्म, किमान एक कॅमेरा, 24 GB GPU. ACT फक्त प्रतिमा आणि जॉइंट पोझिशन्स वाचते. दोन कॅमेरे आदर्श आहेत: वस्तू कुठे आहेत यासाठी एक निश्चित समोरचा व्ह्यू, आणि काय स्पर्श करणार आहे यासाठी एक मनगट कॅमेरा, जसे ALOHA वर.
| आर्म | सर्व्हो | व्होल्टेज | भागांची किंमत | स्थिती |
|---|---|---|---|---|
| SO-100 | Feetech STS3215 | 7.4 V | ~110 ते 150 EUR | पूर्ण समर्थन, संदर्भ आर्म |
| SO-101 | Feetech STS3215 | 7.4 V | ~130 ते 170 EUR | पूर्ण समर्थन |
| Koch v1.1 | Dynamixel XL330 / XL430 | 5 V आणि 12 V रेल्स | ~250 ते 350 EUR | सुसंगत |
| LeKiwi | Feetech STS3215 (आर्म) | 7.4 V आर्म, 12 V बेस | ~400 ते 500 EUR | सुसंगत |
SO-100 आणि SO-101 हे Feetech STS3215 सर्व्हो 7.4 V रेलवर चालवतात. त्यांना 12 V पुरवठा केल्यास ते खराब होतात, इतके शांतपणे की लोक आधी सॉफ्टवेअरला दोष देतात आणि Koch 12 V पुरवठा SO-100 बोर्डवर भौतिकरित्या बसतो. लेबल तपासा. लक्षणे: सर्व्हो प्रतिसाद देत नाही, आर्म थरथरतो आणि नंतर खाली पडतो. तसेच SO-100 वि SO-101.
रिकॉर्ड केलेल्या डेटासेटपर्यंत बेअर आर्मपासून
खालील प्रवाह lerobot 0.6.x आहे. तुमच्याकडे कॅलिब्रेटेड आर्म आणि डेटासेट असल्यास हे वगळा. अन्यथा SO-100 सुरु करण्यासंबंधी मार्गदर्शक, असेंब्ली समाविष्ट करते, रेकॉर्डिंग वॉकथ्रू कॅप्चर समाविष्ट करते आणि डेटासेट डॉक्स स्वरूप.
- 1योग्य एक्स्ट्रासह लेरोबॉट स्थापित करा
रेकॉर्डिंगसाठी `core_scripts`, ट्रेनिंगसाठी `training`, Feetech सर्व्होसाठी `feetech` आवश्यक आहे. Python 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 स्टेप्सच्या रनमध्ये लॉस कर्व्ह हा एकमेव स्वस्त सिग्नल आहे. शेड्यूल lerobot च्या ट्रेन कॉन्फिगवरून येते, ACTConfig वरून नाही: 100000 स्टेप्स, बॅच 8, सीड 1000, एक चेकपॉईंट प्रत्येक 20000 स्टेप्सनंतर, आणि प्रत्येक 200 स्टेप्सनंतर लॉगिंग.
पूर्ण रनमध्ये पाच चेकपॉईंट डिरेक्टरीज (020000 ते 100000) आणि एक शेवटचा सिमलिंक राहते. त्या सर्व ठेवा: सर्वोत्तम पॉलिसी अनेकदा शेवटची नसते.
| सेटिंग | lerobot डीफॉल्ट | AY-Robots ACT फॉर्म | टीप |
|---|---|---|---|
| बॅच आकार | 8 | 8 | जर VRAM मर्यादा आल्यास, आधी ते कमी करा. |
| लर्निंग रेट | 1e-5 | 1e-5 | ALOHA पेपरप्रमाणेच. |
| जास्तीत जास्त स्टेप्स | 100000 | 100000 | जवळपास 50 एपिसोडचा सेट सुधारणे थांबवतो. |
| ग्रेडियंट संचय | 1 | 1, does not apply | त्याऐवजी बॅच आकार बदला. |
| सीड | 1000 | exposed | GR00T च्या टायरो एंट्री पॉइंटला सीड नाही; ACT रन हे पुनरुत्पादक असतात. |
| chunk_size / n_action_steps | 100 / 100 | 100 / 100, संपादनीय | अंदाज आणि अंमलबजावणीची मर्यादा. दुसरे कमी करा, पहिले नाही. |
| चेकपॉईंट वारंवारता | 20000 | not exposed | येथे saveSteps हे GR00T चे एक नॉब आहे. |
दोन 640x480 कॅमेऱ्यांसह बॅच आकार 8 वर ACT 24 GB मध्ये आरामात बसते. जेव्हा लोक वेगासाठी बॅच आकार वाढवतात, किंवा lerobot रेकॉर्डिंग उदाहरणात दाखवल्याप्रमाणे 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 चालवणाऱ्या ब्लॉकच्या अगदी वर "using the lerobot-record command" असे म्हणते. वाक्याचे नाही, तर कमांडचे अनुसरण करा.
अंतिम मॉडेलऐवजी चेकपॉईंट पिन करण्यासाठी, जोडा --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 काहीच दाखवत नाही | ड्रायव्हर, केबल किंवा नोड परवानग्या | /fix/arm-not-detectedआर्म सापडला नाही |
| रेकॉर्ड करताना कॅमेरा उपलब्ध नाही | रिबूट केल्यावर इंडेक्स बदलला, किंवा एका USB कंट्रोलरवर दोन कॅमेरे | /fix/camera-not-detectedकॅमेरा सापडला नाही |
| प्रशिक्षण डेटासेट नाकारते | ACT ला v3.0 हवे आहे, GR00T ला v2.1 हवे आहे | /fix/dataset-rejected-v3डेटासेट v3 म्हणून नाकारला |
| CUDA मेमरी संपली | बॅच आकार वाढवला, किंवा 480p ऐवजी 1080p फ्रेम्स | /fix/out-of-memory-trainingप्रशिक्षणात मेमरी संपली |
| लॉस चांगला दिसतोय, पण आर्म काहीच करत नाही | डेटासेटमध्ये कार्य नाही, किंवा कॅमेरा हलवला गेला | /fix/loss-falls-policy-does-nothingलॉस कमी होतो, पण पॉलिसी काहीच करत नाही |
| अडखळणारी हालचाल किंवा एपिसोडच्या मध्यभागी विराम | कमी प्रशिक्षण, चंक बाउंड्रीवर अडकणे, किंवा टाइम-आउट झालेला इन्फरन्स कॉल | /fix/policy-freezes-mid-motionहालचालीदरम्यान पॉलिसी थांबते |
दोन पंक्तींवर विशेष लक्ष देणे आवश्यक आहे. ACT LeRobot v3.0 वर प्रशिक्षण घेते, तर GR00T चा लोडर त्यावर क्रॅश होतो आणि त्याला v2.1 आवश्यक आहे, त्यामुळे ACT ला प्रशिक्षित करणारा डेटासेट GR00T रन अयशस्वी करू शकतो. आणि शेवटच्या पंक्तीमध्ये दोन उपाय आहेत: ACT चे लेखक अडखळणाऱ्या हालचालींवर अधिक प्रशिक्षणाने उत्तर देतात, तर n_action_steps 100 असताना एक खरा अडथळा चंक बाउंड्रीवर येतो, 30 fps वर दर 3.3 सेकंदांनी एक दृश्यमान विराम. आणखी दोन गोष्टी जाणून घ्या: एकच मृत जॉइंट सहसा कधीही न लिहिलेला सर्वो आयडी, आणि जवळ येणारा पण कधीही न बंद होणारा ग्रिपर म्हणजे प्रात्यक्षिकांमध्ये ग्रिपरची श्रेणी खूप कमी आहे. पूर्ण अनुक्रमणिका: अपयश मोड पृष्ठे.
एका रनचा खर्च किती
| स्तर | मॉडेल्स | रन वेळ | प्रति तास किंमत | प्रति रन खर्च |
|---|---|---|---|---|
| RTX 4090 / 24 GB | ACT, SmolVLA | 2 to 5 hours | 0.30 to 0.60 USD | about 1 to 3 USD |
| A100 80 GB / H100 | GR00T N1.7, GR00T N1.5, Pi0.5 | 3 to 6 hours | 1.20 to 2.00 USD | about 4 to 12 USD |
हे ACT सह सुरुवात करण्याचे कारण आहे, जरी तुम्हाला नंतर VLA हवे असले तरी. एक अयशस्वी 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-Robots चे किमान. 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