लेखक:
(1) इयान ओफीडिस, इलेक्ट्रिकल इंजीनियरिंग विभाग, और येल इंस्टीट्यूट फॉर नेटवर्क साइंस, येल विश्वविद्यालय, न्यू हेवन {समान योगदान};
(2) डिएगो किडांस्की, इलेक्ट्रिकल इंजीनियरिंग विभाग, और येल इंस्टीट्यूट फॉर नेटवर्क साइंस, येल विश्वविद्यालय, न्यू हेवन {समान योगदान};
(3) लिआंड्रोस टैसियुलसलेवोन घुकास्यान, एक्टिवलूप, माउंटेन व्यू, सीए, यूएसए, इलेक्ट्रिकल इंजीनियरिंग विभाग, और येल इंस्टीट्यूट फॉर नेटवर्क साइंस, येल विश्वविद्यालय, न्यू हेवन।
डेटा लोडर, मशीन लर्निंग मॉडल को प्रशिक्षित करते समय स्टोरेज से डेटा को GPU में ले जाने के लिए जिम्मेदार होते हैं, जो प्रशिक्षण कार्यों के प्रदर्शन को काफी हद तक बेहतर बनाने की कुंजी हो सकते हैं। हाल ही में हुई प्रगति ने न केवल प्रशिक्षण समय को काफी कम करके बल्कि S3 जैसे रिमोट स्टोरेज से डेटा लोड करने जैसी नई सुविधाएँ प्रदान करके भी वादा दिखाया है। इस पेपर में, हम डीप लर्निंग (DL) वर्कफ़्लो में डेटा लोडर को एक अलग घटक के रूप में अलग करने और इसकी संरचना और विशेषताओं को रेखांकित करने वाले पहले व्यक्ति हैं। अंत में, हम उपलब्ध विभिन्न डेटा लोडिंग लाइब्रेरीज़, कार्यक्षमता, प्रयोज्यता और प्रदर्शन के संदर्भ में उनके ट्रेड-ऑफ़ और उनसे प्राप्त अंतर्दृष्टि की एक व्यापक तुलना प्रस्तुत करते हैं।
एक (गहन) मशीन लर्निंग मॉडल को प्रशिक्षित करने के लिए एक डेटासेट, एक मॉडल और हार्डवेयर की आवश्यकता होती है, जिसमें वास्तविक समस्याओं के लिए एक या अधिक GPU शामिल होते हैं।
हम हमेशा एक मॉडल को प्रशिक्षित करने के लिए आवश्यक कुल कम्प्यूटेशनल समय को कम करने में रुचि रखते हैं। यह कई कारणों से वांछनीय है: कम लागत, पुनरावृत्ति में आसानी, और छोटी टीमों के लिए अधिक सुलभ, अन्य बातों के अलावा।
एमएल पाइपलाइन के मुख्य घटकों और रनिंग टाइम के बीच का संबंध अक्सर स्पष्ट होता है: एक बड़ा डेटासेट अधिक समय लेता है, एक बड़ा मॉडल अधिक समय लेता है, और एक तेज़ GPU कुल रनिंग टाइम को कम करता है। पहेली का एक महत्वपूर्ण हिस्सा जिसे अक्सर अनदेखा किया जाता है, वह इन सभी भागों के बीच का गोंद है: डेटा लोडर। डेटा लोडर अपने स्थायी भंडारण (RAM, डिस्क, या नेटवर्क) से डेटा लोड करने, आवश्यक परिवर्तन लागू करने और परिवर्तित डेटा को उचित डिवाइस पर भेजने के लिए जिम्मेदार है ताकि मॉडल इसे निगल सके।
अधिकांश डेवलपर्स मानते हैं कि उनके संबंधित मशीन लर्निंग फ्रेमवर्क (पाइटॉर्च, टेन्सरफ्लो, जैक्स) में डिफ़ॉल्ट डेटा लोडर पहले से ही उनके एप्लिकेशन के लिए अनुकूलित है और अक्सर थर्ड-पार्टी डेटा लोडर पर निर्भर नहीं होते हैं। दिलचस्प बात यह है कि हाल ही में यह दिखाया गया है कि डेटा लोडर एमएल पाइपलाइनों की सबसे महत्वपूर्ण बाधाओं में से एक हो सकते हैं (मोहन एट अल।, 2020)। नतीजतन, हमने डेटा लोडर प्रदर्शन को अनुकूलित करने और सुधारने के लिए समर्पित कई नई लाइब्रेरी और शोध परियोजनाएं देखी हैं।
उदाहरण के लिए, FFCV (लेक्लेर एट अल., 2022), MIT में एक शोध टीम द्वारा विकसित एक नई ओपनसोर्स लाइब्रेरी, डिफ़ॉल्ट PyTorch डेटालोडर का उपयोग करने में लगने वाले समय के एक अंश में ImageNet को प्रशिक्षित करने में कामयाब रही। इस तरह के लाभ उन कंपनियों और शोध टीमों की परिचालन लागत को नाटकीय रूप से कम कर सकते हैं जो सेवा के रूप में बुनियादी ढांचे (IaaS) पर निर्भर हैं, जैसे कि Amazon Web Services (AWS) और Google Cloud Platform (GPC)।
डेटा लोडर द्वारा पेश की जाने वाली एक और आशाजनक विशेषता दूरस्थ रूप से संग्रहीत डेटा को लोड करने की क्षमता है; उदाहरण के लिए, S3 बकेट से। इसके कई व्यावहारिक लाभ हैं: स्थानीय रूप से डेटासेट सेट करने का समय बचा जाता है, कंप्यूटिंग मशीन पर आवश्यक डिस्क क्षमता कम हो जाती है, और टीम के सदस्यों द्वारा एक ही डेटासेट के विभिन्न संस्करणों का उपयोग करने का जोखिम कम हो जाता है। प्रशिक्षण के दौरान डेटा को स्ट्रीम करने का स्वाभाविक दोष यह है कि, आमतौर पर, नेटवर्क स्थानांतरण गति डिस्क I/O की तुलना में धीमी होती है, और, परिणामस्वरूप, मॉडल को प्रशिक्षित होने में अधिक समय लगना चाहिए। दिलचस्प बात यह है कि हमने देखा है कि हब (टीम, 2022a) और डीप लेक (हम्बार्डज़ुम्यान एट अल., 2022) जैसी कुछ लाइब्रेरी, कुछ परिदृश्यों के लिए स्थानीय रूप से डेटा पढ़ने वाले डिफ़ॉल्ट Pytorch डेटा लोडर की तुलना में नेटवर्क पर बेहतर प्रदर्शन प्राप्त करती हैं। यह इसलिए संभव है क्योंकि डेटा लोडर GPU की आवश्यकता से पहले आवश्यक डेटा को प्री-फ़ेच करने का प्रबंधन करता है। हम सेक्शन 5 में अधिक विस्तृत चर्चा प्रस्तुत करेंगे।
सभी लाइब्रेरी रिमोट लोडिंग का समर्थन नहीं करती हैं, और जो करती हैं, वे जरूरी नहीं कि उन्हीं रिमोट स्टोरेज सेवाओं के साथ एकीकृत हों। चूंकि डेटा लोडर को लागू करने वाली उपलब्ध लाइब्रेरी की संख्या बढ़ रही है, इसलिए हमने वर्तमान अत्याधुनिक स्थिति को उजागर करने के लिए एक व्यापक बेंचमार्क बनाने का लक्ष्य रखा है, जो समस्याएं पहले से ही हल हो चुकी हैं और भविष्य के शोध में सुधार के लिए सबसे आशाजनक क्षेत्रों की खोज की है।
इस बिंदु पर, यह उल्लेख किया जाना चाहिए कि हमारे प्रयोगों और अन्य कार्यों जैसे (कुमार और शिवथानु, 2020), (मोहन एट अल., 2020) के बीच एक विशेष अंतर यह है कि हम उन नौकरियों पर ध्यान केंद्रित करते हैं जो सीमित क्षमता (GPU, RAM, SSD) वाले छोटे से मध्यम वर्कस्टेशन पर चलती हैं। ये उद्योग में अधिकांश व्यक्तियों और छोटी टीमों के लिए उपलब्ध हार्डवेयर को प्रतिबिंबित करने की अधिक संभावना रखते हैं, जिनके लिए बजट बड़े पैमाने के क्लस्टर के उपयोग की अनुमति नहीं देता है।
हम अपने योगदान को इस प्रकार संक्षेप में प्रस्तुत कर सकते हैं:
• ओपन-सोर्स कोड: हमने एक ओपन सोर्स बेंचमार्क बनाया है जो Pytorch[1] में सबसे लोकप्रिय डेटा लोडिंग लाइब्रेरी की तुलना करता है। यह परियोजना समुदाय के लिए उपलब्ध रहेगी ताकि उनमें रुचि बढ़ने पर नई लाइब्रेरी और डेटासेट जोड़े जा सकें। हम इस पेपर में बेंचमार्क की गई किसी भी लाइब्रेरी में किसी भी बड़े अपडेट के बाद इन बेंचमार्क में प्राप्त संख्यात्मक परिणामों को अपडेट करने की भी उम्मीद करते हैं।
• रिमोट ट्रेनिंग की व्यवहार्यता: हम दिखाते हैं कि उचित परिस्थितियों में सार्वजनिक इंटरनेट कनेक्शन पर डेटा स्ट्रीम का उपयोग करके मशीन लर्निंग मॉडल को प्रशिक्षित करना संभव है। विशेष रूप से, हम डेटा की सेवा करने वाली कंप्यूटिंग के प्रभाव को इंगित करते हैं। हमारा परिणाम (मोहन एट अल., 2020) से अलग है क्योंकि हम यह नहीं मानते हैं कि डाउनलोड के बाद डेटासेट स्थानीय रूप से कैश किया जाता है।
• गति के लिए हाइपरपैरामीटर अनुकूलन: पारंपरिक हाइपरपैरामीटर दृष्टिकोण का उद्देश्य प्रशिक्षित किए जा रहे मॉडल की समग्र सटीकता को बढ़ाना है। इस पेपर में, हम दिखाते हैं कि हम कुल चलने वाले समय के प्रॉक्सी के रूप में गति (समय के साथ संसाधित नमूने) के लिए भी अनुकूलन कैसे कर सकते हैं। यह अनुकूलन हार्डवेयर पर निर्भर है, इसलिए इसे लंबे समय तक चलने वाली नौकरियों से पहले निष्पादित करना समझदारी है। यह प्रक्रिया समतुल्य समय-से-सटीकता मीट्रिक की तुलना में कम से कम एक क्रम की तीव्रता से तेज होनी चाहिए।
यह पेपर CC 4.0 लाइसेंस के अंतर्गत arxiv पर उपलब्ध है।
[1] गिटहब रिपॉजिटरी: https://github.com/smartnets/dataloaderbenchmarks