1 poin oleh GN⁺ 2026-03-03 | 1 komentar | Bagikan ke WhatsApp
  • 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
    1. Embedding + embedding posisi
    2. Normalisasi RMSNorm
    3. Multi-head attention
    4. Koneksi residual
    5. MLP (ekspansi ke 64 dimensi → ReLU → reduksi ke 16 dimensi)
    6. 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

 
GN⁺ 2026-03-03
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

    • Benar, seluruh tulisannya terasa seperti ditulis AI
    • Terima kasih, akan saya perbaiki
  • 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

    • Saya juga bukan ahli, tetapi karena punya sedikit pengetahuan, saya jadi cenderung memakai ungkapan yang mungkin sulit bagi pemula
      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

    • Saya rasa pertanyaan ini adalah misteri terbesar dalam riset ML
      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
    • Ini bukan sekadar inferensi statistik di tingkat kata, melainkan proses menalar struktur makna yang kompleks secara hierarkis yang terjadi berulang kali
    • DNN bukan inferensi statistik dalam pengertian umum
      Secara matematis, ini lebih dekat ke masalah optimisasi berbasis kalkulus
      Bukan sekadar mempelajari statistik teks, tetapi mencari solusi kompleks untuk memprediksi token berikutnya
    • Ungkapan “inferensi statistik” adalah penyederhanaan yang berlebihan
      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

    • Awalnya bagus, tetapi segera muncul penjelasan seperti “MLP adalah jaringan feedforward dua lapis yang diproyeksikan ke 64 dimensi, diberi ReLU, lalu diproyeksikan kembali ke 16 dimensi”, jadi tingkat kesulitannya tiba-tiba melonjak
      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

    • Cara counter-signaling seperti ini sepertinya akan makin umum ke depannya
    • Sepertinya saya baru sadar soal itu sekarang
    • Jujur saja, Karpathy bukan sosok yang sehebat 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

    • Nama hanyalah masalah arbitrer untuk mendemonstrasikan model
      Data lain apa pun juga bisa dipakai