Latihan dan penalaan halus model besar mempunyai keperluan tinggi pada memori video, dan keadaan pengoptimuman ialah salah satu perbelanjaan utama memori video. Baru-baru ini, pasukan Zhu Jun dan Chen Jianfei dari Universiti Tsinghua mencadangkan pengoptimum 4-bit untuk latihan rangkaian saraf, yang menjimatkan overhed memori latihan model dan boleh mencapai ketepatan yang setanding dengan pengoptimum ketepatan penuh.
Pengoptimum 4-bit telah diuji pada pelbagai tugas pra-latihan dan penalaan halus, dan boleh mengurangkan overhed memori penalaan halus LLaMA-7B sambil mengekalkan ketepatan tanpa kehilangan sebanyak 57%.
Kertas: https://arxiv.org/abs/2309.01507
#🎜🎜 /arxiv.org/abs/2309.01507 /github.com/thu-ml/low-bit-optimizers
Untuk tujuan ini, kita perlu terlebih dahulu menjelaskan sumber yang menggunakan memori video. Sebenarnya, terdapat tiga jenis sumber iaitu:
1 "Data memory", termasuk data input dan output nilai pengaktifan oleh setiap lapisan saraf rangkaian, saiznya secara langsung dipengaruhi oleh saiz kelompok dan resolusi imej/panjang konteks;
2, termasuk parameter model, kecerunan dan keadaan pengoptimum saiznya adalah berkadar dengan bilangan parameter model;
3 "Memori video sementara" termasuk memori sementara dan cache lain yang digunakan dalam pengiraan kernel GPU. Apabila saiz model bertambah, perkadaran memori model meningkat secara beransur-ansur, menjadi hambatan utama.
Saiz keadaan pengoptimum ditentukan oleh pengoptimum yang digunakan. Pada masa ini, pengoptimum AdamW sering digunakan untuk melatih Transformers, yang perlu menyimpan dan mengemas kini dua keadaan pengoptimum semasa proses latihan, iaitu detik pertama dan kedua. Jika bilangan parameter model ialah N, maka bilangan keadaan pengoptimum dalam AdamW ialah 2N, yang jelas merupakan overhed memori grafik yang besar.
Mengambil LLaMA-7B sebagai contoh, bilangan parameter model ini adalah kira-kira 7B Jika pengoptimum AdamW berketepatan penuh (32-bit). memperhalusinya, kemudian Saiz memori video yang diduduki oleh keadaan pengoptimum adalah lebih kurang 52.2GB. Di samping itu, walaupun pengoptimum SGD yang naif tidak memerlukan keadaan tambahan dan menyimpan memori yang diduduki oleh keadaan pengoptimum, prestasi model sukar untuk dijamin. Oleh itu, artikel ini memfokuskan pada cara mengurangkan keadaan pengoptimum dalam memori model sambil memastikan prestasi pengoptimum tidak terjejas.
Kaedah untuk menjimatkan ingatan pengoptimum
1. Pemfaktoran); #🎜🎜 #
2 Elakkan menyimpan kebanyakan keadaan pengoptimum dengan hanya melatih set parameter kecil, seperti LoRA #🎜##🎜 ##🎜🎜 #3 Berdasarkan pemampatan, gunakan format berangka ketepatan rendah untuk mewakili status pengoptimum.
Khususnya, Dettmers et al (ICLR 2022) mencadangkan pengoptimum 8-bit yang sepadan untuk SGD dengan momentum dan AdamW, dengan menggunakan kuantisasi blok (block- Wise quantization) dan teknologi format berangka eksponen dinamik (format berangka eksponen dinamik) telah mencapai hasil yang sepadan dengan pengoptimum ketepatan penuh asal dalam tugas seperti pemodelan bahasa, klasifikasi imej, pembelajaran diselia sendiri dan terjemahan mesin.
Berdasarkan ini, kertas kerja ini mengurangkan lagi ketepatan berangka bagi keadaan pengoptimum kepada 4 bit, mencadangkan kaedah pengkuantitian untuk keadaan pengoptimum yang berbeza, dan akhirnya mencadangkan 4- sedikit pengoptimum AdamW. Pada masa yang sama, kertas kerja ini meneroka kemungkinan menggabungkan kaedah pemampatan dan penguraian peringkat rendah, dan mencadangkan pengoptimum Faktor 4-bit ini menikmati prestasi yang baik dan kecekapan memori yang lebih baik. Kertas kerja ini menilai pengoptimuman 4-bit pada beberapa tugas klasik, termasuk pemahaman bahasa semula jadi, klasifikasi imej, terjemahan mesin dan arahan penalaan halus model besar.
Pada semua tugasan, pengoptimum 4-bit mencapai hasil yang setanding dengan pengoptimum ketepatan penuh sambil menggunakan kurang memori.
Tetapan masalah
Rangka kerja berasaskan pemampatan🎜🎜 yang cekap #
Pertama, kita perlu memahami cara memperkenalkan operasi mampatan ke dalam pengoptimum yang biasa digunakan, yang diberikan oleh Algoritma 1. dengan A ialah pengoptimum berasaskan kecerunan (seperti SGD atau AdamW). Pengoptimum mengambil parameter sedia ada w, kecerunan g dan keadaan pengoptimum s dan mengeluarkan parameter baharu dan keadaan pengoptimum. Dalam Algoritma 1, s_t ketepatan penuh adalah sementara, manakala ketepatan rendah (s_t ) ̅ dikekalkan dalam memori GPU. Sebab penting mengapa kaedah ini boleh menjimatkan memori video adalah bahawa parameter rangkaian saraf sering disambungkan bersama dari vektor parameter setiap lapisan. Oleh itu, kemas kini pengoptimum juga dilakukan lapisan demi lapisan/tensor Di bawah Algoritma 1, keadaan pengoptimum paling banyak satu parameter dibiarkan dalam ingatan dalam bentuk ketepatan penuh, dan keadaan pengoptimum yang sepadan dengan lapisan lain berada dalam keadaan termampat. negeri.
Kaedah mampatan utama: kuantisasi #🎜 🎜🎜#
Kuantisasi ialah teknologi yang menggunakan nilai berangka berketepatan rendah untuk mewakili data berketepatan tinggi Artikel ini mengasingkan operasi kuantifikasi kepada dua bahagian: normalisasi dan pemetaan, supaya ia boleh Reka bentuk yang lebih ringan dan eksperimen. dengan kaedah pengkuantitian baharu. Dua operasi, penormalan dan pemetaan, digunakan secara berurutan pada data ketepatan penuh dengan cara mengikut unsur. Penormalan bertanggungjawab untuk mengunjurkan setiap elemen dalam tensor kepada selang unit, di mana penormalan tensor (penormalan setiap tensor) dan penormalan dari segi blok (penormalan mengikut blok) ditakrifkan seperti berikut:#🎜🎜 ##🎜 🎜#
Kaedah normalisasi yang berbeza mempunyai butiran yang berbeza, dan keupayaannya untuk mengendalikan outlier akan berbeza, dan overhed memori tambahan yang mereka bawa juga berbeza. Operasi pemetaan bertanggungjawab untuk memetakan nilai ternormal kepada integer yang boleh diwakili dengan ketepatan yang rendah. Secara formal, diberi sedikit lebar b (iaitu, setiap nilai diwakili oleh b bit selepas pengkuantitian) dan fungsi yang dipratentukan T #Operasi pemetaan ditakrifkan sebagai:
#🎜🎜 #
Oleh itu, cara mereka bentuk T yang sesuai untuk mengurangkan Ralat pengkuantitian memainkan peranan penting. Artikel ini mempertimbangkan pemetaan linear (linear) dan pemetaan eksponen dinamik (eksponen dinamik). Akhir sekali, proses dekuantisasi adalah untuk menggunakan operator songsang pemetaan dan normalisasi dalam urutan.
Kaedah mampatan momen pesanan pertama
Berikut adalah terutamanya untuk status pengoptimum pertama AdamW -order momen dan detik tertib kedua) mencadangkan kaedah kuantifikasi yang berbeza. Untuk detik pertama, kaedah pengkuantitian dalam kertas ini adalah berdasarkan kaedah Dettmers et al (ICLR 2022), menggunakan penormalan blok (saiz blok 2048) dan pemetaan eksponen dinamik.
Dalam eksperimen awal, kami secara langsung mengurangkan lebar bit daripada 8 bit kepada 4 bit dan mendapati bahawa momen tertib pertama adalah sangat teguh untuk pengkuantitian dan telah digunakan dalam banyak tugas Kesan padanan dicapai, tetapi terdapat juga kehilangan prestasi pada beberapa tugas. Untuk meningkatkan lagi prestasi, kami mengkaji corak detik pertama dengan teliti dan mendapati terdapat banyak outlier dalam satu tensor.
Untuk tensor dengan taburan outlier mengikut lajur, normalisasi blok baris pertama mungkin menghadapi kesukaran. Oleh itu, kertas kerja ini mencadangkan untuk menggunakan blok yang lebih kecil dengan saiz blok 128, yang boleh mengurangkan ralat pengkuantitian sambil mengekalkan overhed memori tambahan dalam julat yang boleh dikawal. Rajah di bawah menunjukkan ralat pengkuantitian untuk saiz blok yang berbeza.
Berbanding dengan momen tertib pertama, pengkuantitian momen tertib kedua adalah lebih sukar dan akan membawa ketidakstabilan masalah latihan. Kertas kerja ini menentukan bahawa masalah titik sifar adalah kesesakan utama dalam mengira detik tertib kedua Selain itu, kaedah penormalan yang lebih baik dicadangkan untuk taburan terpencil yang tidak terkondisi: penormalan peringkat-1. Artikel ini juga mencuba kaedah penguraian (pemfaktoran) momen tertib kedua.
masalah titik sifar
#🎜 syarat-syarat nilai pengaktifan🎜 , dan kecerunan Dalam pengkuantitian, titik sifar selalunya amat diperlukan, dan ia juga merupakan titik dengan kekerapan tertinggi selepas pengkuantitian. Walau bagaimanapun, dalam formula lelaran Adam, saiz kemas kini adalah berkadar dengan kuasa -1/2 momen kedua, jadi perubahan dalam julat sekitar sifar akan mempengaruhi saiz kemas kini, menyebabkan ketidakstabilan.
Rajah berikut menunjukkan kuasa saat-1/2 Adam kedua sebelum dan selepas kuantisasi dalam bentuk Taburan histogram, iaitu, h (v)=1/(√v+10^(-6) ). Jika sifar dimasukkan (rajah b), maka kebanyakan nilai ditolak sehingga 10^6, mengakibatkan ralat anggaran yang besar. Pendekatan mudah adalah untuk mengalih keluar sifar dalam peta eksponen dinamik, selepas berbuat demikian (rajah c) penghampiran kepada saat kedua menjadi lebih tepat. Dalam situasi sebenar, untuk menggunakan keupayaan ekspresif nilai berangka ketepatan rendah dengan berkesan, kami mencadangkan untuk menggunakan pemetaan linear yang mengalihkan titik sifar dan mencapai keputusan yang baik dalam eksperimen.
Rank-1 Dinormalisasi ##🎜🎜🎜##🎜🎜🎜##🎜🎜🎜##🎜 🎜#Berdasarkan pengedaran terpencil yang kompleks bagi momen tertib pertama dan detik tertib kedua, dan diilhamkan oleh pengoptimum SM3, artikel ini mencadangkan kaedah normalisasi baharu, Dinamakan peringkat-1 normalisasi. Untuk tensor matriks bukan negatif x∈R^(n×m), statistik satu dimensinya ditakrifkan sebagai:
#🎜🎜 #
Kemudian penormalan peringkat-1 boleh ditakrifkan sebagai:peringkat-1 mengeksploitasi penormalan satu -maklumat dimensi tensor dengan cara yang lebih halus, dan boleh mengendalikan outlier dari segi baris atau lajur dengan lebih bijak dan cekap. Di samping itu, normalisasi peringkat-1 boleh digeneralisasikan dengan mudah kepada tensor dimensi tinggi, dan apabila saiz tensor meningkat, overhed memori tambahan yang dijananya adalah lebih kecil daripada normalisasi blok.
Di samping itu, artikel ini mendapati bahawa kaedah penguraian peringkat rendah bagi momen tertib kedua dalam pengoptimum Adafaktor boleh mengelakkan masalah titik sifar dengan berkesan, jadi ia juga mempunyai kelebihan kaedah penguraian peringkat rendah dan pengkuantitian diterokai secara gabungan. Rajah di bawah menunjukkan satu siri eksperimen ablasi untuk momen tertib kedua, yang mengesahkan bahawa masalah titik sifar ialah kesesakan pengiraan detik tertib kedua Ia juga mengesahkan keberkesanan kaedah penormalan peringkat-1 dan penguraian peringkat rendah.
Hasil eksperimen
#🎜#🎜 berasaskan##🎜#🎜🎜 pada pemerhatian Berdasarkan fenomena dan kaedah penggunaan, dua pengoptimum ketepatan rendah akhirnya dicadangkan: AdamW 4-bit dan Faktor 4-bit, dan dibandingkan dengan pengoptimum lain, termasuk AdamW 8-bit, Adafactor dan SM3. Kajian telah dipilih untuk penilaian pada pelbagai tugas, termasuk pemahaman bahasa semula jadi, klasifikasi imej, terjemahan mesin, dan penalaan halus arahan model besar. Jadual di bawah menunjukkan prestasi setiap pengoptimum pada tugas yang berbeza.
Anda boleh lihat semua itu tugasan , termasuk NLU, QA, NLG, pengoptimum 4-bit boleh memadankan atau bahkan melebihi AdamW 32-bit Pada masa yang sama, pada semua tugasan pra-latihan, pengoptimum CLS, MT dan 4-bit mencapai tahap. setanding dengan ketepatan penuh. Ia boleh dilihat daripada tugas penalaan halus arahan bahawa 4-bit AdamW tidak memusnahkan keupayaan model pra-latihan, dan pada masa yang sama boleh membolehkan mereka memperoleh keupayaan untuk mematuhi arahan dengan lebih baik.
Selepas itu, kami menguji memori dan kecekapan pengiraan pengoptimum 4-bit, dan hasilnya ditunjukkan dalam jadual di bawah. Berbanding dengan pengoptimum 8-bit, pengoptimum 4-bit yang dicadangkan dalam artikel ini boleh menjimatkan lebih banyak memori, dengan penjimatan maksimum 57.7% dalam eksperimen penalaan halus LLaMA-7B. Selain itu, kami menyediakan versi pengendali gabungan AdamW 4-bit, yang boleh menjimatkan memori tanpa menjejaskan kecekapan pengiraan. Untuk tugasan penalaan halus arahan LLaMA-7B, 4-bit AdamW juga membawa kesan pecutan kepada latihan akibat tekanan cache yang berkurangan. Tetapan dan keputusan percubaan terperinci boleh didapati dalam pautan kertas.
Ganti satu baris kod untuk menggunakannya dalam PyTorch
import lpmmoptimizer = lpmm.optim.AdamW (model.parameters (), lr=1e-3, betas=(0.9, 0.999))
Kami menyediakan pengoptimum 4-bit di luar kotak, anda hanya perlu menggantikan pengoptimum asal dengan pengoptimum 4-bit pada masa ini menyokong versi ketepatan rendah Adam dan SGD. Pada masa yang sama, kami juga menyediakan antara muka untuk mengubah suai parameter pengkuantitian untuk menyokong senario penggunaan tersuai.
Atas ialah kandungan terperinci Penalaan halus LLaMA mengurangkan separuh keperluan memori, Tsinghua mencadangkan pengoptimum 4-bit. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!