Apa itu LoRA (low-rank adaptation)?
LoRA (low-rank adaptation) adalah metode fine-tuning yang membekukan weight model pretrained dan melatih update low-rank kecil di samping matriks weight tertentu. Setiap update adalah hasil kali dua matriks tipis, B dan A, sehingga satu layer menghitung W₀x + BAx. Hanya B dan A yang dilatih, dan jumlahnya biasanya jauh di bawah 1% parameter model.
LoRA adalah cara paling umum untuk mengadaptasi model bahasa besar dan generator gambar di perangkat keras sederhana. Metode ini dipakai untuk fine-tuning model terbuka seperti Llama dan Mistral untuk chat, coding, atau data milik perusahaan, serta untuk melatih adapter gaya dan karakter di Stable Diffusion. Karena setiap adapter hanya beberapa megabyte, satu base model bisa melayani banyak tugas, dan adapter bisa digabungkan ke weight sehingga inference berjalan secepat model aslinya.
Ide utama
- LoRA membekukan weight pretrained dan melatih update low-rank ΔW = BA di samping setiap matriks yang dipilih.
- Untuk weight d × d, LoRA melatih 2dr parameter, bukan d², penghematan besar ketika r kecil.
- B dimulai dari nol, jadi training berawal persis dari model pretrained.
- Adapter yang sudah dilatih bisa digabungkan ke weight, sehingga inference tidak menambah biaya apa pun.
- Satu base model bisa melayani banyak tugas dengan mengganti adapter yang masing-masing berukuran beberapa megabyte.
- QLoRA memadukan LoRA dengan base 4-bit yang dibekukan untuk fine-tuning model sangat besar di satu GPU.
Ulasan singkat tentang topik ini
Pertanyaan umum
Rank berapa yang sebaiknya dipakai untuk LoRA?
Rank dari 4 sampai 64 umum dipakai, dan 8 atau 16 adalah titik awal yang biasa. Tugas yang lebih sulit atau selisih yang lebih besar dari data pretraining bisa membenarkan rank yang lebih tinggi. Kalau adapter mengalami underfitting, menaikkan rank atau menambah layer target biasanya lebih membantu daripada berlatih lebih lama.
Apa fungsi lora_alpha?
Update diskalakan dengan α / r sebelum ditambahkan ke output yang dibekukan. Mengubah α kira-kira sama efeknya dengan mengubah learning rate adapter. Setelan yang umum adalah α sama dengan r atau dua kali r.
Apakah LoRA sebagus fine-tuning penuh?
Pada tugas-tugas di paper aslinya, termasuk GLUE dengan RoBERTa dan DeBERTa serta beberapa benchmark GPT-3, LoRA menyamai atau mengalahkan fine-tuning penuh. Studi berikutnya menemukan selisih pada tugas yang butuh banyak pengetahuan baru, seperti melanjutkan training pada kode atau matematika. Di sini LoRA belajar lebih sedikit, tetapi juga lebih sedikit melupakan apa yang sudah diketahui base model.
Bisakah LoRA dipakai untuk model gambar?
Bisa. Di Stable Diffusion, adapter LoRA biasanya dilatih pada attention layer dari denoising network untuk mengajarkan gaya, karakter, atau objek dari beberapa puluh gambar. Berkasnya cukup kecil untuk dibagikan dan ditumpuk, karena itulah LoRA menjadi format umum di komunitas pembuatan gambar.
Penjelasan terkait
- Transfer Learning · Berdiri di atas pundak raksasa pretrained
- Singular Value Decomposition · Uraikan matriks apa pun menjadi rotasi, skala, dan rotasi: alat serbaguna di aljabar linear
- Arsitektur Transformer · Panduan visual untuk paper "Attention Is All You Need"
- RLHF · Menyelaraskan model bahasa dengan preferensi manusia lewat reward model dan policy optimization
- Cara Kerja Self-Attention · Query, key, dan value, inti dari self-attention
- Aljabar Linear · Vector, matriks, dan bahasa data
Referensi
- Hu et al. (2021), "LoRA: Low-Rank Adaptation of Large Language Models"
- Dettmers et al. (2023), "QLoRA: Efficient Finetuning of Quantized LLMs"
- Houlsby et al. (2019), "Parameter-Efficient Transfer Learning for NLP"
Terakhir diperbarui