Cara Melakukan Fine-Tuning LLM [dan Kapan Sebaiknya Menggunakan RAG atau Prompting]
Panduan ini menjelaskan cara melakukan fine-tuning LLM langkah demi langkah, membandingkan fine-tuning penuh dengan LoRA dan QLoRA, serta menunjukkan kapan prompting atau RAG menjadi cara yang lebih baik untuk meningkatkan output model.

Melakukan fine-tuning pada large language model (LLM) berarti menyempurnakan LLM yang sudah dilatih sebelumnya menggunakan dataset kecil yang spesifik untuk tugas tertentu, sehingga model menghasilkan output yang tidak bisa Anda dapatkan hanya dengan prompting.
Fine-tuning mencakup pengumpulan contoh pasangan input/output yang menunjukkan perilaku yang Anda inginkan, menjalankan putaran pelatihan yang menggeser bobot model ke arah contoh tersebut, lalu membandingkan hasilnya dengan output model aslinya. Metode hemat parameter seperti LoRA membuat proses ini cukup murah untuk dijalankan pada satu GPU.
Jika Anda belum puas dengan output LLM, sempurnakan dulu prompt dan retrieval-augmented generation (RAG) Anda. Fine-tuning mengubah cara LLM berperilaku. Jika Anda membutuhkan LLM untuk menggunakan informasi terbaru atau informasi eksklusif milik Anda, prompting dan RAG biasanya merupakan pilihan yang lebih baik.
Berikut cara melakukan fine-tuning LLM langkah demi langkah, metode fine-tuning utama (LoRA dan QLoRA), serta tantangan dan kesalahan yang dapat menggagalkan prosesnya.
Apa itu fine-tuning LLM dan apa bedanya dengan pra-pelatihan LLM
Pra-pelatihan LLM membangun kemampuan bahasa umum sebuah model dari nol menggunakan korpus yang sangat besar, sedangkan fine-tuning LLM menyesuaikan model yang sudah dilatih sebelumnya menggunakan dataset kecil untuk satu tugas tertentu.
Pra-pelatihan LLM adalah fase yang membutuhkan banyak sumber daya dan menghasilkan model dasar. Model belajar dari korpus teks yang luas, sehingga memiliki kemampuan tata bahasa, pengetahuan faktual, dan penalaran secara umum, tetapi tidak terspesialisasi untuk tugas Anda.
Fine-tuning LLM melanjutkan pelatihan model dasar menggunakan dataset kecil yang dikurasi agar model menghasilkan output yang diinginkan untuk tugas atau kasus penggunaan tertentu. Misalnya, format yang konsisten, gaya bahasa atau nada merek, pola khusus domain, atau pemanggilan alat dan fungsi yang andal.
Kapan sebaiknya melakukan fine-tuning LLM dan kapan sebaiknya menggunakan prompting atau RAG
Untuk meningkatkan performa LLM, lakukan secara bertahap: prompting -> RAG -> fine-tuning.
Sempurnakan prompt Anda dengan instruksi yang lebih terperinci dan gunakan RAG untuk memberikan informasi terkini kepada model. Gunakan fine-tuning hanya jika perbaikan pada prompt dan retrieval tidak membuahkan hasil.
Pendekatan | Yang diubah | Gunakan saat | Keterbatasan utama |
Prompt engineering | Permintaan yang Anda kirim | Perilaku model sudah mendekati yang diinginkan, dan Anda menginginkan kecepatan serta kemudahan untuk membatalkan perubahan | Terbatas pada kemampuan yang sudah dimiliki model dasar |
RAG | Apa yang dilihat model saat inferensi | Fakta sering berubah, dan Anda membutuhkan LLM untuk mengakses informasi terkini | Menambah latensi retrieval dan infrastruktur; tidak mengubah perilaku |
Fine-tuning LLM | Bobot model (parameter internal model) | Anda membutuhkan perilaku, format, atau nada yang konsisten dalam skala besar, atau prompt yang lebih pendek di setiap panggilan | Biaya awal, pengetahuan yang tertanam dalam bobot menjadi usang, risiko melupakan perilaku hasil pra-pelatihan |
Kapan prompt yang lebih baik lebih unggul daripada fine-tuning dan kapan prompt saja tidak cukup
Prompting adalah cara tercepat dan termurah. Dalam banyak kasus, prompt yang lebih akurat dan terperinci sudah cukup untuk menghasilkan perubahan perilaku yang diinginkan.
Namun, prompt yang lebih panjang memperlambat pekerjaan dan membuatnya lebih mahal, serta tidak dapat mengatasi keterbatasan yang sudah ada pada model.
Tanda-tanda bahwa prompting mungkin sudah mencapai batasnya:
- Kasus tepi baru terus merusak output: Misalnya, model menghasilkan prosa padahal Anda membutuhkan JSON, atau nadanya melenceng, dan Anda harus menambal prompt untuk setiap kasus baru.
- Prompt sistem terus bertambah panjang: Prompt mencapai ratusan atau ribuan baris dan sulit dikelola.
- Anda membayarnya di setiap panggilan: Prompt dikirim dan diproses ulang pada setiap permintaan, sehingga biaya token dan latensi terus meningkat.
- Perubahan tidak lagi berdampak: Instruksi baru tidak memperbaiki output.
Meski begitu, cobalah dulu perbaikan yang lebih murah di tingkat prompt. Gunakan contoh few-shot untuk menunjukkan pola kepada model (pasangan input/output), prompt chaining untuk memecah tugas yang sulit menjadi langkah-langkah yang lebih kecil, atau hook pemanggilan fungsi untuk menyerahkan pencarian data yang presisi atau komputasi ke alat lain.
Kapan RAG lebih masuk akal daripada fine-tuning model
RAG mengubah apa yang diketahui LLM, sedangkan fine-tuning LLM mengubah cara LLM berperilaku. Jika kesenjangannya ada pada pengetahuan, terutama pengetahuan yang sering berubah atau tersimpan dalam dokumen Anda sendiri, RAG adalah jawabannya. Jika kesenjangannya ada pada perilaku, lakukan fine-tuning.
Fine-tuning juga mengubah apa yang diketahui model, tetapi fakta apa pun yang diserapnya akan membeku pada saat pelatihan dan cepat usang di bidang yang berkembang pesat. Selain itu, informasi tersebut tertanam dalam bobot model, sehingga tidak ada catatan mengenai sumbernya.
Memperbarui dokumen sumber yang digunakan lapisan retrieval lebih cepat dan lebih murah, dan lapisan ini dapat mengutip sumber persis yang digunakannya. Karena itu, pendekatan ini menjadi pilihan yang lebih baik saat Anda membutuhkan informasi terkini yang dapat dipertanggungjawabkan.
Kekurangan RAG? RAG merupakan lapisan tambahan yang harus dibangun dan dipelihara, serta menambah latensi.
Dalam praktiknya, Anda sering kali membutuhkan keduanya. Sistem produksi memadukan model hasil fine-tuning dengan RAG, menggunakan yang satu untuk perilaku yang konsisten dan yang lain untuk fakta terkini.
Jebakan, risiko, dan tantangan umum dalam fine-tuning
Bahkan ketika fine-tuning merupakan alat yang tepat, ada biaya dan risiko yang menyertainya:
- Biaya dan waktu: Mengumpulkan data pelatihan yang bersih dan representatif serta komputasi untuk pelatihan sama-sama mahal.
- Catastrophic forgetting: Jika dilatih dengan dataset yang sempit, model dapat kehilangan keterampilan umum dan memunculkan pola kegagalan baru, sehingga menghasilkan kesalahan yang tidak dilakukan model dasar.
- Overfitting: Jika datanya terlalu sedikit atau terlalu repetitif, model akan menghafal contoh pelatihan Anda alih-alih mempelajari polanya, sehingga performanya bagus pada sampel pelatihan tetapi buruk pada input nyata.
- Informasi usang: Pengetahuan yang tertanam dalam bobot cepat ketinggalan zaman, sehingga Anda harus melatih ulang model dengan data baru.
- Keusangan model: Saat model yang lebih kuat dirilis, model tersebut sering kali langsung mengungguli hasil fine-tuning Anda, sehingga Anda harus mengulang pekerjaan dari awal.
- Tantangan evaluasi dan reproduksi: Membuktikan bahwa model hasil fine-tuning lebih unggul daripada model dasar itu sulit. Dua kali pelatihan GPU dengan pengaturan yang sama juga dapat menghasilkan model yang sedikit berbeda.
- Tata kelola data: Pelatihan dengan data eksklusif atau data sensitif menimbulkan pertanyaan seputar privasi dan lisensi; model nantinya dapat memunculkan potongan data yang digunakan untuk melatihnya.
Metode fine-tuning utama
Jenis-jenis utama fine-tuning LLM dibedakan berdasarkan seberapa banyak bagian model yang diubah: full fine-tuning melatih ulang seluruh model, sedangkan metode parameter-efficient fine-tuning (PEFT) seperti LoRA dan QLoRA hanya memperbarui sebagian bobot. Metode PEFT hanya membutuhkan sebagian kecil memori dibandingkan full fine-tuning dan, dengan pengaturan yang tepat, dapat memberikan hasil yang setara.
Full fine-tuning memperbarui setiap bobot model. Metode ini paling mahal dan memiliki risiko catastrophic forgetting tertinggi. Gunakan metode ini hanya untuk perubahan perilaku besar jika Anda memiliki data dan daya komputasi yang memadai.
Alternatifnya adalah parameter-efficient fine-tuning, atau PEFT. Ini adalah istilah umum untuk metode yang membekukan sebagian besar model dan hanya melatih sekumpulan kecil parameter. Metode ini menggunakan memori jauh lebih sedikit dan tidak terlalu rentan mengalami forgetting, karena model dasarnya tetap utuh.
Pada rank rendah, PEFT mempelajari lebih sedikit dibandingkan full fine-tuning, tetapi menaikkan rank dan menyetel laju pembelajaran dapat menutup sebagian besar selisihnya pada tugas instruction tuning.
Metode PEFT meliputi:
- LoRA (Low-Rank Adaptation): Titik awal yang umum digunakan. LoRA membekukan bobot asli dan melatih sekumpulan kecil parameter adaptor tambahan, sering kali kurang dari 1% dari total parameter, sehingga dapat dijalankan pada satu GPU kelas konsumen.
- QLoRA (Quantized Low-Rank Adaptation): QLoRA mengompresi model dasar ke presisi 4-bit sebelum menerapkan LoRA, sehingga Anda dapat melakukan fine-tuning model besar pada satu GPU.
Metode | Yang diperbarui | Kebutuhan perangkat keras | Gunakan saat |
Full fine-tuning | Setiap bobot dalam model | Node multi-GPU untuk model kelas 7B, dan jauh lebih banyak lagi untuk model yang lebih besar | Anda membutuhkan perubahan perilaku yang mendalam dan memiliki data serta daya komputasi yang memadai |
LoRA (PEFT) | Sekumpulan kecil bobot adaptor tambahan | Satu GPU kelas konsumen | Titik awal default Anda |
QLoRA (PEFT) | Adaptor LoRA pada model dasar yang dikompresi ke 4-bit | Model yang sangat besar pada satu GPU | Memori Anda terbatas, tetapi Anda menginginkan model dasar yang besar |
Selain itu, kami menggunakan metode instruction tuning dan preference tuning, mulai dari RLHF (Reinforcement Learning from Human Feedback) hingga alternatif yang lebih ringan seperti Direct Preference Optimization (DPO) dan Odds Ratio Preference Optimization (ORPO), untuk membentuk cara model mengikuti instruksi dan menyesuaikan diri dengan preferensi manusia.
Cara melakukan fine-tuning LLM langkah demi langkah
Setelah Anda memutuskan bahwa fine-tuning LLM adalah langkah yang tepat, berikut alur kerjanya.
Langkah 1: Tentukan tugas dan cara mengukur keberhasilannya
Tentukan perilaku yang Anda inginkan dari LLM dan bagaimana Anda akan mengetahui bahwa perilaku itu sudah tercapai.
Sebutkan tugas spesifik yang ingin Anda selesaikan dengan model hasil fine-tuning, misalnya mengklasifikasikan tiket dukungan, meringkas kontrak dalam format tetap, atau menghasilkan kode sesuai gaya internal Anda.
Kemudian, tentukan definisi keberhasilan. Opsi yang umum meliputi:
- Validitas output: Misalnya, apakah hasilnya dapat di-parse sebagai JSON yang valid atau sesuai dengan struktur Markdown yang Anda butuhkan?
- Skor otomatis: Gunakan metrik seperti BLEU atau ROUGE yang membandingkan teks yang dihasilkan dengan jawaban referensi, atau akurasi tugas pada set data berlabel.
- Penilaian manusia: Rubrik berbasis skor atau lulus/gagal untuk kualitas yang sulit dinilai dengan baik oleh skrip, seperti nada atau tingkat kebermanfaatan.
- Keandalan pada input yang sulit: Apakah model dapat menangani input tidak biasa yang membuat model dasar keliru?
Langkah 2: Siapkan dataset Anda
Kualitas data menentukan keberhasilan fine-tuning, jadi curahkan upaya untuk mengumpulkan dataset fine-tuning yang tepat.
Format data Anda sebagai pasangan instruksi/respons dalam JSONL, dengan setiap baris berisi input (beserta konteks apa pun) dan output persis yang Anda harapkan.
Sebagai contoh, lihat dataset publik seperti dataset instruksi umum Alpaca-cleaned atau Dolly dari Databricks, atau dataset khusus tugas banking77, yang mencakup lebih dari 13.000 kueri dukungan nyata yang diberi label ke dalam 77 intent.
Untuk tugas yang terfokus, beberapa ratus hingga beberapa ribu contoh yang bersih dan bervariasi sudah dapat mengubah perilaku model, asalkan contoh-contoh tersebut mencerminkan input produksi yang nyata, termasuk kasus tepi, dan diformat secara konsisten.
Belum punya pasangan input/output? Susun set data dari data yang sudah Anda miliki, seperti tiket dukungan beserta balasan terbaiknya, atau dokumen beserta ringkasannya.
Jika Anda hanya memiliki output-nya, gunakan model yang lebih kuat untuk menghasilkan input yang masuk akal untuk masing-masing output, atau tulis sendiri sekumpulan kecil data awal lalu kembangkan dengan model "pengajar" yang lebih besar, kemudian pertahankan pasangan terbaik.
Terakhir, bagi data menjadi set pelatihan, validasi, dan pengujian, sehingga Anda dapat melakukan pengukuran pada contoh yang belum pernah dilihat model.
Langkah 3: Pilih model dasar dan metode
Mulailah dengan model open source kecil berukuran 3 hingga 7 miliar parameter dan metode parameter-efficient fine-tuning seperti LoRA atau QLoRA.
Keluarga model terbuka seperti Llama, Mistral, dan Qwen memberi Anda model dasar andal yang dapat Anda host sendiri, dan metode PEFT menjaga kebutuhan perangkat keras tetap rendah: QLoRA mengkuantisasi model dasar ke 4-bit, sehingga fine-tuning model 7B hanya membutuhkan kartu grafis kelas konsumen dengan memori 16-24GB. Full fine-tuning pada model yang sama membutuhkan memori berkali-kali lipat dari itu.
Langkah 4: Atur hiperparameter pelatihan Anda
Berikut parameter utama fine-tuning LLM beserta rentang awal yang disarankan:
- Laju pembelajaran mengontrol seberapa besar setiap pembaruan pada bobot. Sebuah studi tahun 2024 oleh Biderman dkk. menemukan bahwa laju terbaik untuk LoRA kira-kira sepuluh kali lebih tinggi daripada laju terbaik untuk full fine-tuning, biasanya 5e-5 hingga 5e-4 dibandingkan 1e-5 hingga 5e-5. Studi tersebut menyarankan untuk menguji rentang nilai dari 1e-5 hingga 5e-4 dan menggunakan nilai tertinggi yang masih menghasilkan pelatihan yang stabil.
- Ukuran batch adalah jumlah contoh yang dipelajari model sebelum setiap pembaruan bobot. Pada satu GPU, gunakan batch per perangkat yang kecil, yaitu 1 hingga 8, dan akumulasi gradien untuk mencapai batch efektif sekitar 16 hingga 64.
- Jumlah epoch adalah berapa kali model melihat seluruh dataset. Saat melatih model untuk melakukan tugas tertentu, 1-3 epoch adalah patokan yang baik, tetapi proses pelatihan LoRA sering kali membutuhkan lebih banyak.
- Rank LoRA (r) menentukan kapasitas adaptor, atau seberapa banyak yang dapat dipelajarinya. Mulailah dari 8 hingga 32 untuk tugas yang lebih sederhana dan naikkan untuk tugas yang lebih sulit: dalam studi LoRA oleh Biderman dkk. yang dikutip di atas, instruction tuning model 7B untuk kode membutuhkan rank 256 agar setara dengan fine-tuning penuh, sedangkan rank 64 sudah mendekati untuk matematika.
- Panjang urutan maksimum adalah input terpanjang yang akan diproses selama pelatihan. Atur agar mencakup contoh terpanjang Anda, hingga batas jendela konteks model, karena input yang lebih panjang akan terpotong.
- Warmup dan jadwal mengatur bagaimana laju pembelajaran meningkat dan berubah sepanjang pelatihan. Warmup singkat dan peluruhan kosinus adalah pengaturan default yang umum. Namun, studi model kecil oleh Pareja dkk. menemukan bahwa menghilangkan warmup tidak menurunkan skor akhir.
Anggap nilai-nilai ini sebagai titik awal untuk sweep hiperparameter, bukan pengaturan tetap.
Langkah 5: Latih model dan pantau loss
Selama pelatihan berjalan, perhatikan kurva loss pelatihan dan validasi untuk melihat apakah pelatihan berhasil.
Loss mengukur seberapa jauh output model dari contoh Anda, dan nilainya seharusnya turun secara mulus seiring berjalannya pelatihan. Loss pelatihan dihitung pada data yang dipelajari model. Loss validasi dihitung pada contoh yang disisihkan.
Jika loss pelatihan dan loss validasi turun bersamaan, model sedang belajar menggeneralisasi. Jika loss pelatihan terus turun tetapi loss validasi mendatar atau naik, model menghafal set pelatihan alih-alih mempelajari polanya (overfitting).
Langkah 6: Evaluasi, lalu terapkan
Loss pelatihan yang rendah tidak menjamin output yang benar, jadi evaluasi model hasil fine-tuning berdasarkan kriteria yang Anda tetapkan pada Langkah 1.
Jika model lolos evaluasi, ada dua cara untuk menerapkannya:
- Sajikan adaptor di atas model dasar dan muat keduanya saat runtime; cara ini membuat adaptor tetap dapat ditukar.
- Gabungkan adaptor ke dalam bobot dasar untuk mendapatkan satu model mandiri yang lebih mudah di-host.
Gunakan Perplexity untuk memberi LLM Anda akses ke informasi terkini
Fine-tuning adalah pilihan yang tepat jika Anda ingin menyesuaikan perilaku model dengan kebutuhan Anda.
Jika model Anda membutuhkan informasi terkini, terutama informasi yang cepat berubah, Anda memerlukan RAG atau alat pencarian pihak ketiga yang andal.
Sistem retrieval kustom paling cocok untuk dataset milik sendiri, seperti wiki internal, riwayat dukungan pelanggan, kontrak, atau dokumentasi produk Anda.
Jika pengetahuan yang ingin Anda gunakan bersifat publik, Anda tidak perlu membangun lapisan retrieval khusus. Perplexity adalah mesin jawaban yang memberikan respons dengan kutipan inline yang dapat diklik dari indeks web real-time. Agent API Perplexity menyajikan jawaban berbasis web yang disertai kutipan tersebut dalam satu panggilan, sehingga aplikasi Anda dapat memanfaatkan sumber terkini.
Pertanyaan umum seputar fine-tuning LLM
Bisakah Anda melakukan fine-tuning LLM secara gratis?
Ya, Anda dapat melakukan fine-tuning LLM terbuka berukuran kecil secara gratis. Misalnya, paket gratis Google Colab menyediakan GPU yang cukup untuk menjalankan QLoRA pada model 3B hingga 8B, yang sudah lebih dari cukup untuk tugas yang terfokus. Anda baru mulai membayar ketika membutuhkan lebih banyak memori, pelatihan yang lebih lama, atau model dasar yang lebih besar daripada yang dapat ditampung paket gratis.
Apakah Anda memerlukan GPU sendiri, atau bisakah Anda melakukan fine-tuning di cloud?
Anda tidak perlu memiliki GPU untuk melakukan fine-tuning LLM. Layanan terkelola dan penyedia cloud GPU menyewakan perangkat keras per jam, sehingga satu GPU sewaan sudah cukup untuk menjalankan QLoRA pada model kecil. Membeli GPU hanya sepadan jika Anda sering melakukan fine-tuning atau harus menyimpan semua data di mesin Anda sendiri.
Berapa lama waktu yang dibutuhkan untuk fine-tuning LLM?
Untuk LLM kecil, satu proses pelatihan dapat selesai dalam hitungan menit hingga beberapa jam, tergantung pada ukuran dataset dan perangkat kerasnya. Oumi, misalnya, melakukan fine-tuning penuh pada model 0,8B dalam waktu sedikit lebih dari satu jam di platform hosting-nya.
Model yang lebih besar atau puluhan ribu contoh dapat memperpanjang waktu tersebut hingga satu hari atau lebih: proses pelatihan LoRA Emburse pada model 7B memakan waktu 8 jam untuk 5.000 contoh dan sekitar 30 jam untuk 50.000 contoh pada satu GPU 40GB.
Bisakah Anda terus memperbarui model hasil fine-tuning seiring perubahan data Anda?
Anda dapat melakukan fine-tuning ulang dengan data baru, tetapi setiap putaran membutuhkan biaya komputasi dan berisiko menimbulkan catastrophic forgetting. Untuk pengetahuan yang sering berubah, RAG biasanya merupakan solusi yang lebih baik, karena Anda cukup memperbarui dokumen sumber alih-alih melatih ulang model.