Nevralt nettverk YaLM 100B i praksis.

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

I slutten av juni ga Yandex
ut et nevralt nettverk med 100 milliarder parametere kalt YaLM 100B til offentligheten . Det er det største GPT-lignende nevrale nettverket i det offentlige domene. Den forteller om hvordan de underviste, viste de beste eksemplene og hva nevronet er i stand til. Men er det så bra i praksis og anvendelig hjemme? Artikkelen er taus om dette, dessuten er det ikke så lett å kjøre og sjekke det, siden det kreves omtrent 200 Gb GPU RAM. Denne kommentaren til Habré
avslører situasjonen mest nøyaktig
.

Angivelig, i Yandex, alle slike smarte mennesker, og de la ikke engang ut en vanlig How-to. Det finnes ikke et api for en stor modell, det finnes ingen ferdig nedstrippet middels eller liten modell for vanlige folk (i Google Colab). Det er ikke gitt noen eksempler på hvordan man setter opp modellen, hvordan man genererer tekst. Det er bare det at artikkelen angir et par nyanser for nerder og det er det. Det er nok å se nærmere på hvordan banken gjorde det med bokstaven «C» og gjøre det samme. Jeg fikk inntrykk av at denne modellen bare er et av de mislykkede eksperimentene som var synd å kaste den i søpla, så den ble lagt ut i Open Source for å vise hvilke flotte modeller Yandex lager, og dessuten er den åpen kildekode!

Det er mange spørsmål på Internett hvordan du kjører yalm eller til og med prøver på nettet, men det er ingen svar på dette. Jeg var blant brukerne som stilte disse spørsmålene. Og satte i gang med å finne ut av det. Siden jeg virkelig trengte en måte å generere tekster for finansielle roboter på. Slik at de ikke bare kan forutsi verdiene, men også kommentere det i tekst, basert på økonomiske rapporter. I hovedsak vil det være det samme som finansanalytikere gjør, bare med bruk av kunstig intelligens. Det er to måter å kjøre yalm på.
Lei en server i skyenmed 200+ Gb GPU RAM eller fullfør koden og kjør den ved hjelp av deepspeed zero offload (når GPUen sekvensielt behandler deler av det nevrale nettverket, og resten lagres i CPU RAM eller NVMe). Den første er veldig dyr, omtrent 2500 rubler per time eller 1,7 millioner per måned. Den andre ukjente, fordi koden i depotet er ikke gitt, bare
hint i utgaven av depotet, noe som ikke er vanskelig å gjøre. La oss starte enkelt.

YaLM 100B lanseringsinstruksjoner

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

Nevralt nettverk YaLM 100B i praksis.

Du trenger minst 200 GB totalt videominne. 8×40 = 320 GB. Bare denne passer. Mindre enn 200 er umulig, mer er mulig. Pilen indikerer CPU RAM, vi ser ikke på den. Hun kan være hvem som helst.

Vi angir en disk på ca 300 GB, slik at med en ekstra og helst en rask disk, fordi. titalls gigabyte med data vil bli overført til og fra den.

Nevralt nettverk YaLM 100B i praksis.Når du oppretter i kilder, velg Ubuntu ML (Machine Learning). Dette er obligatorisk slik at skjermkortene er konfigurert og ingenting må installeres i tillegg.

Etter at serveren er aktivert (det kan ta 5-10 minutter), koble til serveren via ssh eller direkte i nettkonsollen på serversiden og utfør kommandoen.

nvidia-smi

Resultatet skal være et bord med skjermkort, driverversjon og cuda. Omtrent slik.
Nevralt nettverk YaLM 100B i praksis.I driverversjonens overskrift og hvor. På venstre side er enhetsnumrene, i midten er størrelsen på enhetsminnet. Hvis du ikke har denne informasjonen, har du hentet serveren fra feil kilde. Ubuntu ML (Machine Learnong) kreves, som beskrevet ovenfor.

2. Klon depotet med YaLM

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

Klon til hjemmemappen din slik at du ikke trenger å redigere docker-konfigurasjonen etterpå. Hvis du er klonet et annet sted, kan
du gå hit og legge til banen til der du er klonet.

3. Last ned sjekkpunkter (grunnleggende modellopplæringsinformasjon)

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

Dette vil ta omtrent en time. For ikke å kaste bort tid forgjeves, oppretter vi en ny ssh-forbindelse og parallelt begynner vi å bygge en docker-container.

4. Installer nvidiadocker 2

Vanlig 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. Bygge en container for YaLM

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

Det er også omtrent en time.

Life hack. Du kan laste ned sjekkpunkter, installere docker og bygge en container på en billig server med ett skjermkort. Det blir det samme med tiden, så du kan spare litt. Etter montering på en billig server, sletter vi den, og lager en kampserver ved å bruke en disk fra en billig server. Da betaler du ikke for mye tid for å vente på montering og utpumping av sjekkpunkter.

6. Forbered innhold

6.1 Kontrollpunkter

Etter at nedlastingen av sjekkpunkter er over, må du legge dem inn i konfigurasjonene. Det er to måter, riktige parametere eller overføringskontrollpunkter. Overalt forventes det at sjekkpunktene skal ligge i henholdsvis hovedkatalogen til prosjektet, det som lastes ned må overføres fra nedlastingsmappen ovenfor. Å være i yalm-mappen utfør

mv ./download/yalm100b_checkpoint ./

Eller endre banene til filene i eksempelfilene
https://github.com/yandex/YaLM-100B/blob/c91b7d7fe8dbf39c9e307d6d324446d0df136a23/examples/generate_interactive.sh#L8-L9

6.2 Skjermkort

Vi sjekker at skjermkortene er riktig innstilt. Hvis du har åtte skjermkort, må ingenting endres. Hvis antallet er forskjellig, så endrer vi disse linjene
Nevralt nettverk YaLM 100B i praksis.I den andre linjen, numrene på enhetene som brukes (du kan se på dem i nvidia-smi, som du allerede har lansert). I den fjerde, nummeret deres.

7. Kjør docker-beholderen

Å være i Yalm-mappen, utfør kommandoen

sudo bash ./docker/run.sh

Hvis alt er OK, vil du bli ført til en beholder der du må gå til yalm-mappen i hjemmekatalogen din.

cd ~/yalm

8. Kjør eksemplet fra YaLM 100B

Vi er klare til å lansere et av eksemplene. De er beskrevet
her .

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

Vær tålmodig, det gjenstår å vente ytterligere 10-15 minutter til GPT2-modellen er opprettet og vektene fra sjekkpunktene er lastet.
Nevralt nettverk YaLM 100B i praksis.

Når bygget er ferdig, vil MegatronML be deg om å angi en kontekst for å generere tekst. Vær forsiktig når du skriver. Under visse omstendigheter oppstår det en feil, programmet krasjer og du må starte sammenstillingen på nytt. Derfor er det bedre å bruke eksempler som tar tekst fra en fil.

9. Resultater av arbeidet

Nevralt nettverk YaLM 100B i praksis.
Nevralt nettverk YaLM 100B i praksis.Ser interessant ut. Dette er selvfølgelig bare gode eksempler. Jeg kjørte testen på forskjellige prøver. Som forventet, jo bedre kontekst, jo mer meningsfull tekst vil bli generert. Hele settet med eksperimentelle generasjoner kan sees på lenkene:

For prisen kostet det meg omtrent 9 tusen rubler for å leie servere med forskjellig kapasitet fra trening og fra forberedelse til generasjon. En spesiell skuffelse var at du ikke kan generere alt umiddelbart. Det tar veldig lang tid å starte og teksten genereres ikke så raskt som vi ønsker, gitt kostnaden for serveren per time.
Nevralt nettverk YaLM 100B i praksis. 

Hvordan kjøre YaLM uten 200Gb GPU RAM?

Du må legge til deepspeed zero offload til konfigurasjonen. For de som vet hva vi snakker om, vil det være veldig enkelt å gjøre det. For andre er ikke dette en triviell oppgave i det hele tatt. Det er viktig å vite at avlastning kan være enten i CPU RAM eller NVMe. Du kan glemme NVMe for øyeblikket, fordi. en veldig stor mengde data blir behandlet og disken kan ikke takle det. Null avlast CPU er mer ekte. Riktignok må du ha 200+ Gb CPU RAM på lager, noe som heller ikke er billig. Og én tekst vil bli generert i omtrent 20-40 minutter, siden det ennå ikke har vært mulig å parallellisere den på to skjermkort. Som du kan se på skjermbildet nedenfor, var kun ett skjermkort involvert i generasjonen, og da bare for en fjerdedel av minnet. Det gjenstår å se hvorfor alle 24 GB ikke brukes,
Nevralt nettverk YaLM 100B i praksis.Vel, avslutningsvis vil jeg si at det er mulig å kjøre selv på en RTX 3070 TI. Men det er ingen spesiell mening i dette, fordi. NVMe vil ikke tillate deg å raskt behandle 150 GB data i byttet, som er i vedlegget til 96 GB RAM.
Nevralt nettverk YaLM 100B i praksis.

Oppsummering

Jeg vil selvfølgelig fortsatt prøve å finne de optimale lanseringsveiene. Men så langt har jeg kommet til at YaLM 100b er for dyr / for treg for mine oppgaver. For de samme pengene vil folk skrive mye mer og mye bedre. Men jeg tror det er midlertidig, vi får se. Hvis du trenger hjelp til å starte, sette opp yalm, eller vil se resultatene på konteksteksemplene dine, skriv til mail eller telegram.

pskucherov
Rate author
Add a comment

  1. Olha

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

    Svar
  2. Данила

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

    Svar
  3. Дмитрий

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

    Svar