Невронна мрежа YaLM 100B на практика.

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

В края на юни Yandex
пусна на обществеността невронна мрежа със 100 милиарда параметри, наречена YaLM 100B . Това е най-голямата невронна мрежа, подобна на GPT, в публичното пространство. Разказва за това как са преподавали, показали най-добрите примери и на какво е способен невронът. Но дали е толкова добър на практика и приложим в домашни условия? Статията мълчи за това, освен това не е толкова лесно да се стартира и провери, тъй като са необходими приблизително 200 Gb GPU RAM. Този коментар на Хабре
разкрива най-точно ситуацията
.

Твърди се, че в Yandex всички такива умни хора и дори не са публикували нормални инструкции. Няма api за голям модел, няма готов изчистен среден или малък модел за обикновени хора (в Google Colab). Не е даден пример как да настроите модела, как да генерирате текст. Просто статията посочва няколко нюанса за маниаци и това е всичко. Достатъчно е да погледнете по-отблизо как банката го направи с буквата “C” и да направите същото. Останах с впечатлението, че този модел е само един от неуспешните експерименти, които беше жалко да се изхвърлят в кошчето, затова беше публикуван в Open Source, за да покаже какви страхотни модели създава Yandex, и освен това е с отворен код!

В интернет има много въпроси как да стартирате yalm или дори да опитате онлайн, но няма отговори на това. Бях сред потребителите, които зададоха тези въпроси. И се захвана да го разбера. Тъй като наистина имах нужда от начин за генериране на текстове за финансови роботи. За да могат да прогнозират не само стойностите, но и да го коментират текстово, на база финансови отчети. По същество ще бъде същото като това, което правят финансовите анализатори, само че с използването на изкуствен интелект. Има два начина да стартирате yalm.
Наемете сървър в облакас 200+ Gb GPU RAM или модифицирайте кода и стартирайте с deepspeed нулево разтоварване (когато GPU последователно обработва част от невронната мрежа, а останалата част се съхранява в CPU RAM или NVMe). Първият е много скъп, около 2500 рубли на час или 1,7 милиона на месец. Второто неизвестно, т.к кодът в хранилището не е предоставен, само
съвети в издаването на хранилището, което не е трудно да се направи. Да започнем просто.

Инструкции за стартиране на YaLM 100B

1. Наемаме 200 GB GPU RAM, например тук .

Невронна мрежа YaLM 100B на практика.

Имате нужда от поне 200 GB обща видео памет. 8×40 = 320 GB. Само този става. По-малко от 200 е невъзможно, повече е възможно. Стрелката показва RAM паметта на процесора, ние не я гледаме. Тя може да бъде всяка.

Посочваме диск от около 300 GB, така че с резервен и за предпочитане бърз диск, т.к. десетки гигабайти данни ще бъдат прехвърлени към и от него.

Невронна мрежа YaLM 100B на практика.Когато създавате в източници, изберете Ubuntu ML (машинно обучение). Това е задължително, за да са конфигурирани видеокартите и да не се налага да се инсталира нищо допълнително.

Когато създавате сървър, има нюанси с квотите, може да имате чувството, че оборудването не е налично, но всъщност просто трябва да увеличите квотите в настройките. След като сървърът е активиран (може да отнеме 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 ./изтегляне/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

Имайте търпение, остава да изчакате още 10-15 минути, докато се създаде GPT моделът и се заредят тежестите от контролните точки.
Невронна мрежа YaLM 100B на практика.

Когато изграждането приключи, MegatronML ще ви подкани да въведете контекст за генериране на текст. Бъдете внимателни, когато пишете. При определени обстоятелства възниква грешка, програмата се срива и трябва да стартирате сглобяването отново. Затова е по-добре да използвате примери, които вземат текст от файл.

9. Резултати от работата

Невронна мрежа YaLM 100B на практика.
Невронна мрежа YaLM 100B на практика.Изглежда интересно. Разбира се, това са само добри примери. Проведох теста на различни проби. Както се очаква, колкото по-добър е контекстът, толкова по-смислен текст ще бъде генериран. Пълният набор от експериментални поколения може да видите на линковете:

За цената ми струваше около 9 хиляди рубли за наемане на сървъри с различен капацитет от обучение и от подготовка до поколение. Особено разочарование беше, че не можете веднага да генерирате всичко. Отнема много време за стартиране и текстът не се генерира толкова бързо, колкото бихме искали, предвид цената на сървъра на час.
Невронна мрежа YaLM 100B на практика. 

Как да стартирате YaLM без 200 Gb GPU RAM?

Трябва да добавите deepspeed zero offload към конфигурацията. За тези, които знаят за какво говорим, ще бъде много лесно да го направят. За други това съвсем не е тривиална задача. Важно е да знаете, че разтоварването може да бъде или в CPU RAM, или в NVMe. Можете да забравите за NVMe в момента, защото. много голямо количество данни се обработват и дискът не може да се справи с тях. Процесорът с нулево разтоварване е по-реален. Вярно, за това трябва да имате на склад 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