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:

  1. Pretraining: model membaca teks dalam jumlah sangat besar untuk memprediksi kata berikutnya. Hasilnya pengetahuan umum bahasa dan dunia. Bobotnya jadi "titik awal" (inisialisasi).
  2. Finetuning: bobot itu disesuaikan dengan tugas tertentu (misalnya klasifikasi sentimen) memakai data berlabel yang sedikit.
  3. Instruction finetuning: finetuning pada pasangan (instruksi, jawaban) dari banyak tugas sekaligus, lalu diuji pada tugas yang belum pernah dilihat (contoh: FLAN-T5).
  4. 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.
Kritis:

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

Full fine-tuning
Semua parameter diupdate. Setiap tugas = satu salinan model utuh.
PEFT
Hanya sebagian kecil parameter yang dilatih, sisanya dibekukan.

Mengapa hanya melatih sebagian?

Tiga sudut pandang PEFT

PerspektifIdeMetode
ParameterUbah/pilih bobot yang sudah adaPruning (sparse subnetwork), LoRA (low-rank)
InputTambahkan vektor yang dipelajari di inputPrefix-tuning, prompt-tuning
FunctionSisipkan fungsi/modul baruAdapter
Kritis:

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.).

Latih awalBuang bobot kecilLatih ulang sisa(ulangi...) iterative pruning

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.

Kritis:

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:

maxφ Σ(x,y) Σt=1..|y| log Pφ(yt | x, y<t)

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₀ + ΔW = W₀ + α·B·A
h (keluaran) + W₀ (dibeku­kan)d × k B (d×r) = 0 A (r×k) acak x (masukan) rank r

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
Kritis:

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

Contoh: BERT-base punya 12 layer; jika LoRA dipasang di Wq dan Wv, jumlah matriks = 24.

3.6 Keunggulan

3.7 Bukti dari eksperimen (GPT-3 175B)

MetodeParameter dilatihWikiSQLMNLI-m
Full fine-tuning175.255,8 juta73,889,5
Adapter40,1 juta73,291,5
LoRA4,7 juta73,491,7
LoRA37,7 juta74,091,6
Kritis:

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.

Model pretrained (beku) virtual tokens (dilatih)... film itu ... (input asli)
Prefix-tuning (Li & Liang)Prompt-tuning (Lester et al.)
Yang dilatihPrefix kontinu (di setiap layer)Embedding token virtual di input saja
KelebihanSatu batch bisa berisi tugas berbeda-beda, karena tinggal ganti prefixSangat 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.

Kritis:

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).

f(x) = WU · σ(WD · x), keluaran akhir = x + f(x)
keluaran (+ x) Up-projection W_U (d) Nonlinearitas σ Down-projection W_D (k kecil) masukan x jalur residual di kiri
Kritis:

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.

MetodePerspektifYang dilatihKelebihanKekurangan
PruningParameterMask / sisa bobotModel lebih kecilMahal mencari, tidak selalu lebih cepat
LoRAParameterA dan B (low-rank)Tanpa latensi tambahan, hematPerlu memilih r, α, modul target
Prefix/PromptInputVektor virtualPaling sedikit parameter, batch campur tugasLemah pada model kecil
AdapterFunctionModul bottleneckAkurat, modularParameter dan latensi bertambah

Varian lain

Kritis:

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

  1. Baca tutorial Hugging Face LLM Course, chapter 11, section 4.
  2. Jalankan notebook Colab dengan setelan default; catat training loss dan output 4 prompt.
  3. Ubah satu parameter per run (rank, alpha, dropout, atau target_modules) supaya pengaruhnya jelas.
  4. Catat tabel: setting | parameter trainable | training loss akhir.
  5. Bandingkan output 4 prompt sebelum dan sesudah fine-tuning.
  6. Laporan PDF 500-800 kata: Pendahuluan (maks 150 kata, bahasa sendiri), Eksperimen, Hasil, Analisis, Kesimpulan, AI Usage Disclosure.
Tips analisis: hubungkan temuanmu dengan teori di atas. Contoh: apakah r lebih besar menurunkan loss? Apakah loss yang lebih rendah selalu berarti output lebih baik? Hati-hati: loss rendah bisa berarti overfitting. Gunakan juga kalkulator di bagian 3.5 untuk melaporkan jumlah parameter.

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).

8. Kuis latihan