Nevronska mreža YaLM 100B v praksi.

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

Konec junija je Yandex
javnosti predstavil nevronsko mrežo s 100 milijardami parametrov, imenovano YaLM 100B . Je največja GPT podobna nevronska mreža v javni domeni. Govori o tem, kako so učili, pokazali najboljše primere in česa je nevron sposoben. Toda ali je tako dober v praksi in uporaben doma? Članek o tem molči, poleg tega ga ni tako enostavno zagnati in preveriti, saj je potrebnih približno 200 Gb GPU RAM-a. Ta komentar na Habréju
najbolj natančno razkriva situacijo
.

Domnevno so bili v Yandexu vsi tako pametni ljudje in sploh niso objavili običajnih navodil. Ni api-ja za velik model, ni pripravljenega ogoljenega srednjega ali majhnega modela za navadne ljudi (v Google Colab). Ni podanega primera, kako nastaviti model, kako ustvariti besedilo. Samo članek navaja nekaj odtenkov za piflarje in to je to. Dovolj je, da si podrobneje ogledate, kako je banka to storila s črko “C”, in storite enako. Dobil sem vtis, da je ta model le eden od neuspešnih poskusov, ki ga je bilo škoda vreči v smeti, zato je bil objavljen v Open Source, da pokaže, kakšne odlične modele ustvarja Yandex, poleg tega pa je odprtokoden!

Na internetu je veliko vprašanj, kako zagnati yalm ali celo poskusiti na spletu, vendar na to ni odgovorov. Bil sem med uporabniki, ki so postavljali ta vprašanja. In začel ugotavljati. Ker sem res potreboval način za ustvarjanje besedil za finančne robote. Da lahko na podlagi finančnih poročil ne samo napovedujejo vrednosti, ampak jo tudi besedilno komentirajo. V bistvu bo enako, kot to počnejo finančni analitiki, le z uporabo umetne inteligence. Yalm lahko zaženete na dva načina.
Najem strežnika v oblakuz 200+ Gb GPU RAM ali spremenite kodo in zaženite z deepspeed zero offload (ko GPE zaporedno obdela del nevronske mreže, preostanek pa je shranjen v CPE RAM ali NVMe). Prvi je zelo drag, približno 2500 rubljev na uro ali 1,7 milijona na mesec. Druga neznanka, saj koda v repozitoriju ni na voljo, le
namigi v izdaji repozitorija, kar ni težko narediti. Začnimo preprosto.

1. Najamemo 200 GB GPU RAM, na primer tukaj .

Nevronska mreža YaLM 100B v praksi.

Potrebujete vsaj 200 GB skupnega video pomnilnika. 8×40 = 320 GB. Samo ta ustreza. Manj kot 200 je nemogoče, več je mogoče. Puščica označuje CPU RAM, ne gledamo ga. Lahko je kdorkoli.

Navedemo disk približno 300 GB, tako da z rezervnim in po možnosti hitrim diskom, ker. nanj in iz njega bo prenesenih več deset gigabajtov podatkov.

Nevronska mreža YaLM 100B v praksi.Pri ustvarjanju v virih izberite Ubuntu ML (strojno učenje). To je obvezno, da so video kartice konfigurirane in vam ni treba ničesar dodatno namestiti.

Pri ustvarjanju strežnika obstajajo nianse s kvotami, lahko dobite občutek, da oprema ni na voljo, v resnici pa morate samo povečati kvote v nastavitvah. Ko je strežnik aktiviran (lahko traja 5-10 minut), se povežite s strežnikom prek ssh ali neposredno v spletni konzoli na strani strežnika in izvedite ukaz.

nvidia-smi

Rezultat bi morala biti tabela z video karticami, različico gonilnika in cudo. Približno takole.
Nevronska mreža YaLM 100B v praksi.V glavi različice gonilnika in kje. Na levi strani so številke naprave, na sredini je velikost pomnilnika naprave. Če teh informacij nimate, ste strežnik zbrali iz napačnega vira. Potreben je Ubuntu ML (Machine Learnong), kot je opisano zgoraj.

2. Klonirajte repozitorij z YaLM

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

Klonirajte v svojo domačo mapo, da vam pozneje ne bo treba urejati konfiguracije dockerja. Če je kloniran nekje drugje,
pojdite sem in dodajte pot do mesta kloniranega.

3. Prenesite kontrolne točke (osnovne informacije o usposabljanju modela)

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

To bo trajalo približno eno uro. Da ne izgubljamo časa zaman, ustvarimo novo ssh povezavo in vzporedno začnemo graditi docker kontejner.

4. Namestite nvidiadocker 2

Običajni docker ni primeren,
potreben je nvidia-docker2 .
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#setting-up-nvidia-container-toolkit

5. Gradnja vsebnika za YaLM

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

Prav tako je približno eno uro.

Life hack. Lahko prenesete kontrolne točke, namestite docker in zgradite vsebnik na poceni strežniku z eno video kartico. Tako bo tudi v času, tako da lahko malo prihranite. Po montaži na poceni strežniku ga izbrišemo in ustvarimo bojni strežnik z diskom iz poceni strežnika. Potem ne boste preplačali časa za čakanje na montažo in črpanje kontrolnih točk.

6. Pripravite vsebino

6.1 Kontrolne točke

Ko je prenos kontrolnih točk končan, jih morate vnesti v konfiguracije. Obstajata dva načina, pravilni parametri ali prenos kontrolnih točk. Povsod se pričakuje, da bodo kontrolne točke v glavnem imeniku projekta oziroma, kar je bilo preneseno, je treba prenesti iz zgornje mape za prenos. Biti v mapi yalm execute

mv ./download/yalm100b_checkpoint ./

Ali pa spremenite poti do datotek v vzorčnih datotekah
https://github.com/yandex/YaLM-100B/blob/c91b7d7fe8dbf39c9e307d6d324446d0df136a23/examples/generate_interactive.sh#L8-L9

6.2 Video kartice

Preverimo, ali so video kartice pravilno nastavljene. Če imate osem video kartic, potem ni treba ničesar spremeniti. Če je številka drugačna, spremenimo te vrstice
Nevronska mreža YaLM 100B v praksi.. V drugi vrstici številke uporabljenih naprav (pogledate jih lahko v nvidia-smi, ki ste jo že zagnali). V četrtem pa njihovo število.

7. Zaženite docker vsebnik

Ko ste v mapi yalm, izvedite ukaz

sudo bash ./docker/run.sh

Če je vse v redu, boste preusmerjeni v vsebnik, v katerem morate iti v mapo yalm v domačem imeniku.

cd ~/yalm

8. Zaženite primer iz YaLM 100B

Pripravljeni smo lansirati enega od primerov. Opisani so
tukaj .

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

Bodite potrpežljivi, počakajte še 10-15 minut, dokler se model GPT ne ustvari in se uteži s kontrolnih točk naložijo.
Nevronska mreža YaLM 100B v praksi.

Ko se gradnja konča, vas bo MegatronML pozval, da vnesete kontekst za ustvarjanje besedila. Bodite previdni, ko tipkate. V določenih okoliščinah pride do napake, program se zruši in morate znova zagnati montažo. Zato je bolje uporabiti primere, ki vzamejo besedilo iz datoteke.

9. Rezultati dela

Nevronska mreža YaLM 100B v praksi.
Nevronska mreža YaLM 100B v praksi.Izgleda zanimivo. Seveda so to le dobri primeri. Test sem opravil na različnih vzorcih. Kot je pričakovano, boljši kot je kontekst, bolj smiselno besedilo bo ustvarjeno. Celoten nabor eksperimentalnih generacij si lahko ogledate na povezavah:

Za ceno me je stalo približno 9 tisoč rubljev za najem strežnikov različnih zmogljivosti od usposabljanja in od priprave do generacije. Posebno razočaranje je bilo, da ne morete takoj ustvariti vsega. Zagon traja zelo dolgo in besedilo se ne ustvari tako hitro, kot bi želeli, glede na ceno strežnika na uro.
Nevronska mreža YaLM 100B v praksi. 

Kako zagnati YaLM brez 200 Gb GPU RAM-a?

V konfiguracijo morate dodati deepspeed zero offload. Za tiste, ki vedo, o čem govorimo, bo to zelo enostavno narediti. Za druge to sploh ni nepomembna naloga. Pomembno je vedeti, da je razbremenitev lahko bodisi v CPE RAM-u bodisi v NVMe. Na NVMe lahko trenutno pozabite, ker. zelo velika količina podatkov se obdeluje in disk tega ne zmore. CPU z ničelno razbremenitvijo je bolj resničen. Res je, za to morate imeti na zalogi 200+ Gb CPU RAM-a, kar tudi ni poceni. In eno besedilo bo ustvarjeno približno 20-40 minut, saj ga še ni bilo mogoče vzporediti na dveh video karticah. Kot lahko vidite na spodnjem posnetku zaslona, ​​je bila pri ustvarjanju vključena samo ena grafična kartica in še to samo za četrtino pomnilnika. Treba je še ugotoviti, zakaj ni uporabljenih vseh 24 GB,
Nevronska mreža YaLM 100B v praksi.No, na koncu bom rekel, da je mogoče teči celo na eni RTX 3070 TI. Toda v tem ni posebnega smisla, ker. NVMe vam ne bo omogočil hitre obdelave 150 GB podatkov v zamenjavi, ki so v dodatku 96 GB RAM-a.
Nevronska mreža YaLM 100B v praksi.

Če povzamem

Seveda bom še poskušal najti optimalne poti zagona. Toda do zdaj sem prišel do zaključka, da je YaLM 100b predrag/prepočasen za moje naloge. Za isti denar bodo ljudje pisali veliko več in veliko bolje. Ampak mislim, da je začasno, bomo videli. Če potrebujete pomoč pri zagonu, nastavitvi yalma ali želite videti rezultate na svojih kontekstnih primerih, pišite na mail ali telegram.

pskucherov
Rate author
Add a comment

  1. Olha

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

    Reply
  2. Данила

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

    Reply
  3. Дмитрий

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

    Reply