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

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

जुनको अन्त्यमा, Yandex
ले जनताको लागि YaLM 100B भनिने १०० बिलियन प्यारामिटरहरू भएको न्यूरल नेटवर्क जारी गर्‍यो यो सार्वजनिक डोमेनमा सबैभन्दा ठूलो GPT-जस्तो न्यूरल नेटवर्क हो। यसले उनीहरूले कसरी सिकाए, उत्कृष्ट उदाहरणहरू देखाए र न्युरोन के गर्न सक्षम छ भनेर बताउँछ। तर के यो अभ्यासमा यति राम्रो र घरमा लागू हुन्छ? लेख यस बारे मौन छ, यसबाहेक, यो चलाउन र जाँच गर्न सजिलो छैन, किनकि लगभग 200 जीबी GPU RAM आवश्यक छ। Habré मा
यो टिप्पणीले स्थितिलाई सही रूपमा प्रकट गर्दछ

कथित रूपमा, Yandex मा, त्यस्ता सबै स्मार्ट व्यक्तिहरू, र तिनीहरूले सामान्य कसरी पोस्ट गरेनन्। त्यहाँ ठूलो मोडेलको लागि कुनै एपीआई छैन, त्यहाँ कुनै रेडिमेड स्ट्रिप-डाउन मध्यम वा साधारण मानिसहरूका लागि सानो मोडेल छैन (गुगल कोलाबमा)। मोडेल कसरी सेटअप गर्ने, पाठ कसरी उत्पन्न गर्ने भन्ने बारे कुनै उदाहरण दिइएको छैन। यो मात्र हो कि लेखले nerds को लागी केहि बारीकियों को संकेत गर्दछ र यो हो। बैंकले “C” अक्षरको साथ कसरी गर्यो र त्यसै गर्नुहोस् भनेर नजिकबाट हेर्न पर्याप्त छ। यो मोडेल रद्दीटोकरीमा फ्याँक्नु दयालु थियो कि यो मोडेल असफल प्रयोगहरू मध्ये एक मात्र हो भन्ने धारणा पाए, त्यसैले यो Yandex ले कस्तो उत्कृष्ट मोडेलहरू सिर्जना गर्छ भनेर देखाउन खुला स्रोतमा पोस्ट गरिएको थियो, र थप रूपमा, यो खुला स्रोत हो!

इन्टरनेटमा yalm कसरी चलाउने वा अनलाइन प्रयास गर्ने भनेर धेरै प्रश्नहरू छन्, तर त्यहाँ यसको कुनै जवाफ छैन। म यी प्रश्नहरू सोध्ने प्रयोगकर्ताहरू मध्ये थिएँ। र यो पत्ता लगाउन को लागी सेट गर्नुहोस्। किनकि मलाई वित्तीय रोबोटहरूको लागि पाठहरू उत्पन्न गर्ने तरिका चाहिन्छ। जसले गर्दा तिनीहरूले वित्तीय प्रतिवेदनको आधारमा मान मात्रै होइन, पाठमा टिप्पणी पनि गर्न सक्छन्। संक्षेपमा, यो वित्तीय विश्लेषकहरूले गर्ने जस्तै हुनेछ, केवल कृत्रिम बुद्धिमत्ताको प्रयोगको साथ। यल्म चलाउने दुई तरिकाहरू छन्।
क्लाउडमा सर्भर भाडामा लिनुहोस्200+ Gb GPU RAM संग वा कोड परिमार्जन गर्नुहोस् र गहिरो गति शून्य अफलोड संग चलाउनुहोस् (जब GPU क्रमशः न्यूरल नेटवर्कको भाग प्रक्रिया गर्दछ, र बाँकी CPU RAM वा NVMe मा भण्डारण गरिन्छ)। पहिलो धेरै महँगो छ, लगभग 2500 rubles प्रति घण्टा वा 1.7 मिलियन प्रति महिना। दोस्रो अज्ञात, किनभने भण्डारमा कोड प्रदान गरिएको छैन, केवल
भण्डारको मुद्दामा संकेतहरू , जुन गर्न गाह्रो छैन। सरल सुरु गरौं।

YaLM 100B सुरुवात निर्देशनहरू

1. हामी 200 GB GPU RAM भाडामा लिन्छौं, उदाहरणका लागि यहाँ

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

तपाईंलाई कम्तिमा 200 GB कुल भिडियो मेमोरी चाहिन्छ। 8×40 = 320 GB। यो मात्र मिल्छ। 200 भन्दा कम असम्भव छ, धेरै सम्भव छ। तीरले CPU RAM लाई संकेत गर्छ, हामी यसलाई हेर्दैनौं। उनी जो कोही पनि हुन सक्छिन् ।

हामी लगभग 300 GB को एक डिस्क संकेत गर्छौं, ताकि एक अतिरिक्त र अधिमानतः एक छिटो डिस्क संग, किनभने। दसौं गीगाबाइट डाटा यसमा र बाट स्थानान्तरण गरिनेछ।

अभ्यासमा तंत्रिका नेटवर्क YaLM 100B।स्रोतहरूमा सिर्जना गर्दा, Ubuntu ML (मेसिन लर्निङ) चयन गर्नुहोस्। यो अनिवार्य छ ताकि भिडियो कार्डहरू कन्फिगर गरिएका छन् र थप रूपमा स्थापना गर्न आवश्यक छैन।

सर्भर सिर्जना गर्दा, त्यहाँ कोटाहरूको साथ सूक्ष्मताहरू छन्, तपाईंले उपकरणहरू उपलब्ध छैन भन्ने महसुस गर्न सक्नुहुन्छ, तर वास्तवमा तपाईंले सेटिङहरूमा कोटाहरू बढाउन आवश्यक छ। सर्भर सक्रिय भएपछि (यसले 5-10 मिनेट लिन सक्छ), सर्भरमा ssh मार्फत वा सीधा सर्भर पृष्ठमा वेब कन्सोलमा जडान गर्नुहोस् र आदेश कार्यान्वयन गर्नुहोस्।

nvidia-smi

परिणाम भिडियो कार्ड, चालक संस्करण र cuda संग तालिका हुनुपर्छ। लगभग यस्तै।
अभ्यासमा तंत्रिका नेटवर्क YaLM 100B।चालक संस्करण हेडर र कहाँ। बायाँ छेउमा यन्त्र नम्बरहरू छन्, केन्द्रमा यन्त्र मेमोरीको आकार छ। यदि तपाईंसँग यो जानकारी छैन भने, तपाईंले गलत स्रोतबाट सर्भर सङ्कलन गर्नुभएको छ। उबुन्टु एमएल (मेसिन लर्नोङ) आवश्यक छ, माथि वर्णन गरिए अनुसार।

2. YaLM को साथ भण्डार क्लोन गर्नुहोस्

sudo git क्लोन https://github.com/yandex/YaLM-100B/ yalm
cd yalm

तपाईंको गृह फोल्डरमा क्लोन गर्नुहोस् ताकि तपाईंले पछि डकर कन्फिगरेसन सम्पादन गर्नु पर्दैन। यदि कतै क्लोन गरिएको छ भने, त्यसपछि
यहाँ जानुहोस् र क्लोन गरिएको ठाउँमा मार्ग थप्नुहोस्।

3. चेकपोइन्टहरू डाउनलोड गर्नुहोस् (आधारभूत मोडेल प्रशिक्षण जानकारी)

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

यसले करिब एक घण्टा लिनेछ। व्यर्थमा समय बर्बाद नगर्नको लागि, हामी नयाँ ssh जडान सिर्जना गर्छौं र समानान्तरमा हामी डकर कन्टेनर निर्माण गर्न सुरु गर्छौं।

4. nvidiadocker 2 स्थापना गर्नुहोस्

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

5. YaLM को लागि कन्टेनर निर्माण गर्दै

cd yalm
sudo chmod +x ./docker/*
sudo bash ./docker/build.sh

यो पनि करिब एक घण्टा छ।

जीवन ह्याक। तपाईं चेकपोइन्टहरू डाउनलोड गर्न सक्नुहुन्छ, डकर स्थापना गर्न सक्नुहुन्छ र एउटा भिडियो कार्डको साथ सस्तो सर्भरमा कन्टेनर निर्माण गर्न सक्नुहुन्छ। यो समय मा उस्तै हुनेछ, त्यसैले तपाईं थोरै बचत गर्न सक्नुहुन्छ। सस्तो सर्भरमा एसेम्बली पछि, हामी यसलाई मेटाउँछौं, र सस्तो सर्भरबाट डिस्क प्रयोग गरेर लडाई सर्भर सिर्जना गर्छौं। त्यसोभए तपाईंले सभाको लागि पर्खने र चेकपोइन्टहरू पम्प गर्नको लागि समय भन्दा बढी भुक्तान गर्नुहुने छैन।

6. सामग्री तयार गर्नुहोस्

6.1 चेकपोइन्टहरू

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

mv ./download/yalm100b_checkpoint ./

वा उदाहरण फाइलहरूमा फाइलहरूमा मार्गहरू परिवर्तन गर्नुहोस्
https://github.com/yandex/YaLM-100B/blob/c91b7d7fe8dbf39c9e307d6d324446d0df136a23/examples/generate_interactive.sh#L8-L

6.2 भिडियो कार्डहरू

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

7. डकर कन्टेनर चलाउनुहोस्

yalm फोल्डरमा भएको, आदेश कार्यान्वयन गर्नुहोस्

sudo bash ./docker/run.sh

यदि सबै कुरा ठीक छ भने, त्यसपछि तपाइँलाई कन्टेनरमा लगिनेछ जसमा तपाइँ तपाइँको गृह डाइरेक्टरीमा yalm फोल्डरमा जान आवश्यक छ।

cd ~/yalm

8. YaLM 100B बाट उदाहरण चलाउनुहोस्

हामी एउटा उदाहरण सुरु गर्न तयार छौं। तिनीहरू
यहाँ वर्णन गरिएको छ ।

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

धैर्य गर्नुहोस्, GPT मोडेल सिर्जना नभएसम्म र चेकपोइन्टहरूबाट वजनहरू लोड नभएसम्म अर्को 10-15 मिनेट पर्खन बाँकी छ।
अभ्यासमा तंत्रिका नेटवर्क YaLM 100B।

जब निर्माण समाप्त हुन्छ, MegatronML ले तपाईंलाई पाठ उत्पन्न गर्न सन्दर्भ प्रविष्ट गर्न प्रेरित गर्नेछ। तपाईंले टाइप गर्दा सावधान रहनुहोस्। केहि परिस्थितिहरूमा, एउटा त्रुटि हुन्छ, कार्यक्रम क्र्यास हुन्छ र तपाइँले पुन: विधानसभा सुरु गर्न आवश्यक छ। त्यसकारण, फाइलबाट पाठ लिने उदाहरणहरू प्रयोग गर्नु राम्रो हुन्छ।

9. कामको नतिजा

अभ्यासमा तंत्रिका नेटवर्क YaLM 100B।
अभ्यासमा तंत्रिका नेटवर्क YaLM 100B।रोचक देखिन्छ। निस्सन्देह, यी केवल राम्रा उदाहरणहरू हुन्। मैले विभिन्न नमूनाहरूमा परीक्षण चलाएँ। अपेक्षित रूपमा, राम्रो सन्दर्भ, अधिक अर्थपूर्ण पाठ उत्पन्न हुनेछ। प्रयोगात्मक पुस्ताको पूर्ण सेट लिङ्कहरूमा हेर्न सकिन्छ:

मूल्यको लागि, यसले मलाई प्रशिक्षणदेखि तयारीदेखि पुस्तासम्म विभिन्न क्षमताका सर्भरहरू भाडामा लिन लगभग 9 हजार रूबल खर्च गर्दछ। एक विशेष निराशा थियो कि तपाइँ तुरुन्तै सबै कुरा उत्पन्न गर्न सक्नुहुन्न। यसले सुरु गर्न धेरै लामो समय लिन्छ र पाठ हामीले चाहेको जति छिटो उत्पन्न हुँदैन, प्रति घण्टा सर्भरको लागत दिएर।
अभ्यासमा तंत्रिका नेटवर्क YaLM 100B। 

200Gb GPU RAM बिना YaLM कसरी चलाउने?

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

संक्षेप गर्दै

अवश्य पनि, म अझै पनि इष्टतम प्रक्षेपण मार्गहरू फेला पार्न प्रयास गर्नेछु। तर अहिलेसम्म म यो निष्कर्षमा पुगेको छु कि YaLM 100b मेरो कार्यहरूको लागि धेरै महँगो / धेरै ढिलो छ। एउटै पैसाको लागि, मानिसहरूले धेरै र धेरै राम्रो लेख्छन्। तर मलाई लाग्छ कि यो अस्थायी हो, हामी हेर्नेछौं। यदि तपाईंलाई सुरुवात गर्न, yalm सेटअप गर्न मद्दत चाहिन्छ, वा तपाईंको सन्दर्भ उदाहरणहरूमा परिणामहरू हेर्न चाहनुहुन्छ भने, मेल वा टेलिग्राममा लेख्नुहोस्।

pskucherov
Rate author
Add a comment

  1. Olha

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

    Reply
  2. Данила

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

    Reply
  3. Дмитрий

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

    Reply