बड़े तंत्रिका नेटवर्कों के प्रशिक्षण के लिए तकनीकें प्लेटोब्लॉकचैन डेटा इंटेलिजेंस। लंबवत खोज। ऐ.

बड़े तंत्रिका नेटवर्क को प्रशिक्षित करने की तकनीक

बड़े तंत्रिका नेटवर्क को प्रशिक्षित करने की तकनीक

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

डेटा समानता

बड़े तंत्रिका नेटवर्क को प्रशिक्षित करने की तकनीक

पाइपलाइन समानांतरवाद

बड़े तंत्रिका नेटवर्क को प्रशिक्षित करने की तकनीक

टेंसर समानांतरवाद

बड़े तंत्रिका नेटवर्क को प्रशिक्षित करने की तकनीक

विशेषज्ञ समानता

बड़े तंत्रिका नेटवर्क को प्रशिक्षित करने की तकनीक

डेटा समानता

बड़े तंत्रिका नेटवर्क को प्रशिक्षित करने की तकनीक

पाइपलाइन समानांतरवाद

बड़े तंत्रिका नेटवर्क को प्रशिक्षित करने की तकनीक

टेंसर समानांतरवाद

बड़े तंत्रिका नेटवर्क को प्रशिक्षित करने की तकनीक

विशेषज्ञ समानता

बड़े तंत्रिका नेटवर्क को प्रशिक्षित करने की तकनीक

तीन-परत मॉडल पर विभिन्न समानांतरवाद रणनीतियों का एक उदाहरण। प्रत्येक रंग एक परत को संदर्भित करता है और धराशायी लाइनें अलग-अलग GPU को अलग करती हैं।

कोई समानता नहीं

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

विभिन्न समानांतर तकनीकें इस प्रशिक्षण प्रक्रिया को विभिन्न आयामों में विभाजित करती हैं, जिनमें शामिल हैं:

  • डेटा समानांतरवाद—अलग-अलग GPU पर बैच के अलग-अलग सबसेट चलाएँ;
  • पाइपलाइन समानांतरवाद—विभिन्न GPU पर मॉडल की विभिन्न परतों को चलाएँ;
  • टेंसर पैरेललिज़्म—एक एकल ऑपरेशन के लिए गणित को तोड़ें जैसे कि मैट्रिक्स गुणन को GPU में विभाजित किया जाना;
  • विशेषज्ञों का मिश्रण—प्रत्येक उदाहरण को प्रत्येक परत के केवल एक अंश द्वारा संसाधित करता है।

(इस पोस्ट में, हम मान लेंगे कि आप अपने तंत्रिका नेटवर्क को प्रशिक्षित करने के लिए GPU का उपयोग कर रहे हैं, लेकिन वही विचार किसी अन्य का उपयोग करने वालों पर लागू होते हैं तंत्रिका नेटवर्क त्वरक.)

डेटा समानता

डेटा समानांतर प्रशिक्षण का अर्थ है एक ही पैरामीटर को कई जीपीयू (जिसे अक्सर "कार्यकर्ता" कहा जाता है) में कॉपी करना और प्रत्येक को एक साथ संसाधित करने के लिए अलग-अलग उदाहरण निर्दिष्ट करना। अकेले डेटा समानता के लिए अभी भी यह आवश्यक है कि आपका मॉडल एकल GPU की मेमोरी में फिट हो, लेकिन आपको अपने मापदंडों की कई डुप्लिकेट प्रतियों को संग्रहीत करने की कीमत पर कई GPU की गणना का उपयोग करने देता है। कहा जा रहा है कि, आपके GPU के लिए उपलब्ध प्रभावी RAM को बढ़ाने के लिए रणनीतियाँ हैं, जैसे कि उपयोग के बीच CPU मेमोरी में अस्थायी रूप से ऑफ़लोडिंग पैरामीटर।

जैसा कि प्रत्येक डेटा समानांतर कार्यकर्ता मापदंडों की अपनी प्रति को अद्यतन करता है, उन्हें यह सुनिश्चित करने के लिए समन्वय करने की आवश्यकता होती है कि प्रत्येक कार्यकर्ता के समान पैरामीटर बने रहें। श्रमिकों के बीच अवरुद्ध संचार शुरू करने का सबसे आसान तरीका है: (1) प्रत्येक कार्यकर्ता पर ढाल की स्वतंत्र रूप से गणना करें; (2) श्रमिकों में औसत ग्रेडियेंट; और (3) स्वतंत्र रूप से प्रत्येक कार्यकर्ता पर समान नए मापदंडों की गणना करें। चरण (2) एक अवरुद्ध औसत है जिसके लिए बहुत अधिक डेटा स्थानांतरित करने की आवश्यकता होती है (आपके मापदंडों के आकार के श्रमिकों की संख्या के अनुपात में), जो आपके प्रशिक्षण थ्रूपुट को नुकसान पहुंचा सकता है। विभिन्न हैं अतुल्यकालिक तुल्यकालन योजना इस ओवरहेड को हटाने के लिए, लेकिन वे सीखने की दक्षता को नुकसान पहुंचाते हैं; व्यवहार में, लोग आमतौर पर समकालिक दृष्टिकोण से चिपके रहते हैं।

पाइपलाइन समानांतरवाद

- पाइपलाइन समानांतर प्रशिक्षण, हम GPU में मॉडल के अनुक्रमिक भाग को विभाजित करते हैं। प्रत्येक GPU में केवल कुछ ही पैरामीटर होते हैं, और इस प्रकार एक ही मॉडल प्रति GPU आनुपातिक रूप से कम मेमोरी की खपत करता है।

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

बड़े तंत्रिका नेटवर्क को प्रशिक्षित करने की तकनीक आगे
बड़े तंत्रिका नेटवर्क को प्रशिक्षित करने की तकनीक पिछड़ा
बड़े तंत्रिका नेटवर्क को प्रशिक्षित करने की तकनीक ढाल अद्यतन
बड़े तंत्रिका नेटवर्क को प्रशिक्षित करने की तकनीक निष्क्रिय
बड़े तंत्रिका नेटवर्क को प्रशिक्षित करने की तकनीक

एक भोले पाइपलाइन समानांतरवाद सेटअप का चित्रण जहां मॉडल लंबवत रूप से परत द्वारा 4 विभाजनों में विभाजित होता है। कार्यकर्ता 1 नेटवर्क की पहली परत (इनपुट के सबसे करीब) के मॉडल मापदंडों को होस्ट करता है, जबकि कार्यकर्ता 4 परत 4 (जो आउटपुट के सबसे करीब है) को होस्ट करता है। "एफ", "बी" और "यू" क्रमशः आगे, पीछे और अद्यतन संचालन का प्रतिनिधित्व करते हैं। सबस्क्रिप्ट इंगित करते हैं कि किस कार्यकर्ता पर एक ऑपरेशन चलता है। अनुक्रमिक निर्भरता के कारण एक समय में एक कार्यकर्ता द्वारा डेटा संसाधित किया जाता है, जिससे निष्क्रिय समय के बड़े "बुलबुले" हो जाते हैं।

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

मॉडल को विभाजित करने वाले श्रमिकों की संख्या को सामान्यतः कहा जाता है पाइपलाइन की गहराई.

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

बड़े तंत्रिका नेटवर्क को प्रशिक्षित करने की तकनीक आगे
बड़े तंत्रिका नेटवर्क को प्रशिक्षित करने की तकनीक पिछड़ा
बड़े तंत्रिका नेटवर्क को प्रशिक्षित करने की तकनीक अपडेट
बड़े तंत्रिका नेटवर्क को प्रशिक्षित करने की तकनीक निष्क्रिय
जीपीप

बड़े तंत्रिका नेटवर्क को प्रशिक्षित करने की तकनीक

माया

बड़े तंत्रिका नेटवर्क को प्रशिक्षित करने की तकनीक

प्रति बैच 4 माइक्रोबैच का उपयोग करते हुए GPipe और PipeDream पाइपलाइनिंग योजनाओं की तुलना। माइक्रोबैच 1-8 लगातार दो डेटा बैच के अनुरूप होते हैं। छवि में, "(संख्या)" इंगित करता है कि किस माइक्रोबैच पर एक ऑपरेशन किया जाता है और सबस्क्रिप्ट कार्यकर्ता आईडी को चिह्नित करता है। ध्यान दें कि पुराने मापदंडों के साथ कुछ संगणना करने से पाइपड्रीम को अधिक दक्षता प्राप्त होती है।

टेंसर समानांतरवाद

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

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

कभी-कभी नेटवर्क के इनपुट को क्रॉस-कम्युनिकेशन के सापेक्ष उच्च स्तर की समानांतर गणना के साथ एक आयाम में समानांतर किया जा सकता है। अनुक्रम समानता एक ऐसा विचार है, जहां एक इनपुट अनुक्रम समय-समय पर कई उप-उदाहरणों में विभाजित होता है, गणना को अधिक दानेदार आकार के उदाहरणों के साथ आगे बढ़ने की अनुमति देकर पीक मेमोरी खपत को आनुपातिक रूप से कम कर देता है।

विशेषज्ञों का मिश्रण (एमओई)

उसके साथ विशेषज्ञों का मिश्रण (एमओई) दृष्टिकोण, नेटवर्क के केवल एक अंश का उपयोग किसी एक इनपुट के आउटपुट की गणना करने के लिए किया जाता है। एक उदाहरण दृष्टिकोण वजन के कई सेट होना है और नेटवर्क चुन सकता है कि अनुमान के समय गेटिंग तंत्र के माध्यम से किस सेट का उपयोग करना है। यह गणना लागत में वृद्धि के बिना कई और मापदंडों को सक्षम बनाता है। वजन के प्रत्येक सेट को "विशेषज्ञ" के रूप में संदर्भित किया जाता है, इस उम्मीद में कि नेटवर्क प्रत्येक विशेषज्ञ को विशेष गणना और कौशल प्रदान करना सीखेगा। एक मॉडल के लिए उपयोग किए जाने वाले GPU की संख्या को बढ़ाने का एक स्पष्ट तरीका प्रदान करते हुए, विभिन्न विशेषज्ञों को विभिन्न GPU पर होस्ट किया जा सकता है।

बड़े तंत्रिका नेटवर्क को प्रशिक्षित करने की तकनीक

विशेषज्ञों के मिश्रण (एमओई) परत का चित्रण। में से केवल 2 n विशेषज्ञों का चयन गेटिंग नेटवर्क द्वारा किया जाता है। (छवि से अनुकूलित: शज़ीर एट अल।, 2017)

जीशर्ड एक योजना के साथ एक MoE ट्रांसफॉर्मर को 600 बिलियन मापदंडों तक स्केल करता है, जहां केवल MoE लेयर्स को कई TPU उपकरणों में विभाजित किया जाता है और अन्य लेयर्स को पूरी तरह से डुप्लिकेट किया जाता है। ट्रांसफार्मर स्विच करें एक विशेषज्ञ को एक इनपुट रूट करके मॉडल आकार को खरबों मापदंडों तक और भी अधिक विरलता के साथ मापता है।

अन्य मेमोरी सेविंग डिज़ाइन

प्रशिक्षण को तेजी से बड़े तंत्रिका नेटवर्क को और अधिक ट्रैक्टेबल बनाने के लिए कई अन्य कम्प्यूटेशनल रणनीतियाँ हैं। उदाहरण के लिए:

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

  • मिश्रित प्रेसिजन प्रशिक्षण कम-सटीक संख्याओं का उपयोग करके मॉडल को प्रशिक्षित करना है (आमतौर पर FP16) आधुनिक त्वरक कम-सटीक संख्याओं के साथ बहुत अधिक FLOP गणनाओं तक पहुँच सकते हैं, और आप डिवाइस RAM पर भी बचत करते हैं। उचित देखभाल के साथ, परिणामी मॉडल लगभग कोई सटीकता नहीं खो सकता है।

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

  • मेमोरी कुशल अनुकूलक अनुकूलक द्वारा अनुरक्षित चल रहे राज्य के स्मृति पदचिह्न को कम करने का प्रस्ताव किया गया हैइस तरह के रूप में, अनुकूलक.

  • संपीड़न नेटवर्क में मध्यवर्ती परिणामों को संग्रहीत करने के लिए भी इस्तेमाल किया जा सकता है। उदाहरण के लिए, सार बैकवर्ड पास के लिए सहेजे गए सक्रियण को संपीड़ित करता है; DALL · E ग्रेडिएंट्स को सिंक्रोनाइज़ करने से पहले कंप्रेस करता है।


ओपनएआई में, हम अंतर्निहित बुनियादी ढांचे से लेकर बड़े मॉडलों को वास्तविक दुनिया की समस्याओं के लिए तैनात करने के लिए प्रशिक्षण और सुधार कर रहे हैं। यदि आप इस पोस्ट के विचारों को व्यवहार में लाना चाहते हैं - विशेष रूप से हमारी स्केलिंग और एप्लाइड रिसर्च टीमों के लिए प्रासंगिक - तो हम हैं को काम पर रखने!


Acknowledgments
ड्राफ्ट पर प्रतिक्रिया के लिए निकोलस तेजक, सैम ऑल्टमैन, डैनियल गैकले, इल्या सुत्स्केवर और स्टीवन एडलर को धन्यवाद। संचार और डिजाइन के लिए जस्टिन जे वांग, बियांका मार्टिन और स्टीव डाउलिंग को धन्यवाद।

समय टिकट:

से अधिक OpenAI