Human-gated DAgger, एंड-टू-एंड

जब नीति ग़लत कर बैठे तो टेकओवर करें, फिर उसे अपने सुधार पर प्रशिक्षित करें।

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

  • HG-DAgger, human-gated
  • SO-100 / SO-101
  • ACT, SmolVLA, Pi0, GR00T N1.5 / N1.7
  • प्रति राउंड हस्तक्षेप दर

प्रशिक्षित नीति वह काम क्यों करती है जो कभी दिखाया ही नहीं गया

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

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

  • व्यवहार क्लोनिंग सिर्फ़ उन्हीं स्थितियों के वितरण पर मान्य है जिस पर उसे प्रशिक्षित किया गया था।
  • यह गड़बड़ी ख़ुद को बढ़ाती है: एक छोटा विचलन एक अनजान स्थिति पैदा करता है, जो एक बड़ा विचलन पैदा करता है।
  • इसका इलाज ज़्यादा प्रदर्शन नहीं है, बल्कि उन स्थितियों के लेबल हैं जहाँ नीति ख़ुद पहुँचती है।
  • Human-gated का मतलब है कि हस्तक्षेप कब करना है यह ऑपरेटर तय करता है, कोई ऑटोनॉमी स्कोर नहीं।

ग़लती क्यों बढ़ती चली जाती है

अवधि को खींचें। व्यवहार क्लोनिंग के तहत अनुमानित अतिरिक्त लागत लगभग चरणों की संख्या के वर्ग के अनुपात में बढ़ती है, क्योंकि हर ग़लती ऐसी स्थितियाँ पैदा करती है जिन्हें प्रदर्शनों ने कभी कवर ही नहीं किया; एक एकत्रीकरण लूप इस बढ़ोतरी को लगभग रैखिक बनाए रखता है (Ross et al., 2011)।

200
1.0 %
व्यवहार क्लोनिंग
400
DAgger
2.00
200×
व्यवहार क्लोनिंग ÷ DAgger
0.000100200300400050100150200अनुमानित अतिरिक्त लागत (सीमा)
टास्क अवधि (चरण)

ये Ross et al. (2011) में दी गई सीमाओं पर आधारित उदाहरण-वक्र हैं, आपके रोबोट की माप नहीं। बात वक्र के आकार की है, संख्याओं की नहीं।

एक DAgger राउंड, छह चरण

यह वह लूप है जैसे प्लेटफ़ॉर्म इसे असल में चलाता है, कोई योजनाबद्ध चित्र नहीं। नीचे हर चरण कॉकपिट के किसी नियंत्रण से मेल खाता है।

लूप को चरण-दर-चरण देखें

वही छह चरण, एक-एक करके, साथ में यह भी कि हर चरण पर भुजा और डेटासेट में क्या होता है।

01

नीति चलाएं और रिकॉर्ड करें

अपने प्रशिक्षित किए गए चेकपॉइंट के ख़िलाफ़ एक इंफरेंस रन शुरू करें। यह रन होते समय ही रिकॉर्ड होता है, साथ में उसी रन का टास्क टेक्स्ट भी, ताकि बाद में ये फ्रेम सिर्फ़ देखने लायक वीडियो न होकर प्रशिक्षण डेटा के तौर पर इस्तेमाल हो सकें।

1 में से 6

प्लेटफ़ॉर्म आपके लिए क्या-क्या संभालता है

यहाँ हर आइटम लूप का वह चरण है जिसे आपको वरना ख़ुद बनाना और बनाए रखना पड़ता।

leader भुजा के बिना टेकओवर

रन शुरू करते समय कीबोर्ड या स्लाइडर इनपुट चुनें, तो अकेले लैपटॉप से भी सुधार किया जा सकता है। कीबोर्ड की हल्की हरकतें सर्वर की तरफ़ से हर जोड़ पर दो डिग्री और पकड़ पर चार डिग्री तक सीमित रहती हैं; स्लाइडर के लक्ष्य ऐब्सलूट होते हैं, और सर्वर हर कॉल पर उनकी दिशा में अधिकतम छह डिग्री बढ़ता है। यह सीमा सर्वर लागू करता है, यूज़र इंटरफ़ेस नहीं, इसलिए कोई अटकी हुई की भुजा को झटका नहीं दे सकती।

टेलीऑपरेशन डॉक्स

हर फ्रेम पर मार्क किया गया हस्तक्षेप

जब तक आप भुजा को पकड़े रहते हैं, तब तक रिकॉर्ड होने वाला हर फ्रेम एक हस्तक्षेप फ्लैग के साथ आता है, और action कॉलम में पूरी कमांड की गई मुद्रा रहती है। आपको न तो हाथ से कोई फ्लैग कॉलम बनाए रखना पड़ता है, न बाद में उसे फ्रेम इंडेक्स से मिलाना पड़ता है।

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

छँटाई: सुधार, मूल्यांकन, या हटाना

हर रन को सेव कार्ड पर एक फ़ैसला मिलता है। सुधार वाले रन अगले प्रशिक्षण राउंड में जाते हैं, मूल्यांकन वाले रन प्रशिक्षण से बाहर रहते हैं ताकि वे एक साफ़ माप बने रहें, और ख़राब रन चुपचाप मिश्रण को बिगाड़ने के बजाय हट जाते हैं।

सेशन और एपिसोड

मिश्रण साफ़-साफ़ ख़ुद बनाएं

राउंड n के लिए प्रशिक्षण सेट आप ख़ुद तैयार करते हैं: मूल डेटासेट और सुधार मिलाकर, हर सोर्स से एपिसोड चुनकर। कोई अपने-आप मिलावट नहीं, कोई छुपा हुआ सिमुलेशन डेटा नहीं, और तैयार नतीजा किसी भी और डेटासेट जैसा ही व्यवहार करता है।

डेटासेट

चेकपॉइंट से आगे जारी रखें

बेस मॉडल के बजाय प्रशिक्षण रन को उस चेकपॉइंट पर लगाएं जिसे आपने अभी-अभी चलाया था, ताकि हर राउंड वहीं से शुरू हो जहाँ पिछला ख़त्म हुआ था। यह सिर्फ़ वज़न को इनिशियलाइज़ करता है; ऑप्टिमाइज़र की स्थिति बहाल नहीं होती, इसीलिए राउंड एक को एक व्यवहार्यता परीक्षण की तरह लेना समझदारी है।

प्रशिक्षण

राउंड के हिसाब से किराए पर GPU

ACT और SmolVLA एक 4090 पर, Pi0 और GR00T N1.5 या N1.7 80 GB वाले A100 पर। आप एक राउंड शुरू करते हैं, पॉड ऊपर आता है, चेकपॉइंट आपके बकेट में पहुँच जाते हैं, और आप उतने ही घंटों के पैसे देते हैं जितने राउंड ने लिए।

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 भुजा, या servo bus पर अपना ख़ुद का कोड। कीबोर्ड और स्लाइडर टेकओवर, सुरक्षित सीमाओं सहित, वह चीज़ है जिसे आप ख़ुद लिखते हैं और फिर असली हार्डवेयर पर डीबग करते हैं।leader भुजा, कीबोर्ड, या स्लाइडर — रन शुरू होते समय चुने गए। एंगल की सीमाएं सर्वर में रहती हैं।
हस्तक्षेप मार्क करनाआप फ्लैग कॉलम ख़ुद जोड़ते हैं, उसे फ्रेम इंडेक्स से मिलाकर रखते हैं, और रिकॉर्डिंग फ़ॉर्मैट बदलने पर हर बार दोबारा जाँचते हैं।टेकओवर के दौरान रिकॉर्ड हुआ हर फ्रेम अपने-आप मार्क हो जाता है, साथ में action कॉलम में कमांड की गई मुद्रा भी।
रन छाँटनाडायरेक्टरी नियम और शेल स्क्रिप्ट। हैंडओवर के आसपास के फ़्रीज़ फ्रेम आपको ख़ुद ढूँढकर हटाने पड़ते हैं।सेव कार्ड पर हर रन के लिए एक फ़ैसला। हैंडओवर फ्रेम raw डायरेक्टरी में ही रहते हैं।
मिश्रित डेटासेट बनानाहर फ़ॉर्मैट वर्ज़न के लिए मर्ज स्क्रिप्ट। एपिसोड इंडेक्स, मेटाडेटा और वीडियो रेफ़रेंस को एक जैसा बनाए रखना ही सबसे थकाऊ हिस्सा है।मूल डेटासेट और सुधार मिलाकर तैयार करें, हर सोर्स से एपिसोड चुनकर; नतीजा एक सामान्य डेटासेट होता है।
पिछली नीति से अगला राउंड शुरू करनाआप ख़ुद चेकपॉइंट को ट्रेनर में जोड़ते हैं, और अगर सच में पुनः आरंभ चाहिए तो ऑप्टिमाइज़र की स्थिति भी ख़ुद बहाल कर सकते हैं।बेस चेकपॉइंट के लिए एक फ़ील्ड। सिर्फ़ वज़न: यह चेकपॉइंट से इनिशियलाइज़ करता है, यह ऑप्टिमाइज़र का पुनः आरंभ नहीं है।
प्रशिक्षण लूप पर नियंत्रणपूरा नियंत्रण। अपना लॉस, अपना शेड्यूल, अपने एब्लेशन, अपनी इंस्ट्रूमेंटेशन, बीच में कोई प्लेटफ़ॉर्म नहीं। अगर रिसर्च का सवाल प्रशिक्षण लूप ही है, तो इसे हाथ से करें।एक तय रास्ता, नीतियों की एक तय सूची और उतने ही हाइपरपैरामीटर जितने फ़ॉर्म में दिए गए हैं, मनमाना कोड नहीं।

जिन पेपरों पर यह आधारित है

लूप पर सवाल उठाने से पहले इन्हें पढ़ें। हर लिंक ऐब्सट्रैक्ट पेज पर जाता है, किसी पेवॉल के पीछे नहीं।

  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 रूप: एक्सपर्ट तय करता है कि नियंत्रण कब लेना है, बजाय इसके कि उससे उन स्थितियों पर पूछा जाए जो नीति ने चुनी हों; यही तरीक़ा इस प्लेटफ़ॉर्म में लागू किया गया है।

  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

    एक ईमानदार विकल्प: नीति को लाइव सुधारने के बजाय, प्रदर्शनों में हल्की गड़बड़ी डाली जाती है ताकि एक्सपर्ट रिकवरी दिखाए। हस्तक्षेप अपनाने से पहले जानने लायक।

  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 पेपर। ऐक्शन चंकिंग ही वजह है कि एक सस्ती भुजा भी इमिटेशन नीति से चलाई जा सकती है, और ACT वह नीति है जिसके साथ DAgger राउंड सबसे तेज़ी से दोहराया जा सकता है।

  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

    एक प्रीट्रेंड विज़न-लैंग्वेज मॉडल पर बना फ़्लो-मैचिंग VLA, और उन चेकपॉइंट में से एक जिसे यहाँ फाइन-ट्यून किया जा सकता है; पेपर साफ़ कहता है कि नई स्किल फाइन-ट्यूनिंग से आती हैं, अकेले बेस मॉडल से नहीं।

लोग असल में जो सवाल पूछते हैं

क्या DAgger के लिए leader भुजा ज़रूरी है?

नहीं। रन शुरू करते समय कीबोर्ड या स्लाइडर इनपुट चुनें, तो टेकओवर पहले फ्रेम से ही मैनुअल होता है और ब्राउज़र से चलता है। बारीक हरकत के लिए leader भुजा ज़्यादा आरामदायक है, और यही वह तरीक़ा है जिसमें सौंपने से पहले भुजा ख़ुद को एलाइन कर लेती है, लेकिन लूप इसके बिना भी चलता है।

मुझे कितने DAgger राउंड चाहिए?

कोई ईमानदार तय संख्या नहीं है। हस्तक्षेप दर पर नज़र रखें: अगर यह एक राउंड से अगले तक कम नहीं होती, तो उस राउंड ने कुछ हासिल नहीं किया, और आमतौर पर समस्या राउंड की संख्या में नहीं बल्कि टास्क के सेटअप, कैमरों या मूल डेटासेट में होती है।

क्या यह असली DAgger है या कुछ ढीला-ढाला?

यह HG-DAgger है, human-gated रूप। क्लासिक DAgger उन स्थितियों पर एक्सपर्ट से पूछता है जो नीति ने चुनी हों, जिनमें ऐसी स्थितियाँ भी शामिल हैं जहाँ कोई समझदार ऑपरेटर असली भुजा को कभी नहीं जाने देगा। यहाँ एक इंसान तय करता है कि हस्तक्षेप कब करना है, और सिर्फ़ वही हिस्से लेबल बनते हैं।

क्या मैं सिर्फ़ सुधार पर ही प्रशिक्षित करता हूँ?

नहीं, और आपको ऐसा करना भी नहीं चाहिए। सिर्फ़ सुधार पर प्रशिक्षित करने से एक ऐसी नीति बनती है जो सिर्फ़ रिकवर करना जानती है। तैयार किया गया डेटासेट मूल डेटा और सुधार दोनों को मिलाकर बनता है, जिसमें हर सोर्स से एपिसोड साफ़-साफ़ चुने जाते हैं।

क्या चेकपॉइंट से आगे जारी रखना प्रशिक्षण रन को फिर से शुरू करता है?

यह उस चेकपॉइंट से वज़न को इनिशियलाइज़ करता है। ऑप्टिमाइज़र की स्थिति बहाल नहीं होती, इसलिए सख़्त मायने में यह पुनः आरंभ नहीं है। व्यवहार में सीखा हुआ व्यवहार वज़न ही राउंड-दर-राउंड आगे ले जाते हैं, लेकिन यह जानना ज़रूरी है कि आपको इन दोनों में से कौन-सा मिल रहा है।

हस्तक्षेप दर कैसे निकाली जाती है?

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

यह लूप किन नीतियों के साथ चलाया जा सकता है?

ACT, SmolVLA, Pi0, और GR00T N1.5 या N1.7। लूप ख़ुद नीति-निरपेक्ष है क्योंकि यह सिर्फ़ डेटासेट और चेकपॉइंट बनाता है; असली फ़र्क़ इसमें है कि एक राउंड में कितना समय लगता है और किस GPU की ज़रूरत है।

क्या यह बिना अपना रोबोट रखे किया जा सकता है?

मार्केटप्लेस से डेटासेट ख़रीदकर या ऑपरेटरों को काम पर लगाकर, बिना अपना रोबोट रखे भी रिकॉर्ड और प्रशिक्षित किया जा सकता है, और लाइव पेज पर ब्राउज़र में एक असली SO-100 चलाया जा सकता है। DAgger राउंड अलग चीज़ है: इसके लिए ऐसी भुजा चाहिए जिसे रन के बीच में टेकओवर किया जा सके, इसलिए लूप के लिए ख़ुद अपनी मेज़ पर हार्डवेयर होना ज़रूरी है।

Drive a real arm

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

इसी हफ़्ते अपना पहला राउंड चलाएं

क्लाइंट इंस्टॉल करें, अपने पास पहले से मौजूद किसी चेकपॉइंट को चलाएं, और जिस पल भुजा क्यूब से आगे निकल जाए, टेकओवर करें। यह एक रन अपने आप में एक छोटा-सा DAgger राउंड है: इसके बाद बस मिश्रण तैयार करना और GPU के घंटों का भुगतान करना बचता है।