HG-DAgger, सुरुदेखि अन्त्यसम्म

Policy ले गल्ती गर्दा नियन्त्रण लिनुहोस्, अनि आफ्नै सुधारमा तालिम दिनुहोस्।

Behavior Cloning बाट तालिम पाएको policy ले केवल डेमोन्स्ट्रेसनले पुगेका अवस्थाहरू मात्र चिन्छ। DAgger ले यो खाडललाई policy आफैंले पुग्ने अवस्थाहरूबाट लिइएको डेटाले पुर्छ। AY-Robots ले यो पूरा लूप SO-100 मा चलाउँछ: checkpoint चलाउनुहोस्, बीचमै नियन्त्रण लिनुहोस्, सुधारिएका एपिसोडहरू राख्नुहोस्, मिश्रण मिलाउनुहोस्, र भर्खरै चलाएको checkpoint बाटै तालिम जारी राख्नुहोस्।

  • HG-DAgger, मानव-नियन्त्रित
  • SO-100 / SO-101
  • ACT, SmolVLA, Pi0, GR00T N1.5 / N1.7
  • प्रत्येक राउन्डको हस्तक्षेप दर

तालिम पाएको policy ले किन कहिल्यै नदेखाइएको काम गर्छ

Behavior Cloning ले नियन्त्रणलाई सामान्य सुपरभाइज्ड लर्निङजस्तै व्यवहार गर्छ: अवलोकन भित्र, जोइन्ट लक्ष्य बाहिर, मानिसले रेकर्ड गरेका फ्रेमहरूमा फिट गरिएको। यो तबसम्म मात्र ठीक हुन्छ जबसम्म रोबोट मानिसले पुगेका अवस्थाहरूमै रहन्छ, र त्यसो हुँदैन। चालीस मिलिसेकेन्ड चाँडै बन्द हुने ग्रिपरले क्युबलाई देखाइएको स्थितिबाट दुई मिलिमिटर तान्छ। अर्को अवलोकन तालिम सेटमा छैन, त्यसैले त्यहाँको एक्सन एउटा एक्स्ट्रापोलेसन हो, र त्यसपछिको अवस्था झन् बाहिर पर्छ। तालिम डिस्ट्रिब्युसन र सिकेको policy ले वास्तवमा उत्पन्न गर्ने डिस्ट्रिब्युसन दुई फरक कुरा हुन्, र एपिसोड चलिरहँदा दोस्रोचाहिँ पहिलोबाट झनझन् टाढा हुँदै जान्छ।

Ross, Gordon र Bagnell ले 2011 मा ठ्याक्कै यही समस्या वर्णन गरे र क्षति नाप्न सिके: एक्सपर्ट डिस्ट्रिब्युसनमुनि सम्भावना e ले गल्ती गर्ने क्लासिफायरले आफैंले उत्पन्न गरेको डिस्ट्रिब्युसनमुनि T चरणको होराइजनमा लगभग T वर्ग गुणा e जति गल्ती गर्न सक्छ, किनभने एउटा गल्तीले एक्सपर्टले कहिल्यै नबनाएका अवलोकनहरू जन्माउँछ र गल्तीहरू जम्मै हुँदै बढ्छन्। यसको समाधान नै यो पेजले वर्णन गर्ने एल्गोरिदम हो। हालको policy चलाउनुहोस्, त्यसले पुगेका अवस्थाहरूका लागि एक्सपर्ट लेबल जम्मा गर्नुहोस्, अहिलेसम्म जम्मा भएको सबैसँग एग्रिगेट गर्नुहोस्, फेरि तालिम दिनुहोस्, दोहोर्याउनुहोस्। उस्तै खालका थप डेमोन्स्ट्रेसनले मद्दत गर्दैन, किनभने तिनले उही डिस्ट्रिब्युसन नै फेरि नमूना लिन्छन्। policy पुगेका अवस्थाका लेबलले भने मद्दत गर्छ। यहाँ लागू गरिएको भेरिएन्ट human-gated हो (HG-DAgger, Kelly et al.): policy ले नियन्त्रण राख्छ जबसम्म कुनै मानिसले गल्ती भइरहेको ठान्दैन र नियन्त्रण लिँदैन, त्यसैले सुधार आवश्यक ठाउँमा मात्र उत्पन्न हुन्छ, र अपरेटरले नमान्ने अवस्थामा आर्मलाई कहिल्यै धकेलिँदैन।

  • Behavior Cloning जुन अवस्थाको डिस्ट्रिब्युसनमा तालिम पाएको हो, त्यहीँ मात्र मान्य हुन्छ।
  • यो समस्या आफैं बढ्दै जान्छ: सानो विचलनले अपरिचित अवस्था जन्माउँछ, जसले झन् ठूलो विचलन जन्माउँछ।
  • समाधान थप डेमोन्स्ट्रेसन होइन, policy आफैंले पुगेका अवस्थाका लेबल हो।
  • Human-gated भन्नाले अपरेटरले हस्तक्षेप गर्ने बेला तय गर्छ भन्ने हो, कुनै अटोनोमी स्कोरले होइन।

गल्ती किन जम्मै हुँदै बढ्छ

होराइजन तान्नुहोस्। Behavior Cloning अन्तर्गत अपेक्षित अतिरिक्त लागत लगभग चरणसंख्याको वर्गसँगै बढ्छ, किनभने प्रत्येक गल्तीले डेमोन्स्ट्रेसनले कहिल्यै नछोएका अवस्था जन्माउँछ; एउटा एग्रिगेसन लूपले यो वृद्धिलाई लगभग लिनियरमै राख्छ (Ross et al., 2011)।

200
1.0 %
Behavior Cloning
400
DAgger
2.00
200×
Behavior Cloning ÷ DAgger
0.000100200300400050100150200अपेक्षित अतिरिक्त लागत (सीमा)
टास्क होराइजन (चरण)

Ross et al. (2011) का सीमाबाट लिइएका उदाहरणस्वरूप कर्भ हुन्, तपाईंको रोबोटबाट लिइएको नाप होइन। यहाँ आकृति महत्त्वपूर्ण हो, संख्या होइन।

एउटा DAgger राउन्ड, छ चरण

यो प्लेटफर्मले वास्तवमा चलाउने लूप हो, कुनै योजनाचित्र होइन। तलका हरेक चरण ककपिटको कुनै न कुनै नियन्त्रणसँग मिल्छ।

लूप एक-एक गरेर हेर्नुहोस्

उही छ चरण, एक-एक गरेर, प्रत्येकमा आर्म र डेटासेटमा के हुन्छ सोहीसहित।

01

Policy चलाउनुहोस् र रेकर्ड गर्नुहोस्

आफूले तालिम दिएको checkpoint विरुद्ध इन्फरेन्स रन सुरु गर्नुहोस्। रन हुँदाहुँदै त्यसैको टास्क टेक्स्टसहित रेकर्ड हुन्छ, त्यसैले फ्रेमहरू पछि तालिम डेटाको रूपमा प्रयोग गर्न मिल्छ, हेर्न मात्र मिल्ने भिडियो बन्दैन।

1 मध्ये 6

प्लेटफर्मले तपाईंका लागि के गर्छ

यहाँका हरेक कुरा लूपको त्यस्तो चरण हो, जुन नभए तपाईं आफैं बनाउनु र धान्नुपर्थ्यो।

Leader आर्मबिना नियन्त्रण लिने

रन सुरु गर्दा किबोर्ड वा स्लाइडर इनपुट छान्नुहोस्, अनि ल्यापटप मात्रैले सुधार्न सकिन्छ। किबोर्ड नज सर्भर-साइडमै प्रति जोइन्ट दुई डिग्री र ग्रिपरमा चार डिग्रीमा क्ल्याम्प गरिएको हुन्छ; स्लाइडर लक्ष्य एब्सोलुट हुन्छ र सर्भरले प्रत्येक कलमा बढीमा छ डिग्री मात्र सार्छ। क्ल्याम्प UI ले होइन सर्भरले लागू गर्छ, त्यसैले अड्किएको कुञ्जीले आर्मलाई बिगार्न सक्दैन।

टेलिअपरेसन डक्स

प्रत्येक फ्रेममा हस्तक्षेप चिन्ह लगाइएको

तपाईंले आर्म समातेको बेला रेकर्ड भएको हरेक फ्रेममा हस्तक्षेप फ्ल्याग हुन्छ, र action कलममा पूरा कमान्ड गरिएको पोज हुन्छ। फ्ल्याग कलम आफैं हातले धान्नुपर्दैन, न त पछि फ्रेम इन्डेक्ससँग मिलाउनुपर्छ।

LeRobot डेटासेट फर्म्याट (अंग्रेजीमा)

छनोट: सुधार, इभ्यालुएसन, वा फ्याँक्ने

प्रत्येक रनले सेभ कार्डमा एउटै निर्णय पाउँछ। सुधार रनले अर्को तालिम राउन्डलाई खुवाउँछ, इभ्यालुएसन रन तालिमबाट बाहिरै रहन्छ ताकि सफा नाप कायम रहोस्, र नराम्रा रन मिश्रणलाई चुपचाप बिगार्नुको साटो हट्छन्।

सेसन र एपिसोड

मिश्रण स्पष्ट रूपमा तयार गर्नुहोस्

राउन्ड n को तालिम सेट तपाईं आफैंले जोड्नुहुन्छ: मौलिक डेटासेट प्लस सुधार, हरेक स्रोतबाट छानिएका एपिसोड। कुनै स्वचालित मिसावट छैन, लुकेको सिमुलेसन डेटा छैन, र तयार भएको नतिजाले अरू कुनै पनि डेटासेटजस्तै व्यवहार गर्छ।

डेटासेटहरू

Checkpoint बाट जारी राख्नुहोस्

बेस मोडेलको साटो भर्खरै चलाएको checkpoint तिर तालिम रन तेर्स्याउनुहोस्, ताकि हरेक राउन्ड अघिल्लो सकिएको ठाउँबाटै सुरु होस्। यसले वेट मात्र सुरु गराउँछ; अप्टिमाइजर स्टेट फर्किँदैन, त्यसैले पहिलो राउन्डलाई सम्भाव्यता जाँचकै रूपमा हेर्नु उचित हुन्छ।

तालिम

राउन्डअनुसार भाडामा लिइने GPU

ACT र SmolVLA 4090 मा, Pi0 र GR00T N1.5 वा N1.7 80 GB भएको A100 मा। राउन्ड सुरु गर्नुहोस्, pod उठ्छ, checkpoint हरू तपाईंको bucket मा पुग्छन्, र राउन्डले लिएको घण्टाको मात्र तिर्नुपर्छ।

GPU मूल्य

आफ्ना राउन्ड योजना बनाउनुहोस्

हस्तक्षेप दर लूपको प्रगति नाप्ने मेट्रिक हो: सुधारिएका फ्रेमलाई रनका फ्रेमले भाग गरेको। सुरुआत बिन्दु र हरेक राउन्डले दिने सुधार तय गर्नुहोस्, अनि चाहिएको ठाउँसम्म पुग्न कति राउन्ड चाहिन्छ हेर्नुहोस्।

30 %
25 %
3 000
राउन्डहस्तक्षेप दरसुधारिएका फ्रेम
1
30.0%
900
2
22.5%
675
3
16.9%
506
4
12.7%
380
5
9.5%
285
6
7.1%
214
Σ2 960

यो एउटा मोडेल हो, भविष्यवाणी होइन। वास्तविक राउन्डहरू अनियमित हुन्छन्, र दर नहल्ने राउन्डले केही पनि दिँदैन; त्यही नै नजर राख्नुपर्ने संकेत हो।

लूप आफैं बनाउने विरुद्ध यहाँ चलाउने

यीमध्ये कुनै पनि हातैले असम्भव छैन। कुरा यत्ति हो कि कति साँझ राउन्डको साटो जोडतोडमै जान्छ, र एउटा पंक्ति यस्तो पनि छ जहाँ आफैं गर्नु स्पष्ट रूपमै राम्रो जवाफ हो।

लूपको चरणहातैले मिलाउँदाAY-Robots मा
रनको बीचमै नियन्त्रण लिनेLeader आर्म, वा सर्भो बसमा आफ्नै कोड। सुरक्षित सीमासहित किबोर्ड र स्लाइडर टेकओभर तपाईंले लेखेर वास्तविक हार्डवेयरमा डिबग गर्नुपर्छ।Leader आर्म, किबोर्ड, वा स्लाइडर, रन सुरु हुँदा छानिने। कोण क्ल्याम्प सर्भरमै हुन्छ।
हस्तक्षेप चिन्ह लगाउनेफ्ल्याग कलम आफैं थप्नुहोस्, फ्रेम इन्डेक्ससँग मिलाइराख्नुहोस्, र रेकर्डिङ फर्म्याट बदलिँदा हरेक पटक फेरि जाँच्नुहोस्।टेकओभरको बेला रेकर्ड भएको हरेक फ्रेम स्वतः फ्ल्याग हुन्छ, action कलममा कमान्ड गरिएको पोजसहित।
रन छुट्याउनेडाइरेक्टरी परम्परा र शेल स्क्रिप्ट। ह्यान्डओभरवरपरका फ्रिज फ्रेम आफैं खोजेर हटाउनुपर्छ।सेभ कार्डमा प्रत्येक रनको एउटै निर्णय। ह्यान्डओभर फ्रेम raw डाइरेक्टरीमै रहन्छन्।
मिश्रित डेटासेट बनाउनेहरेक फर्म्याट भर्सनका लागि मर्ज स्क्रिप्ट। एपिसोड इन्डेक्स, मेटाडेटा, र भिडियो सन्दर्भ मिलाउनु नै झन्झटिलो काम हो।मौलिक प्लस सुधारबाट, हरेक स्रोतबाट एपिसोड छानेर तयार गर्नुहोस्; नतिजा साधारण डेटासेट हुन्छ।
अघिल्लो policy बाटै अर्को राउन्ड सुरु गर्नेCheckpoint आफैं ट्रेनरमा जडान गर्नुपर्छ, र साँचो रिजुम चाहेमा अप्टिमाइजर स्टेट पनि आफैं फर्काउन सकिन्छ।बेस checkpoint का लागि एउटै फिल्ड। वेट मात्र: checkpoint बाट सुरु गराउँछ, अप्टिमाइजर रिजुम होइन।
तालिम लूपमाथिको नियन्त्रणपूर्ण। आफ्नै loss, आफ्नै तालिका, आफ्नै एब्लेसन, आफ्नै इन्स्ट्रुमेन्टेसन, बीचमा कुनै प्लेटफर्म छैन। यदि अनुसन्धानको प्रश्न नै तालिम लूप आफैं हो भने, यो हातैले गर्नुहोस्।Policy हरूको तय सूची र फारमले देखाउने हाइपरप्यारामिटरसहितको निश्चित बाटो, मनपरी कोड होइन।

यो जुन पेपरमा आधारित छ

लूपसँग तर्क गर्नुअघि यी पढ्नुहोस्। हरेक लिंक एब्स्ट्र्याक्ट पेजमा जान्छ, पेवालमा होइन।

  1. A Reduction of Imitation Learning and Structured Prediction to No-Regret Online Learning

    Stephane Ross, Geoffrey J. Gordon, J. Andrew Bagnell · 2011 · AISTATS 2011 (PMLR 15)

    मौलिक DAgger पेपर: यसले जम्मै हुँदै बढ्ने गल्तीको समस्या बताउँछ, सामान्य सुपरभाइज्ड तरिकाका लागि T-वर्ग सीमा दिन्छ, र लर्नर आफैंले पुगेका अवस्थाबाट डेटा एग्रिगेट गर्न प्रस्ताव राख्छ।

  2. HG-DAgger: Interactive Imitation Learning with Human Experts

    Michael Kelly, Chelsea Sidrane, Katherine Driggs-Campbell, Mykel J. Kochenderfer · 2019 · arXiv:1810.02890, ICRA 2019

    Human-gated भेरिएन्ट: policy ले छानेका अवस्थामा सोधिनुको साटो एक्सपर्टले नै कहिले नियन्त्रण लिने भनी निर्णय गर्छ, यो प्लेटफर्मले लागू गर्ने मोड यही हो।

  3. EnsembleDAgger: A Bayesian Approach to Safe Imitation Learning

    Kunal Menda, Katherine Driggs-Campbell, Mykel J. Kochenderfer · 2019 · arXiv:1807.08364, IROS 2019

    हस्तक्षेप नियन्त्रण गर्ने अर्को तरिका: लर्नर एक्लै काम गर्न सक्ने बेलाको भरोसा संकेतको रूपमा एन्सेम्बल असहमति। मानिसले नै निर्णय गर्न दिनुसँग तुलना गर्न उपयोगी।

  4. ThriftyDAgger: Budget-Aware Novelty and Risk Gating for Interactive Imitation Learning

    Ryan Hoque, Ashwin Balakrishna, Ellen Novoseller, Albert Wilcox, Daniel S. Brown, Ken Goldberg · 2021 · CoRL 2021

    मानिसको ध्यानलाई दुर्लभ स्रोतको रूपमा हेर्छ र नयाँ वा जोखिमपूर्ण अवस्थामा मात्र मद्दत माग्छ, जुन एक जनाले पूरै दिउँसो आर्म हेरचाह गर्दा उपयुक्त दृष्टिकोण हो।

  5. DART: Noise Injection for Robust Imitation Learning

    Michael Laskey, Jonathan Lee, Roy Fox, Anca Dragan, Ken Goldberg · 2017 · CoRL 2017

    इमानदार विकल्प: policy लाई अनलाइन सुधार्नुको साटो डेमोन्स्ट्रेसनमै गडबड मिसाएर एक्सपर्टलाई फर्किने तरिका देखाउन लगाइन्छ। हस्तक्षेपमा प्रतिबद्ध हुनुअघि जान्नुपर्ने कुरा।

  6. Interactive Imitation Learning in Robotics: A Survey

    Carlos Celemin, Rodrigo Perez-Dattari, Eugenio Chisari, Giovanni Franzese, Leandro de Souza Rosa, Ravi Prakash, Zlatan Ajanovic, Marta Ferraz, Abhinav Valada, Jens Kober · 2022 · arXiv:2211.00600

    यस क्षेत्रको नक्सा: मानव फिडब्याकका कुन-कुन रूप छन्, कुन इन्टरफेसले तिनलाई बोक्छ, र DAgger-शैलीको हस्तक्षेप तीमध्ये कहाँ पर्छ।

  7. Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware

    Tony Z. Zhao, Vikash Kumar, Sergey Levine, Chelsea Finn · 2023 · arXiv:2304.13705

    ACT पेपर। सस्तो आर्मलाई इमिटेसन policy ले नै चलाउन सक्नुको कारण एक्सन चङ्किङ हो, र DAgger राउन्ड सबैभन्दा छिटो दोहोर्याउन मिल्ने policy ACT नै हो।

  8. π0: A Vision-Language-Action Flow Model for General Robot Control

    Kevin Black, Noah Brown, Danny Driess, Adnan Esmail, Michael Equi, Chelsea Finn et al. · 2024 · arXiv:2410.24164

    प्रि-ट्रेन गरिएको भिजन-ल्यांग्वेज मोडेलमाथि बनेको flow-matching VLA, र यहाँ fine-tune गर्न सकिने checkpoint हरूमध्ये एक; पेपरले स्पष्ट भन्छ कि नयाँ सीप fine-tuning बाट आउँछ, बेस मोडेल एक्लैबाट होइन।

मानिसले साँच्चै सोध्ने प्रश्नहरू

के DAgger का लागि leader आर्म चाहिन्छ?

चाहिँदैन। रन सुरु गर्दा किबोर्ड वा स्लाइडर इनपुट छान्नुहोस्, अनि पहिलो फ्रेमदेखि नै ब्राउजरबाट म्यानुअल नियन्त्रण लिन सकिन्छ। सूक्ष्म गतिका लागि leader आर्म बढी सहज हुन्छ, र यही मोडमा आर्मले नियन्त्रण सुम्पनुअघि आफैं मिलाउँछ, तर leader आर्मबिना पनि लूप चल्छ।

कति DAgger राउन्ड चाहिन्छ?

कुनै इमानदार निश्चित संख्या छैन। हस्तक्षेप दरमा ध्यान दिनुहोस्: एक राउन्डबाट अर्कोमा नघट्ने हो भने त्यो राउन्डले केही दिएन, र समस्या प्रायः राउन्ड संख्यामा होइन, टास्क सेटअप, क्यामेरा, वा मौलिक डेटासेटमा हुन्छ।

यो साँचो DAgger हो कि केही खुकुलो चीज?

यो HG-DAgger हो, human-gated भेरिएन्ट। क्लासिक DAgger ले policy ले छानेका अवस्थामा एक्सपर्टलाई सोध्छ, जसमा कुनै समझदार अपरेटरले वास्तविक आर्मलाई पुग्न नदिने अवस्था पनि पर्छ। यहाँ चाहिँ मानिसले नै हस्तक्षेप कहिले गर्ने भनी निर्णय गर्छ, र त्यही खण्ड मात्र लेबल बन्छ।

के मैले सुधारमा मात्र तालिम दिने हो?

होइन, र त्यसो गर्नु पनि हुँदैन। सुधारमा मात्र तालिम दिँदा फर्किन मात्र जान्ने policy बन्छ। तयार गरिएको डेटासेट मौलिक डेटा प्लस सुधार हो, हरेक स्रोतबाट स्पष्ट रूपमा छानिएका एपिसोडसहित।

के checkpoint बाट जारी राख्दा तालिम रन रिजुम हुन्छ?

यसले वेटलाई त्यो checkpoint बाट सुरु गराउँछ मात्र। अप्टिमाइजर स्टेट फर्किँदैन, त्यसैले कडा अर्थमा यो रिजुम होइन। व्यवहारमा सिकेको व्यवहार राउन्डभरि वेटले नै बोक्छ, तर दुईमध्ये कुन पाइँदैछ भन्ने जान्नु राम्रो हुन्छ।

हस्तक्षेप दर कसरी गणना हुन्छ?

हस्तक्षेपको रूपमा फ्ल्याग भएका फ्रेमलाई रनका कुल फ्रेमले भाग गरेर। यो टेकओभर स्टेटसमा देखिन्छ, र चलाएको checkpoint र तालिम दिएको मिश्रणसँगै हरेक राउन्डमा नोट गर्नुपर्ने एउटै संख्या हो।

यो लूप कुन-कुन policy सँग चलाउन सकिन्छ?

ACT, SmolVLA, Pi0, र GR00T N1.5 वा N1.7। लूप आफैं policy-अज्ञेय छ किनभने यसले डेटासेट र checkpoint मात्र उत्पन्न गर्छ; व्यावहारिक फरक राउन्डले लिने समय र चाहिने GPU मा हुन्छ।

के आफ्नै रोबोट नभई पनि यो गर्न सकिन्छ?

मार्केटप्लेसबाट डेटासेट किनेर वा अपरेटरलाई काम दिएर रोबोटबिना पनि रेकर्ड र तालिम गर्न सकिन्छ, र लाइभ पेजमा ब्राउजरबाटै साँचो SO-100 चलाउन सकिन्छ। तर DAgger राउन्ड फरक कुरा हो: यसलाई रनको बीचमै नियन्त्रण लिन मिल्ने आर्म चाहिन्छ, त्यसैले लूपकै लागि आफ्नै टेबलमा हार्डवेयर चाहिन्छ।

Drive a real arm

A real SO-100, live in the browser. No signup, no hardware needed.

यही हप्ता आफ्नो पहिलो राउन्ड चलाउनुहोस्

क्लाइन्ट इन्स्टल गर्नुहोस्, पहिल्यै भएको checkpoint चलाउनुहोस्, र आर्मले क्युब नाघ्ने पहिलो पटकमै नियन्त्रण लिनुहोस्। यो एउटै रन नै सानो स्तरको DAgger राउन्ड हो: यसपछिको सबै काम मिश्रण तयार पार्ने र GPU घण्टा तिर्ने मात्र हो।