LORA (Low Rank Adaptive-arxiv.org/abs/2106.09685) adalah teknologi popular yang kos efektif dan halus model bahasa besar (LLM). Tetapi pada tahun 2024, sejumlah besar parameter baru yang cekap teknologi penalaan yang baik muncul, dan pelbagai alternatif LORA muncul satu demi satu: SVF, SVFT, MILORA, PISSA, LORA-XS? Mari menyelam ke dalamnya secara mendalam.
Wawasan awal dari LORA adalah bahawa semua berat model penalaan halus lebih dikendalikan. Sebaliknya, Lora membekukan model dan melatih hanya sepasang matriks "penyesuai" rendah peringkat rendah. Lihat ilustrasi di bawah (di mana W adalah matriks berat dalam Transformer LLM).
Oleh kerana terdapat sedikit kecerunan untuk dikira dan disimpan, kitaran memori dan pengiraan boleh disimpan. Sebagai contoh, ini adalah model Gemma 8B yang menggunakan penalaan Lora untuk mensimulasikan bagaimana lanun bercakap: hanya 22 juta parameter boleh dilatih, dan 8.5 bilion parameter tetap dibekukan.
Lora sangat popular. Ia juga telah memasuki rangka kerja ML arus perdana seperti Keras sebagai API satu baris:
<code>gemma.backbone.enable_lora(rank=8)</code>
Tetapi adakah Lora yang terbaik? Penyelidik telah berusaha untuk memperbaiki formula. Malah, terdapat banyak cara untuk memilih matriks "penyesuai" yang lebih kecil. Oleh kerana kebanyakan mereka bijak menggunakan penguraian nilai tunggal (SVD) matriks, mari kita berhenti sebentar untuk sedikit matematik.
SVD adalah alat yang baik untuk memahami struktur matriks. Teknik ini mengurai matriks menjadi tiga: w = usv t , di mana u dan v adalah ortogonal (iaitu, transformasi asas), dan s adalah matriks pepenjuru nilai tunggal yang disusun. Penguraian ini selalu wujud.
Dalam "buku teks" SVD, U dan V adalah matriks persegi, manakala S adalah matriks segi empat tepat dengan nilai tunggal pada pepenjuru dan sifar diikuti oleh. Malah, anda boleh menggunakan matriks persegi s dan segi empat tepat u atau v - Lihat gambar - Bahagian dipenggal hanya didarab dengan sifar. SVD "ekonomi" ini digunakan dalam perpustakaan umum seperti numpy.linalg.svd.
Jadi bagaimana kita menggunakannya untuk memilih berat untuk melatih dengan lebih berkesan? Mari kita lihat dengan cepat lima teknik penalaan yang berpangkalan di peringkat rendah SVD baru-baru ini dengan arahan ulasan.
Alternatif yang paling mudah untuk LORA adalah menggunakan SVD pada matriks berat model dan kemudian menyempurnakan nilai-nilai tunggal secara langsung. Anehnya, ini adalah teknologi terkini, yang dipanggil SVF, yang diterbitkan dalam Kertas Transformers² (arxiv.org/abs/2501.06252v2).
SVF banyak ekonomik dari segi parameter daripada LORA. Tambahan pula, ia menjadikan model penalaan halus boleh dikompos. Untuk maklumat lanjut mengenai ini, lihat penerangan Transformers² saya di sini, tetapi menggabungkan dua model penalaan halus SVF hanyalah operasi tambahan:
Jika anda memerlukan lebih banyak parameter yang boleh dilatih, kertas SVFT (arxiv.org/abs/2405.19597) meneroka pelbagai kaedah, pertama dengan menambahkan lebih banyak berat yang boleh dilatih pada pepenjuru.
Ia juga menilai pelbagai alternatif lain, seperti secara rawak menyebarkannya ke dalam matriks "M".
Lebih penting lagi, kertas SVFT mengesahkan bahawa mempunyai nilai yang lebih dilatih daripada pepenjuru berguna. Lihat hasil penalaan halus di bawah.
Seterusnya adalah beberapa teknik untuk membahagikan nilai tunggal ke dalam dua kumpulan "besar" dan "kecil". Tetapi sebelum kita pergi, mari kita berhenti sebentar lagi matematik SVD.
SVD biasanya dianggap diuraikan ke dalam tiga matriks w = usv t , tetapi ia juga boleh dianggap sebagai jumlah wajaran banyak matriks pangkat 1, ditimbang oleh nilai tunggal:
Sekiranya anda ingin membuktikannya, gunakan formula bentuk usv t dan pendaraban matriks untuk mengekspresikan satu elemen matriks tunggal di satu tangan, dan gunakan bentuk σ s i i v i t di sisi lain, dan memudahkan fakta bahawa s adalah pepenjuru, dan ambil perhatian bahawa ia adalah sama.
Dalam perwakilan ini, mudah untuk melihat bahawa anda boleh memecah jumlahnya menjadi dua bahagian. Dan kerana anda sentiasa boleh menyusun nilai -nilai tunggal, anda boleh membahagikannya ke dalam nilai -nilai tunggal "besar" dan "kecil".
Kembali ke Tiga Matriks Borang W = USV T , ini adalah segmentasi seperti:
Berdasarkan formula ini, dua kertas meneroka apa yang berlaku jika anda hanya menyesuaikan nilai tunggal besar atau hanya nilai tunggal kecil, iaitu Pissa dan Milora.
PISSA (nilai tunggal utama dan penyesuaian vektor tunggal, arxiv.org/abs/2404.02948) mendakwa bahawa anda hanya perlu menyesuaikan nilai induk yang besar. Mekanisme ini adalah seperti berikut:
Dikenali dari kertas: "Pissa bertujuan untuk menghampiri penentuan halus lengkap dengan menyesuaikan komponen tunggal utama yang dipercayai menangkap sifat matriks berat.
Terdapat juga penemuan yang menarik di atas kertas PISSA: penalaan halus yang lengkap terdedah kepada terlalu banyak. Dengan teknik penalaan yang rendah, anda mungkin mendapat hasil yang lebih baik pada nilai mutlak.
Milora, sebaliknya, mendakwa bahawa anda hanya perlu menyesuaikan nilai induk kecil. Ia menggunakan mekanisme yang sama dengan PISSA:
Anehnya, Milora nampaknya mempunyai bahagian atas, sekurang-kurangnya apabila menyempurnakan dataset matematik, yang mungkin agak konsisten dengan pra-latihan asal. Ia boleh dikatakan bahawa PISSA harus lebih sesuai untuk membengkokkan tingkah laku LLM dari pra-latihannya.
Akhirnya, saya ingin menyebut LORA-XS (arxiv.org/abs/2405.17604). Sangat serupa dengan PISSA, tetapi mekanisme sedikit berbeza. Ia juga menunjukkan bahawa parameter yang lebih sedikit daripada LORA juga menghasilkan hasil yang baik.
Makalah ini memberikan penjelasan matematik bahawa persediaan ini adalah "ideal" dalam dua kes:
Kedua -duanya seolah -olah saya ragu -ragu, jadi saya tidak akan masuk ke dalam matematik secara terperinci. Beberapa keputusan:
Asumsi asas seolah -olah bahawa nilai -nilai tunggal dibahagikan kepada "besar" dan "kecil", tetapi adakah itu benar? Saya dengan cepat memeriksa Gemma2 9b di Colab. Bottom line: 99% daripada nilai tunggal berada dalam lingkungan 0.1 - 1.1. Saya tidak pasti jika masuk akal untuk membahagikannya menjadi "besar" dan "kecil".
Terdapat banyak teknik penalaan yang lain untuk parameterisasi yang cekap. Perlu disebut:
Kesimpulan saya: Untuk melepasi standard LORA dengan parameter 10x, saya suka kesederhanaan SVF Transformers². Jika anda memerlukan lebih banyak berat yang boleh dilatih, SVFT adalah lanjutan mudah. Kedua -duanya menggunakan semua nilai tunggal (pangkat penuh, tiada pemangkasan nilai tunggal) dan masih murah?. Saya doakan anda gembira dengan baik!
Nota: Semua ilustrasi dicipta oleh penulis atau diekstrak dari kertas arxiv.org untuk komen dan perbincangan.
Atas ialah kandungan terperinci Adakah anda masih menggunakan LORA untuk menyempurnakan LLM anda?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!