Neuroninis tinklas YaLM 100B praktikoje.

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

Birželio pabaigoje „Yandex
“ visuomenei išleido neuroninį tinklą su 100 milijardų parametrų, vadinamą YaLM 100B . Tai didžiausias į GPT panašus neuroninis tinklas viešajame domene. Jame pasakojama apie tai, kaip jie mokė, rodė geriausius pavyzdžius ir ką sugeba neuronas. Bet ar tai taip gerai praktikoje ir pritaikoma namuose? Straipsnyje apie tai tylima, be to, paleisti ir patikrinti nėra taip paprasta, nes reikia maždaug 200 Gb GPU RAM. Šis Habré
komentaras tiksliausiai atskleidžia situaciją
.

Tariamai „Yandex“ visi tokie protingi žmonės ir net nepaskelbė įprastų patarimų. Nėra api dideliam modeliui, nėra paruošto nulupto vidutinio ar mažo modelio paprastiems žmonėms (Google Colab). Nepateikiamas pavyzdys, kaip sukurti modelį, kaip generuoti tekstą. Tiesiog straipsnyje nurodoma pora niuansų vėplai ir tiek. Užtenka atidžiau pažvelgti, kaip tai padarė bankas su raide „C“ ir padaryti tą patį. Man susidarė įspūdis, kad šis modelis yra tik vienas iš nesėkmingų eksperimentų, kuriuos buvo gaila išmesti į šiukšliadėžę, todėl jis buvo patalpintas Open Source, kad parodytų, kokius puikius modelius kuria Yandex, be to, tai yra atvirasis kodas!

Internete yra daug klausimų, kaip paleisti yalm ar net išbandyti internete, tačiau atsakymų į tai nėra. Aš buvau tarp vartotojų, kurie uždavė šiuos klausimus. Ir imkitės tai išsiaiškinti. Kadangi man labai reikėjo būdo sugeneruoti tekstus finansiniams robotams. Kad galėtų nuspėti ne tik vertes, bet ir komentuoti tai tekstu, remdamiesi finansinėmis ataskaitomis. Iš esmės tai bus tas pats, ką daro finansų analitikai, tik naudojant dirbtinį intelektą. Yra du būdai paleisti yalm.
Išsinuomoti serverį debesyjesu 200+ Gb GPU RAM arba modifikuokite kodą ir paleiskite su gilaus greičio nuliniu iškrovimu (kai GPU nuosekliai apdoroja dalį neuroninio tinklo, o likusi dalis saugoma CPU RAM arba NVMe). Pirmasis yra labai brangus, apie 2500 rublių per valandą arba 1,7 mln. Antrasis nežinomas, nes saugykloje esantis kodas nepateiktas, tik
užuominos apie saugyklos išdavimą, ką padaryti nesunku. Pradėkime nuo paprasto.

YaLM 100B paleidimo instrukcijos

1. Nuomojame 200 GB GPU RAM, pavyzdžiui čia .

Neuroninis tinklas YaLM 100B praktikoje.

Jums reikia bent 200 GB bendros vaizdo atminties. 8×40 = 320 GB. Tik šitas tinka. Mažiau nei 200 neįmanoma, galima daugiau. Rodyklė rodo procesoriaus RAM, mes į ją nežiūrime. Ji gali būti bet kas.

Nurodome apie 300 GB diską, kad su atsarginiu ir pageidautina greitu disku, nes. į ją ir iš jos bus perkelta dešimtys gigabaitų duomenų.

Neuroninis tinklas YaLM 100B praktikoje.Kurdami šaltiniuose pasirinkite Ubuntu ML (Machine Learning). Tai būtina, kad vaizdo plokštės būtų sukonfigūruotos ir nieko papildomai diegti nereikėtų.

Kuriant serverį yra niuansų su kvotomis, gali susidaryti jausmas, kad įrangos nėra, bet iš tikrųjų reikia tiesiog padidinti kvotas nustatymuose. Suaktyvinus serverį (tai gali užtrukti 5-10 minučių), prisijunkite prie serverio per ssh arba tiesiogiai žiniatinklio konsolėje serverio puslapyje ir vykdykite komandą.

nvidia-smi

Rezultatas turėtų būti lentelė su vaizdo plokštėmis, tvarkyklės versija ir cuda. Maždaug taip.
Neuroninis tinklas YaLM 100B praktikoje.Tvarkyklės versijos antraštėje ir kur. Kairėje pusėje yra įrenginių numeriai, centre – įrenginio atminties dydis. Jei neturite šios informacijos, vadinasi, surinkote serverį iš netinkamo šaltinio. Kaip aprašyta aukščiau, reikalingas Ubuntu ML (Machine Learnong).

2. Klonuokite saugyklą naudodami YaLM

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

Klonuokite į savo namų aplanką, kad vėliau nereikėtų redaguoti docker konfigūracijos. Jei klonuota kur nors kitur,
eikite čia ir pridėkite kelią iki klonavimo vietos.

3. Atsisiųskite kontrolinius taškus (pagrindinę modelio mokymo informaciją)

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

Tai užtruks apie valandą. Kad negaištume laiko veltui, sukuriame naują ssh ryšį ir lygiagrečiai pradedame statyti dokerio konteinerį.

4. Įdiekite nvidiadocker 2

Įprastas dockeris netinka,
reikia nvidia-docker2 .
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#setting-up-nvidia-container-toolkit

5. YaLM konteinerio kūrimas

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

Tai taip pat apie valandą.

Gyvenimo įsilaužimas. Pigiame serveryje su viena vaizdo plokšte galite atsisiųsti patikros punktus, įdiegti dokerį ir pastatyti konteinerį. Laikui bėgant bus tas pats, todėl galite šiek tiek sutaupyti. Surinkę pigiame serveryje, ištriname jį ir sukuriame kovinį serverį naudodami diską iš pigaus serverio. Tada nepermokėsite laiko už surinkimo laukimą ir kontrolinių punktų išsiurbimą.

6. Paruoškite turinį

6.1 Kontroliniai taškai

Pasibaigus kontrolinių punktų atsisiuntimui, turite juos įtraukti į konfigūracijas. Yra du būdai: taisyti parametrus arba perkelti kontrolinius taškus. Visur tikimasi, kad kontroliniai taškai bus pagrindiniame projekto kataloge, atitinkamai, kas atsisiųsta, turi būti perkelta iš aukščiau esančio atsisiuntimo aplanko. Būdami yalm aplanke vykdyti

mv ./download/yalm100b_checkpoint ./

Arba pakeiskite kelius į failus pavyzdiniuose failuose
https://github.com/yandex/YaLM-100B/blob/c91b7d7fe8dbf39c9e307d6d324446d0df136a23/examples/generate_interactive.sh#L8-L9

6.2 Vaizdo plokštės

Patikriname, ar tinkamai nustatytos vaizdo plokštės. Jei turite aštuonias vaizdo plokštes, nieko keisti nereikia. Jei skaičius skiriasi, tai šias eilutes keičiame
Neuroninis tinklas YaLM 100B praktikoje.Antroje eilutėje naudojamų įrenginių numeriai (juos galite pažiūrėti nvidia-smi, kurį jau paleidote). Ketvirtajame – jų skaičius.

7. Paleiskite doko konteinerį

Būdami yalm aplanke, vykdykite komandą

sudo bash ./docker/run.sh

Jei viskas gerai, būsite nukreipti į konteinerį, kuriame turėsite eiti į yalm aplanką savo namų kataloge.

cd ~/yalm

8. Vykdykite pavyzdį iš YaLM 100B

Esame pasirengę paleisti vieną iš pavyzdžių. Jie aprašyti
čia .

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

Būkite kantrūs, belieka palaukti dar 10-15 minučių, kol bus sukurtas GPT modelis ir pakrauti svoriai iš kontrolinių punktų.
Neuroninis tinklas YaLM 100B praktikoje.

Kai kūrimas bus baigtas, MegatronML paragins įvesti kontekstą, kad būtų sukurtas tekstas. Rašydami būkite atsargūs. Tam tikromis aplinkybėmis įvyksta klaida, programa užstringa ir reikia iš naujo pradėti surinkimą. Todėl geriau naudoti pavyzdžius, kurie paima tekstą iš failo.

9. Darbo rezultatai

Neuroninis tinklas YaLM 100B praktikoje.
Neuroninis tinklas YaLM 100B praktikoje.Atrodo įdomiai. Žinoma, tai tik geri pavyzdžiai. Atlikau testą su skirtingais pavyzdžiais. Kaip ir tikėtasi, kuo geresnis kontekstas, tuo prasmingesnis tekstas bus sukurtas. Visą eksperimentinių kartų rinkinį galite peržiūrėti nuorodose:

Už kainą man kainavo apie 9 tūkstančius rublių už skirtingos talpos serverių nuomą nuo treniruočių ir nuo paruošimo iki kartos. Ypatingas nusivylimas buvo tai, kad jūs negalite iš karto sukurti visko. Tai užtrunka labai ilgai, o tekstas generuojamas ne taip greitai, kaip norėtume, atsižvelgiant į serverio valandos kainą.
Neuroninis tinklas YaLM 100B praktikoje. 

Kaip paleisti YaLM be 200 Gb GPU RAM?

Prie konfigūracijos turite pridėti gilaus greičio nulinį iškrovimą. Tiems, kurie žino, apie ką mes kalbame, tai padaryti bus labai paprasta. Kitiems tai visai nereikšminga užduotis. Svarbu žinoti, kad iškrovimas gali būti CPU RAM arba NVMe. Šiuo metu galite pamiršti NVMe, nes. apdorojamas labai didelis duomenų kiekis ir diskas negali su tuo susidoroti. Nulinio iškrovimo procesorius yra realesnis. Tiesa, tam reikia turėti 200+ Gb CPU RAM sandėlyje, kas taip pat nėra pigu. Ir vienas tekstas bus generuojamas apie 20–40 minučių, nes dar nepavyko jo lygiagretinti dviejose vaizdo plokštėse. Kaip matote žemiau esančioje ekrano kopijoje, generuojant buvo įtraukta tik viena vaizdo plokštė, o tada tik ketvirtadalis atminties. Belieka išsiaiškinti, kodėl nepanaudojami visi 24 GB,
Neuroninis tinklas YaLM 100B praktikoje.Na, pabaigai pasakysiu, kad galima paleisti net ir su vienu RTX 3070 TI. Tačiau čia nėra ypatingos prasmės, nes. NVMe neleis greitai apdoroti 150 GB duomenų apsikeitimo sandoryje, kurie yra 96 ​​GB RAM priede.
Neuroninis tinklas YaLM 100B praktikoje.

Apibendrinant

Žinoma, vis tiek stengsiuosi rasti optimalius paleidimo kelius. Tačiau iki šiol padariau išvadą, kad YaLM 100b yra per brangus / per lėtas mano užduotims. Už tuos pačius pinigus žmonės parašys daug daugiau ir daug geriau. Bet manau, kad tai laikina, pažiūrėsim. Jei jums reikia pagalbos paleidžiant, nustatant „yalm“ arba norite pamatyti rezultatus konteksto pavyzdžiuose, rašykite el. paštu arba telegrama.

pskucherov
Rate author
Add a comment

  1. Olha

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

    Reply
  2. Данила

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

    Reply
  3. Дмитрий

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

    Reply