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

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

На крајот на јуни, Yandex
објави на јавноста невронска мрежа со 100 милијарди параметри наречена YaLM 100B . Тоа е најголемата невронска мрежа слична на GPT во јавниот домен. Раскажува за тоа како тие предавале, ги покажале најдобрите примери и за што е способен невронот. Но, дали е толку добар во пракса и применлив дома? Написот молчи за ова, згора на тоа, не е толку лесно да се изврши и да се провери, бидејќи се потребни приближно 200 Gb GPU RAM меморија. Овој коментар на Хабре најточно
ја открива ситуацијата
.

Наводно, во Yandex, сите такви паметни луѓе, и тие дури и не објавија вообичаено како да се направи. Нема api за голем модел, нема готов соголен среден или мал модел за обични луѓе (во Google Colab). Не е даден пример за тоа како да се постави моделот, како да се генерира текст. Едноставно, написот посочува пар нијанси за глупаци и толку. Доволно е подетално да се погледне како банката го направи тоа со буквата „Ц“ и да го стори истото. Добив впечаток дека овој модел е само еден од неуспешните експерименти што беше штета да се фрли во ѓубре, па беше објавен во Open Source за да се покаже какви одлични модели создава Yandex, а згора на тоа, тој е со отворен код!

Има многу прашања на Интернет како да се кандидира yalm или дури и да се обиде онлајн, но нема одговори на ова. Јас бев меѓу корисниците кои ги поставуваа овие прашања. И се зафати да го сфатиш. Бидејќи навистина ми требаше начин да генерирам текстови за финансиски роботи. За да можат да ги предвидат не само вредностите, туку и да коментираат во текст, врз основа на финансиските извештаи. Во суштина, тоа ќе биде исто како што прават финансиските аналитичари, само со употреба на вештачка интелигенција. Постојат два начини да се кандидира јалм.
Изнајмете сервер во облакотсо 200+ Gb GPU RAM или модифицирајте го кодот и стартувајте со нула преоптоварување со длабока брзина (кога графичкиот процесор последователно обработува дел од невронската мрежа, а остатокот се складира во 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 (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

Тоа е исто така околу еден час.

Животен хак. Можете да преземете контролни точки, да инсталирате docker и да изградите контејнер на евтин сервер со една видео картичка. Така ќе биде со тек на време, па ќе заштедите малку. По склопувањето на евтин сервер, го бришеме и создаваме борбен сервер користејќи диск од евтин сервер. Тогаш нема да го преплаќате времето за чекање за склопување и испумпување на контролните пунктови.

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, извршете ја командата

судо баш ./docker/run.ш

Ако сè е во ред, тогаш ќе ве одведат во контејнер во кој треба да отидете во папката 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?

Треба да додадете нулта преоптоварување со длабока брзина на конфигурацијата. За оние кои знаат за што зборуваме, ќе биде многу лесно да го направат тоа. За други, ова воопшто не е тривијална задача. Важно е да се знае дека истоварувањето може да биде или во 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 е премногу скап / премногу бавен за моите задачи. За истите пари луѓето ќе пишуваат многу повеќе и многу подобро. Но мислам дека е привремено, ќе видиме. Ако ви треба помош за лансирање, поставување на јалм или сакате да ги видите резултатите на примерите од вашиот контекст, пишете на пошта или телеграма.

pskucherov
Rate author
Add a comment

  1. Olha

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

    Reply
  2. Данила

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

    Reply
  3. Дмитрий

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

    Reply