Rangkaian saraf YaLM 100B dalam amalan.

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

Pada akhir bulan Jun, Yandex
mengeluarkan rangkaian saraf dengan 100 bilion parameter yang dipanggil YaLM 100B kepada orang ramai . Ia adalah rangkaian neural seperti GPT terbesar dalam domain awam. Ia menceritakan tentang cara mereka mengajar, menunjukkan contoh terbaik dan apa yang neuron mampu. Tetapi adakah ia begitu baik dalam amalan dan boleh digunakan di rumah? Artikel itu senyap tentang perkara ini, lebih-lebih lagi, ia tidak begitu mudah untuk dijalankan dan menyemaknya, kerana kira-kira 200 Gb GPU RAM diperlukan. Komen tentang Habré
ini mendedahkan situasi dengan paling tepat
.

Didakwa, dalam Yandex, semua orang pintar itu, dan mereka tidak pun menyiarkan Cara-cara biasa. Tiada api untuk model besar, tiada model sederhana atau kecil yang siap sedia untuk orang biasa (dalam Google Colab). Tiada contoh diberikan tentang cara menyediakan model, cara menjana teks. Cuma artikel itu menunjukkan beberapa nuansa untuk nerd dan itu sahaja. Ia cukup untuk melihat dengan lebih dekat bagaimana bank melakukannya dengan huruf “C” dan melakukan perkara yang sama. Saya mendapat tanggapan bahawa model ini hanyalah salah satu daripada percubaan yang gagal yang sayang untuk dibuang ke dalam tong sampah, jadi ia telah disiarkan dalam Sumber Terbuka untuk menunjukkan model hebat yang Yandex cipta, dan lebih-lebih lagi, ia adalah sumber terbuka!

Terdapat banyak soalan di Internet bagaimana untuk menjalankan yalm atau cuba dalam talian, tetapi tidak ada jawapan untuk ini. Saya adalah antara pengguna yang bertanya soalan ini. Dan mula memikirkannya. Memandangkan saya sangat memerlukan cara untuk menjana teks untuk robot kewangan. Supaya mereka boleh meramalkan bukan sahaja nilai, tetapi juga mengulasnya dalam teks, berdasarkan laporan kewangan. Pada dasarnya, ia akan sama seperti yang dilakukan oleh penganalisis kewangan, hanya dengan penggunaan kecerdasan buatan. Terdapat dua cara untuk menjalankan yalm.
Sewa pelayan di awandengan RAM GPU 200+ Gb atau ubah suai kod dan jalankan dengan offload sifar kelajuan dalam (apabila GPU memproses sebahagian daripada rangkaian saraf secara berurutan, dan selebihnya disimpan dalam CPU RAM atau NVMe). Yang pertama sangat mahal, kira-kira 2500 rubel sejam atau 1.7 juta sebulan. Yang kedua tidak diketahui, kerana kod dalam repositori tidak disediakan, hanya
petunjuk dalam isu repositori, yang tidak sukar dilakukan. Mari kita mulakan dengan mudah.

Arahan Pelancaran YaLM 100B

1. Kami menyewa 200 GB GPU RAM, contohnya di sini .

Rangkaian saraf YaLM 100B dalam amalan.

Anda memerlukan sekurang-kurangnya 200 GB jumlah memori video. 8×40 = 320 GB. Hanya yang ini sahaja yang sesuai. Kurang daripada 200 adalah mustahil, lebih banyak lagi mungkin. Anak panah menunjukkan RAM CPU, kami tidak melihatnya. Dia boleh jadi sesiapa sahaja.

Kami menunjukkan cakera kira-kira 300 GB, supaya dengan ganti dan sebaik-baiknya cakera cepat, kerana. berpuluh-puluh gigabait data akan dipindahkan ke dan daripadanya.

Rangkaian saraf YaLM 100B dalam amalan. Apabila mencipta dalam sumber, pilih Ubuntu ML (Pembelajaran Mesin). Ini adalah wajib supaya kad video dikonfigurasikan dan tiada apa yang perlu dipasang tambahan.

Apabila membuat pelayan, terdapat nuansa dengan kuota, anda mungkin mendapat perasaan bahawa peralatan tidak tersedia, tetapi sebenarnya anda hanya perlu meningkatkan kuota dalam tetapan. Selepas pelayan diaktifkan (ia mungkin mengambil masa 5-10 minit), sambungkan ke pelayan melalui ssh atau terus dalam konsol web pada halaman pelayan dan laksanakan arahan.

nvidia-smi

Hasilnya mestilah jadual dengan kad video, versi pemandu dan cuda. Kira-kira begini.
Rangkaian saraf YaLM 100B dalam amalan. Dalam pengepala versi pemacu dan di mana. Di sebelah kiri ialah nombor peranti, di tengah ialah saiz memori peranti. Jika anda tidak mempunyai maklumat ini, maka anda telah mengumpul pelayan dari sumber yang salah. Ubuntu ML (Machine Learnong) diperlukan, seperti yang diterangkan di atas.

2. Klon repositori dengan YaLM

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

Klon ke folder rumah anda supaya anda tidak perlu mengedit konfigurasi docker selepas itu. Jika diklon di tempat lain, kemudian
pergi ke sini dan tambah laluan ke tempat yang diklon.

3. Muat turun pusat pemeriksaan (maklumat latihan model asas)

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

Ini akan mengambil masa kira-kira sejam. Untuk tidak membuang masa dengan sia-sia, kami mencipta sambungan ssh baharu dan selari kami mula membina bekas docker.

4. Pasang nvidiadocker 2

Docker biasa tidak sesuai,
nvidia-docker2 diperlukan .
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#setting-up-nvidia-container-toolkit

5. Membina bekas untuk YaLM

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

Ia juga lebih kurang sejam.

hack kehidupan. Anda boleh memuat turun pusat pemeriksaan, memasang docker dan membina bekas pada pelayan murah dengan satu kad video. Ia akan menjadi sama pada masanya, jadi anda boleh menjimatkan sedikit. Selepas pemasangan pada pelayan murah, kami memadamkannya, dan mencipta pelayan pertempuran menggunakan cakera dari pelayan murah. Kemudian anda tidak akan membayar lebih masa untuk menunggu perhimpunan dan mengepam keluar pusat pemeriksaan.

6. Sediakan kandungan

6.1 Pusat pemeriksaan

Selepas muat turun pusat pemeriksaan selesai, anda perlu memasukkannya ke dalam konfigurasi. Terdapat dua cara, parameter yang betul atau pusat pemeriksaan pemindahan. Di mana-mana dijangkakan bahawa pusat pemeriksaan akan berada dalam direktori utama projek, masing-masing, apa yang telah dimuat turun mesti dipindahkan dari folder muat turun di atas. Berada dalam folder yalm laksanakan

mv ./download/yalm100b_checkpoint ./

Atau tukar laluan ke fail dalam contoh fail
https://github.com/yandex/YaLM-100B/blob/c91b7d7fe8dbf39c9e307d6d324446d0df136a23/examples/generate_interactive.sh#L8-L9

6.2 Kad video

Kami menyemak sama ada kad video ditetapkan dengan betul. Jika anda mempunyai lapan kad video, maka tiada apa yang perlu diubah. Jika nombornya berbeza, maka kami menukar baris ini
Rangkaian saraf YaLM 100B dalam amalan. Dalam baris kedua, nombor peranti yang digunakan (anda boleh melihatnya dalam nvidia-smi, yang telah anda lancarkan). Dalam keempat, bilangan mereka.

7. Jalankan bekas docker

Berada dalam folder yalm, laksanakan arahan

sudo bash ./docker/run.sh

Jika semuanya OK, maka anda akan dibawa ke bekas di mana anda perlu pergi ke folder yalm dalam direktori rumah anda.

cd ~/yalm

8. Jalankan contoh daripada YaLM 100B

Kami bersedia untuk melancarkan salah satu contoh. Mereka diterangkan
di sini .

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

Sabar, tinggal menunggu 10-15 minit lagi sehingga model GPT dicipta dan pemberat dari pusat pemeriksaan dimuatkan.
Rangkaian saraf YaLM 100B dalam amalan.

Apabila binaan selesai, MegatronML akan menggesa anda untuk memasukkan konteks untuk menjana teks. Berhati-hati apabila anda menaip. Dalam keadaan tertentu, ralat berlaku, program ranap dan anda perlu memulakan pemasangan semula. Oleh itu, lebih baik menggunakan contoh yang mengambil teks daripada fail.

9. Hasil kerja

Rangkaian saraf YaLM 100B dalam amalan.
Rangkaian saraf YaLM 100B dalam amalan. Nampak menarik. Sudah tentu, ini hanyalah contoh yang baik. Saya menjalankan ujian pada sampel yang berbeza. Seperti yang dijangka, lebih baik konteksnya, teks yang lebih bermakna akan dihasilkan. Set penuh generasi percubaan boleh dilihat di pautan:

Untuk harga, saya memerlukan kira-kira 9 ribu rubel untuk menyewa pelayan dengan kapasiti yang berbeza dari latihan dan dari persiapan ke generasi. Satu kekecewaan tertentu ialah anda tidak boleh menjana segala-galanya dengan serta-merta. Ia mengambil masa yang sangat lama untuk dimulakan dan teks tidak menjana secepat yang kita mahu, memandangkan kos pelayan sejam.
Rangkaian saraf YaLM 100B dalam amalan.  

Bagaimana untuk menjalankan YaLM tanpa 200Gb GPU RAM?

Anda perlu menambah deepspeed zero offload pada konfigurasi. Bagi mereka yang tahu apa yang kita bicarakan, ia akan menjadi sangat mudah untuk melakukannya. Bagi yang lain, ini bukanlah tugas yang remeh sama sekali. Adalah penting untuk mengetahui bahawa offload boleh sama ada dalam CPU RAM atau NVMe. Anda boleh melupakan NVMe pada masa ini, kerana. sejumlah besar data sedang diproses dan cakera tidak dapat menampungnya. CPU pemuatan sifar adalah lebih nyata. Benar, untuk ini anda perlu mempunyai 200+ Gb CPU RAM dalam stok, yang juga tidak murah. Dan satu teks akan dijana selama kira-kira 20-40 minit, kerana ia masih belum dapat diselaraskan pada dua kad video. Seperti yang anda lihat dalam tangkapan skrin di bawah, hanya satu kad video yang terlibat dalam penjanaan, dan kemudian hanya untuk satu perempat daripada memori. Ia masih dapat dilihat mengapa semua 24 GB tidak digunakan,
Rangkaian saraf YaLM 100B dalam amalan. Nah, sebagai kesimpulan, saya akan mengatakan bahawa adalah mungkin untuk dijalankan walaupun pada satu RTX 3070 TI. Tetapi tidak ada pengertian khusus dalam hal ini, kerana. NVMe tidak akan membenarkan anda memproses 150 GB data dengan cepat dalam pertukaran, yang berada dalam lampiran 96 GB RAM.
Rangkaian saraf YaLM 100B dalam amalan.

Menjumlahkan

Sudah tentu, saya masih akan cuba mencari laluan pelancaran yang optimum. Tetapi setakat ini saya telah membuat kesimpulan bahawa YaLM 100b terlalu mahal / terlalu lambat untuk tugas saya. Untuk wang yang sama, orang akan menulis lebih banyak dan lebih baik. Tetapi saya fikir ia adalah sementara, kita akan lihat. Jika anda memerlukan bantuan untuk melancarkan, menyediakan yalm atau ingin melihat keputusan pada contoh konteks anda, tulis ke mel atau telegram.

pskucherov
Rate author
Add a comment

  1. Olha

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

    Reply
  2. Данила

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

    Reply
  3. Дмитрий

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

    Reply