नया प्रोजेक्ट शुरू करने के लिए गाइड

इस सेक्शन में बताया गया है कि शुरुआत में नीचे दिए गए एक ML प्रोजेक्ट:

  • मॉडल आर्किटेक्चर
  • ऑप्टिमाइज़र
  • बैच का साइज़
  • शुरुआती कॉन्फ़िगरेशन

अनुमान

इस सेक्शन में दी गई सलाह में, इन बातों पर ध्यान दिया गया है:

  • आपने पहले ही समस्या तैयार कर ली है, और कुछ हद तक आपका ट्रेनिंग डेटा तैयार कर दिया है.
  • आपने ट्रेनिंग और टेस्टिंग पाइपलाइन पहले ही सेट अप कर ली है.
  • आपने मेट्रिक को पहले ही चुना और लागू किया है. ये मेट्रिक, प्रतिनिधि के तौर पर दिखती हैं डिप्लॉय किए गए एनवायरमेंट में, चीज़ों को मेज़र करना है.

यह मानते हुए कि आपने पिछली सभी ज़रूरी शर्तें पूरी कर ली हैं, अब आप मॉडल आर्किटेक्चर और ट्रेनिंग कॉन्फ़िगरेशन में ज़्यादा समय देना.

मॉडल आर्किटेक्चर चुनें

चलिए, इन परिभाषाओं से शुरुआत करते हैं:

  • मॉडल आर्किटेक्चर एक सिस्टम है, जिसकी मदद से अनुमान लगाए जाते हैं. मॉडल आर्किटेक्चर में इनपुट डेटा को बदलने के लिए फ़्रेमवर्क शामिल है का अनुमान लगाता है, लेकिन इसमें शामिल नहीं है पैरामीटर वैल्यू में भी शामिल हो सकते हैं. उदाहरण के लिए, 10 नोड, 5 नोड, और 3 नोड की तीन छिपी हुई लेयर वाला एक न्यूरल नेटवर्क, और इसी तरह, एक मॉडल आर्किटेक्चर भी है.
  • मॉडल, मॉडल आर्किटेक्चर और सभी के लिए खास वैल्यू होती हैं पैरामीटर का इस्तेमाल करें. उदाहरण के लिए, मॉडल में बताया गया न्यूरल नेटवर्क शामिल है और इसके लिए विशिष्ट मान को मॉडल आर्किटेक्चर की परिभाषा हर नोड के वेट और बायस की जानकारी.
  • मॉडल फ़ैमिली, मॉडल आर्किटेक्चर बनाने के लिए एक टेंप्लेट है इसमें हाइपर पैरामीटर का सेट होता है.

मॉडल आर्किटेक्चर को चुनने का मतलब है अलग-अलग मॉडल (मॉडल हाइपर पैरामीटर की हर सेटिंग के लिए एक).

जब हो सके, तब एक ऐसा दस्तावेज़ कोड बेस ढूंढने की कोशिश करें जिसमें कुछ पते दिए गए हों समस्या को जितना हो सके उतना करीब से हल करें. फिर, उस मॉडल को इस रूप में फिर से बनाएं एक शुरुआती बिंदु है.

ऑप्टिमाइज़र चुनें

कोई भी ऑप्टिमाइज़र "सबसे अच्छा" नहीं होता मशीन लर्निंग से जुड़ी सभी तरह की समस्याओं को हल करने में मदद मिलती है. मॉडल आर्किटेक्चर की जानकारी चाहिए. यहां तक कि बस ऑप्टिमाइज़र की परफ़ॉर्मेंस की तुलना भी की जा सकती है मुश्किल है. 📝हम जाने-माने और लोकप्रिय ऑप्टिमाइज़र का इस्तेमाल करने का सुझाव देते हैं, खास तौर पर, कोई नया प्रोजेक्ट शुरू करते समय.

हमारा सुझाव है कि समस्या के टाइप के लिए, सबसे लोकप्रिय ऑप्टिमाइज़र चुनें जिस पर आप काम कर रहे हों. हमारा सुझाव है कि आप नीचे दिए गए जाने-माने ऑप्टिमाइज़र का इस्तेमाल करें:

चुने गए ऑप्टिमाइज़र के सभी आर्ग्युमेंट पर ध्यान दें. आम तौर पर, ज़्यादा हाइपर पैरामीटर वाले ऑप्टिमाइज़र को ट्यून करने में ज़्यादा समय लगता है. यह प्रोजेक्ट के शुरुआती चरण में खास तौर पर तब दर्दनाक होता है, जब आप कई अन्य हाइपर पैरामीटर के सबसे अच्छे मान ढूंढने की कोशिश कर रहे हैं (उदाहरण के लिए, सीखने की दर) को ऑप्टिमाइज़ करने वाले आर्ग्युमेंट के तौर पर दिक्कतों को दूर करते हैं. इसलिए, हम आपको यह तरीका अपनाने का सुझाव देते हैं:

  1. प्रोजेक्ट की शुरुआत में, ऐसा ऑप्टिमाइज़र चुनें जिसमें कई ट्यून किए जा सकते हों हाइपर पैरामीटर का इस्तेमाल करना चाहिए. यहां दो उदाहरण दिए गए हैं:
    • तय मोमेंट के साथ सिंगापुर डॉलर.
    • एडम ने तय किए गए एप्सिलॉन, Beta1, और Beta2 वर्शन के साथ.
  2. प्रोजेक्ट के बाद के चरणों में, किसी ऐसे सामान्य ऑप्टिमाइज़र पर स्विच करें जिसे डिफ़ॉल्ट वैल्यू पर तय करने के बजाय, ज़्यादा हाइपर पैरामीटर को ट्यून करता है.

बैच का साइज़ चुनें

खास जानकारी: बैच का साइज़, ट्रेनिंग की स्पीड को कंट्रोल करता है; बैच आकार का उपयोग न करें का इस्तेमाल करें.

बैच साइज़, ट्रेनिंग में लगने वाले समय और कंप्यूटिंग के संसाधन को बहुत ज़्यादा तय करता है इस्तेमाल. बैच का साइज़ बढ़ाने से ट्रेनिंग में लगने वाला समय कम हो जाता है, कौनसा:

  • इसकी मदद से, एक तय समय में हाइपर पैरामीटर को ज़्यादा बेहतर तरीके से ट्यून किया जा सकता है अंतराल, जो संभावित रूप से एक बेहतर अंतिम मॉडल तैयार करता है.
  • डेवलपमेंट साइकल की इंतज़ार का समय कम करता है, जिससे नए आइडिया पर को ज़्यादा टेस्ट किया जा सकता है.

बैच का साइज़ बढ़ाने से संसाधन की खपत कम या बढ़ सकती है, या संसाधन के इस्तेमाल में कोई बदलाव न करें.

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

  • सभी ऑप्टिमाइज़र हाइपर पैरामीटर सही तरीके से काम करते हैं.
  • रेगुलराइज़ेशन काफ़ी है और इसे बेहतर तरीके से मैनेज किया जा सकता है.
  • ट्रेनिंग के चरणों की संख्या काफ़ी है.

किसी भी बैच साइज़ का इस्तेमाल करके, एक ही तरह की परफ़ॉर्मेंस हासिल की जा सकती है (Shallue et al. 2018 और सीधे तौर पर सुधार करने के लिए बैच साइज़ को ट्यून क्यों नहीं किया जाना चाहिए पुष्टि करने की सुविधा ने कैसे काम किया?)

बैच का साइज़ तय करना और ट्रेनिंग की प्रोसेस का अनुमान लगाना

किसी दिए गए मॉडल और ऑप्टिमाइज़र के लिए, उपलब्ध हार्डवेयर आम तौर पर बैच आकारों की रेंज. सीमित करने वाला फ़ैक्टर आम तौर पर एक्सेलरेटर मेमोरी. हालांकि, यह हिसाब लगाना मुश्किल हो सकता है कि बैच आकार बिना चलता है या कम से कम कंपाइल किए बिना मेमोरी में फ़िट हो जाएगा, ट्रेनिंग प्रोग्राम में शामिल हुआ जा सकता है. आम तौर पर, ट्रेनिंग जॉब चलाना सबसे आसान तरीका है (उदाहरण के लिए, 2 की पावर बढ़ाना) चरणों की संख्या तब तक होगी, जब तक कोई एक जॉब उपलब्ध मेमोरी से ज़्यादा नहीं हो जाता. इसके लिए प्रत्येक बैच का आकार, उसकी लंबाई का अनुमान लगाने के लिए पर्याप्त ट्रेनिंग देता है, ट्रेनिंग थ्रूपुट:

ट्रेनिंग थ्रूपुट = प्रति सेकंड प्रोसेस किए गए उदाहरणों की संख्या

या इसी तरह हर कदम में लगने वाला समय:

हर चरण के हिसाब से समय = बैच का साइज़ / ट्रेनिंग की थ्रूपुट

जब एक्सेलरेटर अभी तक संतृप्त नहीं हुए हैं, तो बैच का आकार दोगुना हो जाता है, ट्रेनिंग थ्रूपुट भी दोगुना (या कम से कम दोगुना) होना चाहिए. इसके बराबर, हर चरण में लगने वाला समय एक जैसा होना चाहिए या कम से कम इतना समय होना चाहिए स्थिर है) जैसे-जैसे बैच का साइज़ बढ़ता है. अगर ऐसा नहीं है, तो ट्रेनिंग पाइपलाइन में एक समस्या है, जैसे कि I/O या सिंक्रोनाइज़ेशन कंप्यूट नोड के बीच में लिखें. समस्या का पता लगाकर उसे ठीक करें आगे बढ़ने से पहले.

अगर ट्रेनिंग थ्रूपुट सिर्फ़ कुछ बैच साइज़ तक बढ़ता है, तो बैच साइज़ को सिर्फ़ उस ज़्यादा से ज़्यादा बैच साइज़ तक माना जाता है. भले ही, हार्डवेयर बड़े बैच आकार का समर्थन करता है. बड़े बैच साइज़ का इस्तेमाल करने के सभी फ़ायदों को यह माना जाता है कि ट्रेनिंग की क्षमता कितनी है बढ़ जाता है. अगर इससे समस्या नहीं होती, तो समस्या को ठीक करें या छोटे बैच का इस्तेमाल करें.

ग्रेडिएंट अक्यूम्युलेशन, हार्डवेयर की तुलना में बड़े बैच साइज़ को सिम्युलेट करता है सहायता करती है और इसलिए इससे कोई थ्रूपुट लाभ नहीं मिलता है. आपको ऐसा करना चाहिए आम तौर पर, लागू किए गए काम में अलग-अलग तरह से जमने से बचा जा सकता है.

आपको हर बार मॉडल बदलने के लिए इन चरणों को दोहराना पड़ सकता है या ऑप्टिमाइज़र. उदाहरण के लिए, किसी अन्य मॉडल आर्किटेक्चर की मदद से मेमोरी में फ़िट करने के लिए बड़ा बैच साइज़.

ट्रेनिंग में लगने वाला समय कम करने के लिए, बैच का साइज़ चुनें

ट्रेनिंग के समय की परिभाषा यहां दी गई है:

  • ट्रेनिंग में लगने वाला समय = (हर कदम में लगने वाला समय) x (कदमों की कुल संख्या)

आम तौर पर, हर चरण में लगने वाले समय को करीब-करीब एक जैसा माना जा सकता है हर तरह के बैच के लिए उपलब्ध है. ऐसा तब होता है, जब:

  • पैरलल कंप्यूटेशन से कोई ओवरहेड नहीं होता है.
  • ट्रेनिंग से जुड़ी सभी समस्याओं का पता लगाकर उन्हें ठीक कर दिया गया है. (पहचान करने का तरीका जानने के लिए पिछला सेक्शन देखें ट्रेनिंग से जुड़ी अड़चनें न हों. व्यावहारिक तौर पर, आम तौर पर कम से कम कुछ ओवरहेड किया गया है.

बैच का साइज़ बढ़ने के साथ-साथ, सभी चरणों की कुल संख्या आम तौर पर, तय किया गया परफ़ॉर्मेंस लक्ष्य घट जाता है, बशर्ते आप सभी बैच का साइज़ बदलते समय, काम के हाइपर पैरामीटर का इस्तेमाल करें. (देखें शालू और अन्य 2018 में बताया गया है.) उदाहरण के लिए, बैच का साइज़ दोगुना करने से, बैच की कुल संख्या आधी हो सकती है ज़रूरी चरण. इस संबंध को परफ़ेक्ट स्केलिंग कहा जाता है और इसे ऐसा करना चाहिए ज़रूरी बैच साइज़ तक के सभी बैच साइज़ के लिए होल्ड करें.

बैच की ज़रूरी संख्या से आगे बढ़कर, बैच का साइज़ बढ़ाना कम हो रहे हैं. इसका मतलब है कि बैच का साइज़ समय के साथ बढ़ाना अब ट्रेनिंग के चरणों की संख्या को कम नहीं करता है, लेकिन इसे कभी नहीं बढ़ाता. इसलिए, ट्रेनिंग में लगने वाले समय को कम करने वाले बैच का साइज़ आम तौर पर सबसे बड़ा बैच साइज़, जो ट्रेनिंग के चरणों की संख्या को कम करता है आवश्यक. इस बैच का साइज़, डेटासेट, मॉडल, और अनुकूलक, और यह एक खुली समस्या है कि इसकी गणना कैसे की जाए हर नई समस्या के लिए एक्सपेरिमेंट के तौर पर उपलब्ध है. 🤖

बैच साइज़ की तुलना करते समय, यहां दिए गए अंतर को ध्यान में रखें:

  • उदाहरण बजट या epoch बजट—सभी एक्सपेरिमेंट चलने के दौरान उन्होंने ट्रेनिंग के उदाहरणों के प्रज़ेंटेशन की संख्या तय की.
  • चरण बजट—एक तय संख्या वाले सभी प्रयोग चलाना ट्रेनिंग के चरण बताए गए हैं.

Epoch बजट के साथ बैच साइज़ की तुलना करने पर ही सबसे सही नतीजे मिलते हैं स्केलिंग व्यवस्था, भले ही बड़े बैच आकार अभी भी ट्रेनिंग के चरणों की संख्या को कम करके, तेज़ी से आगे बढ़ सकते हैं. अक्सर, उपलब्ध हार्डवेयर के साथ काम करने वाला सबसे बड़ा बैच साइज़ क्रिटिकल बैच साइज़ से छोटा है. इसलिए, एक अच्छा नियम यह है कि (कोई भी प्रयोग चलाए बिना) सबसे बड़े बैच का उपयोग करना है साइज़ संभव है.अगर यह खत्म हो जाता है, तो बड़े बैच साइज़ का इस्तेमाल करने का कोई मतलब नहीं है ट्रेनिंग का समय बढ़ाकर.

संसाधन की खपत कम करने के लिए बैच का साइज़ चुनें

बैच का साइज़ बढ़ाने के लिए, संसाधन की लागत दो तरह की होती है:

  • शुरुआती लागत. उदाहरण के लिए, नया हार्डवेयर खरीदना या मल्टी-GPU / मल्टी-TPU ट्रेनिंग को लागू करने के लिए ट्रेनिंग पाइपलाइन.
  • इस्तेमाल करने की लागत. उदाहरण के लिए, टीम के संसाधन बजट में बिलिंग, क्लाउड सेवा देने वाली कंपनी से बिलिंग, बिजली / रखरखाव का खर्च.

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

हम कुल इस्तेमाल की लागत दिखाते हैं (जिसमें कई अलग-अलग लागत के प्रकार) हैं, जिनका आकलन नीचे बताए गए तरीके से किया जा सकता है:

संसाधन का इस्तेमाल = हर चरण में संसाधन का इस्तेमाल x चरणों की कुल संख्या

बैच का साइज़ बढ़ाने से आम तौर पर, चरणों की कुल संख्या कम हो जाती है. संसाधनों की खपत बढ़ती या घटती है, यह इन बातों पर निर्भर करता है यह बैच के साइज़ पर निर्भर करता है कि हर चरण के हिसाब से उपभोग में क्या बदलाव होता है:

  • बैच का साइज़ बढ़ाने से संसाधन की खपत कम हो सकती है. उदाहरण के लिए, अगर बड़े बैच साइज़ वाले हर चरण को छोटे बैच आकार के समान हार्डवेयर पर (केवल छोटे आकार के साथ प्रति चरण समय में बढ़ोतरी) है, तो संसाधन में किसी भी तरह की वृद्धि हर कदम में बिजली की खपत कम करने के लिए, कदमों की संख्या.
  • बैच का साइज़ बढ़ाने से, हो सकता है कि संसाधन के इस्तेमाल में बदलाव न हो. उदाहरण के लिए, अगर बैच का साइज़ दोगुना करने पर चरणों की संख्या आधी हो जाती है इस्तेमाल किए गए जीपीयू की संख्या यानी कुल खपत को दोगुना करता है (GP-घंटे के हिसाब से) में कोई बदलाव नहीं होता है.
  • बैच का साइज़ बढ़ाने से संसाधन की खपत बढ़ सकती है. उदाहरण के लिए, अगर बैच का साइज़ बढ़ाने के लिए, अपग्रेड किए गए हार्डवेयर की ज़रूरत है, हर कदम में खपत में हुई बढ़ोतरी की वजह से, कदमों की संख्या.

बैच का साइज़ बदलने के लिए, ज़्यादातर हाइपर पैरामीटर को फिर से ट्यून करना ज़रूरी है

ज़्यादातर हाइपर पैरामीटर की सबसे बेहतर वैल्यू, बैच के साइज़ के हिसाब से संवेदनशील होती हैं. इसलिए, बैच का साइज़ बदलने के लिए, आम तौर पर ट्यूनिंग शुरू करनी पड़ती है उसे फिर से प्रोसेस करें. ऐसे हाइपर पैरामीटर जो सबसे ज़्यादा इंटरैक्ट करते हैं बैच साइज़ के लिए है. इसलिए, अलग-अलग ट्यून करना ज़रूरी है हैं, जो नीचे दिए गए हैं:

  • ऑप्टिमाइज़र हाइपर पैरामीटर (उदाहरण के लिए, लर्निंग रेट और मोमेंटम)
  • रेगुलराइज़ेशन हाइपर पैरामीटर

किसी प्रोजेक्ट की शुरुआत में बैच का साइज़ चुनते समय, इस बात का ध्यान रखें. अगर बाद में आपको किसी दूसरे बैच साइज़ पर स्विच करने की ज़रूरत पड़ती है, तो यह मुश्किल, समय लेने वाला, और अन्य हाइपर पैरामीटर को फिर से कॉन्फ़िगर करने में खर्चीला होता है नए बैच के साइज़ के लिए.

बैच साइज़, बैच साइज़ के साथ कैसे इंटरैक्ट करता है

बैच मानदंड जटिल है और आम तौर पर इसके लिए एक अलग बैच का इस्तेमाल किया जाना चाहिए का साइज़, ग्रेडिएंट कंप्यूटेशन से ज़्यादा है. यहां जाएं: बैच नॉर्मलाइज़ेशन लागू करना ब्यौरा जोड़ें.

शुरुआती कॉन्फ़िगरेशन चुनें

हाइपर पैरामीटर ट्यूनिंग का पहला चरण यह तय करना है इसके लिए शुरुआती पॉइंट:

  • मॉडल कॉन्फ़िगरेशन (उदा. लेयर की संख्या)
  • ऑप्टिमाइज़र हाइपर पैरामीटर (उदाहरण के लिए, सीखने की दर)
  • ट्रेनिंग के चरणों की संख्या

इस शुरुआती कॉन्फ़िगरेशन के लिए, मैन्युअल तरीके से कुछ कॉन्फ़िगरेशन करना होगा कॉन्फ़िगर किया गया है.

हमारे गाइड करने का सिद्धांत इस तरह है:

आसान, कम संसाधनों में कम इस्तेमाल करने वाली, और कम समय में डाउनलोड करने की सुविधा पाएं एक कॉन्फ़िगरेशन की मदद से, बेहतर परफ़ॉर्मेंस मिलती है.

कहां:

  • आसान का मतलब है, पाइपलाइन में मौजूद ग़ैर-ज़रूरी सुविधाओं से बचना, जैसे कि खास नियमित करने या आर्किटेक्चर से जुड़ी तरकीबें इस्तेमाल करने में मदद मिलती है. उदाहरण के लिए, बिना ड्रॉपआउट रेगुलराइज़ेशन (या जब स्कूल छोड़ने वालों को रेगुलराइज़ेशन की सुविधा बंद हो), तो यह ड्रॉप-आउट रेगुलराइज़ेशन.
  • उचित परफ़ॉर्मेंस, समस्या पर निर्भर करती है. हालांकि, कम से कम ट्रेन किया गया उचित मॉडल, किसी भी क्रम में मिलने वाले नतीजों की तुलना में बेहतर परफ़ॉर्म करता है का इस्तेमाल किया जा सकता है.

ऐसा शुरुआती कॉन्फ़िगरेशन चुनना जो तेज़ है और कम से कम खर्च करता है संसाधनों की मदद से, हाइपर पैरामीटर ट्यूनिंग को ज़्यादा बेहतर बनाया जा सकता है. उदाहरण के लिए, छोटे मॉडल के साथ शुरू करें.

ट्रेनिंग के चरणों की संख्या चुनने के लिए, यहां दिए गए तनाव को ध्यान में रखना ज़रूरी है:

  • ज़्यादा चरणों के लिए ट्रेनिंग से परफ़ॉर्मेंस बेहतर हो सकती है और हाइपर पैरामीटर को आसान बनाया जा सकता है ट्यूनिंग. (ज़्यादा जानकारी के लिए, शालू और अन्य 2018).
  • इसके उलट, कम चरणों के लिए ट्रेनिंग देने का मतलब है कि हर ट्रेनिंग रन यह तेज़ है और कम संसाधनों का इस्तेमाल करता है. इससे ट्यूनिंग की क्षमता को कम करने में मदद मिलती है साइकल के बीच के समय को सेट करना है, जिससे आपको साथ-साथ ज़्यादा प्रयोग चलाने का मौका मिलता है. इसके अलावा, अगर आपने विज्ञापनों का प्लेसमेंट ऐसा करने की शुरुआत में है, तो बाद में प्रोजेक्ट में इसे बदलना मुश्किल हो सकता है; उदाहरण के लिए, चरणों की उस संख्या के लिए लर्निंग रेट का शेड्यूल ट्यून करने के बाद.