ML in a Box: Analyzing Containerization Practices in Open Source ML Projects
यह शोध पत्र 1,993 ओपन-सोर्स एमएल डॉकरफाइल्स (ML Dockerfiles) के पहले बड़े पैमाने के अनुभवजन्य अध्ययन को प्रस्तुत करता है, जो यह प्रकट करता है कि हालांकि कंटेनर एमएल वर्कफ़्लो में विशिष्ट भूमिकाएँ निभाते हैं, वे अक्सर प्रयोगों द्वारा प्रेरित बार-बार होने वाले पुनर्गठन (rebuilds) के कारण बड़े और अक्षम होते हैं, जिससे बिल्ड दक्षता में सुधार करने और फुटप्रिंट को कम करने के लिए सात विशिष्ट रिफैक्टरिंग पैटर्न की पहचान हुई।
मूल पेपर CC0 1.0 (http://creativecommons.org/publicdomain/zero/1.0/) के तहत सार्वजनिक डोमेन को समर्पित है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें
कल्पना कीजिए कि आप एक विशाल, हाई-टेक किचन चला रहे हैं। मशीन लर्निंग (ML) की दुनिया में, आपके "रेसिपी" कोड हैं, आपके "सामग्री" डेटा और मॉडल हैं, और आपका "किचन" एक कंटेनर है। एक कंटेनर एक आत्मनिर्भर, पोर्टेबल किचन बॉक्स की तरह है जिसमें वह सब कुछ होता है जिसकी आपको एक विशिष्ट व्यंजन बनाने के लिए आवश्यकता होती है, यह सुनिश्चित करता है कि चाहे आप न्यूयॉर्क, टोक्यो या किसी अंतरिक्ष यान पर खाना बना रहे हों, स्वाद एक जैसा ही रहे।
लंबे समय तक, लोगों को पता था कि ये किचन बॉक्स उपयोगी हैं। लेकिन कोई वास्तव में नहीं जानता था कि वे कितने बड़े थे, उन्हें पैक करने में कितना समय लगता था, या कितनी बार शेफ को पूरा बॉक्स फेंककर फिर से शुरू करना पड़ता था क्योंकि उन्होंने केवल एक मसाले की डिब्बी बदली थी।
शोधकर्ताओं की एक टीम ने यह देखने के लिए कि वास्तव में क्या हो रहा है, इन 1,993 ML किचन बॉक्सों में से अंदर झाँकने का फैसला किया, जो 392 अलग-अलग प्रोजेक्ट्स से लिए गए थे। यहाँ जो उन्होंने पाया, उसे वास्तविकता के साथ परोसा गया है।
"किचन बॉक्स" का आकार: यह एक बड़ी बात है
सबसे पहले, उन्होंने बॉक्सों का वजन किया। आप सोच सकते हैं कि एक कंटेनर हल्का और फुर्तीला होता है, लेकिन ये ML बॉक्स विशालकाय हैं।
- औसतन, एक कंटेनर का वजन 10.27 GB होता है। यह ऐसा है जैसे सैंडविच बनाने के लिए अपने बैकपैक में विश्वकोशों की एक पूरी लाइब्रेरी लेकर चलना।
- "ट्रेनिंग" बॉक्स (जहाँ AI सीखता है) सबसे भारी होते हैं, जिनका औसत 17.25 GB है। इनमें से कुछ दैत्य 125 GB तक भी पहुँच जाते हैं!
- "इन्फरेंस" बॉक्स (जहाँ AI बस काम करता है) छोटे होते हैं, लगभग 1.72 GB, लेकिन फिर भी वे बिल्कुल पॉकेट-साइज नहीं हैं।
और इन बॉक्सों को पैक करना? इसमें समय लगता है। एक औसत "कोल्ड बिल्ड" (शून्य से एक बॉक्स पैक करना) में 8.84 मिनट लगते हैं। बड़े ट्रेनिंग बॉक्सों के लिए, इसमें 14 मिनट से अधिक समय लग सकता है। यह सिर्फ यह देखने के लिए इंतजार करने का बहुत लंबा समय है कि आपका कोड काम करता है या नहीं।
"ओप्स" वाला क्षण: हम बॉक्स क्यों फेंक देते हैं
यहाँ पेचीदा बात है। एक सामान्य किचन में, यदि आप रेसिपी बदलते हैं, तो आप बस निर्देशों में थोड़ा बदलाव करते हैं। लेकिन ML की दुनिया में, किचन एक सख्त "लेयर" (परत) प्रणाली पर काम करता है। कल्पना कीजिए कि आप ब्लॉक्स का एक टॉवर बना रहे हैं। यदि आप तीसरे ब्लॉक का रंग बदलते हैं, तो आपको तीसरे, चौथे, पांचवें और ऊपर के सभी ब्लॉक्स को हटाना होगा, भले ही ऊपर के ब्लॉक्स बदले ही न हों।
शोधकर्ताओं ने पाया कि डेवलपर्स द्वारा अपने प्रोजेक्ट्स में किए गए सभी बदलावों में से 44.4% ने कंटेनर के पूर्ण पुनर्निर्माण (rebuild) को ट्रिगर किया। इसका मतलब है कि लगभग आधी बार, वे उस सारी मेहनत को फेंक रहे थे और फिर से शुरुआत कर रहे थे।
इस फेंकने का कारण क्या था?
यह आमतौर पर रेसिपी (Dockerfile) नहीं थी। यह सामग्री थी!
- 96.4% पुनर्निर्माण इसलिए हुए क्योंकि किसी ने एक ऐसी फ़ाइल को बदल दिया जिसे बॉक्स के अंदर कॉपी किया गया था (जैसे कि डेटासेट या कोई कोड फ़ाइल)।
- केवल 1.1% पुनर्निर्माण इसलिए थे क्योंकि किसी ने बॉक्स बनाने के वास्तविक निर्देशों को बदल दिया था।
बर्बादी: 70% काम बेकार है
यह इस कहानी का सबसे दुखद हिस्सा है। जब "लेयर टॉवर" टूट जाता है, तो किचन उन ब्लॉक्स को फिर से उपयोग करने की कोशिश करता है जिन्हें उसने पहले बनाया था। लेकिन शोधकर्ताओं ने पाया कि 71% काम बर्बाद हो गया था।
- इसे ऐसे सोचें: आप ब्लॉक्स का एक टॉवर बनाने में 10 मिनट बिताते हैं। आप तीसरे ब्लॉक को गिरा देते हैं। आप पहले दो ब्लॉक्स को फिर से उपयोग करने की कोशिश करते हैं, लेकिन फिर आपको बाकी हिस्से को फिर से बनाना पड़ता है। अंत में, आपने अपनी मेहनत का केवल 30% ही पुन: उपयोग किया। बाकी 70% केवल उस काम को दोबारा करना था जो आप पहले ही कर चुके थे।
ऐसा क्यों होता है?
यह इस पर निर्भर करता है कि आप क्या बदल रहे हैं।
- यदि आप एक्सपेरिमेंट (AI के दिमाग या डेटा को बदलना) में बदलाव कर रहे हैं, तो आपके टॉवर को तोड़ने की संभावना सबसे अधिक है। ट्रेनिंग बॉक्स के लिए यह 46% बार होता है।
- यदि आप इंफ्रास्ट्रक्चर (जैसे किचन की प्लंबिंग या बिजली) को अपडेट कर रहे हैं, तो आप लगभग हमेशा टॉवर को तोड़ देते हैं, और आप अपनी लगभग सारी प्रगति खो देते हैं।
अच्छी खबर: स्मार्ट शेफों ने शॉर्टकट खोज लिए
इस गड़बड़ी के बावजूद, शोधकर्ताओं ने पाया कि कुछ स्मार्ट शेफ पहले से ही इन समस्याओं को ठीक कर रहे थे। उन्होंने "सर्वश्रेष्ठ" किचनों (वे जो सबसे कम समय बर्बाद करते हैं) को देखा और पाया कि उन्होंने बर्बादी को रोकने के लिए 7 विशिष्ट तरकीबें इस्तेमाल कीं। ये केवल अनुमान नहीं हैं; ये वे वास्तविक बदलाव हैं जो डेवलपर्स ने किए और जो वास्तव में काम आए।
यहाँ वे 7 तरकीबें दी गई हैं:
- किराने का सामान पैक न करें: बॉक्स के अंदर विशाल डेटासेट कॉपी करने के बजाय, बस बॉक्स को बताएं कि जब वह खाना बनाना शुरू करे तो उन्हें कहाँ ढूँढना है।
- मॉडल को पैक न करें: AI मॉडल के लिए भी यही बात लागू होती है। इसे बॉक्स के अंदर न पकाएं; जरूरत पड़ने पर इसे बाहर से लोड करें।
- भारी काम को आगे बढ़ाएं: यदि आपको एक बड़ा मॉडल डाउनलोड करना है, तो इसे रेसिपी में जल्दी करें। इस तरह, यदि आप बाद में एक छोटी फ़ाइल बदलते हैं, तो बड़ा डाउनलोड 'कैश्ड' (सेव) रहता है।
- किचन को विभाजित करें: यदि आपको CPU और GPU दोनों के लिए एक बॉक्स चाहिए, तो सब कुछ लेकर एक विशाल बॉक्स न बनाएं। दो छोटे, विशिष्ट बॉक्स बनाएं।
- सही टूल्स चुनें: यदि आपको केवल "CPU वर्जन" की आवश्यकता है, तो "GPU वर्जन" वाला टूल इंस्टॉल न करें। यह बहुत सारा स्पेस बचाता है।
- अस्थिर चीजों को आगे रखें: यदि आप अपनी कॉन्फ़िगरेशन फ़ाइलों को अक्सर बदलते हैं, तो उन्हें भारी इंस्टॉलेशन के बाद रखें ताकि वे भारी लेयर्स को न तोड़ें।
- पूरा इतिहास डाउनलोड न करें: इंटरनेट से कोड लेते समय, प्रोजेक्ट का पूरा इतिहास डाउनलोड न करें। बस नवीनतम स्नैपशॉट लें।
निचोड़
यह पेपर यह नहीं कहता कि ये समस्याएं "हल" हो गई हैं। यह कहता है कि अभी, ML कंटेनर विशाल, धीमे और नाजुक हैं। डेवलपर्स अपना बहुत सारा समय (लगभग 70% पुनर्निर्माण प्रयास) बर्बाद कर रहे हैं क्योंकि वे बॉक्स में बहुत अधिक चीजें पैक कर रहे हैं और कैश को बहुत जल्दी तोड़ रहे हैं।
लेकिन, अच्छी खबर यह है कि हम जानते हैं कि इसे कैसे ठीक किया जाए। इन 7 तरकीबों का उपयोग करके, टीमें अपने कंटेनरों को छोटा और अपने बिल्ड्स को तेज़ बना सकती हैं। यह कोई जादू नहीं है; यह बस बेहतर संगठन है। शोधकर्ताओं ने इन सभी चीजों को वास्तव में बॉक्स बनाकर और मिनट गिनकर मापा, इसलिए हम जानते हैं कि ये नंबर वास्तविक हैं। अगली बार जब आप किसी मशीन लर्निंग प्रोजेक्ट को देखें, तो याद रखें, यह केवल कोड के बारे में नहीं है; यह इस बारे में भी है कि आप किचन को कैसे पैक करते हैं।
अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?
आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।