Fine-tuning model bahasa besar secara efisien: PEFT dengan LoRA/QLoRA, konsep adapter dan RLHF, plus praktik fine-tune model open-weight kecil seperti Llama, Qwen, atau Gemma dengan PEFT dan quantization.

Di episode 15 kita fine-tune BERT kecil yang berjumlah ~67 juta parameter. Sekarang bayangkan model 7B atau 70B parameter: full fine-tuning berarti melatih ulang semua bobot — butuh GPU kelas data center, storage raksasa, dan waktu berhari-hari. Untuk mayoritas tim, itu tidak realistis.
Solusinya adalah PEFT (Parameter-Efficient Fine-Tuning): melatih sebagian kecil parameter sementara model utama dibekukan. Teknik paling populer di 2026 adalah LoRA, dan dengan kombinasi quantization (QLoRA), fine-tuning LLM bahkan bisa dilakukan di satu GPU consumer. Episode ini membuka akses ke keterampilan yang paling banyak dicari industri: menyesuaikan model bahasa besar dengan biaya masuk akal.
Untuk model 7B parameter:
Hasilnya: full fine-tuning model 7B butuh 4-8 GPU A100 (80GB). QLoRA mencapai hasil sebanding dengan satu GPU 24GB.
LoRA berangkat dari observasi penting: saat fine-tuning, perubahan pada bobot cenderung berdimensi rendah — hanya sedikit arah yang benar-benar berubah. Alih-alih mengubah matriks bobot W (misal 4096x4096), LoRA menyisipkan dua matriks kecil A dan B yang hasil kalinya memperbarui bobot:
W_baru = W_asli + B * Adengan B berdimensi (out, r) dan A berdimensi (r, in), dan rank r kecil (8-64). Karena r sangat kecil dibanding dimensi asli, jumlah parameter yang dilatih berkurang 99%+. Model asli dibekukan; hanya A dan B yang diperbarui.
QLoRA menambah satu langkah: model dasar di-quantize ke 4-bit agar muat di satu GPU, sementara adapter LoRA tetap dihitung dalam presisi penuh:
4-bit + paged_optimizer, satu GPU 24GB cukup untuk fine-tune model 7B.Loss kualitas hanya sedikit di atas full fine-tuning — trade-off yang sangat masuk akal untuk hampir semua tim.
Hugging Face PEFT + transformers membuat semuanya ringkas. Contoh: fine-tune Qwen2.5-0.5B atau Llama-3.2-1B untuk gaya percakapan:
from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig
from peft import LoraConfig, get_peft_model, prepare_model_for_kbit_training
quant = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype="float16",
)
model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen2.5-0.5B-Instruct", quantization_config=quant)
model = prepare_model_for_kbit_training(model)
lora = LoraConfig(
r=16,
lora_alpha=32,
target_modules=["q_proj", "k_proj", "v_proj", "o_proj"],
lora_dropout=0.05,
task_type="CAUSAL_LM",
)
model = get_peft_model(model, lora)
model.print_trainable_parameters()print_trainable_parameters() menunjukkan total parameter yang dilatih — biasanya di bawah 1%. Target modul (q_proj, dll.) adalah proyeksi attention dari episode 12: bobot inilah yang paling banyak berubah saat fine-tuning.
from transformers import Trainer, TrainingArguments
args = TrainingArguments(
output_dir="./qwen-lora",
per_device_train_batch_size=4,
gradient_accumulation_steps=8,
learning_rate=2e-4,
num_train_epochs=3,
logging_steps=50,
bf16=True,
)
trainer = Trainer(model=model, args=args, train_dataset=ds, tokenizer=tokenizer)
trainer.train()model.save_pretrained("./qwen-lora")
from peft import PeftModel
base = AutoModelForCausalLM.from_pretrained("Qwen/Qwen2.5-0.5B-Instruct")
model = PeftModel.from_pretrained(base, "./qwen-lora")Adapter berukuran beberapa MB dan bisa disebar ke Hugging Face Hub. Untuk inference produksi, adapter sering di-merge ke model asli agar tidak ada overhead runtime.
Tip
Fine-tuning model Instruct membutuhkan format prompt yang konsisten dengan cara model dilatih (misal sistem prompt + user + assistant). Gunakan tokenizer apply_chat_template untuk membungkus percakapan — salah format adalah penyebab paling umum hasil fine-tuning tampak tidak bekerja.
Setelah fine-tuning instruksi, langkah lanjutan adalah RLHF (Reinforcement Learning from Human Feedback): model dilatih meniru preferensi manusia. Tahapannya:
Untuk tim kecil, DPO (Direct Preference Optimization) adalah alternatif yang jauh lebih sederhana — tidak butuh reward model terpisah, cukup data preferensi langsung. Episode 22 akan membahas RL dan reasoning model lebih dalam.
prepare_model_for_kbit_training: tanpa ini, model 4-bit dan LoRA bekerja dengan presisi salah dan training tidak stabil.chat_template model.model.named_parameters().Warning
Fine-tuning tidak membuat model menguasai pengetahuan baru — ia mengubah perilaku/gaya dari pengetahuan yang sudah ada. Jika model tidak bisa menjawab suatu topik sebelum fine-tuning, fine-tuning dengan LoRA kecil juga tidak akan memperbaikinya. Untuk pengetahuan baru, gunakan RAG (retrieval) sebagai gantinya.
Pada episode 16 ini, kalian telah menguasai fine-tuning LLM yang efisien.
Inti yang harus dibawa pulang:
Di episode 17 selanjutnya kita akan membahas sisi gelapnya: AI security untuk model — OWASP GenAI LLM Top 10 2026, adversarial attacks, prompt injection, data poisoning, dan hardening dengan guardrails & red teaming. Sampai jumpa di episode 17!