YaLM 100B нейрондық желісі тәжірибеде.

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

Маусым айының соңында Яндекс
100 миллиард параметрі бар YaLM 100B деп аталатын нейрондық желіні көпшілікке шығарды . Бұл қоғамдық домендегі ең үлкен GPT тәрізді нейрондық желі. Бұл олардың қалай оқытқаны, ең жақсы үлгілерді көрсеткені және нейронның не істей алатыны туралы айтады. Бірақ бұл тәжірибеде соншалықты жақсы және үйде қолдануға бола ма? Мақалада бұл туралы үнсіз, сонымен қатар оны іске қосу және тексеру оңай емес, өйткені шамамен 200 Гб GPU жедел жады қажет. Бұл пікір Хабре
жағдайды дәл ашады
.

Болжам бойынша, Яндекс-те мұндай ақылды адамдардың бәрі бар және олар қарапайым «Қалай істеу керек» дегенді де жарияламаған. Үлкен үлгіге арналған api жоқ, қарапайым адамдарға арналған дайын кесілген орташа немесе шағын үлгі жоқ (Google Colab-та). Модельді орнату, мәтінді құру туралы мысал келтірілмеген. Бұл мақалада нердтерге арналған бірнеше нюанстар көрсетілген және бәрі де. Банктің мұны «С» әрпімен қалай жасағанын мұқият қарастырып, дәл солай істеу жеткілікті. Мен бұл модельді қоқыс жәшігіне тастау өте өкінішті сәтсіз эксперименттердің бірі ғана деп ойладым, сондықтан ол Яндекстің қандай керемет модельдер жасайтынын көрсету үшін Open Source-те орналастырылған, сонымен қатар ол ашық бастапқы код!

Интернетте yalm-ді қалай іске қосуға немесе тіпті желіде сынап көруге болатын көптеген сұрақтар бар, бірақ бұған жауаптар жоқ. Мен осы сұрақтарды қойған қолданушылардың арасында болдым. Және оны анықтауға кірісіңіз. Өйткені маған қаржылық роботтар үшін мәтіндер жасау тәсілі қажет болды. Олар тек құндылықтарды болжап қана қоймай, қаржылық есептерге сүйене отырып, мәтінде оған түсініктеме бере алады. Негізінде, бұл қаржылық сарапшылар жасайтын іспен бірдей болады, тек жасанды интеллект қолдану арқылы. Yalm жүргізудің екі жолы бар.
Бұлтта серверді жалға алыңыз200+ Гб GPU жедел жадымен немесе кодты өзгертіңіз және терең жылдамдықты нөлдік түсірумен іске қосыңыз (GPU нейрондық желінің бір бөлігін дәйекті түрде өңдегенде, ал қалғаны CPU RAM немесе NVMe жадында сақталған кезде). Біріншісі өте қымбат, сағатына шамамен 2500 рубль немесе айына 1,7 млн. Екінші белгісіз, өйткені репозиторийдегі код берілмейді, тек
репозиторийдің шығарылымында кеңес береді, мұны істеу қиын емес. Қарапайым бастайық.

YaLM 100B іске қосу нұсқаулары

1. Біз 200 ГБ GPU жедел жадын жалға аламыз, мысалы, мұнда .

YaLM 100B нейрондық желісі тәжірибеде.

Сізге кемінде 200 ГБ жалпы бейне жады қажет. 8×40 = 320 ГБ. Тек мынау жарасады. 200-ден азы мүмкін емес, көп болуы мүмкін. Көрсеткі CPU жедел жадын көрсетеді, біз оған қарамаймыз. Ол кез келген адам бола алады.

Біз шамамен 300 ГБ дискіні көрсетеміз, сондықтан қосалқы және жақсырақ жылдам дискімен, өйткені. оған және одан ондаған гигабайт деректер тасымалданады.

YaLM 100B нейрондық желісі тәжірибеде. Көздерде жасау кезінде Ubuntu ML (Machine Learning) таңдаңыз. Бұл видеокарталарды конфигурациялау үшін міндетті және қосымша ештеңе орнатудың қажеті жоқ.

Серверді құру кезінде квоталар бар нюанстар бар, сіз жабдықтың жоқтығын сезінуіңіз мүмкін, бірақ шын мәнінде параметрлердегі квоталарды көбейту керек. Сервер іске қосылғаннан кейін (бұл 5-10 минутқа созылуы мүмкін) серверге ssh арқылы немесе сервер бетіндегі веб-консоль арқылы тікелей қосылып, пәрменді орындаңыз.

nvidia-smi

Нәтиже бейне карталары, драйвер нұсқасы және cuda бар кесте болуы керек. Шамамен осылай.
YaLM 100B нейрондық желісі тәжірибеде. Драйвер нұсқасының тақырыбында және қайда. Сол жағында құрылғы нөмірлері, ортасында құрылғы жадысының өлшемі. Егер сізде бұл ақпарат болмаса, серверді қате көзден жинадыңыз. Жоғарыда сипатталғандай Ubuntu ML (Machine Learnong) қажет.

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-L9

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 нейрондық желісі тәжірибеде.  

200 Гб GPU жедел жадысыз YaLM қалай іске қосуға болады?

Конфигурацияға терең жылдамдықты нөлдік түсіруді қосу керек. Біздің не туралы айтып жатқанымызды білетіндер үшін мұны істеу өте оңай болады. Басқалар үшін бұл тривиальды тапсырма емес. Жүктеме процессордың жедел жадында немесе NVMe-де болуы мүмкін екенін білу маңызды. Қазіргі уақытта NVMe туралы ұмытуға болады, өйткені. деректердің өте үлкен көлемі өңделуде және диск оны жеңе алмайды. Нөлдік түсіру процессоры нақтырақ. Рас, бұл үшін қоймада 200+ Гб CPU жедел жады болуы керек, бұл да арзан емес. Бір мәтін шамамен 20-40 минут ішінде жасалады, өйткені оны екі видеокартада параллельдеу әлі мүмкін емес. Төмендегі скриншотта көріп отырғаныңыздай, ұрпаққа тек бір видеокарта қатысты, содан кейін жадтың төрттен бір бөлігі ғана. Неліктен барлық 24 ГБ пайдаланылмайтынын түсіну керек,
YaLM 100B нейрондық желісі тәжірибеде. Қорытындылай келе, мен тіпті бір RTX 3070 TI-де жұмыс істеуге болатынын айтайын. Бірақ бұл жерде ерекше мағына жоқ, өйткені. NVMe свопта 96 ГБ жедел жадының қосымшасында орналасқан 150 ГБ деректерді жылдам өңдеуге мүмкіндік бермейді.
YaLM 100B нейрондық желісі тәжірибеде.

Жинақтау

Әрине, мен әлі де оңтайлы ұшыру жолдарын табуға тырысамын. Бірақ әлі күнге дейін мен YaLM 100b менің тапсырмаларым үшін тым қымбат/тым баяу деген қорытындыға келдім. Сол ақшаға адамдар әлдеқайда көп және әлдеқайда жақсы жазады. Бірақ бұл уақытша деп ойлаймын, көреміз. Егер сізге yalm іске қосу, орнату бойынша көмек қажет болса немесе мәтінмәндік мысалдарыңыздағы нәтижелерді көргіңіз келсе, поштаға немесе жеделхатқа жазыңыз.

pskucherov
Rate author
Add a comment

  1. Olha

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

    Reply
  2. Данила

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

    Reply
  3. Дмитрий

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

    Reply