पाँच नीति पङ्क्ति र चार रोबोट हात स्तम्भहरू सहितको AY-Robots तालिम म्याट्रिक्स, प्रत्येक सेलले एक विशिष्ट मोडेल र हात तालिम गाइडमा लिङ्क गर्दछ
ACTSO-100lerobotनक्कल सिकाइनीति तालिम

SO-100 मा ACT लाई सुरुदेखि कसरी तालिम दिने

AY-Robots ResearchAugust 23, 202616 मिनेट पढाइ

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-3Bnvidia/GR00T-N1.5-3B, Pi0.5 यहाँबाट: lerobot/pi05_base। ACT शून्यबाट सुरु हुन्छ: यसको कुनै आधार चेकपोइन्ट छैन, किनकि यो फाउन्डेसन मोडेल होइन। यो लगभग ८० मिलियन प्यारामिटरको ट्रान्सफर्मर हो जसलाई तपाईं एउटै कार्यका लागि, आफ्नो रोबोटिक आर्ममा, आफ्नो प्रकाश व्यवस्था अन्तर्गत सुरुदेखि नै तालिम दिनुहुन्छ।

यही कारणले गर्दा यसले २० मिलिसेकेन्डमा नियन्त्रण चरण चलाउँछ जहाँ ३ बिलियन प्यारामिटर VLA लाई १५२ देखि ४८५ मिलिसेकेन्ड लाग्छ, र प्रति रन ४ देखि १२ USD को सट्टा १ देखि ३ USD खर्च हुन्छ। यो गाइडले म्यानुअल मार्ग देखाउँछ लेरोबोट मा SO-100: रेकर्ड, act कन्फिग, के chunk_sizen_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-recordlerobot-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, तालिका 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 को लेटेन्ट आयामअनुपस्थित; चित्र ११ ले ३२ देखि ५१२ प्रक्षेपण देखाउँछlatent_dim = 32
टेम्पोरल एन्सेम्ब्लिङअनुपस्थित; सन्दर्भ कोडमा --temporal_aggtemporal_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 होइन: तपाईं लामो भविष्यवाणी राख्नुहुन्छ र प्रायः पुन: अवलोकन गर्नुहुन्छ।

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 आवश्यकताहरू, अनुमान विलम्बता र न्यूनतम एपिसोड गणनाहरू सहितको तुलनात्मक तालिका देखाउँदै।
The /policies तालिका: ACT सँग सबैभन्दा कम प्यारामिटर गणना छ र सबैभन्दा छोटो चरण समय छ।
सुरुदेखि ACT तालिम दिँदै
फाइदाहरू
  • प्रत्येक कार्य चरणमा 20 ms, पाँच मध्ये सबैभन्दा छिटो, A100 मा होइन 24 GB कार्डमा।
  • 3 B वर्गको लागि 4 देखि 12 को तुलनामा प्रति रन 1 देखि 3 USD।
  • यसले देखेको सम्पर्क-समृद्ध कार्यमा सटीक: स्लाइड जिपलक र स्लट ब्याट्रीमा 88 र 96 प्रतिशत, जहाँ अघिल्लो विधिहरूले कहिल्यै पहिलो चरण पार गरेनन्।
फाइदा-बेफाइदा
  • भाषाको अवस्था छैन: कार्य स्ट्रिङलाई बेवास्ता गरिन्छ, त्यसैले एउटा चेकपोइन्ट एउटा कार्य हो।
  • कुनै सिमान्टिक पूर्वज्ञान छैन: यसले जानेको सबै तपाईंको ५० एपिसोडबाट आएको हो।
  • संकीर्ण सामान्यीकरण: क्यामेरा सार्नुहोस् र तपाईंले पुन: तालिम दिनुपर्छ।
  • यो चुपचाप असफल हुन्छ: क्षति घट्छ, पाखुराले केही गर्दैन, लगहरूले केही भन्दैनन्।
  • गति लाभले मात्र मद्दत गर्छ यदि अनुमान सर्भोको छेउमा बस्छ।

कार्य र दृश्य निश्चित हुँदा र गति छिटो र सटीक हुनुपर्दा 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 चाहिन्छ। पाइथन 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 पोर्ट पत्ता लगाउनुहोस्

    दुवै आर्म प्लग इन गरेर चलाउनुहोस्, प्रोम्प्ट गर्दा एउटा अनप्लग गर्नुहोस्। लिनक्समा तपाईंले नोड अनुमतिहरू खोल्नुपर्ने हुन सक्छ।

    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 रेकर्डिङ ट्यूटोरियल पृष्ठ जसले टेलिओपरेसन सत्रबाट लेरोबोट-ढाँचा डेटासेट कसरी क्याप्चर गर्ने भनेर व्याख्या गर्दछ।
रेकर्डिङ ट्यूटोरियल। डेस्कटप क्लाइन्टले लेरोबोट-रेकर्ड जस्तै लेआउट लेख्छ।
एक दिन बर्बाद गर्ने जाल: एक असंगत डेटासेट

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
एपिसोड ० रिप्ले गर्दै। यदि यो असफल भयो भने, रोक्नुहोस् र पुन: रेकर्ड गर्नुहोस्।

ACT नीतिलाई तालिम दिँदै

यो पूर्ण कमाण्ड हो। ACT-विशेष सबै कुरा पहिले नै पूर्वनिर्धारित छ, त्यसैले लेरोबोट 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
लेरोबोट ०.६.x कागजातहरूबाट तालिम कमाण्ड, SO-100 डेटासेटमा।

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

पूर्ण रनले पाँच चेकपोइन्ट डाइरेक्टरीहरू छोड्छ, 020000 देखि 100000 सम्म, साथै एउटा last सिम्लिंक। ती सबै राख्नुहोस्: प्रायः सबैभन्दा राम्रो नीति अन्तिम हुँदैन।

सेटिङlerobot पूर्वनिर्धारितAY-Robots ACT फारमटिप्पणी
ब्याच साइज88यदि तपाईं VRAM सीमामा पुग्नुभयो भने पहिले यसलाई घटाउनुहोस्।
लर्निङ रेट1e-51e-5ALOHA पेपर जस्तै।
अधिकतम चरणहरू100000100000लगभग जहाँ 50 एपिसोडको सेट सुधार हुन बन्द गर्छ।
ग्रेडियन्ट सञ्चय11, लागू हुँदैनयसको सट्टा ब्याच साइज परिवर्तन गर्नुहोस्।
सीड1000exposedGR00T को tyro एन्ट्री पोइन्टमा कुनै सीड छैन; ACT रनहरू पुनरुत्पादन योग्य हुन्छन्।
chunk_size / n_action_steps100 / 100100 / 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 भन्छ कि एक झट्का दिने वा रोकिने नीतिलाई सामान्यतया थप तालिम, किनभने घाटा स्थिर भएपछि पनि सफलता र सहजतामा सुधार भइरहन्छ: वास्तविक-विश्व डेटाका लागि यसलाई कम्तिमा ५००० इपोकहरू, वा पठार पछि फेरि ३ देखि ४ गुणा लम्बाइ चाहिन्छ।

bash
lerobot-train \
  --config_path=outputs/train/act_so100_cube/checkpoints/last/pretrained_model/train_config.json \
  --resume=true
अवरुद्ध रनलाई यसको अन्तिम चेकपोइन्टबाट पुनः सुरु गर्दै।

तालिम प्राप्त नीतिलाई पाखुरामा चलाउँदै

डिप्लोयमेन्टले lerobot-rollout प्रयोग गर्दछ। क्यामेरा कुञ्जीहरू रेकर्ड गरिएकाहरूसँग मिल्नुपर्छ: frontwrist मा तालिम प्राप्त नीतिले cam0cam1 स्वीकार गर्दैन, र 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. पोर्टहरू पत्ता लगाउनुहोस्, मोटर ID हरू सेट गर्नुहोस्, दुवै हातहरू क्यालिब्रेट गर्नुहोस्, ५० एपिसोडहरू रेकर्ड गर्नुहोस्।
  3. डेटामा कार्य समावेश छ भनी पुष्टि गर्न केही एपिसोडहरू पुन: प्ले गर्नुहोस्।
  4. २४ 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 fps मा प्रत्येक 3.3 सेकेन्डमा एक देखिने रोक। जान्नका लागि थप दुई कुरा: एउटा मृत जोइन्ट सामान्यतया सर्भो आईडी जुन कहिल्यै लेखिएको थिएन, र एउटा ग्रिपर जुन नजिक आउँछ तर कहिल्यै बन्द हुँदैन को अर्थ प्रदर्शनहरूमा ग्रिपरको दायरा धेरै कम छ। पूर्ण अनुक्रमणिका: असफलता मोड पृष्ठहरू

एक रनको लागत कति हुन्छ

टियरमोडेलहरूचल्ने समयप्रति घण्टा मूल्यप्रति रन लागत
RTX 4090 / 24 GBACT, SmolVLA2 to 5 hours0.30 to 0.60 USDabout 1 to 3 USD
A100 80 GB / H100GR00T N1.7, GR00T N1.5, Pi0.53 to 6 hours1.20 to 2.00 USDabout 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 सँग कुनै पूर्वज्ञान छैन, त्यसैले एपिसोड २१ मा सानो धक्का स्थायी हुन्छ।

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started