Jaringan saraf YaLM 100B dina prakna.

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

Dina ahir Juni, Yandex
ngaluarkeun jaringan saraf sareng 100 milyar parameter anu disebut YaLM 100B ka masarakat . Éta mangrupikeun jaringan saraf sapertos GPT panggedéna dina domain umum. Eta ngabejaan ngeunaan kumaha aranjeunna ngajar, némbongkeun conto pangalusna sarta naon neuron sanggup. Tapi naha éta saé dina prakték sareng tiasa dianggo di bumi? Tulisan éta jempé ngeunaan ieu, komo deui, ngajalankeun sareng pariksa éta henteu gampang, sabab peryogi kirang langkung 200 Gb GPU RAM. Koméntar ngeunaan Habré
ieu ngungkabkeun kaayaan anu paling akurat
.

Disangka, dina Yandex, sadaya jalma pinter sapertos kitu, sareng aranjeunna henteu ngeposkeun cara anu normal. Henteu aya api pikeun modél ageung, teu aya anu siap-siap dilucuti-handap atanapi modél leutik pikeun jalma biasa (dina Google Colab). Teu aya conto kumaha cara nyetél modél, kumaha cara ngahasilkeun téks. Ngan éta tulisan nunjukkeun sababaraha nuansa pikeun kutu buku sareng éta waé. Ieu cukup nyandak katingal ngadeukeutan di kumaha bank ngalakukeun eta kalawan hurup “C” jeung lakonan hal nu sarua. Kuring ngagaduhan gambaran yén modél ieu mangrupikeun salah sahiji percobaan anu gagal anu karunya pikeun ngalungkeun sampah, ku kituna dipasang dina Open Source pikeun nunjukkeun modél anu hébat anu diciptakeun Yandex, komo deui, éta open source!

Aya seueur patarosan dina Internét kumaha ngajalankeun yalm atanapi malah cobian online, tapi henteu aya jawaban pikeun ieu. Abdi mangrupikeun pangguna anu naroskeun patarosan ieu. Tur nyetel ngeunaan figuring eta kaluar. Kusabab kuring leres-leres peryogi cara pikeun ngahasilkeun téks pikeun robot finansial. Ambéh maranéhanana bisa ngaduga teu ngan nilai, tapi ogé mairan dina téks, dumasar kana laporan keuangan. Intina, éta bakal sami sareng anu dilakukeun ku analis kauangan, ngan ukur nganggo intelijen buatan. Aya dua cara pikeun ngajalankeun yalm.
Nyéwa server dina awanjeung 200 + Gb GPU RAM atawa ngaropéa kode tur ngajalankeun kalawan deepspeed enol offload (lamun GPU sequentially prosés bagian tina jaringan neural, sarta sésana disimpen dina CPU RAM atanapi NVMe). Anu kahiji mahal pisan, sakitar 2500 rubles per jam atanapi 1,7 juta per bulan. Nu kadua kanyahoan, sabab kodeu di gudang teu disadiakeun, ngan
petunjuk dina masalah gudang, nu teu hese ngalakukeun. Hayu urang mimitian basajan.

Parentah peluncuran YaLM 100B

1. Urang nyéwa 200 GB GPU RAM, contona di dieu .

Jaringan saraf YaLM 100B dina prakna.

Anjeun peryogi sahenteuna 200 GB tina total mémori video. 8×40 = 320 GB. Ngan ieu nu pas. Kirang ti 200 mustahil, langkung seueur kamungkinan. Panah nunjukkeun RAM CPU, urang teu kasampak di dinya. Manehna bisa saha.

Urang nunjukkeun hiji disk ngeunaan 300 GB, ku kituna kalayan cadang sarta preferably disk gancang, sabab. puluhan gigabytes data bakal ditransfer ka jeung ti dinya.

Jaringan saraf YaLM 100B dina prakna. Nalika nyieun sumber, pilih Ubuntu ML (Machine Learning). Ieu wajib supados kartu vidéo dikonpigurasi sareng teu aya anu kedah dipasang tambahan.

Nalika nyieun server, aya nuances kalawan kuota, Anjeun bisa meunangkeun rarasaan yén alat-alat nu teu sadia, tapi dina kanyataanana anjeun ngan perlu ningkatkeun kuota dina setélan. Saatos server diaktipkeun (éta butuh 5-10 menit), sambungkeun ka server via ssh atanapi langsung dina konsol web dina kaca server na ngaéksekusi paréntah.

Nvidia-smi

Hasilna kedah janten méja kalayan kartu vidéo, versi supir sareng cuda. Kira-kira kieu.
Jaringan saraf YaLM 100B dina prakna. Dina lulugu versi supir jeung dimana. Di sisi kénca aya nomer alat, di tengahna ukuran mémori alat. Upami anjeun teu gaduh inpormasi ieu, maka anjeun parantos ngumpulkeun server tina sumber anu salah. Ubuntu ML (Machine Learnong) diperlukeun, sakumaha ditétélakeun di luhur.

2. Kloning Repository sareng YaLM

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

Klon kana polder bumi anjeun supados anjeun henteu kedah ngédit config docker saatosna. Upami diklon di tempat anu sanés, teras
angkat ka dieu sareng tambahkeun jalur ka tempat anu dikloning.

3. Unduh checkpoints (inpormasi latihan modél dasar)

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

Ieu bakal butuh ngeunaan sajam. Dina raraga teu runtah waktu sia, urang nyieun sambungan ssh anyar jeung dina paralel urang mimitian ngawangun wadahna docker.

4. Pasang nvidiadocker 2

Docker normal henteu cocog,
peryogi nvidia-docker2 .
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#setting-up-nvidia-container-toolkit

5. Ngawangun wadah pikeun YaLM

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

Éta ogé ngeunaan sajam.

Hack hirup. Anjeun tiasa ngundeur checkpoints, install docker sarta ngawangun wadahna dina server mirah kalawan hiji kartu vidéo. Éta bakal sami dina waktosna, janten anjeun tiasa ngahémat sakedik. Saatos assembly dina server mirah, urang ngahapus eta, sarta nyieun server ngempur ngagunakeun disk ti server mirah. Satuluyna anjeun moal overpay waktu nungguan assembly jeung ngompa kaluar checkpoints.

6. Nyiapkeun eusi

6.1 Checkpoints

Saatos unduhan pamariksaan parantos réngsé, anjeun kedah lebet kana configs. Aya dua cara, parameter leres atanapi checkpoints transfer. Dimana-mana diperkirakeun yén checkpoints bakal aya dina diréktori utama proyék, masing-masing, anu parantos diunduh kedah ditransfer tina folder unduhan di luhur. Keur dina folder yalm laksana

mv ./download/yalm100b_checkpoint ./

Atawa robih jalur kana file dina conto file
https://github.com/yandex/YaLM-100B/blob/c91b7d7fe8dbf39c9e307d6d324446d0df136a23/examples/generate_interactive.sh#L8-L9

6.2 Kartu vidéo

Kami pariksa yén kartu vidéo diatur leres. Upami anjeun gaduh dalapan kartu vidéo, maka teu aya anu kedah dirobih. Upami jumlahna béda, maka urang ngarobih garis-garis ieu
Jaringan saraf YaLM 100B dina prakna. Dina garis kadua, jumlah alat anu dianggo (anjeun tiasa ningali dina nvidia-smi, anu anjeun parantos diluncurkeun). Dina kaopat, jumlah maranéhanana.

7. Ngajalankeun wadahna docker

Janten dina folder yalm, laksanakeun paréntahna

sudo bash ./docker/run.sh

Upami sadayana OK, teras anjeun bakal dibawa ka wadah dimana anjeun kedah angkat ka folder yalm dina diréktori bumi anjeun.

cd ~/yalm

8. Jalankeun conto tina YaLM 100B

Kami siap ngaluncurkeun salah sahiji conto. Aranjeunna digambarkeun
di dieu .

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

Sabar, tetep ngantosan 10-15 menit deui dugi ka modél GPT didamel sareng beurat ti checkpoints dimuat.
Jaringan saraf YaLM 100B dina prakna.

Nalika ngawangun réngsé, MegatronML bakal nyarankeun anjeun ngalebetkeun kontéks pikeun ngahasilkeun téks. Ati-ati nalika anjeun ngetik. Dina kaayaan nu tangtu, kasalahan lumangsung, program ngadat jeung anjeun kudu ngamimitian assembly deui. Ku alatan éta, éta hadé migunakeun conto nu nyandak téks ti file.

9. Hasil pagawéan

Jaringan saraf YaLM 100B dina prakna.
Jaringan saraf YaLM 100B dina prakna. Sigana metot. Tangtu, ieu ngan conto alus. Kuring ngajalankeun tés dina sampel anu béda. Sapertos anu dipiharep, langkung saé kontéksna, téks anu langkung bermakna bakal dihasilkeun. Set lengkep generasi ékspérimén tiasa ditingali dina tautan:

Pikeun hargana, éta ngarugikeun kuring sakitar 9 rébu rubles pikeun nyéwa server tina kapasitas anu béda tina latihan sareng ti persiapan ka generasi. A disappointment tinangtu éta nu teu bisa instan ngahasilkeun sagalana. Butuh waktu anu pohara lila pikeun ngamimitian jeung téks teu ngahasilkeun gancang-gancang sakumaha urang hoyong, dibere biaya server per jam.
Jaringan saraf YaLM 100B dina prakna.  

Kumaha ngajalankeun YaLM tanpa 200Gb GPU RAM?

Anjeun kedah nambihan deepspeed zero offload kana config. Pikeun anu terang naon anu urang nyarioskeun, éta bakal gampang pisan pikeun ngalakukeunana. Pikeun batur, ieu téh lain tugas trivial pisan. Kadé uninga yén offload tiasa boh dina CPU RAM atanapi NVMe. Anjeun tiasa poho ngeunaan NVMe di momen, sabab. jumlah anu kacida gedéna data keur diolah jeung disk teu bisa Cope jeung eta. Nol offload CPU leuwih nyata. Leres, pikeun ieu anjeun kedah gaduh 200+ Gb CPU RAM di stock, anu ogé henteu mirah. Sareng hiji téks bakal dibangkitkeun sakitar 20-40 menit, sabab éta henteu acan tiasa parallelize dina dua kartu vidéo. Sakumaha anjeun tiasa tingali dina screenshot handap, ngan hiji kartu vidéo aub dina generasi, lajeng ngan pikeun saparapat tina mémori. Tetep katingal naha sadayana 24 GB henteu dianggo,
Jaringan saraf YaLM 100B dina prakna. Nya, dina kacindekan, kuring bakal nyarios yén anjeun tiasa ngajalankeun sanajan dina hiji RTX 3070 TI. Tapi teu aya rasa husus dina ieu, sabab. NVMe moal ngidinan Anjeun pikeun gancang ngolah 150 GB data dina swap nu, nu aya dina appendage of 96 GB RAM.
Jaringan saraf YaLM 100B dina prakna.

Nyimpulkeun

Tangtosna, kuring bakal tetep nyobian milarian jalur peluncuran anu optimal. Tapi sajauh ieu kuring parantos nyimpulkeun yén YaLM 100b mahal teuing / lambat teuing pikeun tugas kuring. Pikeun artos anu sami, jalma bakal nyerat langkung seueur sareng langkung saé. Tapi kuring pikir éta samentawis, urang tingali. Upami anjeun peryogi bantosan pikeun ngaluncurkeun, nyetél yalm, atanapi hoyong ningali hasil dina conto kontéks anjeun, nyerat kana surat atanapi telegram.

pskucherov
Rate author
Add a comment

  1. Olha

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

    Reply
  2. Данила

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

    Reply
  3. Дмитрий

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

    Reply