Cara LoRA melakukan fine-tuning model 7B dengan melatih 0,4% satu layer

Fine-tuning berarti melatih lebih lanjut model pretrained dengan data baru. Training menggeser setiap parameter, yaitu angka yang dipelajari, mengikuti gradient-nya, arah yang menurunkan error, dan aturan pembaruannya menyimpan statistik tambahan untuk setiap parameter. Untuk 7 miliar parameter, memori itu terus bertambah. LoRA (low-rank adaptation) membekukan weight pretrained dan melatih tambahan kecil di sampingnya.

2 menit baca · Lensa ML
h = W0x + (α / r) · B(Ax)W0 beku16.777.216angka4096 × 4096+A 8 × 4096B 4096 × 8dilatih: B dan A65.536angka0.39% dari W0rank r = 8Isi sesuai skala: lebar B 1/512 dari W0, tinggi A juga.
weight pretrained yang dibekukanmatriks LoRA yang dilatih (diberi garis tepi agar terlihat)
  1. LLaMA 7B, model bahasa dengan 6,7 miliar parameter, punya dimensi model 4096: setiap token adalah vector berisi 4096 angka. Tiap dari 32 layer-nya punya empat attention projection, matriks persegi yang mengubah vector sebuah token menjadi vector query, key, value, atau output. Persegi abu-abu adalah salah satunya, weight query W₀, berukuran 4096 × 4096 atau 16.777.216 angka. LoRA membekukannya.
  2. Di samping W₀, LoRA menambahkan dua matriks tipis. B berukuran 4096 × 8 dan A berukuran 8 × 4096, dengan 8 sebagai rank r, lebar dalam yang dipakai bersama. Hasil kali B · A adalah pembaruan 4096 × 4096 dengan rank paling tinggi 8. Layer menghitung h = W₀x + (α / r) · B(Ax), dengan x sebagai vector input dan α sebagai pengaturan skala yang tetap. B mulai dari nol, jadi training dimulai persis dari model pretrained.
  3. Training hanya memperbarui B dan A: 2 · 4096 · 8 = 65.536 angka, atau 0,39% dari W₀. Isinya, yang digambar sesuai skala, setebal 1/512 persegi itu. Hanya keduanya yang memerlukan gradient dan statistik pembaruan, dan dari sinilah penghematan memori berasal. Paper LoRA hanya mengadaptasi weight query dan value pada sebagian besar eksperimennya. Melakukan itu di semua 32 layer berarti melatih 4.194.304 angka, sekitar 0,06% dari seluruh model.

Intinya

LoRA berhasil karena pembaruan fine-tuning cenderung mendekati low rank, sehingga hasil kali rank 8 menangkap sebagian besar pembaruan penuh. Pengaturan yang umum adalah r = 8 atau 16, dengan α sama dengan r atau 2r. Angka 4,2 juta itu memakan sekitar 8 MB dalam float 16-bit, dan B · A bisa digabung ke W₀ setelah training, sehingga inference berjalan dengan kecepatan aslinya.

Pelajari lebih dalam · interaktif

LoRA dan Parameter-Efficient Fine-Tuning

Di langkah 3, geser rank r dan bandingkan kartu parameter penuh dengan kartu parameter LoRA.

Buka penjelasan interaktif

Bites lainnya

Referensi