Memahami arsitektur transformer yang menopang semua LLM modern: attention mechanism, Hugging Face ecosystem (Transformers, datasets, tokenizers, pipelines), cara kerja tokenizer, dan langkah pertama fine-tuning model bahasa dengan Hugging Face

Setelah di episode 12 kalian menguasai training loop PyTorch, sekarang kita naik satu level yang paling relevan dengan industri 2026: model transformer dan LLM. Hampir semua produk AI modern — chatbot, summarization, code assistant, RAG — dibangun di atas arsitektur ini. Sebagai MLE, kalian tidak perlu membangun transformer dari nol, tetapi wajib memahami: mengapa ia bekerja, bagaimana Hugging Face menyeragamkan aksesnya, dan bagaimana fine-tuning dasar dilakukan.
Episode ini menjembatani pengetahuan training loop kalian dengan ekosistem LLM. Semua skill yang sudah dipelajari — evaluasi, tracking, versioning, serving — tetap berlaku, hanya dengan komponen baru: tokenizer, model, dan dataset yang jauh lebih besar.
Transformer (diperkenalkan lewat paper "Attention Is All You Need", 2017) mengatasi kelemahan arsitektur sebelumnya: RNN memproses kata berurutan sehingga lambat dan mudah kehilangan konteks jauh. Transformer memproses semua token secara paralel dan memakai self-attention untuk menghitung hubungan antar-token.
Konsep kunci self-attention: setiap token membuat tiga vektor — Query (apa yang dicari), Key (identitas token), Value (isi token). Skor attention = kecocokan Query terhadap Key, lalu bobot dipakai untuk mengambil Value. Dalam satu kalimat, "bunga" akan memberi attention tinggi pada "menyirami" di kalimat "Andi menyirami bunga".
Dua varian yang menentukan arsitektur model:
| Varian | Struktur | Contoh Model |
|---|---|---|
| Encoder-only | Memahami teks, tidak menghasilkan | BERT, ModernBERT |
| Decoder-only | Menghasilkan teks (autoregressive) | GPT, Llama, Qwen, Mistral |
Model yang kita pakai sehari-hari (ChatGPT, Claude, dsb) hampir semuanya decoder-only — memprediksi token berikutnya satu per satu.
Model tidak membaca teks; ia membaca token — potongan kata/karakter yang di-encode menjadi integer. Tokenizer yang sama harus dipakai saat training dan inference (satu keluarga model = satu tokenizer):
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen2.5-0.5B-Instruct")
tokens = tokenizer.encode("Belajar ML Engineer itu seru")
print(tokens)
print(tokenizer.decode(tokens))Perhatikan bahwa 1 kata ≠ 1 token: kata umum menjadi 1 token, kata langka dipecah menjadi beberapa. Konteks model (misal "8K", "128K tokens") diukur dalam token, bukan kata — dan token juga yang menentukan context window yang akan menjadi kunci saat kita bahas RAG di episode 16.
Hugging Face menyeragamkan akses ke ribuan model lewat API konsisten. pipeline adalah cara tercepat mencoba:
from transformers import pipeline
pipe = pipeline("text-generation", model="Qwen/Qwen2.5-0.5B-Instruct")
print(pipe("Teknologi AI di 2026", max_new_tokens=50)[0]["generated_text"])Empat komponen yang akan menemani kalian terus:
| Komponen | Fungsi |
|---|---|
transformers | Model & arsitektur (AutoModel, AutoTokenizer, Trainer) |
datasets | Dataset besar dengan streaming & memori efisien |
tokenizers | Tokenizer cepat (BPE, WordPiece) |
Hub | Repository model/dataset dengan versioning & community |
Fine-tuning = melanjutkan training model pre-trained pada data khusus. Pendekatan paling ringan untuk memahami mekanismenya adalah dengan Trainer Hugging Face, yang membungkus training loop PyTorch yang sudah kita pelajari di episode 12:
from transformers import (
AutoModelForSequenceClassification,
AutoTokenizer,
Trainer,
TrainingArguments,
)
model_id = "Qwen/Qwen2.5-0.5B"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForSequenceClassification.from_pretrained(
model_id, num_labels=2
)
def tokenize(batch):
return tokenizer(batch["text"], truncation=True, padding=True, max_length=128)
dataset = dataset.map(tokenize, batched=True)
training_args = TrainingArguments(
output_dir="./ft-output",
learning_rate=2e-5,
per_device_train_batch_size=8,
num_train_epochs=3,
evaluation_strategy="epoch",
logging_steps=50,
)
trainer = Trainer(
model=model,
args=training_args,
train_dataset=dataset["train"],
eval_dataset=dataset["val"],
)
trainer.train()Di sinilah semua disiplin episode 5-8 berperan: split yang benar, evaluasi terpisah, tracking dengan MLflow (via mlflow.transformers), dan versioning model.
Keputusan penting yang membedakan MLE matang: fine-tuning bukan jawaban untuk segalanya. Keputusan ini menghemat biaya dan waktu:
| Situasi | Pendekatan yang Tepat |
|---|---|
| Butuh format/style khusus | Fine-tuning (atau cukup prompt engineering dulu) |
| Butuh pengetahuan domain terbaru/spesifik | RAG (episode 16) |
| Model sudah cukup baik dengan prompt | Jangan fine-tune |
| Data label sedikit (ratusan sampel) | Fine-tune ringan (LoRA, episode 14) |
Aturan emasnya: coba solusi termurah dulu — prompt engineering → RAG → fine-tune ringan → fine-tune penuh. Setiap langkah naik biaya; hanya naik saat manfaatnya terukur.
Important
Fine-tuning penuh (semua parameter) pada LLM besar butuh GPU kelas server dan biaya mahal. Untuk hampir semua kasus produksi 2026, parameter-efficient fine-tuning (LoRA/QLoRA) — yang kita bahas di episode 14 — adalah standar yang sebenarnya. Pahami episode ini sebagai fondasi sebelum naik ke sana.
| Pitfall | Dampak | Pencegahan |
|---|---|---|
| Tokenizer berbeda antara training & inference | Output kacau / error | Satu tokenizer per model, simpan bersama model |
| Training data tidak di-tokenize sama | Length mismatch / truncation salah | Konsisten max_length & padding |
| Fine-tune penuh pada model besar tanpa GPU memadai | OOM / biaya meledak | Mulai dengan LoRA (episode 14) |
pipeline tanpa check model family | Salah API untuk model | Cek task & model family |
| Langsung fine-tune tanpa prompt/RAG dulu | Boros, hasil tak tentu | Evaluasi solusi termurah dulu |
Pada episode 13 ini, kalian telah menguasai dasar LLM:
Trainer; dan keputusan "kapan fine-tune" yang hemat biaya.Di episode 14 selanjutnya kita akan membahas Efficient Fine-tuning (LoRA/QLoRA) — parameter-efficient fine-tuning yang hanya melatih sebagian kecil parameter, kuantisasi untuk hemat memori, serta gambaran RLHF dan DPO untuk menyelaraskan model. Sampai jumpa di episode 14!