Neural network YaLM 100B sa pagsasanay.

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

Sa katapusan ng Hunyo, naglabas ang Yandex
ng neural network na may 100 bilyong parameter na tinatawag na YaLM 100B sa publiko . Ito ang pinakamalaking neural network na tulad ng GPT sa pampublikong domain. Sinasabi nito ang tungkol sa kung paano sila nagturo, nagpakita ng pinakamahusay na mga halimbawa at kung ano ang kaya ng neuron. Ngunit ito ba ay napakahusay sa pagsasanay at naaangkop sa bahay? Ang artikulo ay tahimik tungkol dito, bukod pa rito, ito ay hindi napakadaling patakbuhin at suriin ito, dahil humigit-kumulang 200 Gb ng GPU RAM ang kinakailangan. Ang komentong ito sa Habré ay
pinakatumpak na nagpapakita ng sitwasyon
.

Diumano, sa Yandex, lahat ng ganoong matalinong tao, at hindi man lang sila nag-post ng isang normal na How-to. Walang api para sa isang malaking modelo, walang handa na stripped-down na medium o maliit na modelo para sa mga ordinaryong tao (sa Google Colab). Walang ibinigay na halimbawa kung paano i-set up ang modelo, kung paano bumuo ng text. Ito ay lamang na ang artikulo ay nagpapahiwatig ng isang pares ng mga nuances para sa mga nerds at iyon lang. Ito ay sapat na upang masusing tingnan kung paano ito ginawa ng bangko sa titik na “C” at gawin ang parehong. Nakuha ko ang impresyon na ang modelong ito ay isa lamang sa mga nabigong eksperimento na nakakalungkot na itapon sa basurahan, kaya ito ay nai-post sa Open Source upang ipakita kung anong magagandang modelo ang nilikha ng Yandex, at higit pa rito, ito ay open source!

Mayroong maraming mga katanungan sa Internet kung paano magpatakbo ng yalm o kahit na subukan online, ngunit walang mga sagot dito. Ako ay kabilang sa mga gumagamit na nagtanong ng mga tanong na ito. At itakda ang tungkol sa pag-uunawa nito. Dahil kailangan ko talaga ng paraan para makabuo ng mga text para sa mga financial robot. Upang mahulaan nila hindi lamang ang mga halaga, ngunit magkomento din dito sa teksto, batay sa mga ulat sa pananalapi. Sa esensya, ito ay magiging katulad ng ginagawa ng mga financial analyst, sa paggamit lamang ng artificial intelligence. Mayroong dalawang paraan upang magpatakbo ng yalm.
Magrenta ng server sa cloudna may 200+ Gb GPU RAM o baguhin ang code at patakbuhin nang may deepspeed zero offload (kapag sunud-sunod na pinoproseso ng GPU ang bahagi ng neural network, at ang iba ay nakaimbak sa CPU RAM o NVMe). Ang una ay napakamahal, mga 2500 rubles bawat oras o 1.7 milyon bawat buwan. Ang pangalawang hindi alam, dahil ang code sa repository ay hindi ibinigay,
mga pahiwatig lamang sa isyu ng repositoryo, na hindi mahirap gawin. Magsimula tayo sa simple.

Mga Tagubilin sa Paglunsad ng YaLM 100B

1. Nagrenta kami ng 200 GB GPU RAM, halimbawa dito .

Neural network YaLM 100B sa pagsasanay.

Kailangan mo ng hindi bababa sa 200 GB ng kabuuang memorya ng video. 8×40 = 320 GB. Ito lang ang kasya. Mas mababa sa 200 ang imposible, mas marami ang posible. Ang arrow ay nagpapahiwatig ng CPU RAM, hindi namin ito tinitingnan. Maaari siyang maging kahit sino.

Ipinapahiwatig namin ang isang disk ng tungkol sa 300 GB, kaya na may isang ekstrang at mas mabuti ang isang mabilis na disk, dahil. sampu-sampung gigabytes ng data ang ililipat papunta at mula rito.

Neural network YaLM 100B sa pagsasanay.Kapag gumagawa sa mga source, piliin ang Ubuntu ML (Machine Learning). Ito ay ipinag-uutos upang ang mga video card ay na-configure at walang kailangang i-install bilang karagdagan.

Kapag lumilikha ng isang server, may mga nuances na may mga quota, maaari mong makuha ang pakiramdam na ang kagamitan ay hindi magagamit, ngunit sa katunayan kailangan mo lamang dagdagan ang mga quota sa mga setting. Pagkatapos ma-activate ang server (maaaring tumagal ng 5-10 minuto), kumonekta sa server sa pamamagitan ng ssh o direkta sa web console sa pahina ng server at isagawa ang command.

nvidia-smi

Ang resulta ay dapat na isang talahanayan na may mga video card, bersyon ng driver at cuda. Tinatayang ganito.
Neural network YaLM 100B sa pagsasanay.Sa header ng bersyon ng driver at kung saan. Sa kaliwang bahagi ay ang mga numero ng device, sa gitna ay ang laki ng memorya ng device. Kung wala kang impormasyong ito, nakolekta mo ang server mula sa maling pinagmulan. Ubuntu ML (Machine Learnong) ay kinakailangan, tulad ng inilarawan sa itaas.

2. I-clone ang repository gamit ang YaLM

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

I-clone ang iyong home folder para hindi mo na kailangang i-edit ang docker config pagkatapos. Kung na-clone sa ibang lugar,
pumunta dito at idagdag ang path kung saan naka-clone.

3. Mag-download ng mga checkpoint (pangunahing impormasyon sa pagsasanay ng modelo)

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

Aabutin ito ng halos isang oras. Upang hindi mag-aksaya ng oras sa walang kabuluhan, lumikha kami ng isang bagong koneksyon sa ssh at magkatulad na sinimulan namin ang pagbuo ng isang lalagyan ng docker.

4. I-install ang nvidiadocker 2

Hindi angkop
ang normal na docker, kailangan ang nvidia-docker2 .
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#setting-up-nvidia-container-toolkit

5. Pagbuo ng lalagyan para sa YaLM

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

Mga isang oras din.

Life hack. Maaari kang mag-download ng mga checkpoint, mag-install ng docker at bumuo ng isang lalagyan sa isang murang server gamit ang isang video card. Ito ay magiging pareho sa oras, kaya maaari kang makatipid ng kaunti. Pagkatapos ng pagpupulong sa isang murang server, tinanggal namin ito, at lumikha ng isang server ng labanan gamit ang isang disk mula sa isang murang server. Pagkatapos ay hindi ka magso-overpay sa oras para sa paghihintay para sa pagpupulong at pagbomba ng mga checkpoint.

6. Maghanda ng nilalaman

6.1 Mga checkpoint

Matapos ang pag-download ng mga checkpoint, kailangan mong ipasok ang mga ito sa mga config. Mayroong dalawang paraan, tamang mga parameter o paglilipat ng mga checkpoint. Saanman inaasahan na ang mga checkpoint ay nasa pangunahing direktoryo ng proyekto, ayon sa pagkakabanggit, kung ano ang na-download ay dapat ilipat mula sa folder ng pag-download sa itaas. Ang pagiging nasa yalm folder execute

mv ./download/yalm100b_checkpoint ./

O baguhin ang mga path sa mga file sa mga halimbawang file
https://github.com/yandex/YaLM-100B/blob/c91b7d7fe8dbf39c9e307d6d324446d0df136a23/examples/generate_interactive.sh#L8-L9

6.2 Mga video card

Sinusuri namin na ang mga video card ay nakatakda nang tama. Kung mayroon kang walong video card, walang kailangang baguhin. Kung ang numero ay naiiba, pagkatapos ay binago namin ang mga linyang ito
Neural network YaLM 100B sa pagsasanay.Sa pangalawang linya, ang mga numero ng mga device na ginamit (maaari mong tingnan ang mga ito sa nvidia-smi, na nailunsad mo na). Sa pang-apat, ang kanilang bilang.

7. Patakbuhin ang docker container

Nasa yalm folder, isagawa ang command

sudo bash ./docker/run.sh

Kung ang lahat ay OK, pagkatapos ay dadalhin ka sa isang lalagyan kung saan kailangan mong pumunta sa yalm folder sa iyong home directory.

cd ~/yalm

8. Patakbuhin ang halimbawa mula sa YaLM 100B

Handa kaming ilunsad ang isa sa mga halimbawa. Ang mga ito ay inilarawan
dito .

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

Maging matiyaga, nananatili itong maghintay ng isa pang 10-15 minuto hanggang sa malikha ang modelo ng GPT at mai-load ang mga timbang mula sa mga checkpoint.
Neural network YaLM 100B sa pagsasanay.

Kapag natapos na ang build, ipo-prompt ka ng MegatronML na magpasok ng konteksto para bumuo ng text. Mag-ingat kapag nagta-type ka. Sa ilalim ng ilang mga pangyayari, ang isang error ay nangyayari, ang programa ay nag-crash at kailangan mong simulan muli ang pagpupulong. Samakatuwid, mas mahusay na gumamit ng mga halimbawa na kumukuha ng teksto mula sa isang file.

9. Mga resulta ng gawain

Neural network YaLM 100B sa pagsasanay.
Neural network YaLM 100B sa pagsasanay.Mukhang kawili-wili. Siyempre, ito ay mga magandang halimbawa lamang. Pinatakbo ko ang pagsubok sa iba’t ibang mga sample. Gaya ng inaasahan, mas maganda ang konteksto, mas mabubuo ang makabuluhang teksto. Ang buong hanay ng mga pang-eksperimentong henerasyon ay maaaring matingnan sa mga link:

Para sa presyo, nagkakahalaga ako ng halos 9 libong rubles para sa pag-upa ng mga server ng iba’t ibang mga kapasidad mula sa pagsasanay at mula sa paghahanda hanggang sa henerasyon. Ang isang partikular na pagkabigo ay hindi mo agad mabuo ang lahat. Ito ay tumatagal ng napakahabang oras upang magsimula at ang teksto ay hindi nabubuo nang mabilis hangga’t gusto namin, dahil sa halaga ng server bawat oras.
Neural network YaLM 100B sa pagsasanay. 

Paano patakbuhin ang YaLM nang walang 200Gb GPU RAM?

Kailangan mong magdagdag ng deepspeed zero offload sa config. Para sa mga nakakaalam kung ano ang pinag-uusapan natin, napakadaling gawin ito. Para sa iba, ito ay hindi isang maliit na gawain. Mahalagang malaman na ang offload ay maaaring nasa CPU RAM o NVMe. Maaari mong kalimutan ang tungkol sa NVMe sa ngayon, dahil. isang napakalaking halaga ng data ang pinoproseso at ang disk ay hindi makayanan ito. Ang Zero offload na CPU ay mas totoo. Totoo, para dito kailangan mong magkaroon ng 200+ Gb CPU RAM sa stock, na hindi rin mura. At ang isang teksto ay bubuo sa loob ng mga 20-40 minuto, dahil hindi pa posible na iparallelize ito sa dalawang video card. Tulad ng makikita mo sa screenshot sa ibaba, isang video card lang ang kasangkot sa henerasyon, at pagkatapos ay para lamang sa isang-kapat ng memorya. Ito ay nananatiling upang makita kung bakit ang lahat ng 24 GB ay hindi ginagamit,
Neural network YaLM 100B sa pagsasanay.Kaya, sa konklusyon, sasabihin ko na posible na tumakbo kahit sa isang RTX 3070 TI. Ngunit walang partikular na kahulugan dito, dahil. Hindi ka papayagan ng NVMe na mabilis na magproseso ng 150 GB ng data sa swap, na nasa appendage ng 96 GB ng RAM.
Neural network YaLM 100B sa pagsasanay.

Summing up

Siyempre, susubukan ko pa ring hanapin ang pinakamainam na landas sa paglulunsad. Ngunit sa ngayon ay nakarating ako sa konklusyon na ang YaLM 100b ay masyadong mahal / masyadong mabagal para sa aking mga gawain. Para sa parehong pera, ang mga tao ay magsusulat ng higit pa at mas mahusay. Pero sa tingin ko temporary lang, we’ll see. Kung kailangan mo ng tulong sa paglulunsad, pag-set up ng yalm, o gusto mong makita ang mga resulta sa iyong mga halimbawa ng konteksto, sumulat sa mail o telegrama.

pskucherov
Rate author

  1. Olha

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

    Sagutin
  2. Данила

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

    Sagutin
  3. Дмитрий

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

    Sagutin