Supervised Fine-Tuning: Membuat Model Jadi Asisten
Model bahasa yang baru selesai pretraining bukan asisten yang siap menuruti permintaanmu. Ia bisa melanjutkan teks, tapi belum tentu berusaha membantu. Untuk mengubahnya jadi asisten, ada tahap lanjutan bernama supervised fine-tuning.
Kenapa Base Model Bukan Asisten
Menambah ukuran model tidak otomatis membuatnya lebih baik dalam mengikuti maksud pengguna. Penelitian InstructGPT menunjukkan model bahasa besar bisa menghasilkan keluaran yang tidak jujur, toksik, atau sama sekali tidak membantu. Dengan kata lain, model itu belum selaras dengan penggunanya.
Base model dilatih untuk memprediksi kelanjutan teks, bukan untuk memahami bahwa ada pengguna yang menunggu jawaban. Ia menanggapi prompt sebagai pola, bukan sebagai permintaan. Karena itu, memperbesar model saja tidak menyelesaikan masalah keselarasan.
Apa Itu Supervised Fine-Tuning
Fine-tuning, menurut Wikipedia, adalah proses menyesuaikan model yang sudah dilatih untuk satu tugas agar menjalankan tugas lain yang biasanya lebih spesifik. Ini termasuk bentuk transfer learning karena memakai kembali pengetahuan dari tujuan pelatihan awal.
Pada kasus asisten, fine-tuning dilakukan dengan pembelajaran terarah alias supervised learning. Dalam makalah InstructGPT, tim peneliti mengumpulkan dataset berisi demonstrasi perilaku model yang diinginkan dari para pelabel, lalu memakai data itu untuk fine-tuning GPT-3 secara supervised. Demonstrasi ini ditulis sebagai contoh jawaban yang benar atas sebuah prompt.
Dengan kata lain, supervised fine-tuning mengajarkan model lewat contoh, bukan lewat aturan tertulis yang kaku.
Pasangan Input dan Output yang Ideal
Data supervised fine-tuning pada dasarnya adalah pasangan input dan output. Input berupa prompt atau instruksi, output berupa jawaban yang dianggap ideal. Proses pelabelan ini membentuk apa yang disebut sebagai demonstrasi perilaku yang diinginkan.
Contoh ideal bukan sekadar jawaban yang benar secara fakta. Ia juga mencerminkan gaya, tingkat detail, dan sikap yang diharapkan dari asisten. Kalau kamu ingin model menolak permintaan berbahaya dengan sopan, contoh penolakan seperti itu harus ada di dalam data pelatihannya.
Sumber prompt pun beragam. InstructGPT memakai prompt yang ditulis langsung oleh pelabel sekaligus prompt yang dikirim pengguna melalui API. Kombinasi ini membuat model terlatih pada permintaan nyata, bukan hanya skenario buatan.
Kualitas Demonstrasi Lebih Penting daripada Jumlah
Salah satu pelajaran penting dari pendekatan ini adalah kualitas demonstrasi menang atas sekadar menambah baris data. Seribu contoh yang konsisten dan jelas lebih berguna daripada puluhan ribu contoh yang saling bertentangan.
Alasannya sederhana. Model meniru pola dari data. Kalau demonstrasinya rapi dan konsisten, model menyerap standar itu. Kalau datanya berantakan atau saling bertabrakan, model belajar kebingungan juga. Karena itu banyak usaha pada tahap ini dihabiskan untuk menyusun pedoman pelabelan dan menjaga konsistensi antar-anotator.
Kualitas juga berkaitan dengan tujuan. Data yang dibuat dengan sengaja untuk mengajarkan perilaku tertentu memberi hasil yang lebih terarah dibanding data yang dikumpulkan sekadar untuk mengejar volume. Menambah contoh yang tidak relevan hanya menambah derau.
Hasilnya Terlihat di Evaluasi
Efek supervised fine-tuning bisa diukur. Pada evaluasi manusia dalam makalah InstructGPT, keluaran dari model InstructGPT berukuran 1,3 miliar parameter lebih disukai daripada keluaran GPT-3 berukuran 175 miliar parameter, meski jumlah parameternya jauh lebih sedikit. Model InstructGPT juga menunjukkan peningkatan kejujuran dan pengurangan keluaran toksik, dengan regresi performa yang minim pada dataset NLP publik.
Temuan ini penting. Ia menunjukkan bahwa menyelaraskan model dengan contoh berkualitas bisa mengalahkan sekadar menambah ukuran. Meski begitu, model hasil fine-tuning tetap bisa membuat kesalahan sederhana, jadi bukan solusi yang sempurna.
Tidak Selalu Menyentuh Semua Parameter
Ada beberapa cara melakukan fine-tuning. Pelatihan tambahan bisa diterapkan ke seluruh jaringan saraf, atau hanya ke sebagian lapisan, sementara lapisan yang tidak dilatih dibekukan. Model juga bisa dilengkapi adapter, yaitu modul ringan yang disisipkan ke arsitektur untuk menyesuaikan ruang embedding. Adapter ini berisi parameter yang jauh lebih sedikit daripada model aslinya.
Pada model yang dilatih dengan korpus umum berskala besar, fine-tuning biasanya dilakukan dengan memakai ulang parameternya sebagai titik awal lalu menambahkan lapisan khusus tugas yang dilatih dari nol. Melatih seluruh model juga umum dan sering memberi hasil lebih baik, tetapi biayanya lebih tinggi.
PEFT: Cara Efisien Melakukan Fine-Tuning
Fine-tuning penuh bisa mahal karena harus memperbarui seluruh parameter model. Wikipedia mencatat bahwa menyempurnakan seluruh model memang sering memberi hasil lebih baik, tetapi biaya komputasinya lebih tinggi. Di sinilah parameter-efficient fine-tuning (PEFT) masuk.
PEFT adalah pendekatan untuk menyesuaikan model besar yang sudah dilatih tanpa menyentuh semua parameternya, karena melatih semuanya terlalu mahal. Menurut dokumentasi Hugging Face, metode PEFT hanya melatih sebagian kecil parameter, bisa berupa parameter tambahan, sehingga biaya komputasi dan penyimpanan turun drastis namun performanya tetap sebanding dengan fine-tuning penuh.
Ada beberapa varian. Salah satunya low-rank adaptation (LoRA), teknik berbasis adapter yang menambahkan matriks berperingkat rendah ke matriks asli. Model dengan miliaran parameter bisa di-fine-tune lewat LoRA dengan hanya beberapa juta parameter. PEFT di Hugging Face menyatukan berbagai metode semacam ini dan terintegrasi dengan library Transformers, Diffusers, dan Accelerate.
Bagi kamu yang ingin bereksperimen, inilah jalur yang paling masuk akal: mulai dari model yang sudah dilatih, lengkapi dengan data demonstrasi berkualitas, lalu pilih metode efisien agar biaya tetap terkendali.
Catatan soal Ketahanan Model
Fine-tuning juga punya efek samping. Menurut Wikipedia, proses ini bisa menurunkan ketahanan model terhadap pergeseran distribusi data, yaitu kondisi ketika data di dunia nyata berbeda dari data pelatihan. Salah satu cara meredamnya adalah mencampur bobot model hasil fine-tuning dengan bobot model aslinya secara linear. Cara ini bisa meningkatkan performa di luar distribusi sambil tetap mempertahankan sebagian besar performa di dalam distribusi.