Rumah >Peranti teknologi >AI >Tidak bolehkah model bahasa dengan 10 bilion parameter dijalankan? Seorang doktor Cina dari MIT mencadangkan kuantifikasi SmoothQuant, yang mengurangkan keperluan memori sebanyak separuh dan meningkatkan kelajuan sebanyak 1.56 kali!
Walaupun model bahasa berskala besar (LLM) mempunyai prestasi yang kukuh, bilangan parameter boleh mencecah ratusan atau ratusan bilion dengan mudah, dan permintaan untuk peralatan dan memori pengkomputeran adalah sangat besar sehingga syarikat biasa tidak mampu membelinya.
Kuantisasi ialah operasi mampatan biasa Dengan mengurangkan ketepatan berat model (seperti 32bit kepada 8bit), beberapa prestasi model dikorbankan sebagai pertukaran untuk kelajuan inferens yang lebih cepat dan lebih rendah memori. keperluan.
Tetapi untuk LLM yang mempunyai lebih daripada 100 bilion parameter, kaedah pemampatan sedia ada tidak dapat mengekalkan ketepatan model dan ia juga tidak boleh berjalan dengan cekap pada perkakasan.
Baru-baru ini, penyelidik dari MIT dan NVIDIA bersama-sama mencadangkan penyelesaian pengkuantitian pasca latihan tujuan umum (GPQ, pengkuantitian pasca latihan tujuan umum) SmoothQuant, untuk model bahasa yang besar, pemberat 8-bit dan kuantifikasi pengaktifan 8-bit (W8A8) boleh direalisasikan dengan cekap, dan ketepatan model boleh dikekalkan tanpa latihan.
Pautan kertas: https://arxiv.org/pdf/2211.10438.pdf
Pautan kod: https://github.com/mit-han-lab/smoothquant
Memandangkan pengaktifan lebih sukar untuk diukur daripada berat , SmoothQuant memindahkan pengaktifan yang sukar untuk diukur kepada pemberat melalui transformasi setara matematik, mencapai pemprosesan lancar pengaktifan outlier.
SmoothQuant boleh mengukur berat dan pengaktifan kepada INT8 dalam pelbagai lapisan semua LLM, termasuk OPT-175B, BLOOM-176B dan GLM-130B.
Berbanding dengan kaedah sedia ada yang hanya melakukan pengoptimuman berat atau pengkuantitian pengaktifan dengan ketepatan campuran, SmoothQuant mempunyai kecekapan perkakasan yang lebih tinggi dan mencapai 1.56 kali pecutan Keperluan memori hanya separuh daripada LLM asal, dan hampir tiada kehilangan ketepatan .
SmoothQuant juga mempunyai reka bentuk yang mesra perkakasan. Para penyelidik menyepadukan SmoothQuant ke dalam rangka kerja perkhidmatan LLM FasterTransformer untuk mencapai kelajuan inferens yang lebih pantas daripada FP16, hanya separuh daripada bilangan GPU diperlukan
Pengarang pertama artikel, Xiao Guangxuan, ialah pelajar kedoktoran tahun pertama di MIT EECS dan lulus dari Sekolah Komputer Sains dan Teknologi, Universiti Tsinghua.
Pengajar Song Han ialah seorang profesor bersekutu di MIT EECS Dia lulus dari Universiti Stanford dengan gelaran PhD ialah pembelajaran mendalam yang cekap, yang boleh menukar rangkaian saraf kepada Saiznya dikurangkan dengan susunan magnitud tanpa kehilangan ketepatan.
Kuantisasi adalah untuk memetakan nilai ketepatan tinggi kepada nilai diskret ketepatan yang lebih rendah Dalam kertas kerja ini, penyelidik memberi tumpuan terutamanya pada peningkatan perkakasan Kuantiti seragam integer yang cekap , terutamanya INT8.
Operasi kuantisasi boleh dilakukan pada butiran yang berbeza, seperti kuantisasi per-tensor digunakan pada keseluruhan matriks berat, dan kuantisasi per-token ialah digunakan pada pengaktifan Bagi setiap token, kuantiti setiap saluran digunakan pada setiap saluran keluaran berat.
Dengan memerhatikan hasil kuantitatif pengaktifan, penyelidik membuat kesimpulan beberapa corak:
1. Kuantifikasi lebih sukar untuk diukur daripada berat.
Pengagihan pemberat secara relatifnya lebih seragam dan rata Hasil penyelidikan terdahulu telah membuktikan bahawa mengurangkan berat model bahasa besar kepada INT8 atau bahkan INT4 mempunyai sedikit kesan terhadap ketepatan.
2. Outlier ialah kesukaran utama dalam pengkuantifikasian pengaktifan.
Outlier dalam pengaktifan biasanya kira-kira 100 kali lebih tinggi daripada nilai biasa, menghasilkan kecekapan bit/aras pengkuantitian yang sangat rendah dalam saluran tanpa outlier.
3. Outlier ditetapkan untuk muncul dalam saluran tertentu.
Outlier hanya akan muncul dalam bahagian kecil saluran, tetapi jika terdapat outlier dalam satu saluran, outlier itu mungkin muncul dalam semua muncul dalam token.
Varians semua saluran dalam token tertentu akan menjadi besar (sesetengah saluran akan menjadi sangat besar, tetapi kebanyakannya akan menjadi kecil), tetapi diberi Varians saluran merentas semua darjah token akan menjadi kecil (saluran outlier akan menjadi besar).
Memandangkan outlier mempunyai ciri kejadian berterusan dan varians kecil dalam setiap saluran, jika kuantisasi setiap saluran dilakukan pada pengaktifan, ralat pengkuantitian akan jauh lebih kecil daripada kuantisasi per-tensor .
Melalui percubaan mudah, keputusan sekali lagi mengesahkan idea penyelidik Apabila dikuantisasi kepada INT8, ketepatan setiap saluran adalah lebih tinggi daripada Kuantiti per-tensor dan per-token, iaitu. ketepatan hampir sama dengan garis dasar FP16.
Para penyelidik melancarkan pengaktifan input dengan menggunakan faktor pelicinan setiap saluran s. Untuk mengekalkan kesetaraan matematik lapisan linear, pemberat juga perlu berskala songsang.
Oleh kerana input X biasanya dihasilkan oleh operasi linear sebelumnya (seperti lapisan linear, norma lapisan, dll.), ia boleh dengan mudah faktor pelicinan digabungkan ke dalam parameter lapisan sebelumnya di luar talian dan tidak menanggung overhed panggilan kernel bagi penskalaan tambahan. Untuk kes lain, seperti apabila input datang daripada baki tambahan, penskalaan tambahan boleh ditambah pada cawangan baki.
Matlamat Smooth adalah untuk memilih faktor pelicinan setiap saluran supaya songsang Operasi lebih mudah untuk diukur.
Untuk mengurangkan ralat kuantisasi, bit kuantisasi berkesan semua saluran harus ditingkatkan. Apabila magnitud maksimum semua saluran adalah sama, jumlah bilangan bit pengkuantitian berkesan akan menjadi yang terbesar.
Oleh itu, salah satu pilihan faktor pelicinan yang paling langsung ialah nilai maksimum setiap saluran dalam input, yang dapat memastikan bahawa selepas pembahagian, semua saluran pengaktifan mempunyai nilai maksimum yang sama, sekali gus mencapai kuantifikasi yang lebih mudah.
Tetapi perlu diingatkan bahawa julat pengaktifan adalah dinamik dan berbeza untuk sampel input yang berbeza. Oleh itu, penyelidik menggunakan sampel penentukuran daripada set data pra-latihan untuk menganggarkan saiz saluran pengaktifan.
Memandangkan formula ini memindahkan semua kesukaran kuantifikasi kepada pemberat, boleh didapati bahawa dalam kes ini, ralat pengkuantitian pemberat akan menjadi sangat besar, mengakibatkan penurunan ketepatan yang besar.
Sebaliknya, ia juga mungkin untuk menolak semua kesukaran pengkuantitian daripada pemberat kepada pengaktifan dengan memilih sj = 1/ max(|Wj |). Begitu juga, prestasi model juga lemah disebabkan oleh ralat pengkuantitian pengaktifan yang berlebihan. Oleh itu, kesukaran kuantifikasi perlu dibahagikan antara pemberat dan pengaktifan untuk menjadikannya mudah untuk diukur.
Para penyelidik memperkenalkan kekuatan pemindahan hiperparameter α untuk mengawal kesukaran memindahkan daripada pengaktifan kepada pemberat.
Boleh didapati bahawa untuk kebanyakan model, seperti model OPT dan BLOOM, α=0.5 ialah titik imbangan yang baik yang boleh mengagihkan kesukaran pengkuantitian secara sama rata, terutamanya menggunakan pengkuantiti yang sama Perform pemberat dan pengaktifan.
Formula ini memastikan pemberat dan pengaktifan saluran yang sepadan mempunyai nilai maksimum yang sama dan dengan itu berkongsi kesukaran pengkuantitian yang sama.
Untuk model lain dengan outlier pengaktifan yang agak besar, seperti GLM-130B dengan outlier 30%, yang lebih sukar untuk kuantifikasi pengaktifan, anda boleh memilih α besar A yang lebih besar (seperti 0.75) memindahkan lebih banyak kesukaran kuantifikasi kepada pemberat.
SmoothQuant digunakan pada blok Transformer
Lapisan linear merangkumi kebanyakan parameter dan pengiraan model LLM. Secara lalai, SmoothQuant menskalakan pengaktifan input semua lapisan linear dalam Transformer dan mengkuantisasi lapisan linear dengan W8A8, yang membolehkan pengkuantitian operator BMM dalam pengiraan perhatian.
Dalam proses itu, INT8 mula-mula digunakan untuk mengukur input dan pemberat pengendali intensif pengiraan seperti BMM dalam lapisan linear dan lapisan perhatian, manakala Operasi ringan lain pada magnitud elemen, seperti Softmax dan LayerNorm, kekal diaktifkan sebagai FP16 Reka bentuk ini membantu mengimbangi ketepatan dan kecekapan penaakulan.
Para penyelidik memilih tiga model bahasa berskala besar untuk menilai SmoothQuant, termasuk OPT, BLOOM dan GLM-130B dan menggunakan tujuh tugasan sifar, termasuk LAMBADA, HellaSwag , PIQA , WinoGrande, OpenBookQA, RTE, COPA, dsb.
Hasil eksperimen menunjukkan bahawa SmoothQuant boleh menangani masalah pengkuantitian LLM yang sangat besar, yang pengaktifannya lebih sukar untuk diukur.
SmoothQuant boleh memadankan ketepatan FP16 pada semua set data penilaian, manakala garis dasar W8A8, ZeroQuant dan Outlier Suppression menghasilkan keputusan yang hampir rawak.
Dan SmoothQuant boleh menyamakan semua LLM terbuka lebih daripada 100B parameter
Tahap O1 dan O2 SmoothQuant berjaya mengekalkan ketepatan titik terapung manakala Tahap O3 (per-tensor statik ) mengurangkan purata ketepatan sebanyak 0.8%, berkemungkinan disebabkan oleh perbezaan antara statistik terkumpul secara statik dan statistik pengaktifan sampel penilaian sebenar.
Namun begitu, SmoothQuant-O1 boleh menyamai ketepatan FP16, manakala SmoothQuant-O3 hanya mengurangkan ketepatan sebanyak 1%, jauh lebih baik daripada garis dasar.
SmoothQuant bukan sahaja berkesan untuk LLM yang sangat besar dengan lebih daripada 100B parameter, tetapi juga mempunyai hasil yang stabil untuk LLM yang lebih kecil boleh berfungsi pada semua skala model OPT dan sepadan dengan ketepatan FP16 kuantisasi INT8.
Untuk menunjukkan peningkatan kelajuan dan penjimatan memori SmoothQuant-O3 yang disepadukan ke dalam PyTorch dan FasterTransformer, kami mengukur semua keadaan tersembunyi yang menghasilkan kumpulan 4 ayat pada satu masa. kelewatan hingga akhir, iaitu kelewatan dalam peringkat konteks dan merekodkan penggunaan memori GPU puncak semasa proses ini.
Disebabkan kekurangan sokongan Huggingface untuk keselarian model, para penyelidik hanya mengukur prestasi pelaksanaan PyTorch SmoothQuant pada GPU tunggal, dan oleh itu memilih OPT-6.7B, OPT-13B dan OPT-30B untuk penilaian.
Dalam perpustakaan FasterTransformer, SmoothQuant boleh disambungkan dengan lancar dengan algoritma Tensor Parallelism, jadi penyelidik menguji penanda aras GPU tunggal dan berbilang GPU SmoothQuant pada OPT-13B, OPT-30B, OPT-66B dan OPT- 175B .
Hasil eksperimen yang dijalankan pada pelayan GPU NVIDIA A100 80GB menunjukkan bahawa SmoothQuant sentiasa lebih pantas daripada garis dasar FP16 dalam kependaman inferens dan penggunaan memori puncak berdasarkan pelaksanaan PyTorch, apabila panjang jujukan ialah 256, pada OPT-30B Mendapatkan 1.51 kali peningkatan kelajuan.
Anda juga boleh melihat trend bahawa semakin besar model, semakin jelas kelajuannya, tetapi LLM.int8() hampir selalu lebih perlahan daripada garis dasar FP16, juga disebabkan oleh ketepatan bercampur Disebabkan oleh overhed besar untuk mengaktifkan perwakilan.
Dari segi ingatan, kedua-dua SmoothQuant dan LLM.int8() hampir boleh mengurangkan separuh penggunaan memori model FP16, manakala SmoothQuant menjimatkan lebih sedikit memori kerana ia menggunakan INT8 GEMM sepenuhnya.
Berbanding dengan pelaksanaan OPT FP16 FasterTransformer, SmoothQuant-O3 boleh mengurangkan lagi kependaman pelaksanaan OPT-13B dan OPT-30B apabila menggunakan GPU tunggal, sehingga 1.56 kali.
Atas ialah kandungan terperinci Tidak bolehkah model bahasa dengan 10 bilion parameter dijalankan? Seorang doktor Cina dari MIT mencadangkan kuantifikasi SmoothQuant, yang mengurangkan keperluan memori sebanyak separuh dan meningkatkan kelajuan sebanyak 1.56 kali!. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!