Neuronska mreža YaLM 100B u praksi.

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

Krajem lipnja Yandex
je u javnost pustio neuronsku mrežu sa 100 milijardi parametara pod nazivom YaLM 100B . To je najveća neuronska mreža slična GPT-u u javnoj domeni. Govori o tome kako su učili, pokazali najbolje primjere i za što je neuron sposoban. Ali je li to tako dobro u praksi i primjenjivo kod kuće? U članku se o tome šuti, štoviše, nije ga lako pokrenuti i provjeriti, jer je potrebno približno 200 Gb GPU RAM-a. Ovaj komentar na Habréu
najtočnije otkriva situaciju
.

Navodno, u Yandexu, svi takvi pametni ljudi, a nisu ni objavili normalan How-to. Ne postoji api za veliki model, nema gotovog ogoljenog srednjeg ili malog modela za obične ljude (u Google Colabu). Nije dan primjer kako postaviti model, kako generirati tekst. Samo što članak ukazuje na par nijansi za štrebere i to je to. Dovoljno je malo bolje pogledati kako je to banka napravila sa slovom “C” i učiniti isto. Stekao sam dojam da je ovaj model samo jedan od neuspjelih eksperimenata koji je bilo šteta baciti u smeće, pa je objavljen u Open Sourceu da pokaže kakve super modele Yandex stvara, a štoviše, open source je!

Na internetu postoji mnogo pitanja kako pokrenuti yalm ili čak pokušati online, ali na to nema odgovora. Bio sam među korisnicima koji su postavljali ta pitanja. I krenuli s otkrivanjem. Budući da mi je stvarno trebao način generiranja tekstova za financijske robote. Kako bi mogli predvidjeti ne samo vrijednosti, nego i komentirati to tekstualno, na temelju financijskih izvješća. Bit će to u biti isto što rade financijski analitičari, samo uz korištenje umjetne inteligencije. Postoje dva načina za pokretanje yalma.
Iznajmite server u oblakus 200+ Gb GPU RAM-a ili modificirajte kod i pokrenite s deepspeed zero offloadom (kada GPU sekvencijalno obrađuje dio neuronske mreže, a ostatak se pohranjuje u CPU RAM ili NVMe). Prvi je vrlo skup, oko 2500 rubalja po satu ili 1,7 milijuna mjesečno. Druga nepoznanica, jer kod u repozitoriju nije dat, samo
savjeti u izdanju repozitorija, što nije teško učiniti. Počnimo jednostavno.

Upute za pokretanje YaLM 100B

1. Iznajmljujemo 200 GB GPU RAM-a, na primjer ovdje .

Neuronska mreža YaLM 100B u praksi.

Potrebno vam je najmanje 200 GB ukupne video memorije. 8×40 = 320 GB. Samo ovaj odgovara. Manje od 200 je nemoguće, više je moguće. Strelica označava CPU RAM, ne gledamo ga. Ona može biti bilo tko.

Navodimo disk od cca 300 GB, tako da uz rezervni i po mogućnosti brzi disk, jer. deseci gigabajta podataka bit će prebačeni na njega i s njega.

Neuronska mreža YaLM 100B u praksi.Prilikom stvaranja u izvorima odaberite Ubuntu ML (strojno učenje). Ovo je obavezno kako bi video kartice bile konfigurirane i ne treba ništa dodatno instalirati.

Prilikom izrade poslužitelja postoje nijanse s kvotama, možda ćete imati osjećaj da oprema nije dostupna, ali zapravo samo trebate povećati kvote u postavkama. Nakon što se poslužitelj aktivira (može potrajati 5-10 minuta), spojite se na poslužitelj putem ssh-a ili izravno u web konzoli na stranici poslužitelja i izvršite naredbu.

nvidia-smi

Rezultat bi trebala biti tablica s video karticama, verzijom upravljačkog programa i cuda. Otprilike ovako.
Neuronska mreža YaLM 100B u praksi.U zaglavlju verzije upravljačkog programa i gdje. Na lijevoj strani su brojevi uređaja, u sredini je veličina memorije uređaja. Ako nemate ove informacije, tada ste prikupili poslužitelj iz pogrešnog izvora. Potreban je Ubuntu ML (Machine Learnong), kao što je gore opisano.

2. Klonirajte repozitorij s YaLM-om

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

Klonirajte u svoju početnu mapu tako da nakon toga ne morate uređivati ​​konfiguraciju dockera. Ako je klonirano negdje drugdje,
idite ovdje i dodajte put do mjesta kloniranja.

3. Preuzmite kontrolne točke (osnovne informacije o obuci modela)

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

Ovo će trajati oko sat vremena. Kako ne bismo gubili vrijeme uzalud, kreiramo novu ssh vezu i paralelno s tim počinjemo graditi docker kontejner.

4. Instalirajte nvidiadocker 2

Normalni docker nije prikladan,
potreban je nvidia-docker2 .
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#setting-up-nvidia-container-toolkit

5. Izrada spremnika za YaLM

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

Također je oko sat vremena.

Life hack. Možete preuzeti kontrolne točke, instalirati docker i izgraditi spremnik na jeftinom poslužitelju s jednom video karticom. Tako će biti i s vremenom, pa možete malo uštedjeti. Nakon sastavljanja na jeftinom poslužitelju, brišemo ga i stvaramo borbeni poslužitelj pomoću diska s jeftinog poslužitelja. Tada nećete preplatiti vrijeme čekanja na montažu i ispumpavanje kontrolnih točaka.

6. Pripremite sadržaj

6.1 Kontrolne točke

Nakon završetka preuzimanja kontrolnih točaka, morate ih ubaciti u konfiguracije. Postoje dva načina, ispravni parametri ili prijenos kontrolnih točaka. Svugdje se očekuje da će kontrolne točke biti u glavnom direktoriju projekta, odnosno ono što je preuzeto mora se prenijeti iz gornje mape za preuzimanje. Budući da je u mapi yalm izvršiti

mv ./download/yalm100b_checkpoint ./

Ili promijenite staze do datoteka u datotekama primjera
https://github.com/yandex/YaLM-100B/blob/c91b7d7fe8dbf39c9e307d6d324446d0df136a23/examples/generate_interactive.sh#L8-L9

6.2 Video kartice

Provjeravamo jesu li video kartice ispravno postavljene. Ako imate osam video kartica, onda ništa ne treba mijenjati. Ako je broj drugačiji, mijenjamo ove retke
Neuronska mreža YaLM 100B u praksi.. U drugom retku, brojeve korištenih uređaja (možete ih pogledati u nvidia-smi, koji ste već pokrenuli). U četvrtom, njihov broj.

7. Pokrenite docker spremnik

Budući da ste u mapi yalm, izvršite naredbu

sudo bash ./docker/run.sh

Ako je sve u redu, bit ćete prebačeni u spremnik u kojem trebate otići u mapu yalm u svom početnom direktoriju.

cd ~/yalm

8. Pokrenite primjer iz YaLM 100B

Spremni smo pokrenuti jedan od primjera. Oni su opisani
ovdje .

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

Budite strpljivi, ostaje pričekati još 10-15 minuta dok se ne izradi GPT model i učitaju težine s kontrolnih točaka.
Neuronska mreža YaLM 100B u praksi.

Kada se izgradnja završi, MegatronML će od vas tražiti da unesete kontekst za generiranje teksta. Budite oprezni kada tipkate. Pod određenim okolnostima dolazi do pogreške, program se ruši i trebate ponovno pokrenuti sklop. Stoga je bolje koristiti primjere koji uzimaju tekst iz datoteke.

9. Rezultati rada

Neuronska mreža YaLM 100B u praksi.
Neuronska mreža YaLM 100B u praksi.Izgleda zanimljivo. Naravno, ovo su samo dobri primjeri. Proveo sam test na različitim uzorcima. Kao što se i očekivalo, što je bolji kontekst, to će se generirati smisleniji tekst. Cijeli skup eksperimentalnih generacija možete pogledati na poveznicama:

Za cijenu, koštalo me oko 9 tisuća rubalja za najam poslužitelja različitih kapaciteta od treninga i od pripreme do generacije. Posebno razočaranje bilo je to što ne možete odmah generirati sve. Za početak je potrebno jako puno vremena i tekst se ne generira onoliko brzo koliko bismo željeli, s obzirom na cijenu poslužitelja po satu.
Neuronska mreža YaLM 100B u praksi. 

Kako pokrenuti YaLM bez 200 Gb GPU RAM-a?

Morate dodati deepspeed zero offload u konfiguraciju. Za one koji znaju o čemu govorimo, bit će to vrlo lako učiniti. Za druge to uopće nije trivijalan zadatak. Važno je znati da prijenos može biti u CPU RAM-u ili NVMe. Možete zaboraviti na NVMe u ovom trenutku, jer. vrlo velika količina podataka se obrađuje i disk se s tim ne može nositi. CPU bez opterećenja je stvarniji. Istina, za ovo morate imati 200+ Gb CPU RAM-a na zalihi, što također nije jeftino. A jedan tekst će se generirati oko 20-40 minuta, budući da ga još nije bilo moguće paralelizirati na dvije video kartice. Kao što možete vidjeti na slici ispod, samo je jedna video kartica bila uključena u generiranje, i to samo za četvrtinu memorije. Ostaje za vidjeti zašto nije iskorišteno svih 24 GB,
Neuronska mreža YaLM 100B u praksi.Pa, zaključno, reći ću da je moguće raditi čak i na jednom RTX 3070 TI. Ali u tome nema posebnog smisla, jer. NVMe vam neće dopustiti da brzo obradite 150 GB podataka u swapu, koji su u dodatku 96 GB RAM-a.
Neuronska mreža YaLM 100B u praksi.

Sumirati

Naravno, i dalje ću pokušati pronaći optimalne staze lansiranja. Ali do sada sam došao do zaključka da je YaLM 100b preskup / prespor za moje zadatke. Za isti novac ljudi će pisati puno više i puno bolje. Ali mislim da je to privremeno, vidjet ćemo. Ako trebate pomoć oko pokretanja, postavljanja yalma ili želite vidjeti rezultate na svojim primjerima konteksta, pišite na mail ili telegram.

pskucherov
Rate author
Add a comment

  1. Olha

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

    Reply
  2. Данила

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

    Reply
  3. Дмитрий

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

    Reply