AY-Robots प्रशिक्षण मॅट्रिक्स, ज्यात पाच पॉलिसी पंक्ती आणि चार रोबोट आर्म स्तंभ आहेत, प्रत्येक सेल विशिष्ट मॉडेल आणि आर्म प्रशिक्षण मार्गदर्शकाशी जोडलेला आहे.
ACTSO-100lerobotअनुकरण शिक्षणपॉलिसी प्रशिक्षण

सुरुवातीपासून SO-100 वर ACT कसे प्रशिक्षित करावे

AY-Robots ResearchAugust 23, 202616 मिनिट वाचन

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 IIIlerobot on main
लर्निंग रेट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 चा लॅटेंट डायमेन्शनabsent; Fig. 11 shows a 32 to 512 projectionlatent_dim = 32
टेम्पोरल एन्सेम्बलिंगabsent; --temporal_agg in the reference codetemporal_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: तुम्ही दीर्घ अंदाज कायम ठेवता आणि अधिक वेळा पुन्हा निरीक्षण करता.

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
The AY-Robots policies page showing a comparison table of ACT, SmolVLA, GR00T N1.5, GR00T N1.7 and Pi0.5 with parameter counts, GPU requirements, inference latency and minimum episode counts
The /policies table: ACT has the smallest parameter count and the shortest step time.
सुरुवातीपासून ACT ला प्रशिक्षण देणे
फायदे
  • प्रत्येक कृतीसाठी 20 ms, पाचपैकी सर्वात वेगवान, A100 नव्हे तर 24 GB कार्डवर.
  • 3 B क्लाससाठी 4 ते 12 च्या तुलनेत प्रति रन 1 ते 3 USD.
  • त्यांनी पाहिलेल्या संपर्क-समृद्ध कामांवर अचूक: स्लाइड झिपलॉक आणि स्लॉट बॅटरीवर 88 आणि 96 टक्के, जिथे मागील पद्धतींनी कधीही पहिला टप्पा पार केला नाही.
अदलाबदल
  • कोणतीही भाषा कंडिशनिंग नाही: कार्य स्ट्रिंग दुर्लक्षित केली जाते, त्यामुळे एक चेकपॉईंट म्हणजे एक कार्य.
  • कोणतेही सिमेंटिक पूर्वज्ञान नाही: त्याला जे काही माहित आहे ते तुमच्या 50 एपिसोड्समधून आले आहे.
  • संकीर्ण सामान्यीकरण: कॅमेरा हलवला की तुम्हाला पुन्हा प्रशिक्षण द्यावे लागते.
  • ते शांतपणे अयशस्वी होते: लॉस कमी होतो, आर्म काहीही करत नाही, लॉगमध्ये काहीही नसते.
  • गतीचा फायदा तेव्हाच होतो जेव्हा इन्फरन्स सर्व्होजवळ असतो.

जेव्हा कार्य आणि दृश्य निश्चित असतात आणि हालचाल जलद आणि अचूक असणे आवश्यक असते, तेव्हा ACT निवडा. जेव्हा एका चेकपॉईंटमध्ये अनेक सूचना समाविष्ट असाव्यात, तेव्हा एक निवडा. दोन पृष्ठे या निर्णयावर थेट काम करतात: आणि . प्रकाशित बेंचमार्क्ससाठी, प्रत्येक संख्येला त्याच्या स्रोताशी जोडते.

सुरुवात करण्यापूर्वी तुम्हाला काय हवे आहे

एक फॉलोअर आर्म, साठी एक लीडर आर्म, किमान एक कॅमेरा, 24 GB GPU. ACT फक्त प्रतिमा आणि जॉइंट पोझिशन्स वाचते. दोन कॅमेरे आदर्श आहेत: वस्तू कुठे आहेत यासाठी एक निश्चित समोरचा व्ह्यू, आणि काय स्पर्श करणार आहे यासाठी एक मनगट कॅमेरा, जसे ALOHA वर.

आर्मसर्व्होव्होल्टेजभागांची किंमतस्थिती
SO-100Feetech STS32157.4 V~110 ते 150 EURपूर्ण समर्थन, संदर्भ आर्म
SO-101Feetech STS32157.4 V~130 ते 170 EURपूर्ण समर्थन
Koch v1.1Dynamixel XL330 / XL4305 V आणि 12 V रेल्स~250 ते 350 EURसुसंगत
LeKiwiFeetech STS3215 (आर्म)7.4 V आर्म, 12 V बेस~400 ते 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 पोर्ट शोधा

    दोन्ही आर्म्स प्लग इन करून चालवा, प्रॉम्प्ट केल्यावर एक अनप्लग करा. लिनक्सवर तुम्हाला नोड परवानग्या उघडण्याची आवश्यकता असू शकते.

    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-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) आणि एक शेवटचा सिमलिंक राहते. त्या सर्व ठेवा: सर्वोत्तम पॉलिसी अनेकदा शेवटची नसते.

सेटिंगlerobot डीफॉल्टAY-Robots ACT फॉर्मटीप
बॅच आकार88जर VRAM मर्यादा आल्यास, आधी ते कमी करा.
लर्निंग रेट1e-51e-5ALOHA पेपरप्रमाणेच.
जास्तीत जास्त स्टेप्स100000100000जवळपास 50 एपिसोडचा सेट सुधारणे थांबवतो.
ग्रेडियंट संचय11, does not applyत्याऐवजी बॅच आकार बदला.
सीड1000exposedGR00T च्या टायरो एंट्री पॉइंटला सीड नाही; ACT रन हे पुनरुत्पादक असतात.
chunk_size / n_action_steps100 / 100100 / 100, संपादनीयअंदाज आणि अंमलबजावणीची मर्यादा. दुसरे कमी करा, पहिले नाही.
चेकपॉईंट वारंवारता20000not 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 पट लांबीची आवश्यकता असते.

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 चालवणाऱ्या ब्लॉकच्या अगदी वर "using the lerobot-record command" असे म्हणते. वाक्याचे नाही, तर कमांडचे अनुसरण करा.

अंतिम मॉडेलऐवजी चेकपॉईंट पिन करण्यासाठी, जोडा --policy.pretrained_revision. त्यासाठी रनची सुरुवात --save_checkpoint_to_hub=true ने झाली पाहिजे, जे डीफॉल्टनुसार बंद असते: त्याशिवाय lerobot अंतिम मॉडेल आणि दुसरे काहीही पुश करत नाही. यासह, प्रत्येक चेकपॉईंटला त्याच्या शून्य-पॅड केलेल्या स्टेपसह टॅग केले जाते, त्यामुळे --policy.pretrained_revision=060000 60000 स्टेपचा चेकपॉईंट परत मिळवतो. वास्तविक आर्मवर त्याची 100000 शी तुलना करणे हा उपलब्ध सर्वात स्वस्त प्रयोग आहे.

एकाच चेकपॉईंटपर्यंत पोहोचण्याचे दोन मार्ग

वरील सर्व मॅन्युअल मार्ग आहे आणि तो काम करतो. प्लॅटफॉर्म मार्ग GPU किंवा पायथन वातावरण स्वतःकडे नसताना नियंत्रणाची अदलाबदल करतो.

  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 काहीच दाखवत नाहीड्रायव्हर, केबल किंवा नोड परवानग्या/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 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

हे 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