Ringkasan belajar dari slide W6 (UGM, diadaptasi dari Stanford CS224N)
Parameter-Efficient Fine-Tuning
Penjelasan dengan bahasa sederhana, lengkap dengan catatan kritis di tiap bagian. Cara pakai: baca, coba kalkulator di bagian LoRA, lalu kerjakan kuis.
0. Pemanasan: dari model bahasa ke asisten
Model bahasa awalnya hanya melengkapi kalimat ("UGM terletak di ___"). Agar jadi asisten yang bisa diajak bicara, ada beberapa tahap:
- Pretraining: model membaca teks dalam jumlah sangat besar untuk memprediksi kata berikutnya. Hasilnya pengetahuan umum bahasa dan dunia. Bobotnya jadi "titik awal" (inisialisasi).
- Finetuning: bobot itu disesuaikan dengan tugas tertentu (misalnya klasifikasi sentimen) memakai data berlabel yang sedikit.
- Instruction finetuning: finetuning pada pasangan (instruksi, jawaban) dari banyak tugas sekaligus, lalu diuji pada tugas yang belum pernah dilihat (contoh: FLAN-T5).
- RLHF (InstructGPT): (1) SFT, yaitu finetuning dari demonstrasi manusia; (2) latih reward model dari ranking jawaban oleh manusia; (3) optimalkan model dengan RL (PPO) agar reward maksimal. InstructGPT memakai sekitar 30 ribu tugas.
Semua tahap ini mengubah semua parameter model. Itulah masalahnya: untuk model miliaran parameter, ini mahal. PEFT lahir untuk menjawab itu.
1. Dari fine-tuning ke PEFT
Semua parameter diupdate. Setiap tugas = satu salinan model utuh.
Hanya sebagian kecil parameter yang dilatih, sisanya dibekukan.
Mengapa hanya melatih sebagian?
- Tidak praktis: GPT-3 punya 175 miliar parameter. Menyimpan satu salinan per tugas sangat boros.
- Model terlalu "besar": model modern over-parameterized, jadi perubahan kecil sudah cukup untuk adaptasi. PEFT sering menyamai hasil full fine-tuning.
- Lingkungan dan keadilan akses (Green AI): riset AI lebih fokus ke akurasi daripada efisiensi. Biaya latih yang tinggi membuat AI dikuasai organisasi besar. Contoh slide: pada kelas RL di Stanford, memakai algoritma yang lebih efisien bisa menghemat sekitar 880 kWh, setara listrik rumah tangga Amerika selama sebulan.
Tiga sudut pandang PEFT
| Perspektif | Ide | Metode |
|---|---|---|
| Parameter | Ubah/pilih bobot yang sudah ada | Pruning (sparse subnetwork), LoRA (low-rank) |
| Input | Tambahkan vektor yang dipelajari di input | Prefix-tuning, prompt-tuning |
| Function | Sisipkan fungsi/modul baru | Adapter |
Klaim "PEFT menyamai full fine-tuning" tidak berlaku mutlak. Slide sendiri menunjukkan prompt tuning kalah pada model kecil (bagian 4 dan 6). Selalu tanyakan: pada ukuran model berapa, dan pada tugas apa?
2. Pruning dan sparse subnetwork
Sparsity berarti banyak bobot bernilai nol. Pruning menghapus koneksi yang kurang penting. Kriteria paling umum: besar bobot (magnitude), bobot paling kecil dibuang (Han et al.).
- Bisa dilihat sebagai binary mask b ∈ {0,1}: b=1 bobot dipertahankan, b=0 dibuang. Model baru:
f(θ ∘ b), tanda ∘ adalah perkalian elemen demi elemen (Hadamard). - One-shot: pangkas sekali. Iterative: pangkas sedikit, latih ulang, ulangi (lebih umum, Frankle & Carbin 2019).
- Diff pruning: pruning berdasarkan besar perubahan φ, bukan bobot akhir.
Lottery Ticket Hypothesis
Jaringan besar yang diinisialisasi acak mengandung subnetwork kecil ("tiket pemenang") yang jika dilatih sendirian mencapai akurasi setara jaringan penuh. Pada BERT, tingkat sparsity yang ditemukan berkisar 40% (SQuAD) sampai 90% (QQP, WNLI). Subnetwork dari tugas umum seperti masked language modelling paling mudah dipindahkan ke tugas lain.
Menemukan "tiket" butuh pelatihan penuh berulang kali, jadi tidak murah. Selain itu pruning acak (unstructured) menghasilkan matriks berlubang yang di GPU biasa tidak otomatis lebih cepat. Pruning cocok untuk memahami kompresi, tetapi untuk adaptasi praktis LoRA lebih sering dipakai.
3. LoRA (Low-Rank Adaptation): inti materi
3.1 Masalah yang dipecahkan
Pada full fine-tuning kita memperbarui φ₀ menjadi φ₀ + Δφ dengan memaksimalkan log-likelihood bersyarat:
Artinya: untuk setiap pasangan konteks x dan target y, model dilatih agar makin yakin pada kata berikutnya. Masalahnya, |Δφ| = |φ₀|, jadi tiap tugas butuh tambahan sebesar model asli (175 miliar untuk GPT-3).
3.2 Ide utama
Perubahan bobot ternyata punya "intrinsic rank" yang rendah (Aghajanyan et al., 2020): informasinya bisa dirangkum dengan sedikit angka. Maka Δφ dikodekan oleh parameter kecil Θ dengan |Θ| ≪ |φ₀|, dan kita optimalkan Θ saja.
3.3 Rumusnya
- W₀ ∈ ℝd×k: bobot pretrained, dibekukan.
- B ∈ ℝd×r dan A ∈ ℝr×k: matriks kecil yang dilatih, dengan r ≪ min(d,k) (r = rank).
- Inisialisasi: A acak (Gaussian atau Kaiming), B = 0. Jadi di awal ΔW = 0 dan model persis sama dengan model pretrained, tidak ada "kejutan" saat training mulai.
- α: pengatur seberapa kuat pengetahuan baru dicampur dengan pengetahuan lama.
Jalur kiri: bobot asli. Jalur kanan: lewat A lalu B (hanya ini yang dilatih). Keduanya dijumlahkan.
3.4 Kode di slide, dibaca baris demi baris
W_A = nn.Parameter(torch.empty(input_dim, rank)) # matriks A
W_B = nn.Parameter(torch.empty(rank, output_dim)) # matriks B
nn.init.kaiming_uniform_(W_A, a=math.sqrt(5)) # A: acak
nn.init.zeros_(W_B) # B: nol
def lora_forward_matmul(x, W, W_A, W_B):
h = x @ W # jalur asli (beku)
h += x @ (W_A @ W_B) * alpha # tambahan LoRA
return h
Beda notasi: di rumus slide BA dengan B berukuran d×r, sedangkan di kode x @ (W_A @ W_B) karena x dikalikan dari kiri (ukuran dibalik). Maknanya sama. Slide juga menyebut A berdistribusi Gaussian, kode memakai Kaiming uniform: keduanya sah, intinya A acak dan B nol. Di paper asli, skala memakai α/r, sehingga mengubah r tidak mengubah besar update secara drastis.
3.5 Coba sendiri: kalkulator parameter
3.6 Keunggulan
- Tanpa latensi tambahan saat inferensi: BA bisa digabung ke W₀. Ganti tugas = kurangi BA lama, tambahkan B′A′ baru.
- Penyimpanan kecil: satu model dasar + banyak "file kecil" per tugas.
- Jika r dinaikkan terus, LoRA mendekati full fine-tuning.
- Biasanya dipasang pada matriks self-attention.
3.7 Bukti dari eksperimen (GPT-3 175B)
| Metode | Parameter dilatih | WikiSQL | MNLI-m |
|---|---|---|---|
| Full fine-tuning | 175.255,8 juta | 73,8 | 89,5 |
| Adapter | 40,1 juta | 73,2 | 91,5 |
| LoRA | 4,7 juta | 73,4 | 91,7 |
| LoRA | 37,7 juta | 74,0 | 91,6 |
- LoRA setara atau lebih baik dari full fine-tuning dengan parameter ribuan kali lebih sedikit (4,7 juta vs 175 miliar, kurang dari 0,003%).
- Menerapkan LoRA ke Wq dan Wv memberi hasil terbaik secara keseluruhan.
- Rank kecil (bahkan r = 1 atau 2) sudah kompetitif.
Selisih antar-setting sering sangat kecil (WikiSQL ±0,5%, MNLI ±0,1%), jadi "r=8 lebih baik dari r=64" kadang hanya noise. Jangan menarik kesimpulan besar dari beda 0,1 poin. Juga, hasil ini dari satu keluarga model (GPT-3) dan beberapa dataset; untuk tugasmu sendiri perlu dicoba, dan itu persis tujuan tugas W6.
3.8 QLoRA
QLoRA = LoRA + kuantisasi 4-bit pada model dasar + paged optimizer (memindahkan data optimizer ke CPU saat memori GPU penuh). Memakai tipe data NF4 (4-bit NormalFloat), optimal secara teori untuk bobot yang berdistribusi normal. Hasilnya, model besar bisa dilatih pada GPU yang jauh lebih kecil. Kelemahannya, kuantisasi membuat bobot dasar kurang presisi dan pelatihan agak lebih lambat.
4. Prefix-tuning dan prompt-tuning (perspektif input)
Alih-alih mengubah bobot, kita menambahkan "virtual tokens": vektor kontinu yang dipelajari, diperlakukan model seperti kata biasa. Seluruh model dibekukan.
| Prefix-tuning (Li & Liang) | Prompt-tuning (Lester et al.) | |
|---|---|---|
| Yang dilatih | Prefix kontinu (di setiap layer) | Embedding token virtual di input saja |
| Kelebihan | Satu batch bisa berisi tugas berbeda-beda, karena tinggal ganti prefix | Sangat sedikit parameter, serving multi-tugas efisien |
Prompt design (menulis prompt manual, seperti GPT-3) berbeda dari prompt tuning: yang kedua dipelajari lewat gradien, bukan ditulis tangan.
Grafik slide 59 memperlihatkan prompt tuning baru menyamai model tuning ketika model mencapai sekitar 10 miliar parameter; pada model kecil jauh tertinggal. Slide 67 mengonfirmasi: kapasitasnya terbatas. Selain itu vektor virtual tidak bisa dibaca manusia, sehingga sulit diinterpretasikan dan dilacak.
5. Adapter (perspektif fungsi)
Adapter adalah modul mungil yang disisipkan di antara layer Transformer (Houlsby et al., 2019). Bentuknya "botol sempit": perkecil dimensi, beri nonlinearitas, lalu besarkan kembali, dan tambahkan ke jalur asli (residual).
- Biasanya ditaruh setelah multi-head attention dan/atau setelah feed-forward layer.
- Hanya adapter yang dilatih; sisa model beku.
- Hasil: setara full fine-tuning (benchmark GLUE) dengan sekitar 100× lebih sedikit parameter.
- Contoh aplikasi: adaptasi LLM berbasis Standard American English ke dialek lain (misalnya AAVE) dengan "dialect adapter" per fitur linguistik, lalu digabung (adapter fusion).
Berbeda dengan LoRA, adapter tidak bisa "dilebur" ke bobot karena ada nonlinearitas di tengah, sehingga inferensi punya layer tambahan dan sedikit lebih lambat. Pada slide 67, adapter lebih akurat dari prompt tuning tetapi memakai lebih banyak parameter. Inilah trade-off klasik: akurasi vs jumlah parameter.
6. Perbandingan dan pandangan menyeluruh
He et al. (2022) menunjukkan bahwa adapter, prefix tuning, dan LoRA punya bentuk fungsi serupa: semuanya menambahkan perubahan kecil (lewat W_down dan W_up) pada representasi tersembunyi h. Bedanya terletak pada letak penyisipan, fungsi di tengah (ReLU, softmax, scaling), dan cara penjumlahan.
| Metode | Perspektif | Yang dilatih | Kelebihan | Kekurangan |
|---|---|---|---|---|
| Pruning | Parameter | Mask / sisa bobot | Model lebih kecil | Mahal mencari, tidak selalu lebih cepat |
| LoRA | Parameter | A dan B (low-rank) | Tanpa latensi tambahan, hemat | Perlu memilih r, α, modul target |
| Prefix/Prompt | Input | Vektor virtual | Paling sedikit parameter, batch campur tugas | Lemah pada model kecil |
| Adapter | Function | Modul bottleneck | Akurat, modular | Parameter dan latensi bertambah |
Varian lain
- Knowledge distillation: model "guru" besar mengajari model "murid" kecil, sehingga murid mendekati kemampuan guru. Contohnya, rantai penalaran dari LLM dipakai untuk melatih LM kecil.
- Untuk dieksplorasi sendiri: Gist tokens dan ReFT.
Tidak ada metode terbaik mutlak. Pilihan bergantung pada ukuran model, memori GPU, kebutuhan serving banyak tugas, dan target akurasi. Untuk kebanyakan kasus saat ini, LoRA/QLoRA adalah titik awal yang masuk akal.
7. Panduan Tugas W6: Eksplorasi LoRA
- Baca tutorial Hugging Face LLM Course, chapter 11, section 4.
- Jalankan notebook Colab dengan setelan default; catat training loss dan output 4 prompt.
- Ubah satu parameter per run (rank, alpha, dropout, atau target_modules) supaya pengaruhnya jelas.
- Catat tabel: setting | parameter trainable | training loss akhir.
- Bandingkan output 4 prompt sebelum dan sesudah fine-tuning.
- Laporan PDF 500-800 kata: Pendahuluan (maks 150 kata, bahasa sendiri), Eksperimen, Hasil, Analisis, Kesimpulan, AI Usage Disclosure.
Deliverables: notebook .ipynb (semua cell dieksekusi), laporan PDF, kumpulkan via Google Classroom. Deadline pada slide: 1 April 2026 (sudah lewat; konfirmasi ke dosen bila perlu).