- MicroGPT adalah implementasi minimal model GPT yang ditulis dalam 200 baris kode Python murni, dan disusun agar struktur inti large language model dapat dipahami secara visual
- Model ini dilatih dengan dataset 32.000 nama manusia untuk menghasilkan nama-nama baru, sambil memvisualisasikan proses tokenisasi, prediksi, perhitungan loss, dan backpropagation langkah demi langkah
- Komponen utama GPT seperti Softmax, Cross-Entropy Loss, Backpropagation, Embedding, dan Attention dijelaskan bersama kodenya
- Dalam proses pelatihan, optimizer Adam digunakan untuk secara bertahap menurunkan loss, lalu pengaturan suhu (Temperature Sampling) dipakai untuk menghasilkan beragam nama
- Ini adalah bentuk sederhana dari algoritme inti model besar seperti ChatGPT, sehingga menjadi materi edukasi untuk memahami cara kerja internal LLM
Gambaran Umum MicroGPT
- Berdasarkan skrip Python 200 baris yang ditulis oleh Andrej Karpathy, artikel ini menjelaskan secara visual proses pelatihan dan inferensi model GPT
- Diimplementasikan hanya dengan Python murni tanpa library eksternal
- Tetap memuat algoritme dasar yang sama seperti large language model semacam ChatGPT
- Tulisan ini menunjukkan tiap tahap model secara bertahap dengan pendekatan visual yang ramah bagi pemula
Dataset dan Tujuan Pelatihan
- Menggunakan 32.000 nama manusia (misalnya emma, olivia, ava, dan lain-lain) sebagai data pelatihan
- Tiap nama dianggap sebagai satu dokumen, dan model mempelajari pola karakter dalam nama
- Setelah pelatihan, model dapat menghasilkan nama baru seperti “kamon”, “karai”, “anna”, dan “anton”
- Model mempelajari hubungan statistik antar karakter, panjang nama, serta pola bunyi di awal dan akhir nama
Proses Mengubah Teks Menjadi Angka
- Karena jaringan saraf hanya memproses angka, tiap karakter diubah menjadi ID integer
- a–z diberi nilai 0–25, sedangkan BOS (Beginning of Sequence) ditetapkan sebagai 26
- Token BOS menandai awal dan akhir nama
- tiktoken pada GPT-4 melakukan tokenisasi berdasarkan potongan karakter, bukan karakter tunggal, tetapi prinsipnya sama
Prediksi Token Berikutnya
- Model memprediksi karakter berikutnya dari konteks yang diberikan
- Contoh: [BOS] → “e”, [BOS, e] → “m”, [BOS, e, m] → “m”, [BOS, e, m, m] → “a”
- Tiap tahap membentuk pasangan input (konteks) dan target (karakter berikutnya), dan cara ini sama seperti pada ChatGPT
Softmax dan Perhitungan Probabilitas
- Keluaran model terdiri dari 27 logit, lalu diubah menjadi probabilitas melalui Softmax
- Tiap logit dieksponensialkan lalu dibagi dengan jumlah totalnya untuk membentuk distribusi probabilitas
- Operasi mengurangi nilai maksimum digunakan sebagai stabilisasi untuk mencegah overflow
- Hasil Softmax menunjukkan probabilitas tiap token muncul berikutnya
Perhitungan Loss: Cross-Entropy
- Akurasi prediksi dihitung dengan −log(p)
- Semakin tinggi probabilitas jawaban benar, semakin rendah loss; semakin dekat ke 0, semakin besar loss
- Saat p=1, loss bernilai 0; saat p→0, loss menuju tak hingga
- Pelatihan berjalan dengan meminimalkan loss ini
Backpropagation
- Berdasarkan loss, dihitung seberapa besar pengaruh tiap parameter terhadap loss
- Diferensiasi dilakukan melalui graf komputasi yang menyusun semua operasi (add, multiply, exp, log, dan lain-lain) sebagai node
- Tiap node menyimpan input dan turunan lokal, lalu menyebarkan gradien ke arah belakang
- Contoh: L = a⋅b + a (a=2, b=3) → gradien a adalah 4.0 (jumlah dari dua jalur)
- Prinsipnya sama seperti
loss.backward() di PyTorch
Embedding
- Tiap ID token diubah menjadi vektor 16 dimensi untuk mempelajari makna
- Embedding token dan embedding posisi dijumlahkan lalu digunakan sebagai input
- Peran karakter yang sama dapat berbeda tergantung posisinya
- Setelah pelatihan, karakter yang mirip (misalnya vokal) akan memiliki vektor yang serupa
Attention
- Tiap token menghasilkan vektor Query, Key, dan Value
- Keterkaitan dihitung melalui dot product antara Query dan Key, lalu bobot diperoleh dengan Softmax
- Value yang dijumlahkan berbobot digunakan sebagai output
- Causal Mask diterapkan agar token masa depan tidak dirujuk
- Empat attention head bekerja secara paralel dan mempelajari pola yang berbeda
Struktur GPT Secara Keseluruhan
- Token input melewati tahapan berikut
- Embedding + embedding posisi
- Normalisasi RMSNorm
- Multi-head attention
- Koneksi residual
- MLP (ekspansi ke 64 dimensi → ReLU → reduksi ke 16 dimensi)
- Koneksi residual lagi lalu perhitungan logit output
- Koneksi residual mencegah vanishing gradient
- RMSNorm menjaga skala aktivasi tetap stabil agar pelatihan lebih stabil
Loop Pelatihan
- Pelatihan diulang 1.000 kali
- Memilih nama → tokenisasi → forward pass → perhitungan loss → backpropagation → pembaruan parameter
- Menggunakan optimizer Adam
- Konvergensi stabil dicapai melalui momentum dan adaptive learning rate
- Loss awal turun dari sekitar 3.3 menjadi 2.37
- Nama yang dihasilkan berkembang dari acak menjadi semakin alami
Inferensi dan Sampling
- Setelah pelatihan, proses dimulai dari BOS dan berulang kali memprediksi token berikutnya
- Generasi diulang sampai BOS muncul kembali
- Temperature mengatur keragaman sampling
- Semakin rendah, hasil makin deterministik (rata-rata); semakin tinggi, makin kreatif tetapi kurang stabil
- Suhu yang sesuai untuk menghasilkan nama adalah sekitar 0.5
- Contoh output: “karai”
Efisiensi dan Skalabilitas
- MicroGPT adalah implementasi lengkap yang menyederhanakan algoritme inti GPT
- Perbedaannya dengan ChatGPT hanya pada skala
- Bukan 32.000 nama, melainkan triliunan token; bukan 4.192 parameter, melainkan ratusan miliar parameter
- Bukan operasi skalar berbasis CPU, melainkan operasi tensor berbasis GPU
- Loop dasarnya tetap sama: tokenisasi → embedding → attention → prediksi → loss → backpropagation → update
Kesimpulan
- MicroGPT adalah model edukasi yang memungkinkan prinsip kerja internal GPT dipelajari secara intuitif
- Dengan menyederhanakan struktur rumit LLM skala besar, model ini memungkinkan pengguna mengalami langsung mekanisme inti language model
1 komentar
Komentar Hacker News
Disebutkan bahwa saat pelatihan selesai model menghasilkan nama seperti "kamon", "karai", "anna", dan "anton", tetapi sebenarnya nama-nama itu juga ada di dataset
Sepertinya lebih baik memakai nama lain — tautan dataset
Dibilang untuk pemula, tetapi saya tidak yakin berapa banyak pemula yang bisa memahami penjelasan matematis seperti ini
Misalnya, bagian yang menjelaskan rumus cross-entropy loss terasa terlalu rumit
Akan saya pikirkan lagi
Bagian yang tidak saya pahami adalah bagaimana model sesederhana ini bisa menjadi mampu men-debug masalah kode arbitrer
Saya penasaran bagaimana inferensi statistik bisa berubah menjadi ‘kemampuan bernalar’
Setelah memakai Claude Code setiap hari, sekarang rasanya itu memang benar terjadi
Intinya adalah, “jika selalu bisa memprediksi kata berikutnya yang benar, pada akhirnya kita bisa menjawab semua pertanyaan dengan benar”
Karena itu, belakangan ini perkembangannya mengarah ke mencari ‘jawaban benar’ dengan pendekatan berbasis reinforcement learning seperti RLHF atau RLVR
Secara matematis, ini lebih dekat ke masalah optimisasi berbasis kalkulus
Bukan sekadar mempelajari statistik teks, tetapi mencari solusi kompleks untuk memprediksi token berikutnya
Ada unsur statistik dalam jaringan saraf, tetapi seperti otak manusia, ada lebih dari itu
Saya membaca seluruh tulisan itu; ada bagian yang berguna, tetapi rasanya seperti ‘gambar sisa burung hantu’
Rasanya bagian penghubung antar konsep hilang, tetapi susunan interaktifnya bagus
Akan lebih baik kalau dibahas lebih mendalam
Saya penasaran apakah belakangan ini sedang tren sengaja memasukkan kesalahan ejaan atau tata bahasa untuk menunjukkan bahwa tulisan itu bukan ditulis LLM
Di blog Karpathy dan di tulisan ini juga ada cukup banyak salah ketik seperti itu
Dia hanya lama menopang proyek Full Self Driving milik Elon, dan juga tidak lama berada di OpenAI
Belakangan ini dia tampaknya hampir hanya fokus pada code golf atau membuat istilah baru
Tulisan aslinya ada di blog Karpathy — tautan tulisan microGPT
Ada yang bilang ini terlalu dasar, ada juga yang bilang terlalu dalam, tetapi
bagi orang seperti saya yang belum begitu paham cara kerja model, ini adalah ikhtisar yang bagus
Saya belum sepenuhnya paham, tetapi ini tampak seperti titik awal yang baik untuk mulai belajar
Ini salah satu tutorial paling membantu yang pernah saya lihat sejauh ini
Bahkan saya yang sebelumnya tidak ngoding pun jadi menulis kode berkat AI
Penjelasannya sederhana dan jelas, jadi sangat membantu saat memikirkan apa yang harus dimasukkan ke AI
Sepertinya T-Mobile memblokir halaman blog ini
tautan halaman peringatan blokir
Setelah membaca tulisannya saya paham kenapa nama bisa keluar sebagai output, tetapi saya penasaran kenapa harus memakai generasi nama sebagai contoh
Data lain apa pun juga bisa dipakai