लेखक:
(1) इयान ओफीडिस, इलेक्ट्रिकल इंजीनियरिंग विभाग, और येल इंस्टीट्यूट फॉर नेटवर्क साइंस, येल विश्वविद्यालय, न्यू हेवन {समान योगदान};
(2) डिएगो किडांस्की, इलेक्ट्रिकल इंजीनियरिंग विभाग, और येल इंस्टीट्यूट फॉर नेटवर्क साइंस, येल विश्वविद्यालय, न्यू हेवन {समान योगदान};
(3) लिआंड्रोस टैसियुलसलेवोन घुकास्यान, एक्टिवलूप, माउंटेन व्यू, सीए, यूएसए, इलेक्ट्रिकल इंजीनियरिंग विभाग, और येल इंस्टीट्यूट फॉर नेटवर्क साइंस, येल विश्वविद्यालय, न्यू हेवन।
डीप लर्निंग मॉडल को प्रशिक्षित करने की प्रक्रिया में, डेटासेट को मॉडल में इनपुट के रूप में पास करने से पहले मेमोरी से पढ़ना और प्री-प्रोसेस करना आवश्यक है। इस ऑपरेशन के लिए डेटा को एक बार में मेमोरी में लोड करना आवश्यक है। अधिकांश मामलों में और, विशेष रूप से, बड़े डेटासेट के साथ, सिस्टम में उपलब्ध सीमित मात्रा के कारण मेमोरी की कमी उत्पन्न होती है, जो सिस्टम के प्रतिक्रिया समय को भी खराब करती है। इस अड़चन को अक्सर तथाकथित डेटालोडर का उपयोग करके डीप लर्निंग लाइब्रेरी में दूर किया जाता है। यह संरचना डेटा लोडिंग समय और मेमोरी ओवरहेड को यथासंभव कम करने के लिए समानांतर प्रसंस्करण, प्री-फ़ेचिंग, बैचिंग और अन्य तकनीकों का लाभ उठाकर डेटासेट पर पुनरावृत्ति करने का एक तरीका प्रदान करती है (पास्ज़के एट अल।, 2019)।
डेटा लोडर का मुख्य लक्ष्य स्टोरेज लोकेशन से डेटा सैंपल को प्रशिक्षण के लिए प्रोसेसिंग यूनिट के साथ सह-स्थित मेमोरी में स्थानांतरित करने के लिए जिम्मेदार क्रियाएं करना है ताकि मॉडल में फीड किए जाने वाले सैंपल का एक बैच बनाया जा सके। ये क्रियाएं स्टोरेज सिस्टम की बैंडविड्थ और विशेष रूप से इसके I/O प्रदर्शन द्वारा नियंत्रित होती हैं। इस प्रकार, सिस्टम के हार्डवेयर विनिर्देशों, इसे सेवा देने वाले फ़ाइल सिस्टम और कंप्यूटिंग इकाइयों के साथ लिंक के थ्रूपुट के आधार पर, प्रशिक्षण को पूरा करने के लिए आवश्यक कुल समय पर इसका बहुत अधिक प्रभाव हो सकता है।
डेटा लोडर घटक का निम्नलिखित विनिर्देश मुख्य रूप से PyTorch (torch.DataLoader() (PyTorch कोर टीम)) पर केंद्रित है, जबकि इसका TensorFlow समकक्ष (tf.Dataset() (Abadi et al., 2015)), हालांकि समान नहीं है, लेकिन इसमें काफी समानताएं हैं।
डेटा लोडर का उपयोग करते समय, इनपुट के लिए डेटासेट प्रदान करने के अलावा, उपयोगकर्ता के पास अपनी आवश्यकताओं और संसाधनों के अनुरूप कई हाइपरपैरामीटर कॉन्फ़िगर करने का विकल्प होता है। सभी डेटा लोडर में उपलब्ध एक सामान्य पैरामीटर बैच आकार है, जो, जैसा कि पहले उल्लेख किया गया है, आंतरिक मॉडल मापदंडों को अपडेट करने से पहले उपयोग किए जाने वाले नमूनों की संख्या को परिभाषित करता है। यह पैरामीटर स्टोकेस्टिक ग्रेडिएंट डिसेंट (हिंटन एट अल।, 2012) में "मिनी-बैच" की अवधारणा से आंतरिक रूप से जुड़ा हुआ है और इसलिए, यह उन पहले मापदंडों में से एक है जो आमतौर पर बेहतर प्रशिक्षण परिणाम प्राप्त करने के लिए ठीक-ठीक ट्यूनिंग से गुजरते हैं।
दूसरा, उपयोगकर्ता नमूनाकरण दृष्टिकोण को परिभाषित कर सकता है, जो डेटासेट से नमूने खींचने और उन्हें बैच में डालने की रणनीति निर्धारित करता है। इसमें विशिष्ट मानदंडों के आधार पर नमूनों का चयन करना, साथ ही संभाव्यता वितरण शामिल हो सकता है। इस चरण में फेरबदल का विकल्प मौजूद है, जहाँ नमूनों को प्रत्येक डेटासेट पुनरावृत्ति से पहले पुनर्व्यवस्थित किया जा सकता है, जिसका लक्ष्य आमतौर पर प्रशिक्षण मॉडल के सामान्यीकरण में सुधार करना होता है। एक अन्य पैरामीटर कोलेट/पैडिंग फ़ंक्शन है, जो अनिवार्य रूप से एक बैच के अंदर सभी व्यक्तिगत नमूनों को एक साथ जोड़ने की प्रक्रिया को निर्दिष्ट करता है (वेक्टर को टेंसर में स्टैक करने के बारे में सोचें), ताकि प्रशिक्षण मॉडल में इनपुट के रूप में फीड किए जाने वाले एकल तत्व का निर्माण किया जा सके। इसके अलावा, डेटा लोडर को पिन किए गए (पेज-लॉक) मेमोरी में स्वचालित रूप से प्राप्त डेटा नमूनों को संग्रहीत करने के लिए कॉन्फ़िगर किया जा सकता है, इस प्रकार CUDA-सक्षम डिवाइस में तेज़ डेटा ट्रांसफ़र सक्षम किया जा सकता है।
डेटा लोडर वर्कर नामक एक घटक के साथ आते हैं, जिसका उद्देश्य इस डेटा-ट्रांसफ़रिंग प्रक्रिया को ऑप्टिमाइज़ करना है। वर्कर को एसिंक्रोनस तरीके से डेटा लोडिंग करने के लिए जिम्मेदार उप-प्रक्रियाओं के रूप में परिभाषित किया जाता है। डेटा लोडर का इंस्टेंस बनाते समय, उपयोगकर्ता के पास स्पॉन किए जाने वाले वर्कर की संख्या निर्दिष्ट करने का विकल्प होता है और इस ऑपरेशन को नियंत्रित करेगा। यदि वर्कर की संख्या शून्य के बराबर है, तो कोई उप-प्रक्रिया नहीं बनाई जाएगी, जिसका अर्थ है कि डेटा फ़ेचिंग एक ही प्रक्रिया में सिंक्रोनस रूप से होती है और इस प्रकार, कंप्यूटिंग इकाइयों (GPU) को डेटा लोडिंग पूरी होने तक प्रतीक्षा करनी पड़ती है (PyTorch कोर टीम)। इसके विपरीत, वर्कर की संख्या के बराबर उप-प्रक्रियाएँ उत्पन्न होंगी, जो डेटा लोडिंग के साथ कम्प्यूटेशन कोड को ब्लॉक होने से रोकेंगी। यह भविष्य के बैचों को पहले से प्री-फ़ेच करके पूरा किया जाता है ताकि ज़रूरत पड़ने पर वे तैयार रहें।
यह पेपर CC 4.0 लाइसेंस के अंतर्गत arxiv पर उपलब्ध है।