Neuralt nätverk YaLM 100B i praktiken.

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

I slutet av juni släppte Yandex
ett neuralt nätverk med 100 miljarder parametrar kallat YaLM 100B för allmänheten . Det är det största GPT-liknande neurala nätverket i det offentliga området. Den berättar om hur de undervisade, visade de bästa exemplen och vad neuronen är kapabel till. Men är det så bra i praktiken och applicerbart hemma? Artikeln är tyst om detta, dessutom är det inte så lätt att köra och kontrollera det, eftersom det krävs cirka 200 Gb GPU RAM. Denna kommentar om Habré
avslöjar situationen mest exakt
.

Påstås, i Yandex, alla sådana smarta människor, och de postade inte ens en normal How-to. Det finns inget api för en stor modell, det finns ingen färdig avskalad mellan- eller liten modell för vanliga människor (i Google Colab). Inget exempel ges på hur man ställer upp modellen, hur man genererar text. Det är bara det att artikeln indikerar ett par nyanser för nördar och det är allt. Det räcker med att titta närmare på hur banken gjorde det med bokstaven ”C” och göra detsamma. Jag fick intrycket att den här modellen bara är ett av de misslyckade experimenten som var synd att kasta den i papperskorgen, så den lades upp i Open Source för att visa vilka fantastiska modeller Yandex skapar, och dessutom är det öppen källkod!

Det finns många frågor på Internet hur man kör Yalm eller till och med försöker online, men det finns inga svar på detta. Jag var bland användarna som ställde dessa frågor. Och satte igång att ta reda på det. Eftersom jag verkligen behövde ett sätt att generera texter för finansiella robotar. Så att de inte bara kan förutsäga värdena, utan också kommentera det i text, baserat på finansiella rapporter. I grund och botten kommer det att vara detsamma som vad finansanalytiker gör, bara med användning av artificiell intelligens. Det finns två sätt att köra Yalm.
Hyr en server i molnetmed 200+ Gb GPU RAM eller slutför koden och kör den med deepspeed zero offload (när GPU:n sekventiellt bearbetar en del av det neurala nätverket och resten lagras i CPU RAM eller NVMe). Den första är mycket dyr, cirka 2500 rubel per timme eller 1,7 miljoner per månad. Den andra okända, eftersom koden i förvaret tillhandahålls inte, bara
tips i frågan om förvaret, vilket inte är svårt att göra. Låt oss börja enkelt.

YaLM 100B Lanseringsinstruktioner

1. Vi hyr 200 GB GPU RAM, till exempel här .

Neuralt nätverk YaLM 100B i praktiken.

Du behöver minst 200 GB totalt videominne. 8×40 = 320 GB. Bara den här passar. Mindre än 200 är omöjligt, mer är möjligt. Pilen indikerar CPU RAM, vi tittar inte på det. Hon kan vara vem som helst.

Vi anger en disk på cirka 300 GB, så att med en reserv och helst en snabb disk, eftersom. tiotals gigabyte data kommer att överföras till och från den.

Neuralt nätverk YaLM 100B i praktiken. När du skapar i källor, välj Ubuntu ML (Machine Learning). Detta är obligatoriskt så att grafikkorten är konfigurerade och ingenting behöver installeras extra.

Efter att servern har aktiverats (det kan ta 5-10 minuter), anslut till servern via ssh eller direkt i webbkonsolen på serversidan och kör kommandot.

nvidia-smi

Resultatet ska bli ett bord med grafikkort, drivrutinsversion och cuda. Ungefär så här.
Neuralt nätverk YaLM 100B i praktiken. I drivrutinsversionens rubrik och var. På vänster sida finns enhetsnumren, i mitten är storleken på enhetens minne. Om du inte har denna information har du hämtat servern från fel källa. Ubuntu ML (Machine Learnong) krävs, enligt beskrivningen ovan.

2. Klona förvaret med YaLM

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

Klona till din hemmapp så att du inte behöver redigera docker-konfigurationen efteråt. Om du klonas någon annanstans,
gå hit och lägg till sökvägen där du klonades.

3. Ladda ner checkpoints (information om grundläggande modellutbildning)

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

Detta kommer att ta ungefär en timme. För att inte slösa tid förgäves skapar vi en ny ssh-koppling och parallellt börjar vi bygga en hamnarcontainer.

4. Installera nvidiadocker 2

Normal docker är inte lämplig,
nvidia-docker2 behövs .
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#setting-up-nvidia-container-toolkit

5. Bygga en container för YaLM

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

Det är också ungefär en timme.

Life hack. Du kan ladda ner checkpoints, installera docker och bygga en container på en billig server med ett grafikkort. Det blir samma sak med tiden, så du kan spara lite. Efter montering på en billig server tar vi bort den och skapar en stridsserver med en disk från en billig server. Då betalar du inte för mycket tid för att vänta på monteringen och pumpa ut checkpoints.

6. Förbered innehåll

6.1 Kontrollpunkter

När nedladdningen av kontrollpunkter är över måste du skjuta in dem i konfigurationerna. Det finns två sätt, korrekta parametrar eller överföringskontrollpunkter. Överallt förväntas det att checkpoints kommer att finnas i huvudkatalogen för projektet, respektive det som laddas ner måste överföras från nedladdningsmappen ovan. Att vara i Yalm-mappen exekvera

mv ./download/yalm100b_checkpoint ./

Eller ändra sökvägarna till filerna i exempelfilerna
https://github.com/yandex/YaLM-100B/blob/c91b7d7fe8dbf39c9e307d6d324446d0df136a23/examples/generate_interactive.sh#L8-L9

6.2 Grafikkort

Vi kontrollerar att grafikkorten är korrekt inställda. Om du har åtta grafikkort behöver ingenting ändras. Om numret är annorlunda, så ändrar vi dessa rader
Neuralt nätverk YaLM 100B i praktiken. . På den andra raden, numren på de enheter som används (du kan titta på dem i nvidia-smi, som du redan har lanserat). I den fjärde, deras antal.

7. Kör docker-behållaren

Befinna dig i Yalm-mappen, kör kommandot

sudo bash ./docker/run.sh

Om allt är OK kommer du att tas till en behållare där du måste gå till yalm-mappen i din hemkatalog.

cd ~/yalm

8. Kör exemplet från YaLM 100B

Vi är redo att lansera ett av exemplen. De beskrivs
här .

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

Ha tålamod, det återstår att vänta ytterligare 10-15 minuter tills GPT2-modellen skapas och vikterna från kontrollpunkterna laddas.
Neuralt nätverk YaLM 100B i praktiken.

När bygget är klart kommer MegatronML att uppmana dig att ange ett sammanhang för att generera text. Var försiktig när du skriver. Under vissa omständigheter uppstår ett fel, programmet kraschar och du måste starta monteringen igen. Därför är det bättre att använda exempel som tar text från en fil.

9. Resultat av arbetet

Neuralt nätverk YaLM 100B i praktiken.
Neuralt nätverk YaLM 100B i praktiken. Ser intressant ut. Naturligtvis är detta bara bra exempel. Jag körde testet på olika prover. Som förväntat, ju bättre sammanhang, desto mer meningsfull text kommer att genereras. Den fullständiga uppsättningen av experimentella generationer kan ses på länkarna:

För priset kostade det mig cirka 9 tusen rubel för att hyra servrar med olika kapacitet från träning och från förberedelse till generation. En särskild besvikelse var att du inte kan generera allt direkt. Det tar väldigt lång tid att starta och texten genererar inte så snabbt som vi skulle vilja, med tanke på kostnaden för servern per timme.
Neuralt nätverk YaLM 100B i praktiken.  

Hur kör man YaLM utan 200 Gb GPU RAM?

Du måste lägga till deepspeed zero offload till konfigurationen. För de som vet vad vi pratar om blir det väldigt enkelt att göra det. För andra är detta inte en trivial uppgift alls. Det är viktigt att veta att avlastning kan vara antingen i CPU RAM eller NVMe. Du kan glömma NVMe för tillfället, eftersom. en mycket stor mängd data bearbetas och disken klarar inte av det. Zero offload CPU är mer verklig. Sant, för detta måste du ha 200+ Gb CPU RAM i lager, vilket inte heller är billigt. Och en text kommer att genereras i cirka 20-40 minuter, eftersom det ännu inte har varit möjligt att parallellisera den på två grafikkort. Som du kan se i skärmdumpen nedan var endast ett grafikkort inblandat i generationen, och då bara för en fjärdedel av minnet. Det återstår att se varför alla 24 GB inte används,
Neuralt nätverk YaLM 100B i praktiken. Tja, avslutningsvis kommer jag att säga att det är möjligt att köra även på en RTX 3070 TI. Men det finns ingen speciell mening med detta, eftersom. NVMe kommer inte att tillåta dig att snabbt bearbeta 150 GB data i bytet, som finns i bilagan till 96 GB RAM.
Neuralt nätverk YaLM 100B i praktiken.

Summering

Självklart ska jag fortfarande försöka hitta de optimala lanseringsvägarna. Men hittills har jag kommit fram till att YaLM 100b är för dyr/för långsam för mina uppgifter. För samma pengar kommer folk att skriva mycket mer och mycket bättre. Men jag tror att det är tillfälligt, vi får se. Om du behöver hjälp med att starta, ställa in Yalm eller vill se resultaten på dina sammanhangsexempel, skriv till mail eller telegram.

pskucherov
Rate author
Add a comment

  1. Olha

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

    Svara
  2. Данила

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

    Svara
  3. Дмитрий

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

    Svara