A rete neurale YaLM 100B in pratica.

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

À a fine di ghjugnu, Yandex
hà liberatu à u publicu una rete neurale cù 100 miliardi di parametri chjamati YaLM 100B . Hè a più grande rete neurale simile à GPT in u duminiu publicu. Conta di cumu anu insignatu, dimustrava i migliori esempi è ciò chì a neurona hè capace. Ma hè cusì bonu in pratica è applicabile in casa? L’articulu hè in silenziu annantu à questu, in più, ùn hè micca cusì faciule per eseguisce è verificate, postu chì circa 200 Gb di GPU RAM hè necessariu. Stu cumentu nantu à Habré
palesa a situazione più precisamente
.

Presumibilmente, in Yandex, tutti tali pirsuni intelligenti, è ùn anu mancu publicatu un How-to normale. Ùn ci hè micca api per un mudellu grande, ùn ci hè micca un mudellu di media o chjuca pronta per a ghjente ordinaria (in Google Colab). Nisun esempiu hè datu nantu à cumu si stabilisce u mudellu, cumu generà testu. Hè solu chì l’articulu indica un paru di sfumature per i nerds è basta. Hè abbastanza per piglià un ochju più vicinu à cumu u bancu hà fattu cù a lettera “C” è fà u listessu. Aghju avutu l’impressione chì stu mudellu hè solu unu di l’esperimenti falluti chì era una disgrazia di scaccià in a basura, cusì hè stata publicata in Open Source per vede ciò chì grandi mudelli Yandex crea, è in più, hè open source!

Ci hè parechje dumande nantu à Internet cumu per curriri yalm o ancu pruvà in linea, ma ùn ci sò micca risposte à questu. Eru trà l’utilizatori chì anu dumandatu queste dumande. È si mette à capisce. Perchè aghju veramente bisognu di un modu per generà testi per i robots finanziarii. Allora ch’elli ponu predichendu micca solu i valori, ma ancu cummentà in u testu, basatu annantu à rapporti finanziarii. In esencia, serà u listessu cum’è ciò chì l’analisti finanziarii facenu, solu cù l’usu di l’intelligenza artificiale. Ci hè duie manere di curriri yalm.
Affittu un servitore in u nuvulucù 200+ Gb GPU RAM o mudificà u codice è eseguite cù deepspeed zero offload (quandu a GPU processa sequenzialmente una parte di a rete neurale, è u restu hè almacenatu in CPU RAM o NVMe). U primu hè assai caru, circa 2500 rubles per ora o 1,7 milioni per mese. U sicondu scunnisciutu, perchè u codice in u repository ùn hè micca furnitu, solu
suggerimenti in u prublema di u repository, chì ùn hè micca difficiule di fà. Cuminciamu sèmplice.

YaLM 100B Istruzzioni di Lanciamentu

1. Avemu affittu 200 GB GPU RAM, per esempiu quì .

A rete neurale YaLM 100B in pratica.

Avete bisognu di almenu 200 GB di memoria video tutale. 8×40 = 320 GB. Solu questu hè adattatu. Meno di 200 hè impussibile, più hè pussibule. A freccia indica a CPU RAM, ùn l’avemu micca guardatu. Ella pò esse qualcunu.

Indicà un discu di circa 300 GB, perchè cun un discu di spare è preferibile un discu veloce, perchè. decine di gigabytes di dati seranu trasferiti da è da ellu.

A rete neurale YaLM 100B in pratica.Quandu crea in fonti, selezziunate Ubuntu ML (Apprendimentu Machine). Questu hè ubligatoriu per chì e carte video sò cunfigurate è nunda ùn deve esse installatu in più.

Quandu creanu un servitore, ci sò sfumature cù quotes, pudete avè a sensazione chì l’equipaggiu ùn hè micca dispunibule, ma in fattu solu bisognu di aumentà e quote in i paràmetri. Dopu chì u servitore hè attivatu (pò piglià 5-10 minuti), cunnette à u servitore via ssh o direttamente in a cunsola web in a pagina di u servitore è eseguisce u cumandamentu.

nvidia-smi

U risultatu deve esse una tavola cù carte video, versione di driver è cuda. Approssimativamente cusì.
A rete neurale YaLM 100B in pratica.In l’intestazione di a versione di u driver è induve. À u latu manca sò i numeri di u dispusitivu, in u centru hè a dimensione di a memoria di u dispusitivu. Se ùn avete micca sta infurmazione, allora avete cullatu u servitore da a fonte sbagliata. Ubuntu ML (Machine Learnong) hè necessariu, cum’è descrittu sopra.

2. Clone u repository cù YaLM

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

Clonate in u vostru cartulare di casa per ùn avè micca da edità a cunfigurazione di docker dopu. Se clonatu in un altru locu,
andate quì è aghjunghje u percorsu induve hè clonatu.

3. Scaricate i punti di cuntrollu (infurmazione di furmazione di mudellu di basa)

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

Questu duverà circa una ora. Per ùn perde u tempu in vain, creemu una nova cunnessione ssh è in parallelu cuminciamu à custruisce un containeru docker.

4. Installa nvidiadocker 2

Docker normale ùn hè micca adattatu,
nvidia-docker2 hè necessariu .
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#setting-up-nvidia-container-toolkit

5. Custruì un containeru per YaLM

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

Hè ancu circa una ora.

Hack di vita. Pudete scaricà punti di cuntrollu, installà docker è custruisce un containeru in un servitore economicu cù una carta video. Serà u listessu in u tempu, cusì pudete salvà un pocu. Dopu l’assemblea nantu à un servitore economicu, sguassemu, è creanu un servitore di cummattimentu cù un discu da un servitore economicu. Allora ùn pagherete micca in più u tempu per aspittà per l’assemblea è pumping out checkpoints.

6. Preparate cuntenutu

6.1 Punti di cuntrollu

Dopu chì u scaricamentu di i punti di cuntrollu hè finitu, avete bisognu di slip in i cunfigurazioni. Ci hè dui modi, paràmetri curretti o punti di cuntrollu di trasferimentu. In ogni locu hè previstu chì i punti di cuntrollu seranu in u cartulare principale di u prugettu, rispettivamente, ciò chì hè stata scaricata deve esse trasferitu da u cartulare di scaricamentu sopra. Esse in u cartulare yalm eseguisce

mv ./download/yalm100b_checkpoint ./

O cambià i percorsi à i schedari in i schedarii di esempiu
https://github.com/yandex/YaLM-100B/blob/c91b7d7fe8dbf39c9e307d6d324446d0df136a23/examples/generate_interactive.sh#L8-L9

6.2 Carte video

Avemu verificatu chì e carte video sò stallate currettamente. Sè vo avete ottu carte video, allura nunda ùn deve esse cambiatu. Se u numeru hè diversu, allora cambiamu sti linii
A rete neurale YaLM 100B in pratica.In a seconda linea, i numeri di i dispusitivi utilizati (pudete fighjà in nvidia-smi, chì avete digià lanciatu). In u quartu, u so numeru.

7. Run u cuntinuu docker

Esse in u cartulare yalm, eseguisce u cumandamentu

sudo bash ./docker/run.sh

Sè tuttu hè bè, allura vi sarà purtatu à un cuntinuu in u quali vi tocca à andà à u cartulare yalm in u vostru cartulare di casa.

cd ~/yalm

8. Eseguite l’esempiu da YaLM 100B

Semu pronti per lancià unu di l’esempii. Sò descritti
quì .

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

Siate pacienza, ferma à aspittà un altru 10-15 minuti finu à chì u mudellu GPT hè creatu è i pesi da i punti di cuntrollu sò caricati.
A rete neurale YaLM 100B in pratica.

Quandu a custruzione finisci, MegatronML vi invitarà à entre in un cuntestu per generà testu. Attenti quandu scrive. In certi circustanzi, un errore si trova, u prugramma crashes è avete bisognu di principià l’assemblea di novu. Dunque, hè megliu aduprà esempi chì piglianu u testu da un schedariu.

9. Risultati di u travagliu

A rete neurale YaLM 100B in pratica.
A rete neurale YaLM 100B in pratica.Sembra interessante. Di sicuru, questi sò solu boni esempi. Aghju fattu a prova nantu à diversi campioni. Cum’è previstu, u megliu u cuntestu, u testu più significativu serà generatu. L’inseme cumpletu di generazioni sperimentali pò esse vistu à i ligami:

Per u prezzu, mi costava circa 9 mila rubli per l’affittu di servitori di diverse capacità da a furmazione è da a preparazione à a generazione. Una delusione particulare era chì ùn pudete micca generà immediatamente tuttu. Ci hè un tempu assai longu per inizià è u testu ùn hè micca generatu cusì rapidamente cum’è vulemu, datu u costu di u servitore per ora.
A rete neurale YaLM 100B in pratica. 

Cumu eseguisce YaLM senza 200Gb GPU RAM?

Avete bisognu di aghjunghje deepspeed zero offload à a cunfigurazione. Per quelli chì sà ciò chì avemu parlatu, serà assai faciule di fà. Per altri, questu ùn hè micca un compitu triviale à tutti. Hè impurtante sapè chì u scaricamentu pò esse in CPU RAM o NVMe. Pudete scurdà di NVMe à u mumentu, perchè. una quantità assai grande di dati hè trattatu è u discu ùn pò micca affruntà. Zero offload CPU hè più reale. True, per questu avete bisognu di avè 200+ Gb CPU RAM in stock, chì ùn hè ancu micca prezzu. È un testu serà generatu per circa 20-40 minuti, postu chì ùn hè ancu statu pussibule di parallelizà in duie carte video. Comu pudete vede in a screenshot sottu, solu una carta video hè stata implicata in a generazione, è dopu solu per un quartu di a memoria. Resta da vede perchè tutti i 24 GB ùn sò micca usati,
A rete neurale YaLM 100B in pratica.Ebbè, in cunclusione, diceraghju chì hè pussibule di eseguisce ancu nantu à una RTX 3070 TI. Ma ùn ci hè micca sensu particulari in questu, perchè. NVMe ùn vi permetterà di processà rapidamente 150 GB di dati in u swap, chì sò in l’appendice di 96 GB di RAM.
A rete neurale YaLM 100B in pratica.

Riassuntu

Di sicuru, sempre pruvà à truvà i percorsi di lanciamentu ottimali. Ma finu à avà sò ghjuntu à a cunclusione chì YaLM 100b hè troppu caru / troppu lento per i mo compiti. Per i stessi soldi, a ghjente scriverà assai più è assai megliu. Ma pensu chì hè pruvisoriu, videremu. Sè avete bisognu di aiutu cù u lanciamentu, a stallazione di yalm, o vulete vede i risultati nantu à i vostri esempi di cuntestu, scrivite à u mail o u telegramma.

pskucherov
Rate author
Add a comment

  1. Olha

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

    Reply
  2. Данила

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

    Reply
  3. Дмитрий

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

    Reply