Нейрасец YaLM 100B на практыцы.

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

У канцы чэрвеня Яндэкс
выклаў у адкрыты доступ нейрасеткі на 100 мільярдаў параметраў пад назвай YaLM 100B. Гэта найбуйнейшая GPT-падобная нейрасетку ў вольным доступе. Распавядаецца аб тым як навучалі, паказалі лепшыя прыклады і на што здольная нейронка. Але ці такая добрая яна на практыцы і дастасавальная ў хатніх умовах? Пра гэта артыкул замоўчвае, нават яе не вось так проста запусціць і праверыць, бо патрабуецца прыкладна 200 Gb GPU RAM. Найбольш дакладна сітуацыю раскрывае
гэты каментар на хабры.

Нібыта ў Яндэксах усе такія разумнікі, а нават нармальнага How-to не выклалі. Няма api для вялікай мадэлі, не існуе гатовай зрэзанай сярэдняй ці малой мадэлі для звычайных людзей(у Google Colab). Не паказана прыкладу як наладзіць мадэль, як генераваць тэкст. Проста ў артыкуле пазначана пару нюансаў для задротаў і ўсё. Досыць прыгледзецца як зрабіў гэта банк на літару “C” і зрабіць гэтак жа. У мяне склалася ўражанне, што гэтая мадэль – проста адзін з няўдалых эксперыментаў, які было шкада выкінуць у смецце, таму яна была выкладзена ў Open Source, каб паказаць, якія выдатныя мадэлі стварае Яндэкс, і больш за тое, гэта адкрыты зыходны код!

У інтэрнэце вельмі шмат пытанняў як запусціць yalm ці нават паспрабаваць анлайн, але адказаў на гэта няма. Я быў з ліку карыстальнікаў, якія задаваліся гэтымі пытаннямі. І ўзяўся разабрацца. Бо мне вельмі патрэбен быў спосаб генераваць тэксты для фінансавых робатаў. Каб яны маглі прагназаваць не толькі значэнні, але і каментаваць гэта тэкстам, грунтуючыся на фінансавых зводках. Па сутнасці будзе тое ж самае, што робяць фінансавыя аналітыкі, толькі з ужываннем штучнага інтэлекту. Ёсць два спосабу запусціць yalm.
Арандаваць у воблаку серверз 200+ Gb GPU RAM ці дапрацаваць код і запусціць з дапамога deepspeed zero offload (калі GPU паслядоўна апрацоўвае частку нейрасеткі, а астатняе захоўваецца ў CPU RAM ці NVMe). Першы вельмі дарагі, каля 2500 рублёў у гадзіну ці 1.7 млн. у месяц. Другі невядомы, т.я. код у рэпазітары не прадстаўлены, толькі
намёкі ў issue рэпазітара, што зрабіць не складана. Пачнём з простага.

Інструкцыя па запуску YaLM 100B

1. Арандуем 200 Гб GPU RAM, напрыклад тут .

Нейрасец YaLM 100B на практыцы.

Трэба не менш за 200 Гб сумарна відэапамяці. 8х40 = 320 Гб. Падыходзіць толькі гэты. Менш за 200 нельга, больш можна. Стрэлкай паказана на CPU RAM, на яе не глядзім. Яна можа быць любой.

Паказваем дыск каля 300 Гб, каб з запаспам і пажадана хуткі дыск, т.я. дадзеных будзе перадавацца ў яго і з яго дзясяткі гігабайт.

Нейрасец YaLM 100B на практыцы. Пры стварэнні ў крыніцах выбіраемы Ubuntu ML (Machine Learning). Гэта абавязкова, каб былі наладжаны відэакарты і нічога не трэба было ўсталёўваць дадаткова.

Пры стварэнні сервера бываюць нюансы з квотамі, можа створыцца адчуванне што абсталяванне недаступна, але насамрэч усяго толькі трэба павялічыць квоты ў наладах. Пасля таго як сервер будзе актываваны (гэта можа заняць 5-10 хвілін), падлучаемся да сервера праз ssh або прамы ў вэб кансолі на старонцы сервера і выконваем каманду.

nvidia-smi

Вынікам павінна быць табліца з відэакартай, версіяй драйвераў і cuda. Прыкладна вось так.
Нейрасец YaLM 100B на практыцы. У шапцы версіі драйвераў і куды. У левай частцы нумара прылад, у цэнтры памер памяці прылад. Калі гэтай інфармацыі ў вас няма, значыць вы сабралі сервер не з той крыніцы. Ubuntu ML (Machine Learnong) абавязковы, аб гэтым напісана вышэй.

2. Клануем рэпазітар з YaLM

sudo git clone https://github.com/yandex/YaLM-100B/ yalm
cd yalm

Клануйце ў хатнюю тэчку, каб пасля не змяняць канфіг докера. Калі кланавалі куды-небудзь у іншае месца, то
ідзем сюды і дадаем шлях туды, куды скланавалі.

3. Спампоўваем чэкпоінты (асноўную інфармацыю навучання мадэлі)

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

Гэта зойме каля гадзіны. Каб не губляць часу дарма, ствараем новае ssh злучэнне і раўналежна пачынаем збіраць docker кантэйнер.

4. Усталеўваны nvidiadocker 2

Звычайны docker не падыходзіць, патрэбен менавіта
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 Чэкпаінты

Пасля таго як скончылася запампоўка чэкпаінтаў трэба падсунуць іх у канфігі. Ёсць два спосабу, паправіць параметры або перанесці чэкпаінты. Усюды чакаецца, што чэкпаінты будуць ляжаць у асноўнай дырэкторыі праекта, адпаведна тое што запампавалася трэба перанесці з тэчкі download вышэй. Знаходзячыся ў тэчцы yalm выканаць

mv ./download/yalm100b_checkpoint ./

Ці ў файлах прыкладаў памяняць шляхі да файлаў
.

6.2 Відэакарты

Правяраем што відэакарты правільна зададзены. Калі ў вас восем відэакарт, то нічога мяняць не трэба. Калі іншая колькасць, то змяняем вось гэтыя радкі
Нейрасец YaLM 100B на практыцы. У другім радку нумара выкарыстоўваных дэвайсаў (іх вы можаце зірнуць у nvidia-smi, якую ўжо запускалі). У чацвёртай іх колькасць.

7. Запускаем docker кантэйнер

Знаходзячыся ў тэчцы 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 без 200Gb GPU RAM?

Трэба дадаць deepspeed zero offload у канфіг. Для тых, хто ведае, пра што гаворка будзе вельмі проста гэта зрабіць. Для астатніх гэта зусім не трывіяльная задача. Важна ведаць, што offload можа быць ці ў CPU RAM, ці на NVMe. Пра NVMe на дадзены момант можна забыцца, т.я. апрацоўваецца вельмі вялікі аб’ём дадзеных і дыск з гэтым не спраўляецца. Zero offload CPU больш рэальны. Праўда для гэтага трэба мець у запасе 200+ Gb CPU RAM, што таксама не танна. А адзін тэкст будзе генеравацца каля 20-40 хвілін, бо пакуль не ўдалося распаралеліць на дзве відэакарты. Як можаце ўбачыць на скрыншоце ніжэй, у генерацыі была задзейнічана толькі адна відэакарта, і тое толькі на чацвёртую частку па памяці. Яшчэ трэба разабрацца чаму не задзейнічаны ўсе 24 Гб,
Нейрасец YaLM 100B на практыцы. Ды і ў заключэнне скажу, што можна запусціць нават на адной RTX 3070 TI. Але сэнсу асабліва ў гэтым няма, т.я. NVMe не дазволіць хутка апрацоўваць 150 Гб дадзеных у свопе, якія ляжаць у даважку ў 96 Гб аператыўнай памяці.
Нейрасец YaLM 100B на практыцы.

Падвядзем вынікі

Я, вядома, яшчэ паспрабую знайсці аптымальныя шляхі запуску. Але пакуль для сябе зрабіў высновы, што YaLM 100b занадта дорага / занадта марудна для маіх задач. За гэтыя ж грошы людзі напішуць нашмат больш і нашмат якасней. Але, думаю, гэта часова будзем назіраць. Калі вам патрэбна дапамога з запускам, наладай yalm ці жадаеце зірнуць вынікі на сваіх прыкладах кантэксту — пішыце на пошту ці ў тэлеграм.

pskucherov
Rate author
Add a comment

  1. Olha

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

    Reply
  2. Данила

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

    Reply
  3. Дмитрий

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

    Reply