AY-Robots प्रशिक्षण मैट्रिक्स जिसमें पाँच पॉलिसी पंक्तियाँ और चार रोबोट आर्म कॉलम हैं, प्रत्येक सेल एक विशिष्ट मॉडल और आर्म प्रशिक्षण गाइड से जुड़ा है
ACTSO-100lerobotअनुकरण सीखनापॉलिसी प्रशिक्षण

SO-100 पर ACT को स्क्रैच से कैसे प्रशिक्षित करें

AY-Robots ResearchAugust 23, 202616 मिनट का पठन

lerobot के साथ SO-100 पर एक एक्शन चंकिंग ट्रांसफार्मर को स्क्रैच से प्रशिक्षित करें: ACT कॉन्फ़िग, 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 मिलीसेकंड में एक नियंत्रण चरण चलाता है जहाँ 3 बिलियन पैरामीटर वाले VLA को 152 से 485 मिलीसेकंड की आवश्यकता होती है, और प्रति रन 4 से 12 के बजाय 1 से 3 USD का खर्च आता है। यह मार्गदर्शिका लेरोबोट के साथ मैन्युअल मार्ग बताती है, एक SO-100 पर: रिकॉर्ड, act कॉन्फ़िग, क्या chunk_size और n_action_steps नियंत्रित करते हैं, 100000 स्टेप शेड्यूल, रोलआउट। फिर AY-Robots पर वही काम, जिसमें यह भी शामिल है कि प्लेटफ़ॉर्म कहाँ मदद नहीं करता है।

आपको क्या जानने की आवश्यकता है

  • ACT खरोंच से प्रशिक्षित होता है: कोई बेस मॉडल नहीं, कोई प्रीट्रेनिंग नहीं, कोई भाषा इनपुट नहीं। एक चेकपॉइंट, एक कार्य।
  • पेपर: लगभग 80 मिलियन पैरामीटर, 11 GB RTX 2080 Ti पर लगभग 5 घंटे, 0.01 सेकंड अनुमान।
  • लेरोबोट डिफ़ॉल्ट: chunk_size 100, n_action_steps 100, बैच 8, lr 1e-5, 100000 स्टेप्स, सीड 1000।
  • AY-Robots पर: प्रति स्टेप 20 मिलीसेकंड, पाँचों में सबसे तेज़। न्यूनतम 50 एपिसोड, LeRobot v3.0, एक 24 GB कार्ड, प्रति रन 1 से 3 USD।
  • यह उस कार्य पर जीतता है जिसे इसने देखा है, और जैसे ही आप भाषा कंडीशनिंग चाहते हैं, यह हार जाता है।
यह किन संस्करणों का वर्णन करता है

23 अगस्त 2026 को लेरोबोट 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 हर्ट्ज़ पर रिकॉर्ड करता है जिसमें चार वेबकैम 480x640 रेजोल्यूशन पर 30 एफपीएस पर स्ट्रीम करते हैं: दो ग्रिपर पर, एक ऊपर और एक सामने। एब्स्ट्रैक्ट में 10 मिनट के प्रदर्शनों से छह कौशलों में 80 से 90 प्रतिशत सफलता का दावा किया गया है, जिनमें एक पारदर्शी मसाला कप खोलना और बैटरी डालना शामिल है।

रिकॉर्डिंग सत्र की योजना बनाते समय मुख्य भाग अधिक उपयोगी होता है: प्रति कार्य 50 प्रदर्शन, थ्रेड वेल्क्रो के लिए 100 को छोड़कर, जिसमें 10 से 20 मिनट का डेटा और रीसेट गिनने के बाद 30 से 60 मिनट का वास्तविक समय लगता है। सफलता भी एक समान नहीं है: थ्रेड वेल्क्रो 20 प्रतिशत पर समाप्त होता है, पुट ऑन शू 92 पर, कप ओपन 84 पर, प्रेप टेप 64 पर।

हाइपरपैरामीटरALOHA paper, तालिका IIIlerobot ऑन मेन
लर्निंग रेट1e-5optimizer_lr = 1e-5
बैच साइज़8batch_size = 8, in TrainPipelineConfig not ACTConfig
एनकोडर / डिकोडर लेयर्स4 / 7n_encoder_layers = 4 / n_decoder_layers = 1
चंक्स साइज़ k100chunk_size = 100
z का लेटेंट आयामअनुपस्थित; चित्र 11 में 32 से 512 का प्रक्षेपण दिखाया गया हैlatent_dim = 32
टेम्पोरल एन्सेम्बलिंगअनुपस्थित; संदर्भ कोड में --temporal_aggtemporal_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 पूरे चंक को ओपन लूप में चलाता है।
  • lerobot n_action_steps <= chunk_size को मान्य करता है और यदि आप इसे उल्टा करते हैं तो ValueError उठाता है।

परिचालन की दृष्टि से जो मायने रखता है वह है chunk_size को फ्रेम दर से विभाजित करना। 30 fps पर lerobot के SO-100 उदाहरणों का उपयोग करते हुए, 100 का एक चंक एक अवलोकन से लगभग 3.3 सेकंड का समय लेता है। यदि कार्य को उस विंडो के भीतर सुधार की आवश्यकता है, तो n_action_steps को कम करें, न कि chunk_size को: आप लंबी भविष्यवाणी रखते हैं और अधिक बार पुनः अवलोकन करते हैं।

bash
# 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 M20 msRTX 4090 / 24 GB50LeRobot v3.0
SmolVLAकॉम्पैक्ट VLA~450 M245 msRTX 4090 / 24 GB30LeRobot v3.0
GR00T N1.7VLA फ़ाउंडेशन, डिफ्यूज़न हेड~3 B (~40 M trained)152 msA100 / H100 80 GB50LeRobot v2.0 or v2.1
GR00T N1.5VLA फ़ाउंडेशन, पूर्ववर्ती~3 B165 msA100 / H100 80 GB50LeRobot v2.0 or v2.1
Pi0.5फ़्लो-मैचिंग VLA, देखें फ़्लो मैचिंग~3 B, PaliGemma backbone485 msA100 / H100 80 GB50LeRobot v3.0
AY-Robots पॉलिसीज़ पेज ACT, SmolVLA, GR00T N1.5, GR00T N1.7 और Pi0.5 की तुलना तालिका दिखा रहा है जिसमें पैरामीटर काउंट, GPU आवश्यकताएँ, इन्फेरेंस लेटेंसी और न्यूनतम एपिसोड काउंट शामिल हैं
/पॉलिसीज़ टेबल: ACT में सबसे कम पैरामीटर काउंट और सबसे कम स्टेप टाइम है।
शुरुआत से ACT को प्रशिक्षित करना
फायदे
  • प्रति क्रिया चरण 20 ms, पाँचों में सबसे तेज़, 24 GB कार्ड पर, A100 पर नहीं।
  • 3 B क्लास के लिए 4 से 12 के मुकाबले प्रति रन 1 से 3 USD।
  • संपर्क-समृद्ध कार्यों पर सटीक, जो इसने देखे हैं: स्लाइड ज़िपलॉक और स्लॉट बैटरी पर 88 और 96 प्रतिशत, जहाँ पिछली विधियाँ कभी पहले चरण को पार नहीं कर पाईं।
समझौते
  • कोई भाषा कंडीशनिंग नहीं: कार्य स्ट्रिंग को अनदेखा किया जाता है, इसलिए एक चेकपॉइंट एक कार्य है।
  • कोई सिमेंटिक पूर्वज्ञान नहीं: यह जो कुछ भी जानता है वह आपके 50 एपिसोड से आया है।
  • संकीर्ण सामान्यीकरण: एक कैमरा हिलाएं और आपको फिर से प्रशिक्षित करना होगा।
  • यह चुपचाप विफल हो जाता है: लॉस कम होता है, भुजा कुछ नहीं करती, लॉग कुछ नहीं कहते।
  • गति का लाभ तभी मिलता है जब अनुमान सर्वो के बगल में हो।

ACT चुनें जब कार्य और दृश्य निश्चित हों और गति तेज़ और सटीक होनी चाहिए। एक चुनें जब एक चेकपॉइंट को कई निर्देशों को कवर करना हो। दो पृष्ठ निर्णय को आमने-सामने रखते हैं: और । प्रकाशित बेंचमार्क के लिए, हर संख्या को उसके स्रोत से जोड़ता है।

शुरू करने से पहले आपको क्या चाहिए

एक फॉलोअर आर्म, एक लीडर आर्म के लिए, कम से कम एक कैमरा, एक 24 GB GPU। ACT केवल इमेज और जॉइंट पोजीशन पढ़ता है। दो कैमरे सबसे उपयुक्त हैं: चीजों की स्थिति के लिए एक निश्चित सामने का दृश्य, और कलाई का कैमरा यह देखने के लिए कि क्या छूने वाला है, जैसा कि ALOHA में है।

आर्मसर्वोवोल्टेजपुर्जों की लागतस्थिति
SO-100Feetech STS32157.4 V~110 to 150 EURपूर्ण समर्थन, संदर्भ आर्म
SO-101Feetech STS32157.4 V~130 to 170 EURपूर्ण समर्थन
Koch v1.1Dynamixel XL330 / XL4305 V and 12 V rails~250 to 350 EURसंगत
LeKiwiFeetech STS3215 (arm)7.4 V arm, 12 V base~400 to 500 EURसंगत
7.4 V, 12 V नहीं

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. 1
    सही एक्स्ट्रा के साथ लेरोबोट इंस्टॉल करें

    रिकॉर्डिंग के लिए core_scripts, ट्रेनिंग के लिए training, Feetech सर्वो के लिए feetech की आवश्यकता होती है। Python 3.12+।

    bash
    conda 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. 2
    प्रत्येक आर्म का USB पोर्ट खोजें

    दोनों आर्म्स को प्लग इन करके चलाएं, प्रॉम्प्ट होने पर एक को अनप्लग करें। Linux पर आपको नोड अनुमतियाँ खोलने की आवश्यकता हो सकती है।

    bash
    lerobot-find-port
    # on Linux, if the port exists but is unreadable:
    sudo chmod 666 /dev/ttyACM0
  3. 3
    मोटर आईडी और बॉडरेट सेट करें

    SO-100 पर यह असेंबली से पहले होता है: SO-101 के विपरीत, एक बार बनने के बाद कनेक्टर दुर्गम हो जाते हैं। स्क्रिप्ट ग्रिपर से एक-एक मोटर करके बस को स्कैन करती है, और EEPROM में आईडी लिखती है।

    bash
    lerobot-setup-motors \
        --robot.type=so100_follower \
        --robot.port=/dev/ttyACM0
    
    lerobot-setup-motors \
        --teleop.type=so100_leader \
        --teleop.port=/dev/ttyACM1
  4. 4
    दोनों आर्म्स को कैलिब्रेट करें

    प्रत्येक जॉइंट को उसकी रेंज के मध्य में सेट करें, एंटर दबाएं, फिर प्रत्येक को उसकी पूरी रेंज में घुमाएं। कैलिब्रेशन एक आर्म पर प्रशिक्षित पॉलिसी को दूसरे पर चलाने की अनुमति देता है। वही id का पुन: उपयोग करें।

    bash
    lerobot-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. 5
    कैमरा चालू करके एक बार टेलीऑपरेट करें

    लेरोबोट का सामान्य नियम: आपको केवल कैमरा छवियों को देखकर कार्य करने में सक्षम होना चाहिए। यदि आप नहीं कर सकते, तो ACT भी नहीं कर सकता। यह बाद में डीबगिंग की तुलना में अधिक खराब डेटासेट को पकड़ता है।

    bash
    lerobot-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
  6. 6
    50 एपिसोड रिकॉर्ड करें

    50 AY-Robots का न्यूनतम है और ALOHA ने प्रति कार्य यही उपयोग किया था। लेरोबोट प्रति वस्तु स्थान 10 की सलाह देता है, कैमरे स्थिर, पकड़ सुसंगत। n एक एपिसोड समाप्त करता है, r फिर से रिकॉर्ड करता है, q रोकता है और एन्कोड करता है।

    bash
    HF_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
AY-Robots रिकॉर्डिंग ट्यूटोरियल पेज जो बताता है कि टेलीऑपरेशन सत्र से LeRobot-फॉर्मेट डेटासेट कैसे कैप्चर करें
रिकॉर्डिंग ट्यूटोरियल। डेस्कटॉप क्लाइंट lerobot-record के समान लेआउट लिखता है।
वह जाल जो एक दिन खा जाता है: एक असंगत डेटासेट

ACT के पास पीछे हटने के लिए कोई पूर्वधारणा नहीं है, इसलिए हर असंगति स्थायी हो जाती है। तीन सबसे महंगी: एपिसोड 20 और 21 के बीच एक कैमरा हिल गया, दोपहर में आधे सेट को रिकॉर्ड करने के कारण रोशनी बदल गई, एक पकड़ दो तरीकों से की गई। प्रत्येक एक सही दिखने वाला लॉस कर्व और एक आर्म देता है जो गलत जगह पर जाता है। देखें लॉस गिरता है, पॉलिसी कुछ नहीं करती, पॉलिसी केवल एक सेटअप में काम करती है और उच्च गुणवत्ता वाला प्रशिक्षण डेटा एकत्र करना

प्रशिक्षण से पहले, कम से कम पांच एपिसोड फिर से चलाएं। , कैमरा स्ट्रीम, जॉइंट स्टेट्स और एक्शन प्रति , और रीप्ले उन क्रियाओं को आर्म पर वापस धकेलता है। यदि रीप्ले कार्य नहीं करता है, तो डेटा में वह शामिल नहीं है और प्रशिक्षण उसे नहीं बनाएगा।

bash
lerobot-replay \
    --robot.type=so100_follower \
    --robot.port=/dev/ttyACM0 \
    --robot.id=my_follower \
    --dataset.repo_id=${HF_USER}/so100_cube \
    --dataset.episode=0
एपिसोड 0 को फिर से चला रहा है। यदि यह विफल हो जाता है, तो रुकें और फिर से रिकॉर्ड करें।

ACT पॉलिसी को प्रशिक्षित करना

यह पूरा कमांड है। ACT-विशिष्ट सब कुछ पहले से ही डिफ़ॉल्ट है, यही कारण है कि lerobot ACT पेज उन्हें शुरू करने के लिए कहता है।

bash
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
lerobot 0.6.x डॉक्स से प्रशिक्षण कमांड, एक SO-100 डेटासेट पर।

--policy.type=act ACTConfig लोड करता है, जो आपके डेटासेट में रिकॉर्ड किए गए मोटर्स और कैमरों की संख्या के अनुसार अनुकूलित होता है, जिससे आपको ऑब्ज़र्वेशन शेप घोषित करने की आवश्यकता नहीं पड़ती। --wandb.enable=true वैकल्पिक है और इसके लायक है: 100000 स्टेप के रन में लॉस कर्व ही एकमात्र सस्ता सिग्नल है। शेड्यूल lerobot के ट्रेन कॉन्फ़िग से आता है, ACTConfig से नहीं: 100000 स्टेप्स, बैच 8, सीड 1000, एक चेकपॉइंट हर 20000 स्टेप्स पर, और हर 200 पर लॉगिंग।

एक पूर्ण रन में पाँच चेकपॉइंट डायरेक्टरीज़ (020000 से 100000 तक) और एक अंतिम सिमलिंक छोड़ता है। उन सभी को रखें: सबसे अच्छी पॉलिसी अक्सर अंतिम वाली नहीं होती है।

सेटिंगलेरोबोट डिफ़ॉल्टAY-रोबोट्स ACT फॉर्मटिप्पणी
बैच आकार88यदि आप VRAM सीमा तक पहुँचते हैं तो इसे पहले कम करें।
लर्निंग रेट1e-51e-5ALOHA पेपर के समान।
अधिकतम स्टेप्स100000100000लगभग वह बिंदु जहाँ 50 एपिसोड का सेट बेहतर होना बंद कर देता है।
ग्रेडिएंट संचय11, does not applyइसके बजाय बैच आकार बदलें।
सीड1000exposedGR00T के टायरो एंट्री पॉइंट में कोई सीड नहीं है; ACT रन ही प्रतिलिपि प्रस्तुत करने योग्य होते हैं।
चंक्स_साइज / n_एक्शन_स्टेप्स100 / 100100 / 100, editableभविष्यवाणी और निष्पादन क्षितिज। दूसरे को कम करें, पहले को नहीं।
चेकपॉइंट आवृत्ति20000not exposedयहाँ saveSteps एक GR00T नॉब है।
मेमोरी से बाहर होना बैच आकार की समस्या है, कार्ड की नहीं

दो 640x480 कैमरों के साथ बैच आकार 8 पर ACT 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 गुना अधिक समय।

bash
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 के लिए छोड़ने योग्य बताता है।

bash
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
बिना रिकॉर्डिंग के स्वायत्त रोलआउट। मूल्यांकन एपिसोड रिकॉर्ड करने के लिए --strategy.type=sentry का उपयोग करें।
इस कमांड का हाल ही में नाम बदला गया था, इसलिए पुराने ट्यूटोरियल असहमत हैं।

मूल्यांकन पहले 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 एनवायरनमेंट का मालिक न होने के बदले नियंत्रण का त्याग करता है।

  1. core_scripts, training, feetech, ffmpeg के साथ lerobot 0.6.x इंस्टॉल करें।
  2. पोर्ट्स ढूंढें, मोटर आईडी सेट करें, दोनों आर्म्स को कैलिब्रेट करें, 50 एपिसोड रिकॉर्ड करें।
  3. डेटा में कार्य शामिल है यह पुष्टि करने के लिए कुछ एपिसोड फिर से चलाएं।
  4. 24 GB GPU किराए पर लें या खरीदें, CUDA और PyTorch का मिलान करें, lerobot-train --policy.type=act चलाएं।
  5. कुछ घंटे प्रतीक्षा करें, फिर आर्म पर मशीन पर lerobot-rollout चलाएं।
bash
# 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 संपादित करें, एक कैमरा जोड़ें, ट्रेनर को फोर्क करें। किसी कार्य को शिप करने के बजाय अनुसंधान के लिए, एक प्लेटफ़ॉर्म एक भटकाव है।

The AY-Robots training matrix with five policy rows and four robot arm columns, where every cell links to the specific training guide for that model and arm combination
The matrix on /train. The ACT row against the SO-100 column is this article's guide.

वास्तव में क्या गलत होता है

प्रशिक्षण कमांड में शायद ही कोई परेशानी होती है। परेशानी इसके आसपास की चीजों में होती है, जो इस बात पर आधारित होती है कि वे पहली बार कितनी बार समस्या पैदा करती हैं।

लक्षणसामान्य कारणपृष्ठ
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 एफपीएस पर हर 3.3 सेकंड में एक दृश्यमान ठहराव। जानने के लिए दो और बातें: एक अकेला निष्क्रिय जोड़ आमतौर पर एक सर्वर आईडी जो कभी नहीं लिखी गई, और एक ग्रिपर जो पास आता है लेकिन कभी बंद नहीं होता का मतलब है प्रदर्शनों में ग्रिपर रेंज बहुत कम। पूर्ण सूचकांक: विफलता मोड पृष्ठ

एक रन की लागत क्या है

टियरमॉडलरन का समयप्रति घंटा कीमतप्रति रन लागत
RTX 4090 / 24 GBACT, SmolVLA2 से 5 घंटे0.30 to 0.60 USDलगभग 1 से 3 USD
A100 80 GB / H100GR00T N1.7, GR00T N1.5, Pi0.53 से 6 घंटे1.20 to 2.00 USDलगभग 4 से 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 पर एक धक्का स्थायी होता है।

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started