Jaringan saraf YaLM 100B dalam praktiknya.

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

Pada akhir Juni, Yandex
merilis jaringan saraf dengan 100 miliar parameter yang disebut YaLM 100B ke publik . Ini adalah jaringan saraf mirip GPT terbesar di domain publik. Ini menceritakan tentang bagaimana mereka mengajar, menunjukkan contoh terbaik dan apa yang mampu dilakukan neuron. Tetapi apakah ini sangat baik dalam praktik dan dapat diterapkan di rumah? Artikel diam tentang ini, apalagi menjalankan dan memeriksanya tidak begitu mudah, karena diperlukan sekitar 200 Gb RAM GPU. Komentar tentang Habré
ini mengungkapkan situasi dengan paling akurat
.

Diduga, di Yandex, semua orang pintar seperti itu, dan mereka bahkan tidak memposting How-to yang normal. Tidak ada api untuk model besar, tidak ada model menengah atau kecil yang siap pakai untuk orang biasa (di Google Colab). Tidak ada contoh yang diberikan tentang cara mengatur model, cara menghasilkan teks. Hanya saja artikel tersebut menunjukkan beberapa nuansa untuk kutu buku dan hanya itu. Cukup dengan melihat lebih dekat bagaimana bank melakukannya dengan huruf “C” dan melakukan hal yang sama. Saya mendapat kesan bahwa model ini hanyalah salah satu eksperimen gagal yang sayang untuk dibuang ke tempat sampah, jadi model ini diposting di Open Source untuk menunjukkan model hebat apa yang dibuat Yandex, dan terlebih lagi, ini adalah open source!

Ada banyak pertanyaan di Internet bagaimana menjalankan yalm atau bahkan mencoba online, tetapi tidak ada jawaban untuk ini. Saya termasuk di antara pengguna yang menanyakan pertanyaan-pertanyaan ini. Dan mulai mencari tahu. Karena saya sangat membutuhkan cara untuk menghasilkan teks untuk robot keuangan. Sehingga mereka dapat memprediksi tidak hanya nilai, tetapi juga mengomentarinya dalam teks, berdasarkan laporan keuangan. Intinya akan sama dengan apa yang dilakukan oleh para analis keuangan, hanya saja dengan penggunaan kecerdasan buatan. Ada dua cara untuk menjalankan yalm.
Sewa server di clouddengan 200+ Gb GPU RAM atau ubah kode dan jalankan dengan deepspeed zero offload (ketika GPU secara berurutan memproses bagian dari jaringan saraf, dan sisanya disimpan dalam RAM CPU atau NVMe). Yang pertama sangat mahal, sekitar 2.500 rubel per jam atau 1,7 juta per bulan. Yang kedua tidak diketahui, karena kode dalam repositori tidak disediakan, hanya
petunjuk dalam masalah repositori, yang tidak sulit dilakukan. Mari kita mulai sederhana.

Petunjuk Peluncuran YaLM 100B

1. Kami menyewakan RAM GPU 200 GB, misalnya di sini .

Jaringan saraf YaLM 100B dalam praktiknya.

Anda memerlukan setidaknya 200 GB total memori video. 8×40 = 320 GB. Hanya yang ini yang cocok. Kurang dari 200 tidak mungkin, lebih mungkin. Panah menunjukkan RAM CPU, kami tidak melihatnya. Dia bisa menjadi siapa saja.

Kami menunjukkan disk sekitar 300 GB, sehingga dengan cadangan dan sebaiknya disk cepat, karena. puluhan gigabyte data akan ditransfer ke dan dari itu.

Jaringan saraf YaLM 100B dalam praktiknya. Saat membuat di sumber, pilih Ubuntu ML (Machine Learning). Ini wajib agar kartu video dikonfigurasi dan tidak ada yang perlu dipasang tambahan.

Saat membuat server, ada nuansa dengan kuota, Anda mungkin merasa bahwa peralatan tidak tersedia, tetapi sebenarnya Anda hanya perlu menambah kuota di pengaturan. Setelah server diaktifkan (mungkin memerlukan waktu 5-10 menit), sambungkan ke server melalui ssh atau langsung di konsol web di halaman server dan jalankan perintah.

nvidia-smi

Hasilnya harus berupa tabel dengan kartu video, versi driver, dan cuda. Kurang lebih seperti ini.
Jaringan saraf YaLM 100B dalam praktiknya. Di header versi driver dan di mana. Di sisi kiri adalah nomor perangkat, di tengah adalah ukuran memori perangkat. Jika Anda tidak memiliki informasi ini, maka Anda telah mengumpulkan server dari sumber yang salah. Ubuntu ML (Machine Learnong) diperlukan, seperti yang dijelaskan di atas.

2. Mengkloning repositori dengan YaLM

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

Klon ke folder rumah Anda sehingga Anda tidak perlu mengedit konfigurasi buruh pelabuhan sesudahnya. Jika dikloning di tempat lain,
buka di sini dan tambahkan jalur ke tempat kloning.

3. Unduh pos pemeriksaan (informasi pelatihan model dasar)

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

Ini akan memakan waktu sekitar satu jam. Agar tidak membuang waktu dengan sia-sia, kami membuat koneksi ssh baru dan secara paralel kami mulai membangun wadah buruh pelabuhan.

4. Instal nvidiaburuh pelabuhan 2

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

5. Membangun wadah untuk YaLM

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

Ini juga sekitar satu jam.

Peretasan hidup. Anda dapat mengunduh pos pemeriksaan, memasang buruh pelabuhan, dan membuat wadah di server murah dengan satu kartu video. Ini akan sama dalam waktu, sehingga Anda dapat menghemat sedikit. Setelah perakitan di server murah, kami menghapusnya, dan membuat server tempur menggunakan disk dari server murah. Maka Anda tidak akan membayar lebih waktu untuk menunggu perakitan dan memompa keluar pos pemeriksaan.

6. Siapkan konten

6.1 Pos pemeriksaan

Setelah pengunduhan pos pemeriksaan selesai, Anda harus memasukkannya ke dalam konfigurasi. Ada dua cara, parameter yang benar atau pos pemeriksaan transfer. Di mana-mana diharapkan pos pemeriksaan akan berada di direktori utama proyek, masing-masing, apa yang telah diunduh harus dipindahkan dari folder unduhan di atas. Berada di folder yalm, jalankan

mv ./download/yalm100b_checkpoint ./

Atau ubah jalur ke file dalam file contoh
https://github.com/yandex/YaLM-100B/blob/c91b7d7fe8dbf39c9e307d6d324446d0df136a23/examples/generate_interactive.sh#L8-L9

6.2 Kartu video

Kami memeriksa apakah kartu video disetel dengan benar. Jika Anda memiliki delapan kartu video, maka tidak ada yang perlu diubah. Jika jumlahnya berbeda, maka kami mengubah baris ini
Jaringan saraf YaLM 100B dalam praktiknya. Di baris kedua, jumlah perangkat yang digunakan (Anda dapat melihatnya di nvidia-smi, yang telah Anda luncurkan). Di keempat, jumlah mereka.

7. Jalankan wadah buruh pelabuhan

Berada di folder yalm, jalankan perintah

sudo bash ./docker/run.sh

Jika semuanya baik-baik saja, maka Anda akan dibawa ke wadah di mana Anda harus pergi ke folder yalm di direktori home Anda.

cd ~/yalm

8. Jalankan contoh dari YaLM 100B

Kami siap meluncurkan salah satu contohnya. Mereka dijelaskan
di sini .

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

Bersabarlah, masih menunggu 10-15 menit lagi hingga model GPT dibuat dan bobot dari pos pemeriksaan dimuat.
Jaringan saraf YaLM 100B dalam praktiknya.

Saat build selesai, MegatronML akan meminta Anda memasukkan konteks untuk menghasilkan teks. Hati-hati saat mengetik. Dalam keadaan tertentu, kesalahan terjadi, program macet dan Anda harus memulai perakitan lagi. Oleh karena itu, lebih baik menggunakan contoh yang mengambil teks dari file.

9. Hasil pekerjaan

Jaringan saraf YaLM 100B dalam praktiknya.
Jaringan saraf YaLM 100B dalam praktiknya. Terlihat menarik. Tentu saja, ini hanya contoh yang bagus. Saya menjalankan tes pada sampel yang berbeda. Seperti yang diharapkan, semakin baik konteksnya, teks yang lebih bermakna akan dihasilkan. Kumpulan lengkap generasi eksperimental dapat dilihat di tautan:

Untuk harganya, saya menghabiskan sekitar 9 ribu rubel untuk menyewa server dengan kapasitas berbeda dari pelatihan dan dari persiapan hingga generasi. Kekecewaan khusus adalah bahwa Anda tidak dapat secara instan menghasilkan semuanya. Dibutuhkan waktu yang sangat lama untuk memulai dan teks tidak dihasilkan secepat yang kita inginkan, mengingat biaya server per jam.
Jaringan saraf YaLM 100B dalam praktiknya.  

Bagaimana cara menjalankan YaLM tanpa RAM GPU 200Gb?

Anda perlu menambahkan deepspeed zero offload ke konfigurasi. Bagi mereka yang tahu apa yang kita bicarakan, akan sangat mudah untuk melakukannya. Bagi yang lain, ini sama sekali bukan tugas sepele. Penting untuk diketahui bahwa offload dapat berupa RAM CPU atau NVMe. Anda dapat melupakan NVMe saat ini, karena. sejumlah besar data sedang diproses dan disk tidak dapat mengatasinya. CPU tanpa beban lebih nyata. Benar, untuk ini Anda harus memiliki stok RAM CPU 200+ Gb, yang juga tidak murah. Dan satu teks akan dihasilkan selama sekitar 20-40 menit, karena belum memungkinkan untuk memparalelkannya pada dua kartu video. Seperti yang dapat Anda lihat pada tangkapan layar di bawah, hanya satu kartu video yang terlibat dalam pembuatan, dan kemudian hanya seperempat dari memori. Masih harus dilihat mengapa semua 24 GB tidak digunakan,
Jaringan saraf YaLM 100B dalam praktiknya. Nah, sebagai kesimpulan, saya akan mengatakan bahwa adalah mungkin untuk berjalan bahkan pada satu RTX 3070 TI. Tetapi tidak ada pengertian khusus dalam hal ini, karena. NVMe tidak akan memungkinkan Anda untuk dengan cepat memproses 150 GB data di swap, yang berada di embel-embel RAM 96 GB.
Jaringan saraf YaLM 100B dalam praktiknya.

Menyimpulkan

Tentu saja, saya akan tetap mencoba menemukan jalur peluncuran yang optimal. Tapi sejauh ini saya sampai pada kesimpulan bahwa YaLM 100b terlalu mahal / terlalu lambat untuk tugas saya. Untuk uang yang sama, orang akan menulis lebih banyak dan lebih baik. Tapi saya pikir itu sementara, kita lihat saja. Jika Anda memerlukan bantuan untuk meluncurkan, menyiapkan yalm, atau ingin melihat hasilnya pada contoh konteks Anda, tulis ke surat atau telegram.

pskucherov
Rate author
Add a comment

  1. Olha

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

    Reply
  2. Данила

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

    Reply
  3. Дмитрий

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

    Reply