Masuk ke NLP modern: tokenization dengan BPE, konsep embedding dan model bahasa, arsitektur BERT & LLaMA-class, lalu praktik fine-tune BERT kecil untuk klasifikasi teks dengan Hugging Face.

Kita sudah membedah transformer di episode 12 secara teori. Sekarang saatnya menerapkannya pada bahasa nyata: bagaimana teks diubah menjadi angka, bagaimana model bahasa dipelajari dari korpus, dan bagaimana memanfaatkan model bahasa yang sudah dilatih untuk tugas spesifik. Ini adalah gerbang menuju LLM — topik yang mendominasi industri AI sejak 2023 dan semakin kuat di 2026.
Yang akan kalian pelajari di episode ini — tokenizer, embedding, arsitektur BERT/LLaMA, dan fine-tuning — adalah fondasi yang sama untuk memahami semua model bahasa modern, dari yang kecil sampai yang milyaran parameter.
Model tidak membaca teks. Sebelum masuk transformer, teks dipecah menjadi token — unit teks terkecil yang diproses. Strategi tokenization menentukan efisiensi dan kualitas model.
[UNK].["bel", "ajar"]. Kata umum jadi satu token; kata langka dipecah. Vocab terkendali dan kata tak dikenal tetap bisa direpresentasikan.BPE membangun vocab subword secara iteratif:
Hasilnya vocab yang kompak namun ekspresif. Inilah tokenizer yang dipakai GPT, LLaMA, dan hampir semua model modern. Perhatikan kode token — dua model dengan BPE yang berbeda menghasilkan token berbeda untuk teks yang sama.
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")
tokens = tokenizer.tokenize("Deep learning is fun!")
print(tokens, tokenizer.convert_tokens_to_ids(tokens))Embedding memetakan setiap token ke vektor angka (misal 768 dimensi untuk BERT base) yang dipelajari bersama model. Dua vektor yang dekat berarti dua token yang semantiknya mirip. Sifat ini luar biasa berguna: "kucing" dan "anjing" lebih dekat daripada "kucing" dan "matematika" — jarak dalam ruang vektor mencerminkan kemiripan makna.
Layer nn.Embedding(vocab, d_model) di episode 12 adalah implementasi teknisnya. Posisi token dan segmen juga punya embedding tersendiri, dijumlahkan sebelum masuk blok transformer.
BERT dilatih dengan dua tujuan: masked language modeling (tebak token yang dihapus) dan next sentence prediction. Karena encoder melihat kiri dan kanan, BERT sangat baik untuk memahami — klasifikasi, entitas, menjawab pertanyaan ekstraktif. Embedding dari [CLS] token sering dipakai sebagai ringkasan seluruh kalimat.
Lalu GPT dan LLaMA melatih decoder-only dengan satu tujuan: next-token prediction (tebak token berikutnya). Dari tugas sederhana inilah muncul kemampuan generasi, in-context learning, dan reasoning ketika skala membesar. Keduanya bukan pesaing — mereka dioptimalkan untuk tugas berbeda.
Semua teori di atas kita rangkum dalam satu tugas nyata: klasifikasi sentimen dengan BERT. Hugging Face Trainer menghapus hampir semua boilerplate:
from transformers import (
AutoTokenizer, AutoModelForSequenceClassification,
Trainer, TrainingArguments,
)
model_name = "distilbert-base-uncased"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name, num_labels=2)
def tokenize(batch):
return tokenizer(batch["text"], truncation=True, padding=True)
dataset = dataset.map(tokenize, batched=True)AutoModelForSequenceClassification mengganti head model menjadi classifier 2 kelas di atas encoding BERT — transfer learning persis seperti episode 8, hanya untuk bahasa.
training_args = TrainingArguments(
output_dir="./sentiment",
num_train_epochs=3,
learning_rate=2e-5,
per_device_train_batch_size=32,
evaluation_strategy="epoch",
logging_steps=100,
)
trainer = Trainer(
model=model,
args=training_args,
train_dataset=train_ds,
eval_dataset=val_ds,
tokenizer=tokenizer,
)
trainer.train()Perhatikan learning_rate=2e-5: fine-tuning model bahasa memakai learning rate sangat kecil karena bobot sudah bagus — aplikasi praktis dari prinsip episode 8. Setelah training, trainer.evaluate() melaporkan akurasi di validation.
Tip
Mulai dengan distilbert atau bert-tiny untuk eksperimen — jauh lebih murah dan cukup untuk belajar pipeline. Konsep yang sama berlaku saat naik ke model yang lebih besar; yang berubah hanya sumber daya.
padding=True, truncation=True wajib.1e-3 merusak bobot pretrained. Gunakan 1e-5 sampai 3e-5.Warning
Panjang konteks adalah batas keras. Model BERT-base hanya menerima 512 token — teks lebih panjang harus di-truncate atau di-chunk. Saat memilih model, perhatikan max_position_embeddings-nya; di episode 16 kita akan bekerja dengan model yang konteksnya jauh lebih besar.
Pada episode 15 ini, kalian telah masuk ke dunia NLP modern.
Inti yang harus dibawa pulang:
Trainer dari Hugging Face merangkum seluruh training loop.Di episode 16 selanjutnya kita akan memperbesar skala: fine-tuning LLM dengan PEFT & LoRA — LoRA/QLoRA, adapter, quantization, dan fine-tune model open-weight kecil seperti Llama/Qwen/Gemma. Sampai jumpa di episode 16!