Model bahasa besar (LLM) berfungsi dengan baik pada pelbagai tugas, tetapi memberikan cabaran penggunaan kerana saiz modelnya yang besar.
Dalam kertas kerja ini, penyelidik dari Houmo Intelligence, Tencent AI Lab, Universiti Sains dan Teknologi Huazhong, Universiti Peking dan Institut Teknologi Illinois mendapati bahawa cabaran utama dalam mengukur model bahasa besar datang daripada julat pengaktifan yang berbeza antara saluran, bukan hanya isu terpencil.
Pengarang mencadangkan kaedah pengkuantitian berasaskan penyusunan semula novel RPTQ, yang menyelesaikan masalah mengukur pengaktifan model bahasa besar. RPTQ mengurangkan kesan perbezaan seluruh saluran dengan menyusun semula saluran dalam pengaktifan dan kemudian mengelompokkannya untuk kuantifikasi.
Selain itu, pengarang mengurangkan storan dan overhed pengiraan dengan mengelakkan penyusunan semula yang jelas. Kerja ini adalah yang pertama untuk menolak kuantisasi pengaktifan model LLM kepada 3 bit. Pengkuantitian 3-bit nilai pengaktifan juga boleh digunakan bersama-sama dengan pengkuantitian pemberat 3-bit, yang sangat mengurangkan overhed model pertuturan besar.
Alamat kertas: https://arxiv.org/abs/2304.01089
Alamat sumber terbuka: https://github.com/hahnyuan/RPTQ4LLM
Model bahasa berskala besar (LLM) digunakan dalam pelbagai telah menunjukkan prestasi cemerlang dalam tugasan ini, tetapi penggunaannya menghadapi cabaran kerana saiz modelnya yang besar. Sebagai contoh, model 66B mengandungi 66 bilion parameter dan memerlukan banyak memori untuk disimpan. Di samping itu, apabila panjang jujukan dan saiz kelompok meningkat, masalah penggunaan memori menjadi lebih serius, kerana pengaktifan juga menggunakan sejumlah besar memori, seperti cache kunci dan nilai (Key/Value Cache) dalam Perhatian Sendiri. Walau bagaimanapun, satu GPU atau pelayan tidak mempunyai kapasiti memori yang mencukupi untuk menyimpan sebilangan besar berat model dan pengaktifan perantaraan. Oleh itu, LLM perlu dibahagikan kepada beberapa bahagian dan disimpan dalam peranti yang berbeza. Memandangkan berat dan pengaktifan disimpan pada peranti yang berbeza, data perlu dipindahkan antara peranti ini semasa pengiraan, menghasilkan lebar jalur dan penggunaan tenaga yang ketara.
Untuk mengatasi cabaran penskalaan model LLM, kuantifikasi model telah muncul sebagai pendekatan yang menjanjikan. Teknik ini melibatkan pengkuantitian pemberat dan pengaktifan LLM menggunakan integer bit rendah, dengan itu mengurangkan dengan ketara kos menyimpan dan menjalankan model ini. Khususnya, kuantisasi membantu mengurangkan keperluan memori untuk memegang tensor dan mempercepatkan operasi intensif pengiraan seperti pendaraban matriks dan lapisan linear. Dengan mengukur berat dan pengaktifan, overhed penyimpanan dan komunikasi dikurangkan, dan kecekapan serta kelajuan inferens dipertingkatkan.
Rajah 1 Taburan berangka bagi saluran yang berbeza. Setiap titik mewakili nilai (maksimum, minimum) dalam saluran pengaktifan.
Baru-baru ini, GPTQ berjaya mengkuantisasi pemberat LLM kepada 4 bit atau 3 bit menggunakan PTQ. Walau bagaimanapun, mengukur pengaktifan dalam LLM kekal sebagai tugas yang mencabar.
Dua pemerhatian boleh dibuat daripada Rajah 1:
1) Sesetengah saluran mempunyai outlier yang ketara dengan maksimum atau minimum Nilainya ialah ratusan kali lebih besar daripada saluran lain. Kajian terdahulu juga telah menemui masalah ini dan mencadangkan rawatan khas untuk outlier.
2) Saluran yang berbeza mempunyai perbezaan yang ketara dalam julat berangka. Menggunakan parameter pengkuantitian yang sama untuk mengkuantisasi saluran yang berbeza boleh membawa kepada ralat pengkuantitian yang ketara. Walaupun dua saluran mempunyai nilai outlier mutlak yang sama, ia boleh mempunyai variasi besar dalam julat berangka.
Teknik pengkuantitian per-tensor yang mengkuantifikasi keseluruhan tensor menggunakan parameter pengkuantitian yang sama mungkin kurang cekap. Sebabnya ialah menetapkan julat pengkuantitian untuk meliputi julat nilai yang besar boleh mengakibatkan ralat pengkuantitian yang besar untuk saluran dengan nilai yang lebih kecil, manakala menetapkannya untuk meliputi julat nilai yang kecil mungkin mengakibatkan pemotongan ketara bagi outlier dan mengakibatkan dalam ralat pengkuantitian ketara. Sebagai contoh, satu saluran mungkin mempunyai julat nilai -100 hingga -50, manakala saluran lain mungkin mempunyai julat nilai 80 hingga 100. Mencuba untuk menutup julatnya dengan mengkuantisasi julat dari - 100 hingga 100 akan mengakibatkan ralat pengkuantitian yang ketara untuk kedua-dua saluran. Ini adalah cabaran yang belum ditangani dengan berkesan dalam penyelidikan terdahulu.
Rajah 2 Perbandingan kaedah berbeza untuk menyelesaikan masalah kuantisasi pengaktifan.
Untuk menyelesaikan masalah perbezaan saluran dalam pengaktifan, penulis mencadangkan kaedah pengkuantitian pasca latihan berasaskan penyusunan semula novel RPTQ.
Seperti yang ditunjukkan dalam Rajah 2, kaedah ini mengelompokkan saluran dengan julat berangka yang serupa bersama-sama dan kemudian mengkuantiskan nilai dalam setiap kelompok menggunakan parameter pengkuantitian yang sama. Untuk melaksanakan kaedah kuantifikasi berasaskan penyusunan semula, penulis mula-mula menggunakan set data penentukuran sebagai input inferens, dari mana nilai maksimum dan minimum setiap saluran pengaktifan diperoleh.
Seterusnya, mereka menggunakan algoritma KMeans untuk membahagikan saluran yang berbeza kepada kelompok g, berdasarkan titik yang dibentuk oleh nilai maksimum dan minimum setiap saluran. Setelah kluster diwujudkan, mereka melakukan penyusunan semula saluran untuk meletakkan saluran daripada kluster yang sama berdekatan. Dengan cara ini saluran dengan maksima dan minima yang serupa dikumpulkan bersama dan berkongsi set parameter pengkuantitian biasa. Selepas proses penyusunan semula, pengarang mengira pengaktifan dalam setiap kluster. Kaedah ini mengira parameter pengkuantitian (faktor penskalaan s dan titik sifar z) secara berasingan untuk setiap kelompok, memastikan bahawa parameter ini khusus untuk saluran yang sepadan.
Akhirnya, kaedah ini memastikan pengkuantitian setiap kelompok dioptimumkan, mengurangkan ralat pengkuantitian.
Rajah 3: Gambar rajah kegagalan proses inferens lapisan Transformer terkuantasi dengan pemberat dan pengaktifan yang disusun semula. Indeks penyusunan semula diwakili oleh simbol R1 hingga R5.
Penyusunan semula eksplisit ialah operasi masa jalan penyusunan semula saluran aktif, yang memerlukan secara fizikal memindahkan data saluran berbeza dari satu lokasi memori ke lokasi memori yang lain, jadi Untuk model besar dengan bilangan yang besar daripada saluran, proses penyusunan semula boleh memakan masa yang sangat lama. Selain itu, menyimpan tensor pengaktifan sumber dan sasaran meningkatkan overhed memori. Oleh itu, penulis mencadangkan strategi untuk mengelakkan penyusunan semula yang jelas, dengan itu mengurangkan overhed pengiraan dan meningkatkan kecekapan inferens.
Seperti yang ditunjukkan dalam Rajah 3, penulis menyusun semula berat lapisan linear supaya mereka boleh terus menghasilkan pengaktifan dalam susunan yang disusun. Tambahan pula, pengarang mengubah suai kaedah LayerNorm untuk secara langsung menghasilkan pengaktifan yang disusun semula, dengan itu menghapuskan keperluan untuk pelarasan saluran yang jelas semasa inferens.
Pengarang menilai prestasi OPT di bawah tiga konfigurasi lebar bit yang berbeza: W4A16, W4A8 dan W4A4. Di samping itu, penulis juga membangunkan skim kuantifikasi baru, W4A4KV, W4A3KV dan W3A3KV, yang hanya mengukur penggunaan memori utama - cache kunci dan cache nilai (Key/Value Cache). Berdasarkan jadual, pemerhatian berikut boleh dibuat: Secara umumnya, apabila lebar bit pengkuantitian pengaktifan berkurangan, prestasi model berkurangan. Tetapi dalam kebanyakan kes, kemerosotan ini tidak ketara. Untuk beberapa tugasan, prestasi menurun kurang daripada 1% malah bertambah baik.
Lantaran memori LLM datang daripada tiga aspek: Pertama, penyimpanan pemberat dalam memori peranti boleh dikurangkan dengan ketara melalui pengkuantitian. Kedua, pengaktifan sementara yang dihasilkan semasa pelaksanaan rangkaian memerlukan memori peranti untuk diperuntukkan. Pengaktifan sementara ini boleh dikeluarkan selepas digunakan dan oleh itu tidak memberi kesan ketara kepada keseluruhan penggunaan memori. Akhir sekali, Cache Kunci/Nilai diperlukan untuk meramalkan perkataan seterusnya. Apabila saiz kelompok dan panjang jujukan adalah besar, kunci dan cache nilai mengambil sebahagian besar memori.
Jadual menunjukkan penggunaan memori di bawah tetapan yang berbeza Ia boleh didapati bahawa pengaktifan bit yang lebih rendah boleh mengurangkan penggunaan memori dengan ketara, terutamanya apabila saiz kumpulan dan panjang jujukan adalah besar. Khususnya, apabila saiz kelompok ialah 64 dan panjang jujukan ialah 8192, konfigurasi W4A4 di bawah OPT-66b menjimatkan lebih daripada 900GB memori berbanding konfigurasi W4A16. Oleh itu, menggunakan RPTQ untuk mengukur pengaktifan boleh mengurangkan tekanan memori dalam tugas teks panjang atau senario volum tinggi.
Atas ialah kandungan terperinci Kaedah pengkuantitian baharu berdasarkan penyusunan semula RPTQ: merealisasikan pengkuantitian 3-bit model bahasa besar. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!