Baru-baru ini, para peneliti dari ISTA mengusulkan metode kuantisasi model baru, QMoE, yang dapat memampatkan 1,6 triliun parameter SwitchTransformer menjadi kurang dari 160GB (0,8 bit per parameter) dengan sedikit kehilangan akurasi.
Sumber gambar: Dihasilkan oleh Unbounded AI
Dengan arsitektur GPT-4 yang "open source" oleh para pemimpin industri terkenal, Hybrid Expert Architecture (MoE) sekali lagi menjadi fokus penelitian.
GPT-4 memiliki 16 model ahli dengan total 1,8 triliun parameter. Setiap pembuatan token membutuhkan sekitar 280 miliar parameter dan 560 TFLOPs
Namun, biaya model yang lebih cepat dan lebih akurat adalah sejumlah besar parameter dan biaya tinggi yang menyertainya.
Misalnya, model SwitchTransformer-c2048 dengan parameter 1,6 triliun memerlukan memori GPU 3,2 TB agar dapat berjalan secara efektif.
Untuk mengatasi masalah ini, para peneliti dari Institut Teknologi Austria (ISTA) telah mengusulkan kerangka kompresi dan eksekusi yang sama sekali baru – QMoE.
Alamat:
Dengan menggunakan inti decoding GPU yang dirancang khusus, QMoE memiliki inferensi kompresi end-to-end yang efisien – yang dapat mencapai kompresi hingga 20x hanya dengan sedikit kehilangan presisi.
Secara khusus, QMoE dapat memampatkan model 1,6 triliun parameter SwitchTransformer-c2048 menjadi kurang dari 160GB dalam satu server GPU dalam satu hari, yang setara dengan hanya 0,8 bit per parameter.
Ini memungkinkan Anda menjalankan 4 GPU NVIDIA RTX A6000 atau 8 NVIDIA RTX 3090 dengan biaya inferensi kurang dari 5% untuk model yang tidak terkompresi.
Kuantisasi Model MoE
Ide inti dari Hybrid Model (MoE) adalah untuk meningkatkan jumlah parameter model untuk meningkatkan kemampuan pemodelan jaringan, sambil menjaga biaya komputasi hampir sama dibandingkan dengan arsitektur feedforward standar.
Karena hanya sebagian kecil dari jaringan yang perlu dipanggil untuk memproses setiap token input, desain ini dapat memanfaatkan 100 atau bahkan 1.000 "ahli" untuk membangun model hyperscale untuk pelatihan dan inferensi yang efisien.
Telah terbukti bahwa MoE dapat sangat meningkatkan akurasi dan kecepatan pelatihan ketika kecepatan inferensi sebanding. Tetapi volume sebesar itu berarti banyak memori video diperlukan untuk membuat model berjalan.
Tantangan utama dalam mengompresi MoE adalah kebutuhan untuk mempertahankan serangkaian aktivasi yang besar.
Dalam hal ini, data perantara yang perlu dihitung dapat dikontrol sebagian kecil dengan mengatur eksekusi model secara hati-hati. Ini membongkar penyimpanan utama dari GPU ke memori CPU yang lebih murah dan lebih mahal.
Secara khusus, pertahankan buffer B yang besar dan perbarui bagian padat blok Transformer sebagai berikut:
Dari CPU ke GPU, ambil "sampel" X yang berisi ratusan token;
Melalui lapisan padat yang sesuai, hasil Y diperoleh;
Hitung dan simpan alokasi ahli token di Y;
Kirim Y kembali ke CPU dan timpa X di B.
Untuk bagian yang jarang:
Dari CPU ke GPU, ambil semua token di B yang telah ditetapkan ke Expert E, diwakili oleh X_E.
Gunakan mereka untuk menghasilkan E ahli terkompresi (misalnya, menggunakan GPTQ).
Jalankan X_E melalui E' untuk mendapatkan Y_E'.
Kirim Y_E' kembali ke CPU dan timpa X_E di B.
Seperti yang ditunjukkan pada Gambar 2, proses ini meminimalkan konsumsi memori dan biaya transfer: hanya satu salinan B yang diperlukan, dan setiap token dibaca dan ditulis hanya dua kali di setiap blok Transformer.
Selanjutnya, para peneliti merancang skema pengkodean dan inti CUDA untuk mencapai kompresi kurang dari 1 bit per berat dan meminimalkan overhead eksekusi GPU untuk inferensi.
Efek kompresi
Akurasi
Pertama, para peneliti mengukur semua model SwitchTransformer dengan presisi 2-bit dan terner, dan kemudian mengevaluasi kerugian validasi mereka.
Untuk 128 ahli, ukuran sampel kalibrasi default adalah 10K; Untuk 2048 ahli, ukuran sampel kalibrasi default adalah 160K. Pada saat yang sama, para peneliti juga menguji ukuran sampel 0,5x dan 2x.
Hasilnya menunjukkan bahwa model 2 digit dapat dicapai dengan kerugian minimal (1,7% relatif terhadap C2048) dan sedikit peningkatan kerugian di bawah presisi terner (6,7% relatif terhadap C2048) menggunakan kuantisasi yang bergantung pada data.
Ini tidak hanya membuktikan efektivitas metode kuantifikasi lanjutan yang diusulkan, tetapi juga menunjukkan bahwa kompresi lebar bit yang sangat rendah memang cocok untuk MoE skala besar.
Selain itu, para peneliti mengevaluasi data dari arXiv, GitHub, StackExchange, dan Wikipedia RedPajama.
Meskipun hanya <0,01% dari data kalibrasi berasal dari situs-situs ini, model terkompresi masih mempertahankan kinerja yang hampir sama dengan distribusi inti.
Dalam kasus data kalibrasi, meningkatkan ukuran sampel biasanya sedikit meningkatkan kinerja, dan paling terlihat dalam kuantisasi terner. Tetapi ada juga beberapa kebisingan dalam prosesnya, terutama pada 2 bit.
### Kompresi
Dalam tes tersebut, para peneliti mempertimbangkan kompresi modul MoE saja, serta kompresi relatif terhadap seluruh model dan semua metadatanya.
Untuk MoE saja, kompresi >16x dicapai pada semua skala, yang setara dengan 1 bit penyimpanan < ruang untuk setiap parameter.
Pada c2048, rasio kompresi keseluruhan adalah 19,81 kali, yang setara dengan 0,807 bit per parameter, bahkan termasuk semua lapisan padat yang tidak terkompresi, mengurangi ukuran pos pemeriksaan dari 3142GB menjadi 158,6GB.
Selain itu, dapat diamati bahwa rasio kompresi meningkat dengan ukuran model karena dua alasan:
(a) sparsitas alami meningkat, dan para peneliti mengoptimalkan kamus pengkodean untuk C2048;
(b) Semakin besar lapisan, semakin dekat distribusi berat dengan independensi.
### Runtime
Akhirnya, para peneliti mengevaluasi waktu yang diperlukan untuk menghasilkan model terkompresi pada GPU A6000 tunggal untuk jumlah data kalibrasi yang berbeda.
Hasilnya menunjukkan bahwa model yang lebih kecil dapat dikompresi dalam waktu kurang dari satu jam, dan bahkan c2048 dapat diselesaikan dalam waktu kurang dari sehari, mengkonfirmasi efisiensi tinggi QMoE.
Dari large128 ke c2048, peningkatan waktu berjalan pada dasarnya sebanding dengan perbedaan ukuran, meskipun yang terakhir menggunakan sampel 16 kali lipat lebih banyak. Ini karena ukuran sampel per ahli tetap sama, sedangkan ukuran ahli hanya meningkat sedikit.
### Hasil Berjalan
Pertama, perbandingan langsung (terisolasi) dari kernel produk matriks-vektor terkompresi dengan kernel bfloat16 cuBLAS (tidak terkompresi) dari standar PyTorch.
Gambar 5 (kiri) menunjukkan waktu yang dibutuhkan MoE untuk menemukan bentuk matriks pada dua GPU yang berbeda dibandingkan dengan core bfloat16.
Meskipun para peneliti menggunakan kinerja penyimpanan yang buruk, masih butuh waktu lebih sedikit untuk mengeksekusi kernel kompresi daripada baseline bfloat16 yang hampir ideal. Hingga 35% lebih cepat dalam bentuk matriks tertentu.
Latensi operasi ini juga sangat rendah, dengan matriks terkecil mengambil < 0,02 ms dan yang terbesar < 0,05 ms.
Selanjutnya, para peneliti melakukan benchmark end-to-end kernel di HuggingFace menggunakan bobot aktual dari model MoE terkompresi.
Seperti yang ditunjukkan pada Gambar 5 (kanan), eksekusi end-to-end dari model terkompresi hanya <5% lebih lambat daripada model standar (tidak terkompresi).
Meskipun waktu setiap lapisan lebih cepat, masih ada sedikit penurunan kecepatan karena encoder terkadang merutekan beberapa token ke pakar yang sama.
Implementasi saat ini adalah melakukan produk vektor matriks terpisah untuk setiap token, sedangkan baseline melakukan perkalian matriks gabungan yang lebih efisien.
Dalam beberapa aplikasi, ini adalah hambatan besar. Ini dapat dilakukan dengan memperkenalkan loop in-token di kernel atau, dalam kasus sejumlah besar token, dengan melakukan dekompresi penuh sebelum melakukan perkalian matriks standar.
Diskusi &; Batasan
Singkatnya, QMoE adalah kerangka kerja kompresi dan inferensi end-to-end open-source untuk memecahkan masalah overhead memori yang berlebihan dalam proses inferensi MoE.
Untuk pertama kalinya, para peneliti telah menunjukkan bahwa model triliunan parameter seperti SwitchTransformer c2048 dapat dikompresi secara tepat menjadi kurang dari 1 bit per parameter, dengan tingkat kompresi hampir 20 kali. Dan, untuk pertama kalinya, eksekusi end-to-end yang efisien dari model tersebut dicapai pada server GPU tingkat konsumen tunggal.
Namun, karena hanya sejumlah kecil MoE berskala besar dan akurat yang tersedia untuk umum, rangkaian model yang dipelajari terbatas.
Selain itu, karena ukurannya yang tipis, sebagian besar MoE dilatih dan digunakan dalam kerangka kerja kustom yang berbeda, yang memerlukan integrasi manual yang kompleks untuk penelitian lebih lanjut.
Namun, para peneliti membahas beberapa MoE terbesar dan paling akurat, terutama SwitchTransformer.
Sumber daya:
Lihat Asli
Halaman ini mungkin berisi konten pihak ketiga, yang disediakan untuk tujuan informasi saja (bukan pernyataan/jaminan) dan tidak boleh dianggap sebagai dukungan terhadap pandangannya oleh Gate, atau sebagai nasihat keuangan atau profesional. Lihat Penafian untuk detailnya.
8 3090, kompresi 1 hari triliun parameter model besar! 3,2TB anjlok menjadi 160GB, dengan rasio kompresi hingga 20 kali lipat
Sumber artikel: Zhiyuan Baru
Dengan arsitektur GPT-4 yang "open source" oleh para pemimpin industri terkenal, Hybrid Expert Architecture (MoE) sekali lagi menjadi fokus penelitian.
Namun, biaya model yang lebih cepat dan lebih akurat adalah sejumlah besar parameter dan biaya tinggi yang menyertainya.
Misalnya, model SwitchTransformer-c2048 dengan parameter 1,6 triliun memerlukan memori GPU 3,2 TB agar dapat berjalan secara efektif.
Untuk mengatasi masalah ini, para peneliti dari Institut Teknologi Austria (ISTA) telah mengusulkan kerangka kompresi dan eksekusi yang sama sekali baru – QMoE.
Dengan menggunakan inti decoding GPU yang dirancang khusus, QMoE memiliki inferensi kompresi end-to-end yang efisien – yang dapat mencapai kompresi hingga 20x hanya dengan sedikit kehilangan presisi.
Secara khusus, QMoE dapat memampatkan model 1,6 triliun parameter SwitchTransformer-c2048 menjadi kurang dari 160GB dalam satu server GPU dalam satu hari, yang setara dengan hanya 0,8 bit per parameter.
Ini memungkinkan Anda menjalankan 4 GPU NVIDIA RTX A6000 atau 8 NVIDIA RTX 3090 dengan biaya inferensi kurang dari 5% untuk model yang tidak terkompresi.
Kuantisasi Model MoE
Ide inti dari Hybrid Model (MoE) adalah untuk meningkatkan jumlah parameter model untuk meningkatkan kemampuan pemodelan jaringan, sambil menjaga biaya komputasi hampir sama dibandingkan dengan arsitektur feedforward standar.
Karena hanya sebagian kecil dari jaringan yang perlu dipanggil untuk memproses setiap token input, desain ini dapat memanfaatkan 100 atau bahkan 1.000 "ahli" untuk membangun model hyperscale untuk pelatihan dan inferensi yang efisien.
Telah terbukti bahwa MoE dapat sangat meningkatkan akurasi dan kecepatan pelatihan ketika kecepatan inferensi sebanding. Tetapi volume sebesar itu berarti banyak memori video diperlukan untuk membuat model berjalan.
Dalam hal ini, data perantara yang perlu dihitung dapat dikontrol sebagian kecil dengan mengatur eksekusi model secara hati-hati. Ini membongkar penyimpanan utama dari GPU ke memori CPU yang lebih murah dan lebih mahal.
Secara khusus, pertahankan buffer B yang besar dan perbarui bagian padat blok Transformer sebagai berikut:
Dari CPU ke GPU, ambil "sampel" X yang berisi ratusan token;
Melalui lapisan padat yang sesuai, hasil Y diperoleh;
Hitung dan simpan alokasi ahli token di Y;
Kirim Y kembali ke CPU dan timpa X di B.
Dari CPU ke GPU, ambil semua token di B yang telah ditetapkan ke Expert E, diwakili oleh X_E.
Gunakan mereka untuk menghasilkan E ahli terkompresi (misalnya, menggunakan GPTQ).
Jalankan X_E melalui E' untuk mendapatkan Y_E'.
Kirim Y_E' kembali ke CPU dan timpa X_E di B.
Seperti yang ditunjukkan pada Gambar 2, proses ini meminimalkan konsumsi memori dan biaya transfer: hanya satu salinan B yang diperlukan, dan setiap token dibaca dan ditulis hanya dua kali di setiap blok Transformer.
Selanjutnya, para peneliti merancang skema pengkodean dan inti CUDA untuk mencapai kompresi kurang dari 1 bit per berat dan meminimalkan overhead eksekusi GPU untuk inferensi.
Efek kompresi
Akurasi
Pertama, para peneliti mengukur semua model SwitchTransformer dengan presisi 2-bit dan terner, dan kemudian mengevaluasi kerugian validasi mereka.
Untuk 128 ahli, ukuran sampel kalibrasi default adalah 10K; Untuk 2048 ahli, ukuran sampel kalibrasi default adalah 160K. Pada saat yang sama, para peneliti juga menguji ukuran sampel 0,5x dan 2x.
Hasilnya menunjukkan bahwa model 2 digit dapat dicapai dengan kerugian minimal (1,7% relatif terhadap C2048) dan sedikit peningkatan kerugian di bawah presisi terner (6,7% relatif terhadap C2048) menggunakan kuantisasi yang bergantung pada data.
Ini tidak hanya membuktikan efektivitas metode kuantifikasi lanjutan yang diusulkan, tetapi juga menunjukkan bahwa kompresi lebar bit yang sangat rendah memang cocok untuk MoE skala besar.
Meskipun hanya <0,01% dari data kalibrasi berasal dari situs-situs ini, model terkompresi masih mempertahankan kinerja yang hampir sama dengan distribusi inti.
Dalam kasus data kalibrasi, meningkatkan ukuran sampel biasanya sedikit meningkatkan kinerja, dan paling terlihat dalam kuantisasi terner. Tetapi ada juga beberapa kebisingan dalam prosesnya, terutama pada 2 bit.
Dalam tes tersebut, para peneliti mempertimbangkan kompresi modul MoE saja, serta kompresi relatif terhadap seluruh model dan semua metadatanya.
Untuk MoE saja, kompresi >16x dicapai pada semua skala, yang setara dengan 1 bit penyimpanan < ruang untuk setiap parameter.
Pada c2048, rasio kompresi keseluruhan adalah 19,81 kali, yang setara dengan 0,807 bit per parameter, bahkan termasuk semua lapisan padat yang tidak terkompresi, mengurangi ukuran pos pemeriksaan dari 3142GB menjadi 158,6GB.
Selain itu, dapat diamati bahwa rasio kompresi meningkat dengan ukuran model karena dua alasan:
(a) sparsitas alami meningkat, dan para peneliti mengoptimalkan kamus pengkodean untuk C2048;
(b) Semakin besar lapisan, semakin dekat distribusi berat dengan independensi.
Akhirnya, para peneliti mengevaluasi waktu yang diperlukan untuk menghasilkan model terkompresi pada GPU A6000 tunggal untuk jumlah data kalibrasi yang berbeda.
Hasilnya menunjukkan bahwa model yang lebih kecil dapat dikompresi dalam waktu kurang dari satu jam, dan bahkan c2048 dapat diselesaikan dalam waktu kurang dari sehari, mengkonfirmasi efisiensi tinggi QMoE.
Dari large128 ke c2048, peningkatan waktu berjalan pada dasarnya sebanding dengan perbedaan ukuran, meskipun yang terakhir menggunakan sampel 16 kali lipat lebih banyak. Ini karena ukuran sampel per ahli tetap sama, sedangkan ukuran ahli hanya meningkat sedikit.
Pertama, perbandingan langsung (terisolasi) dari kernel produk matriks-vektor terkompresi dengan kernel bfloat16 cuBLAS (tidak terkompresi) dari standar PyTorch.
Gambar 5 (kiri) menunjukkan waktu yang dibutuhkan MoE untuk menemukan bentuk matriks pada dua GPU yang berbeda dibandingkan dengan core bfloat16.
Meskipun para peneliti menggunakan kinerja penyimpanan yang buruk, masih butuh waktu lebih sedikit untuk mengeksekusi kernel kompresi daripada baseline bfloat16 yang hampir ideal. Hingga 35% lebih cepat dalam bentuk matriks tertentu.
Latensi operasi ini juga sangat rendah, dengan matriks terkecil mengambil < 0,02 ms dan yang terbesar < 0,05 ms.
Seperti yang ditunjukkan pada Gambar 5 (kanan), eksekusi end-to-end dari model terkompresi hanya <5% lebih lambat daripada model standar (tidak terkompresi).
Meskipun waktu setiap lapisan lebih cepat, masih ada sedikit penurunan kecepatan karena encoder terkadang merutekan beberapa token ke pakar yang sama.
Implementasi saat ini adalah melakukan produk vektor matriks terpisah untuk setiap token, sedangkan baseline melakukan perkalian matriks gabungan yang lebih efisien.
Dalam beberapa aplikasi, ini adalah hambatan besar. Ini dapat dilakukan dengan memperkenalkan loop in-token di kernel atau, dalam kasus sejumlah besar token, dengan melakukan dekompresi penuh sebelum melakukan perkalian matriks standar.
Diskusi &; Batasan
Singkatnya, QMoE adalah kerangka kerja kompresi dan inferensi end-to-end open-source untuk memecahkan masalah overhead memori yang berlebihan dalam proses inferensi MoE.
Untuk pertama kalinya, para peneliti telah menunjukkan bahwa model triliunan parameter seperti SwitchTransformer c2048 dapat dikompresi secara tepat menjadi kurang dari 1 bit per parameter, dengan tingkat kompresi hampir 20 kali. Dan, untuk pertama kalinya, eksekusi end-to-end yang efisien dari model tersebut dicapai pada server GPU tingkat konsumen tunggal.
Namun, karena hanya sejumlah kecil MoE berskala besar dan akurat yang tersedia untuk umum, rangkaian model yang dipelajari terbatas.
Selain itu, karena ukurannya yang tipis, sebagian besar MoE dilatih dan digunakan dalam kerangka kerja kustom yang berbeda, yang memerlukan integrasi manual yang kompleks untuk penelitian lebih lanjut.
Namun, para peneliti membahas beberapa MoE terbesar dan paling akurat, terutama SwitchTransformer.
Sumber daya: