Neuralt netværk YaLM 100B i praksis.

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

I slutningen af ​​juni udgav Yandex
et neuralt netværk med 100 milliarder parametre kaldet YaLM 100B til offentligheden . Det er det største GPT-lignende neurale netværk i det offentlige domæne. Den fortæller om, hvordan de underviste, viste de bedste eksempler, og hvad neuronen er i stand til. Men er det så godt i praksis og anvendeligt derhjemme? Artiklen er tavs om dette, desuden er det ikke så nemt at køre og tjekke det, da der kræves cirka 200 Gb GPU RAM. Denne kommentar om Habré
afslører situationen mest præcist
.

Angiveligt, i Yandex, alle sådanne smarte mennesker, og de postede ikke engang en normal How-to. Der er ingen api til en stor model, der er ingen færdiglavet afklebet mellem eller lille model til almindelige mennesker (i Google Colab). Der er ikke givet et eksempel på, hvordan man opsætter modellen, hvordan man genererer tekst. Det er bare, at artiklen angiver et par nuancer for nørder, og det er det. Det er nok at se nærmere på, hvordan banken gjorde det med bogstavet “C” og gør det samme. Jeg fik det indtryk, at denne model blot er et af de mislykkede eksperimenter, der var ærgerligt at smide den i skraldespanden, så den blev lagt op i Open Source for at vise, hvilke fantastiske modeller Yandex skaber, og desuden er det open source!

Der er mange spørgsmål på internettet, hvordan man kører yalm eller endda prøver online, men der er ingen svar på dette. Jeg var blandt de brugere, der stillede disse spørgsmål. Og gå i gang med at finde ud af det. Da jeg virkelig havde brug for en måde at generere tekster til finansielle robotter på. Så de kan forudsige ikke kun værdierne, men også kommentere det i tekst, baseret på finansielle rapporter. I bund og grund vil det være det samme, som finansanalytikere gør, kun med brug af kunstig intelligens. Der er to måder at køre yalm på.
Lej en server i skyenmed 200+ Gb GPU RAM eller færdiggør koden og kør den ved hjælp af deepspeed zero offload (når GPU’en sekventielt behandler en del af det neurale netværk, og resten er lagret i CPU RAM eller NVMe). Den første er meget dyr, omkring 2500 rubler i timen eller 1,7 millioner om måneden. Den anden ukendte, fordi koden i repository er ikke angivet, kun
hints i udstedelsen af ​​repository, hvilket ikke er svært at gøre. Lad os starte enkelt.

YaLM 100B lanceringsvejledning

1. Vi lejer 200 GB GPU RAM, for eksempel her .

Neuralt netværk YaLM 100B i praksis.

Du skal bruge mindst 200 GB samlet videohukommelse. 8×40 = 320 GB. Kun denne passer. Mindre end 200 er umuligt, mere er muligt. Pilen angiver CPU RAM, vi ser ikke på den. Hun kan være hvem som helst.

Vi angiver en disk på omkring 300 GB, så med en ekstra og gerne en hurtig disk, fordi. titusvis af gigabyte data vil blive overført til og fra det.

Neuralt netværk YaLM 100B i praksis.Når du opretter i kilder, skal du vælge Ubuntu ML (Machine Learning). Dette er obligatorisk, så videokortene er konfigureret og intet skal installeres yderligere.

Efter at serveren er aktiveret (det kan tage 5-10 minutter), skal du oprette forbindelse til serveren via ssh eller direkte i webkonsollen på serversiden og udføre kommandoen.

nvidia-smi

Resultatet skulle være et bord med videokort, driverversion og cuda. Sådan cirka.
Neuralt netværk YaLM 100B i praksis.I driverversionens overskrift og hvor. På venstre side er enhedsnumrene, i midten er størrelsen på enhedshukommelsen. Hvis du ikke har disse oplysninger, så har du indsamlet serveren fra den forkerte kilde. Ubuntu ML (Machine Learnong) er påkrævet, som beskrevet ovenfor.

2. Klon depotet med YaLM

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

Klon til din hjemmemappe, så du ikke behøver at redigere docker-konfigurationen bagefter. Hvis klonet et andet sted, så
gå her og tilføj stien til det sted, hvor den er klonet.

3. Download kontrolpunkter (grundlæggende model træningsoplysninger)

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

Dette vil tage omkring en time. For ikke at spilde tid forgæves, opretter vi en ny ssh-forbindelse og sideløbende begynder vi at bygge en docker-container.

4. Installer nvidiadocker 2

Normal docker er ikke egnet,
nvidia-docker2 er nødvendig .
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#setting-up-nvidia-container-toolkit

5. Opbygning af en container til YaLM

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

Det er også omkring en time.

Life hack. Du kan downloade checkpoints, installere docker og bygge en container på en billig server med ét videokort. Det bliver det samme med tiden, så du kan spare lidt. Efter montering på en billig server, sletter vi den, og opretter en kampserver ved hjælp af en disk fra en billig server. Så betaler du ikke for meget tid til at vente på forsamlingen og udpumpe checkpoints.

6. Forbered indhold

6.1 Kontrolpunkter

Når overførslen af ​​kontrolpunkter er overstået, skal du smutte dem ind i konfigurationerne. Der er to måder, korrekte parametre eller overførselskontrolpunkter. Overalt forventes det, at tjekpunkterne ligger i henholdsvis projektets hovedbibliotek, det downloadede skal overføres fra downloadmappen ovenfor. At være i yalm-mappen udføre

mv ./download/yalm100b_checkpoint ./

Eller skift stierne til filerne i eksempelfilerne
https://github.com/yandex/YaLM-100B/blob/c91b7d7fe8dbf39c9e307d6d324446d0df136a23/examples/generate_interactive.sh#L8-L9

6.2 Videokort

Vi tjekker, at videokortene er korrekt indstillet. Hvis du har otte videokort, skal der ikke ændres noget. Hvis antallet er anderledes, så ændrer vi disse linjer
Neuralt netværk YaLM 100B i praksis.. I anden linje, numrene på de enheder, der bruges (du kan se på dem i nvidia-smi, som du allerede har lanceret). I den fjerde, deres nummer.

7. Kør docker-beholderen

Når du er i yalm-mappen, skal du udføre kommandoen

sudo bash ./docker/run.sh

Hvis alt er OK, vil du blive ført til en container, hvor du skal gå til yalm-mappen i din hjemmemappe.

cd ~/yalm

8. Kør eksemplet fra YaLM 100B

Vi er klar til at lancere et af eksemplerne. De er beskrevet
her .

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

Vær tålmodig, det er tilbage at vente yderligere 10-15 minutter, indtil GPT2-modellen er oprettet, og vægtene fra kontrolpunkterne er indlæst.
Neuralt netværk YaLM 100B i praksis.

Når opbygningen er færdig, vil MegatronML bede dig om at indtaste en kontekst for at generere tekst. Vær forsigtig, når du skriver. Under visse omstændigheder opstår der en fejl, programmet går ned, og du skal starte samlingen igen. Derfor er det bedre at bruge eksempler, der tager tekst fra en fil.

9. Resultater af arbejdet

Neuralt netværk YaLM 100B i praksis.
Neuralt netværk YaLM 100B i praksis.Ser interessant ud. Det er selvfølgelig bare gode eksempler. Jeg kørte testen på forskellige prøver. Som forventet, jo bedre kontekst, jo mere meningsfuld tekst vil blive genereret. Det fulde sæt af eksperimentelle generationer kan ses på linkene:

Til prisen kostede det mig omkring 9 tusind rubler for at leje servere med forskellig kapacitet fra træning og fra forberedelse til generation. En særlig skuffelse var, at du ikke kan generere alt med det samme. Det tager meget lang tid at starte, og teksten genererer ikke så hurtigt, som vi ønsker, givet serverens omkostninger i timen.
Neuralt netværk YaLM 100B i praksis. 

Hvordan kører man YaLM uden 200 Gb GPU RAM?

Du skal tilføje deepspeed zero offload til konfigurationen. For dem, der ved, hvad vi taler om, vil det være meget nemt at gøre det. For andre er dette slet ikke en triviel opgave. Det er vigtigt at vide, at aflastning kan være enten i CPU RAM eller NVMe. Du kan glemme alt om NVMe i øjeblikket, fordi. en meget stor mængde data bliver behandlet, og disken kan ikke klare det. Nul aflast CPU er mere reel. Sandt nok, for dette skal du have 200+ Gb CPU RAM på lager, hvilket heller ikke er billigt. Og én tekst vil blive genereret i omkring 20-40 minutter, da det endnu ikke har været muligt at parallelisere den på to videokort. Som du kan se på skærmbilledet nedenfor, var kun ét videokort involveret i generationen, og da kun for en fjerdedel af hukommelsen. Det er tilbage at se, hvorfor alle 24 GB ikke bliver brugt,
Neuralt netværk YaLM 100B i praksis.Afslutningsvis vil jeg sige, at det er muligt at køre selv på én RTX 3070 TI. Men det er der ingen særlig mening i, fordi. NVMe vil ikke tillade dig hurtigt at behandle 150 GB data i swap, som er i vedlægget af 96 GB RAM.
Neuralt netværk YaLM 100B i praksis.

Opsummering

Jeg vil selvfølgelig stadig forsøge at finde de optimale lanceringsveje. Men indtil videre er jeg kommet frem til, at YaLM 100b er for dyr/for langsom til mine opgaver. For de samme penge vil folk skrive meget mere og meget bedre. Men jeg tror det er midlertidigt, vi får se. Hvis du har brug for hjælp til lancering, opsætning af yalm eller ønsker at se resultaterne på dine konteksteksempler, så skriv til mailen eller telegrammet.

pskucherov
Rate author
Add a comment

  1. Olha

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

    Svar
  2. Данила

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

    Svar
  3. Дмитрий

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

    Svar