व्यवहार में तंत्रिका नेटवर्क YaLM 100B।

Программирование

जून के अंत में,
यांडेक्स ने जनता के लिए YaLM 100B नामक 100 बिलियन मापदंडों के साथ एक तंत्रिका नेटवर्क जारी किया यह सार्वजनिक डोमेन में सबसे बड़ा GPT जैसा तंत्रिका नेटवर्क है। यह बताता है कि उन्होंने कैसे पढ़ाया, सर्वोत्तम उदाहरण दिखाए और न्यूरॉन क्या करने में सक्षम है। लेकिन क्या यह व्यवहार में इतना अच्छा है और घर पर लागू होता है? इस बारे में लेख चुप है, इसके अलावा, इसे चलाना और जांचना इतना आसान नहीं है, क्योंकि लगभग 200 Gb GPU RAM की आवश्यकता होती है। हाब्रे पर
यह टिप्पणी स्थिति को सबसे सटीक रूप से प्रकट करती है

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

इंटरनेट पर बहुत सारे सवाल हैं कि यम कैसे चलाएं या ऑनलाइन भी कोशिश करें, लेकिन इसका कोई जवाब नहीं है। मैं उन उपयोगकर्ताओं में से था जिन्होंने ये प्रश्न पूछे थे। और इसका पता लगाने में लग गए। चूंकि मुझे वास्तव में वित्तीय रोबोटों के लिए ग्रंथ बनाने का एक तरीका चाहिए था। ताकि वे न केवल मूल्यों की भविष्यवाणी कर सकें, बल्कि वित्तीय रिपोर्टों के आधार पर पाठ में इस पर टिप्पणी भी कर सकें। संक्षेप में, यह वही होगा जो वित्तीय विश्लेषक करते हैं, केवल कृत्रिम बुद्धि के उपयोग के साथ। यम चलाने के दो तरीके हैं।
क्लाउड में एक सर्वर किराए पर लें200+ जीबी जीपीयू रैम के साथ या कोड को अंतिम रूप दें और इसे डीपस्पीड जीरो ऑफलोड का उपयोग करके चलाएं (जब जीपीयू क्रमिक रूप से तंत्रिका नेटवर्क के हिस्से को संसाधित करता है, और बाकी सीपीयू रैम या एनवीएमई में संग्रहीत होता है)। पहला बहुत महंगा है, प्रति घंटे लगभग 2500 रूबल या प्रति माह 1.7 मिलियन। दूसरा अज्ञात, क्योंकि भंडार में कोड प्रदान नहीं किया गया है, केवल
भंडार के मुद्दे में संकेत है, जो करना मुश्किल नहीं है। आइए सरल शुरू करें।

YaLM 100B लॉन्च निर्देश

1. हम यहां उदाहरण के लिए 200 जीबी जीपीयू रैम किराए पर लेते हैं ।

व्यवहार में तंत्रिका नेटवर्क YaLM 100B।

आपको कुल वीडियो मेमोरी में से कम से कम 200 जीबी की आवश्यकता है। 8×40 = 320 जीबी। बस यही फिट बैठता है। 200 से कम असंभव है, अधिक संभव है। तीर सीपीयू रैम को इंगित करता है, हम इसे नहीं देखते हैं। वह कोई भी हो सकती है।

हम लगभग 300 जीबी की डिस्क का संकेत देते हैं, ताकि एक अतिरिक्त और अधिमानतः एक तेज डिस्क के साथ, क्योंकि। दसियों गीगाबाइट डेटा इसमें और उससे स्थानांतरित किया जाएगा।

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

सर्वर सक्रिय होने के बाद (इसमें 5-10 मिनट लग सकते हैं), ssh के माध्यम से या सीधे सर्वर पेज पर वेब कंसोल में सर्वर से कनेक्ट करें और कमांड निष्पादित करें।

एनवीडिया-एसएमआई

परिणाम वीडियो कार्ड, ड्राइवर संस्करण और क्यूडा के साथ एक टेबल होना चाहिए। लगभग इस प्रकार है।
व्यवहार में तंत्रिका नेटवर्क YaLM 100B। ड्राइवर संस्करण शीर्ष लेख में और कहाँ। बाईं ओर डिवाइस नंबर हैं, केंद्र में डिवाइस मेमोरी का आकार है। यदि आपके पास यह जानकारी नहीं है, तो आपने सर्वर को गलत स्रोत से एकत्र किया है। जैसा कि ऊपर बताया गया है, उबंटू एमएल (मशीन लर्नॉन्ग) आवश्यक है।

2. YaLM . के साथ रिपॉजिटरी को क्लोन करें

सुडो गिट क्लोन https://github.com/yandex/YaLM-100B/ यालम
सीडी यालम

अपने होम फोल्डर में क्लोन करें ताकि आपको बाद में docker config को एडिट न करना पड़े। अगर कहीं और क्लोन किया है, तो
यहां जाएं और जहां क्लोन किया गया है वहां पथ जोड़ें।

3. चेकपॉइंट डाउनलोड करें (मूल मॉडल प्रशिक्षण जानकारी)

sudo chmod +x ./download/download.sh
sudo bash ./download/download.sh

इसमें करीब एक घंटे का समय लगेगा। व्यर्थ में समय बर्बाद न करने के लिए, हम एक नया ssh कनेक्शन बनाते हैं और समानांतर में हम एक डॉकटर कंटेनर बनाना शुरू करते हैं।

4. एनवीडिया स्थापित करेंडॉकर 2

सामान्य डॉकटर उपयुक्त नहीं है,
nvidia-docker2 की आवश्यकता है ।
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#setting-up-nvidia-container-toolkit

5. YaLM . के लिए एक कंटेनर बनाना

सीडी यालम सूडो
चामोद +x ./docker/*
sudo bash ./docker/build.sh

वह भी करीब एक घंटे का।

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

6. सामग्री तैयार करें

6.1 चेकप्वाइंट

चेकपॉइंट्स का डाउनलोड खत्म होने के बाद, आपको उन्हें कॉन्फिग में खिसकाने की जरूरत है। दो तरीके हैं, सही पैरामीटर या स्थानांतरण चौकियां। हर जगह यह उम्मीद की जाती है कि चेकपॉइंट क्रमशः परियोजना की मुख्य निर्देशिका में होंगे, जो डाउनलोड किया गया है उसे ऊपर डाउनलोड फ़ोल्डर से स्थानांतरित किया जाना चाहिए। यम फ़ोल्डर में होने के कारण निष्पादित करें

एमवी ./डाउनलोड/yalm100b_checkpoint ./

या उदाहरण फ़ाइलों में फ़ाइलों के पथ बदलें
https://github.com/yandex/YaLM-100B/blob/c91b7d7fe8dbf39c9e307d6d324446d0df136a23/examples/generate_interactive.sh#L8-L9

6.2 वीडियो कार्ड

हम जांचते हैं कि वीडियो कार्ड सही तरीके से सेट हैं। यदि आपके पास आठ वीडियो कार्ड हैं, तो कुछ भी बदलने की आवश्यकता नहीं है। यदि संख्या भिन्न है, तो हम इन पंक्तियों
व्यवहार में तंत्रिका नेटवर्क YaLM 100B। को बदलते हैं दूसरी पंक्ति में, उपयोग किए गए उपकरणों की संख्या (आप उन्हें nvidia-smi में देख सकते हैं, जिसे आप पहले ही लॉन्च कर चुके हैं)। चौथे में, उनकी संख्या।

7. डॉकटर कंटेनर चलाएँ

याल्म फ़ोल्डर में होने के कारण, कमांड निष्पादित करें

सुडो बैश ./docker/run.sh

यदि सब कुछ ठीक है, तो आपको एक कंटेनर में ले जाया जाएगा जिसमें आपको अपने होम डायरेक्टरी में यम फोल्डर में जाना होगा।

सीडी ~/यालम

8. YaLM 100B . से उदाहरण चलाएँ

हम उदाहरणों में से एक को लॉन्च करने के लिए तैयार हैं। उनका वर्णन
यहाँ किया गया है ।

chmod +x ./examples/generate_interactive.sh
./examples/generate_interactive.sh

धैर्य रखें, GPT2 मॉडल बनने और चौकियों से भार लोड होने तक 10-15 मिनट प्रतीक्षा करना बाकी है।
व्यवहार में तंत्रिका नेटवर्क YaLM 100B।

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

9. कार्य के परिणाम

व्यवहार में तंत्रिका नेटवर्क YaLM 100B।
व्यवहार में तंत्रिका नेटवर्क YaLM 100B। दिलचस्प लग रहा है। बेशक, ये सिर्फ अच्छे उदाहरण हैं। मैंने विभिन्न नमूनों पर परीक्षण चलाया। जैसा कि अपेक्षित था, संदर्भ जितना बेहतर होगा, उतना ही सार्थक पाठ उत्पन्न होगा। प्रयोगात्मक पीढ़ियों का पूरा सेट लिंक पर देखा जा सकता है:

कीमत के लिए, प्रशिक्षण और तैयारी से लेकर पीढ़ी तक विभिन्न क्षमताओं के सर्वर किराए पर लेने में मुझे लगभग 9 हजार रूबल का खर्च आया। एक विशेष निराशा यह थी कि आप तुरंत सब कुछ उत्पन्न नहीं कर सकते। इसे शुरू करने में बहुत लंबा समय लगता है और प्रति घंटे सर्वर की लागत को देखते हुए टेक्स्ट उतनी जल्दी उत्पन्न नहीं होता जितना हम चाहेंगे।
व्यवहार में तंत्रिका नेटवर्क YaLM 100B।  

200Gb GPU RAM के बिना YaLM कैसे चलाएं?

आपको कॉन्फिग में डीपस्पीड जीरो ऑफलोड जोड़ने की जरूरत है। जो लोग जानते हैं कि हम किस बारे में बात कर रहे हैं, उनके लिए इसे करना बहुत आसान होगा। दूसरों के लिए, यह कोई मामूली काम नहीं है। यह जानना महत्वपूर्ण है कि ऑफलोड या तो CPU RAM या NVMe में हो सकता है। आप इस समय NVMe के बारे में भूल सकते हैं, क्योंकि। बहुत बड़ी मात्रा में डेटा संसाधित किया जा रहा है और डिस्क इसका सामना नहीं कर सकती है। शून्य ऑफलोड सीपीयू अधिक वास्तविक है। सच है, इसके लिए आपके पास स्टॉक में 200+ जीबी सीपीयू रैम होना चाहिए, जो कि सस्ता भी नहीं है। और लगभग 20-40 मिनट के लिए एक पाठ उत्पन्न होगा, क्योंकि इसे दो वीडियो कार्डों पर समानांतर करना अभी तक संभव नहीं हुआ है। जैसा कि आप नीचे स्क्रीनशॉट में देख सकते हैं, पीढ़ी में केवल एक वीडियो कार्ड शामिल था, और फिर केवल एक चौथाई मेमोरी के लिए। यह देखा जाना बाकी है कि सभी 24 जीबी का उपयोग क्यों नहीं किया जाता है,
व्यवहार में तंत्रिका नेटवर्क YaLM 100B। खैर, निष्कर्ष में, मैं कहूंगा कि एक आरटीएक्स 3070 टीआई पर भी चलाना संभव है। लेकिन इसमें कोई विशेष अर्थ नहीं है, क्योंकि। एनवीएमई आपको 150 जीबी डेटा को स्वैप में त्वरित रूप से संसाधित करने की अनुमति नहीं देगा, जो कि 96 जीबी रैम के उपांग में हैं।
व्यवहार में तंत्रिका नेटवर्क YaLM 100B।

उपसंहार

बेशक, मैं अभी भी इष्टतम लॉन्च पथ खोजने का प्रयास करूंगा। लेकिन अब तक मैं इस नतीजे पर पहुंचा हूं कि मेरे कार्यों के लिए YaLM 100b बहुत महंगा/बहुत धीमा है। उसी पैसे के लिए लोग और भी बहुत कुछ लिखेंगे। लेकिन मुझे लगता है कि यह अस्थायी है, हम देखेंगे। यदि आपको लॉन्चिंग, यम सेट करने में मदद चाहिए, या अपने संदर्भ उदाहरणों पर परिणाम देखना चाहते हैं, तो मेल या टेलीग्राम पर लिखें।

pskucherov
Rate author
Add a comment

  1. Olha

    Статья на Мега актуальную тему! Спасибо.

    Reply
  2. Данила

    Крутая статья! Спасибо автору!

    Reply
  3. Дмитрий

    СПАСИБО !!!
    три дня эту информацию искал
    нет подобного о RuGPT3 и Порфириче?

    Reply