Neuronska mreža YaLM 100B u praksi.

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

Krajem juna, Yandex
je javnosti objavio neuronsku mrežu sa 100 milijardi parametara pod nazivom YaLM 100B . To je najveća neuronska mreža slična GPT-u u javnom domenu. Govori o tome kako su učili, pokazali najbolje primjere i za šta je neuron sposoban. Ali da li je to tako dobro u praksi i primjenjivo kod kuće? Članak o tome šuti, štoviše, nije ga tako lako pokrenuti i provjeriti, jer je potrebno oko 200 Gb GPU RAM-a. Ovaj komentar na Habréu
najpreciznije otkriva situaciju
.

Navodno, u Yandexu, svi tako pametni ljudi, a nisu ni objavili normalan How-to. Ne postoji API za veliki model, ne postoji gotovi smanjeni srednji ili mali model za obične ljude (u Google Colab-u). Nije dat 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 uradila sa slovom “C” i učiniti isto. Stekao sam utisak da je ovaj model samo jedan od propalih eksperimenata koje je bilo šteta baciti u smeće, pa je postavljen u Open Source da pokaže koje sjajne modele Yandex stvara, a štaviše, otvoren je kod!

Mnogo je pitanja na internetu kako pokrenuti yalm ili čak pokušati online, ali nema odgovora na ovo. Bio sam među korisnicima koji su postavljali ova pitanja. I kreni da to shvatiš. Pošto mi je zaista bio potreban način da generišem tekstove za finansijske robote. Tako da mogu predvideti ne samo vrednosti, već i komentarisati to u tekstu, na osnovu finansijskih izveštaja. U suštini, to će biti isto što i finansijski analitičari, samo uz korištenje umjetne inteligencije. Postoje dva načina za pokretanje yalma.
Iznajmite server u oblakusa 200+ Gb GPU RAM-a ili modifikujte kod i pokrenite sa nultim opterećenjem duboke brzine (kada GPU sekvencijalno obrađuje deo neuronske mreže, a ostatak se pohranjuje u CPU RAM ili NVMe). Prvi je veoma skup, oko 2500 rubalja po satu ili 1,7 miliona mesečno. Druga nepoznata, jer kod u repozitorijumu nije obezbeđen, samo
nagoveštaji u izdanju spremišta, što nije teško uraditi. 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, mi ga ne gledamo. Ona može biti bilo ko.

Navodimo disk od oko 300 GB, tako da sa rezervnim i po mogućnosti brzim diskom, jer. desetine gigabajta podataka će se prenijeti na njega i sa njega.

Neuronska mreža YaLM 100B u praksi. Kada kreirate u izvorima, odaberite Ubuntu ML (Machine Learning). Ovo je obavezno da bi se video kartice konfigurisale i da se ništa ne mora dodatno instalirati.

Prilikom kreiranja servera postoje nijanse s kvotama, možete imati osjećaj da oprema nije dostupna, ali u stvari trebate samo povećati kvote u postavkama. Nakon što se server aktivira (može potrajati 5-10 minuta), povežite se sa serverom preko ssh-a ili direktno u web konzoli na stranici servera i izvršite naredbu.

nvidia-smi

Rezultat bi trebao biti tabela sa video karticama, verzijom drajvera i cudom. Otprilike ovako.
Neuronska mreža YaLM 100B u praksi. U zaglavlju verzije drajvera i gdje. Na lijevoj strani su brojevi uređaja, u sredini je veličina memorije uređaja. Ako nemate ove informacije, onda ste sakupili server iz pogrešnog izvora. Potreban je Ubuntu ML (Machine Learnong), kao što je gore opisano.

2. Klonirajte spremište sa YaLM

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

Klonirajte u svoju početnu fasciklu tako da ne morate naknadno uređivati ​​docker konfiguraciju. Ako je klonirano negdje drugdje,
idite ovdje i dodajte putanju do mjesta kloniranja.

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

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

Ovo će trajati oko sat vremena. Da ne bismo uzalud gubili vrijeme, kreiramo novu ssh konekciju i paralelno krećemo s izgradnjom docker kontejnera.

4. Instalirajte nvidiadocker 2

Normalan 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. Izgradnja kontejnera za YaLM

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

To je također oko sat vremena.

Life hack. Možete preuzeti kontrolne tačke, instalirati Docker i izgraditi kontejner na jeftinom serveru sa jednom video karticom. S vremenom će biti tako, pa možete malo uštedjeti. Nakon sklapanja na jeftinom serveru, brišemo ga i kreiramo borbeni server koristeći disk sa jeftinog servera. Tada nećete preplatiti vrijeme za čekanje na montažu i ispumpavanje kontrolnih tačaka.

6. Pripremite sadržaj

6.1 Kontrolne tačke

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

mv ./download/yalm100b_checkpoint ./

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

6.2 Video kartice

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

7. Pokrenite docker kontejner

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

sudo bash ./docker/run.sh

Ako je sve u redu, bit ćete odvedeni u kontejner u kojem trebate otići u yalm folder u vašem početnom direktoriju.

cd ~/yalm

8. Pokrenite primjer iz YaLM 100B

Spremni smo pokrenuti jedan od primjera. Ovdje su opisani
.

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

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

Kada se gradnja završi, MegatronML će od vas zatražiti da unesete kontekst za generiranje teksta. Budite oprezni kada kucate. U određenim okolnostima dolazi do greške, program se ruši i morate ponovo pokrenuti sklop. Stoga je bolje koristiti primjere koji preuzimaju 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 sadržajniji tekst. Kompletan set eksperimentalnih generacija možete pogledati na linkovima:

Za cijenu me je koštalo oko 9 hiljada rubalja za iznajmljivanje servera različitih kapaciteta od obuke i od pripreme do generacije. Posebno razočaranje je bilo to što ne možete odmah generirati sve. Potrebno je mnogo vremena da se pokrene, a tekst se ne generiše tako brzo koliko bismo želeli, s obzirom na cenu servera po satu.
Neuronska mreža YaLM 100B u praksi.  

Kako pokrenuti YaLM bez 200Gb GPU RAM-a?

Morate da dodate deepspeed zero offload u konfiguraciju. Za one koji znaju o čemu pričamo, to će biti vrlo lako. Za druge to uopće nije trivijalan zadatak. Važno je znati da rasterećenje može biti u CPU RAM-u ili NVMe. Možete zaboraviti na NVMe u ovom trenutku, jer. obrađuje se vrlo velika količina podataka i disk se ne može nositi s tim. Zero offload CPU je stvarniji. Istina, za ovo morate imati 200+ Gb CPU RAM-a na lageru, što takođe nije jeftino. A jedan tekst će se generirati oko 20-40 minuta, jer ga još nije bilo moguće paralelizirati na dvije video kartice. Kao što možete vidjeti na slici ispod, samo jedna video kartica je bila uključena u generaciju, i to samo za četvrtinu memorije. Ostaje da se vidi zašto se ne koriste svih 24 GB,
Neuronska mreža YaLM 100B u praksi. Pa, u zaključku, 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 dozvoliti da brzo obradite 150 GB podataka u swap-u, koji su u dodatku od 96 GB RAM-a.
Neuronska mreža YaLM 100B u praksi.

Sažimanje

Naravno, i dalje ću pokušati pronaći optimalne putanje 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 mnogo više i mnogo bolje. Ali mislim da je to privremeno, videćemo. Ako vam je potrebna 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