AI Learning #fine-tuning #transfer-learning #bert #gpt #hugging-face #nlp #tutorial

Fine-tuning Model AI untuk Kasus Spesifik

Pelajari cara fine-tuning model AI seperti BERT dan GPT untuk task spesifik. Dari transfer learning sampai praktik implementasi dengan Python dan Hugging Face.

AI Content Hub · 30 Maret 2026

Fine-tuning Model AI untuk Kasus Spesifik

Sudah familiar dengan ChatGPT yang bisa jawab apa aja? Pernah kepikiran bikin versi ChatGPT yang fokus untuk satu tugas spesifik — misalnya chatbot untuk layanan pelanggan bank, atau klasifikator ulasan produk? Itulah yang namanya Fine-tuning! 🎯

Apa Itu Fine-tuning?

Fine-tuning adalah proses mengambil model AI yang sudah pre-trained (seperti BERT atau GPT) dan melatihnya lebih lanjut dengan dataset spesifik untuk task tertentu.

Analogi Sederhana

Bayangkan model pre-trained itu seperti sarjana umum yang sudah punya pengetahuan luas. Fine-tuning adalah mengirimnya ke pelatihan profesi:

Kenapa Fine-tuning Penting?

1. Hemat Resource

2. Data Efisien

3. Performa Lebih Baik

Jenis-Jenis Fine-tuning

1. Feature Extraction (Frozen Layers)

Gunakan model pre-trained sebagai “feature extractor”, tambahkan layer baru di atasnya.

# Contoh: Gunakan BERT untuk ekstrak fitur
from transformers import BertModel

# Load pre-trained BERT (frozen)
bert = BertModel.from_pretrained('bert-base-uncased')
for param in bert.parameters():
    param.requires_grad = False  # Freeze!

# Tambahkan classifier layer
classifier = nn.Linear(768, num_classes)  # Hanya layer ini yang di-train

Kapan pakai:

2. Full Fine-tuning

Latih ulang seluruh parameter model dengan learning rate kecil.

# Load model
model = BertForSequenceClassification.from_pretrained('bert-base-uncased')

# Fine-tune semua parameter
optimizer = AdamW(model.parameters(), lr=2e-5)  # Learning rate kecil!

Kapan pakai:

3. Layer-wise Fine-tuning

Fine-tune layer atas saja, biarkan layer bawah tetap (frozen).

# Freeze layer bawah
for param in model.bert.encoder.layer[:6].parameters():
    param.requires_grad = False

# Fine-tune layer atas (6-11)
for param in model.bert.encoder.layer[6:].parameters():
    param.requires_grad = True

Idea: Layer bawah belajar fitur low-level (grammar, morphology), layer atas belajar fitur high-level (semantic, context).

Step-by-Step Fine-tuning dengan Hugging Face

Step 1: Install Dependencies

pip install transformers datasets torch

Step 2: Load Dataset

from datasets import load_dataset

# Contoh: Dataset sentimen analisis
dataset = load_dataset("imdb")  # 50k movie reviews

# Atau dataset custom CSV
# dataset = load_dataset("csv", data_files={"train": "train.csv", "test": "test.csv"})

Step 3: Load Tokenizer dan Model

from transformers import AutoTokenizer, AutoModelForSequenceClassification

model_name = "bert-base-uncased"  # Atau "distilbert-base-uncased" untuk lebih cepat
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(
    model_name, 
    num_labels=2  # Binary classification: positive/negative
)

Step 4: Preprocess Data

def tokenize_function(examples):
    return tokenizer(
        examples["text"], 
        padding="max_length", 
        truncation=True, 
        max_length=512
    )

tokenized_datasets = dataset.map(tokenize_function, batched=True)

Step 5: Setup Training Arguments

from transformers import TrainingArguments

training_args = TrainingArguments(
    output_dir="./results",
    evaluation_strategy="epoch",
    learning_rate=2e-5,  # Learning rate kecil untuk fine-tuning
    per_device_train_batch_size=16,
    per_device_eval_batch_size=16,
    num_train_epochs=3,
    weight_decay=0.01,
    save_strategy="epoch",
    load_best_model_at_end=True,
)

Step 6: Train!

from transformers import Trainer

trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=tokenized_datasets["train"],
    eval_dataset=tokenized_datasets["test"],
)

trainer.train()

Step 7: Save dan Use

# Save model
model.save_pretrained("./my-fine-tuned-model")
tokenizer.save_pretrained("./my-fine-tuned-model")

# Load untuk inference
from transformers import pipeline
classifier = pipeline("sentiment-analysis", model="./my-fine-tuned-model")

# Predict
result = classifier("This movie was absolutely amazing!")
print(result)  # [{'label': 'POSITIVE', 'score': 0.98}]

Contoh Kasus Fine-tuning

Kasus 1: Customer Support Chatbot

Goal: Chatbot yang bisa jawab pertanyaan spesifik tentang produk perusahaan.

Data yang dibutuhkan:

Approach:

Result: Chatbot yang ngerti produk, tone perusahaan, dan bisa handle edge cases.

Kasus 2: Medical Diagnosis Classifier

Goal: Klasifikasi jenis penyakit kulit dari deskripsi gejala.

Data yang dibutuhkan:

Approach:

Result: Model yang akurat untuk triage awal (bukan diagnosis final!).

Kasus 3: Code Review Assistant

Goal: AI yang bisa review code dan suggest improvements.

Data yang dibutuhkan:

Approach:

Result: Assistant yang bisa detect common issues dan suggest refactoring.

Tips dan Best Practices

✅ Learning Rate

✅ Learning Rate Scheduler

from transformers import get_linear_schedule_with_warmup

scheduler = get_linear_schedule_with_warmup(
    optimizer,
    num_warmup_steps=100,
    num_training_steps=1000
)

✅ Regularization

✅ Data Quality

✅ Validation Strategy

Tantangan dalam Fine-tuning

⚠️ Catastrophic Forgetting

Model “lupa” pengetahuan umum setelah fine-tuning.

Solusi:

⚠️ Overfitting

Model hafal data training, gagal generalize.

Solusi:

⚠️ Class Imbalance

Satu label jauh lebih banyak dari yang lain.

Solusi:

⚠️ Hardware Limitations

Model besar butuh GPU/TPU.

Solusi:

Advanced Techniques

1. LoRA (Low-Rank Adaptation)

Fine-tuning efisien yang hanya train “adapter” kecil.

from peft import LoraConfig, get_peft_model

config = LoraConfig(
    r=16,  # rank
    lora_alpha=32,
    target_modules=["q_proj", "v_proj"],
    lora_dropout=0.05,
    bias="none",
    task_type="CAUSAL_LM"
)

model = get_peft_model(model, config)
# Hanya ~1% parameter yang di-train!

Keuntungan:

2. Prompt Tuning

Tambahkan “soft prompts” yang di-train, biarkan model tetap frozen.

[TRAINABLE PROMPT TOKENS] + Input Text → Model (frozen) → Output

Keuntungan:

3. Instruction Tuning

Fine-tune model untuk mengikuti instruksi dalam format chat.

Data format:

{
  "instruction": "Terjemahkan ke bahasa Inggris",
  "input": "Saya suka makan nasi goreng",
  "output": "I like to eat fried rice"
}

Contoh model: Alpaca, Vicuna, WizardLM (instruction-tuned Llama)

Mengevaluasi Model Fine-tuned

Metrics untuk Classification

Metrics untuk Generation

Kesimpulan

Fine-tuning adalah superpower dalam AI modern. Dengan model pre-trained dan sedikit data spesifik, kamu bisa membuat AI yang powerful untuk task apapun.

Key takeaways:

  1. Transfer learning: Leverage pengetahuan dari model besar
  2. Choose approach: Feature extraction vs full fine-tuning vs LoRA
  3. Learning rate: Kecil untuk fine-tuning (1e-5 - 5e-5)
  4. Data quality: Lebih penting daripada quantity
  5. Evaluate properly: Jangan cuma lihat training metrics

Next steps:

Selamat fine-tuning! 🚀


Punya pengalaman fine-tuning model? Share tips dan trikmu di komentar!