
lerobot प्रयोग गरेर SO-100 मा Action Chunking Transformer लाई सुरुदेखि तालिम दिनुहोस्: 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 शून्यबाट सुरु हुन्छ: यसको कुनै आधार चेकपोइन्ट छैन, किनकि यो फाउन्डेसन मोडेल होइन। यो लगभग ८० मिलियन प्यारामिटरको ट्रान्सफर्मर हो जसलाई तपाईं एउटै कार्यका लागि, आफ्नो रोबोटिक आर्ममा, आफ्नो प्रकाश व्यवस्था अन्तर्गत सुरुदेखि नै तालिम दिनुहुन्छ।
यही कारणले गर्दा यसले २० मिलिसेकेन्डमा नियन्त्रण चरण चलाउँछ जहाँ ३ बिलियन प्यारामिटर VLA लाई १५२ देखि ४८५ मिलिसेकेन्ड लाग्छ, र प्रति रन ४ देखि १२ USD को सट्टा १ देखि ३ USD खर्च हुन्छ। यो गाइडले म्यानुअल मार्ग देखाउँछ लेरोबोट मा SO-100: रेकर्ड, act कन्फिग, के chunk_size र n_action_steps नियन्त्रण गर्छ, १,००,००० चरणको तालिका, र रोलआउट। त्यसपछि AY-Robots मा उही काम, जसमा प्लेटफर्मले मद्दत नगर्ने अवस्थाहरू पनि समावेश छन्।
तपाईंले जान्नुपर्ने कुराहरू
- •ACT सुरुदेखि नै तालिम दिइन्छ: कुनै आधार मोडेल छैन, कुनै प्रिट्रेनिङ छैन, कुनै भाषा इनपुट छैन। एउटा चेकपोइन्ट, एउटा कार्य।
- •पेपर: लगभग ८० मिलियन प्यारामिटर, ११ GB RTX 2080 Ti मा लगभग ५ घण्टा, ०.०१ सेकेन्ड इन्फरेन्स।
- •लेरोबोटका पूर्वनिर्धारित मानहरू: chunk_size १००, n_action_steps १००, ब्याच ८, lr 1e-5, १,००,००० चरण, seed १०००।
- •AY-Robots मा: प्रति चरण २० मिलिसेकेन्ड, पाँचमध्ये सबैभन्दा छिटो। न्यूनतम ५० एपिसोड, LeRobot v3.0, २४ GB कार्ड, प्रति रन १ देखि ३ USD।
- •यसले देखेको कार्यमा जित्छ, र तपाईंले भाषा कन्डिसनिङ चाहेको क्षणमा हार्छ।
२३ अगस्ट २०२६ मा लेरोबोट 0.6.x विरुद्ध जाँच गरियो: pyproject.toml on main reads version = "0.6.2", newest tag v0.6.1, 3 August 2026. python lerobot/scripts/train.py बाट सुरु हुने ट्यूटोरियल lerobot-train, lerobot-record र lerobot-rollout कन्सोल एन्ट्री पोइन्टहरू भन्दा पहिलेको हो।
ACT वास्तवमा के हो
एक्शन चंकिङ विथ ट्रान्सफर्मरहरू ALOHA पेपरबाट आएको हो, Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware, झाओ, कुमार, लेभिन र फिनद्वारा, arXiv, २३ अप्रिल २०२३। यो रिगले ५० हर्जमा रेकर्ड गर्छ जसमा चार वेबक्यामहरूले ४८०x६४० रिजोलुसनमा ३० एफपीएसमा स्ट्रिम गर्छन्: दुई ग्रिपरमा, एउटा माथि, एउटा अगाडि। सारले ८० देखि ९० प्रतिशत सफलताका साथ छवटा सीपहरू दाबी गर्छ, जसमा १० मिनेटको प्रदर्शनबाट पारदर्शी मसला कप खोल्ने र ब्याट्री स्लट गर्ने समावेश छ।
रेकर्डिङ सत्रको योजना बनाउँदा मुख्य भाग बढी उपयोगी हुन्छ: प्रति कार्य ५० प्रदर्शन, Thread Velcro १०० मा बाहेक, जुन १० देखि २० मिनेटको डेटा र रिसेटहरू गणना गरिसकेपछि ३० देखि ६० मिनेटको वास्तविक समय हो। सफलता पनि एकरूप छैन: Thread Velcro २० प्रतिशतमा समाप्त हुन्छ, Put On Shoe ९२ मा, Cup Open ८४ मा, Prep Tape ६४ मा।
| हाइपरप्यारामिटर | ALOHA paper, तालिका III | lerobot मुख्यमा |
|---|---|---|
| लर्निङ रेट | 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 को लेटेन्ट आयाम | अनुपस्थित; चित्र ११ ले ३२ देखि ५१२ प्रक्षेपण देखाउँछ | latent_dim = 32 |
| टेम्पोरल एन्सेम्ब्लिङ | अनुपस्थित; सन्दर्भ कोडमा --temporal_agg | 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 मा घट्दै जान्छ। त्यो वक्र नै पूर्वनिर्धारित 100 हुनुको कारण हो।
- chunk_size: डिकोडरले प्रति फर्वार्ड पासमा कति भविष्यका कार्यहरू भविष्यवाणी गर्छ। पूर्वनिर्धारित 100।
- n_action_steps: तपाईंले फेरि क्वेरी गर्नु अघि ती मध्ये कति कार्यान्वयन गर्नुहुन्छ। पूर्वनिर्धारित 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 प्रतिशत, जहाँ अघिल्लो विधिहरूले कहिल्यै पहिलो चरण पार गरेनन्।
- भाषाको अवस्था छैन: कार्य स्ट्रिङलाई बेवास्ता गरिन्छ, त्यसैले एउटा चेकपोइन्ट एउटा कार्य हो।
- कुनै सिमान्टिक पूर्वज्ञान छैन: यसले जानेको सबै तपाईंको ५० एपिसोडबाट आएको हो।
- संकीर्ण सामान्यीकरण: क्यामेरा सार्नुहोस् र तपाईंले पुन: तालिम दिनुपर्छ।
- यो चुपचाप असफल हुन्छ: क्षति घट्छ, पाखुराले केही गर्दैन, लगहरूले केही भन्दैनन्।
- गति लाभले मात्र मद्दत गर्छ यदि अनुमान सर्भोको छेउमा बस्छ।
कार्य र दृश्य निश्चित हुँदा र गति छिटो र सटीक हुनुपर्दा 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 बनाम 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-विशेष सबै कुरा पहिले नै पूर्वनिर्धारित छ, त्यसैले लेरोबोट 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 सम्म, साथै एउटा last सिम्लिंक। ती सबै राख्नुहोस्: प्रायः सबैभन्दा राम्रो नीति अन्तिम हुँदैन।
| सेटिङ | lerobot पूर्वनिर्धारित | AY-Robots ACT फारम | टिप्पणी |
|---|---|---|---|
| ब्याच साइज | 8 | 8 | यदि तपाईं VRAM सीमामा पुग्नुभयो भने पहिले यसलाई घटाउनुहोस्। |
| लर्निङ रेट | 1e-5 | 1e-5 | ALOHA पेपर जस्तै। |
| अधिकतम चरणहरू | 100000 | 100000 | लगभग जहाँ 50 एपिसोडको सेट सुधार हुन बन्द गर्छ। |
| ग्रेडियन्ट सञ्चय | 1 | 1, लागू हुँदैन | यसको सट्टा ब्याच साइज परिवर्तन गर्नुहोस्। |
| सीड | 1000 | exposed | GR00T को tyro एन्ट्री पोइन्टमा कुनै सीड छैन; ACT रनहरू पुनरुत्पादन योग्य हुन्छन्। |
| chunk_size / n_action_steps | 100 / 100 | 100 / 100, सम्पादन योग्य | भविष्यवाणी र कार्यान्वयन क्षितिज। दोस्रोलाई घटाउनुहोस्, पहिलोलाई होइन। |
| चेकपोइन्ट फ्रिक्वेन्सी | 20000 | खुला छैन | saveSteps यहाँ GR00T को एउटा नब हो। |
24 GB मा दुई 640x480 क्यामेरा सहितको ब्याच साइज 8 मा ACT आरामसँग फिट हुन्छ। जब मानिसहरूले गतिको लागि ब्याच साइज बढाउँछन्, वा lerobot रेकर्डिङ उदाहरणले देखाएको 1920x1080 फ्रेमहरू खुवाउँछन्, तब यो फिट हुन बन्द गर्छ। 1080p मा दुई ResNet-18 ब्याकबोनको मेमोरी प्रोफाइल धेरै फरक हुन्छ। --batch_size लाई 4 मा झार्नुहोस् ठूलो कार्ड भाडामा लिनु अघि। हेर्नुहोस् प्रशिक्षणमा मेमोरी अभाव।
अवधि: पेपरमा ११ GB RTX २०८० Ti मा लगभग ५ घण्टा, lerobot को ACT पृष्ठ अनुसार १००k स्टेप्सका लागि केही घण्टा, AY-Robots २४ GB टियरमा २ देखि ५ घण्टा। यसलाई छोटो नगर्नुहोस्। सन्दर्भ रेपोको README भन्छ कि एक झट्का दिने वा रोकिने नीतिलाई सामान्यतया थप तालिम, किनभने घाटा स्थिर भएपछि पनि सफलता र सहजतामा सुधार भइरहन्छ: वास्तविक-विश्व डेटाका लागि यसलाई कम्तिमा ५००० इपोकहरू, वा पठार पछि फेरि ३ देखि ४ गुणा लम्बाइ चाहिन्छ।
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 वा Python वातावरणको स्वामित्व नलिने सुविधाको लागि नियन्त्रणको सट्टामा व्यापार गर्छ।
core_scripts,training,feetech, ffmpeg सहित lerobot 0.6.x स्थापना गर्नुहोस्।- पोर्टहरू पत्ता लगाउनुहोस्, मोटर ID हरू सेट गर्नुहोस्, दुवै हातहरू क्यालिब्रेट गर्नुहोस्, ५० एपिसोडहरू रेकर्ड गर्नुहोस्।
- डेटामा कार्य समावेश छ भनी पुष्टि गर्न केही एपिसोडहरू पुन: प्ले गर्नुहोस्।
- २४ 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 सर्भर र प्रशिक्षण कागजातहरूमा अवस्थित छन्।
यसले तपाईंको डेटा ठीक गर्दैन: सारिएको क्यामेरा भएको डेटासेट यहाँ पनि त्यस्तै खराब तरिकाले प्रशिक्षित हुन्छ, र फारमले यसलाई पत्ता लगाउन सक्दैन। न त यसले विलम्बता समस्या हटाउँछ। नियन्त्रण लूप प्रति कार्य चरण २० देखि ४८५ ms हुन्छ, सार्वजनिक-इन्टरनेट राउन्ड ट्रिपहरू सहित, र ACT लाई सबैभन्दा बढी असर पर्छ किनभने यसको चरण सबैभन्दा छोटो छ: ६० ms Pi0.5 को ४८५ ms मा १२ प्रतिशत ढिलो हो तर ACT को २० 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 सेकेन्डमा एक देखिने रोक। जान्नका लागि थप दुई कुरा: एउटा मृत जोइन्ट सामान्यतया सर्भो आईडी जुन कहिल्यै लेखिएको थिएन, र एउटा ग्रिपर जुन नजिक आउँछ तर कहिल्यै बन्द हुँदैन को अर्थ प्रदर्शनहरूमा ग्रिपरको दायरा धेरै कम छ। पूर्ण अनुक्रमणिका: असफलता मोड पृष्ठहरू।
एक रनको लागत कति हुन्छ
| टियर | मोडेलहरू | चल्ने समय | प्रति घण्टा मूल्य | प्रति रन लागत |
|---|---|---|---|---|
| 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 |
पछि VLA चाहिए पनि ACT बाट सुरु गर्नुको तर्क यही हो। ACT को असफल रनको लागत कफीको मूल्य जति हुन्छ र यसले केही घण्टाभित्रै तपाईंको डेटासेटमा कार्य समावेश छ कि छैन भनी बताउँछ। GR00T को असफल रनको लागत त्यही पाठको लागि चार गुणा बढी हुन्छ। पछि GR00T N1.7 वा SmolVLA मा जानु भनेको स्वरूप परिवर्तन हो, पुनर्निर्माण होइन। पृष्ठभूमि: भिजन-भाषा-कार्य मोडेलहरू, पूर्ण SO-100 गाइड, आफ्नो पहिलो नीति तालिम दिनुहोस् र अनुकरण सिकाइ। हात छैन? लाइभ पृष्ठ ले साइन अप नगरी चलाउनको लागि वास्तविक SO-100 स्ट्रिम गर्दछ।
आफ्नो SO-100 मा ACT तालिम दिनुहोस्
यो सटीक संयोजनको लागि गाइड: पूर्वनिर्धारित सेटिङहरू, GPU टियर र एक रनको लागत। डेटासेट छान्नुहोस्, ब्याकएन्डले कार्ड भाडामा लिन्छ र चेकपोइन्टहरू लेख्छ।
तालिम गाइड खोल्नुहोस्के त्यहाँ कुनै पूर्व-तालिम प्राप्त ACT मोडेल छ जसलाई म फाइन-ट्युन गर्न सक्छु?▾
छैन। ACT सँग कुनै आधार मोडेल छैन; यो तपाईंले यसलाई तालिम दिएपछि मात्र अस्तित्वमा आउँछ। यो उपकरणमा कमी होइन, ACT यही हो: पेपरले प्रति कार्य स्क्र्याचबाट नीति तालिम दिन्छ। विक्रेता चेकपोइन्टको लागि, GR00T N1.7 वा Pi0.5 प्रयोग गर्नुहोस्।
मलाई वास्तवमा कति एपिसोडहरू चाहिन्छ?▾
५०: ALOHA ले प्रति कार्य रेकर्ड गरेको (थ्रेड भेल्क्रोको लागि १००, जुन सबैभन्दा कठिन हो) र AY-Robots को न्यूनतम। lerobot ले प्रति वस्तु स्थान लगभग १०, क्यामेरा स्थिर, पकड सुसंगत सल्लाह दिन्छ। क्यामेरा सरेको सय एपिसोड भन्दा पचास सफा एपिसोड राम्रो हुन्छ।
के मैले chunk_size लाई १०० बाट परिवर्तन गर्नुपर्छ?▾
सामान्यतया पर्दैन। एब्लेसन k = 1 मा १ प्रतिशतबाट k = 100 मा ४४ प्रतिशतसम्म बढ्छ र त्यसपछि घट्छ, त्यसैले १०० शीर्षको नजिकै बस्छ। यदि हात धेरै लामो समयसम्म प्रतिबद्ध हुन्छ भने, n_action_steps लाई कम गर्नुहोस्: 30 fps मा, 25 पुन: क्वेरीहरू प्रत्येक 0.8 सेकेन्डमा।
तालिम रन कति समय लाग्छ, र के म यसलाई चाँडै रोक्न सक्छु?▾
१००००० स्टेप्सको लागि २४ GB कार्डमा दुई देखि पाँच घण्टा लाग्छ। चेकपोइन्टहरू प्रत्येक २०००० स्टेप्समा आउँछन् र --resume=true ले रनलाई फेरि सुरु गर्छ, त्यसैले चाँडै रोक्नु सुरक्षित छ। तर पहिलो समतल खण्डमा होइन: घाटा स्थिर भएपछि सहजता सुधार हुन्छ।
घाटा घट्यो र हात अझै असफल भयो। अब के गर्ने?▾
लगभग सधैं डेटासेट। हातमा रेकर्ड गरिएका एपिसोडहरू पुन: प्ले गर्नुहोस्: यदि पुन: प्लेले कार्य गर्दैन भने, डेटामा त्यो समावेश छैन। त्यसपछि केही सरेको छ कि छैन, विशेष गरी क्यामेरा, जाँच गर्नुहोस्। ACT सँग कुनै पूर्वज्ञान छैन, त्यसैले एपिसोड २१ मा सानो धक्का स्थायी हुन्छ।
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