3 poin oleh GN⁺ 2026-03-02 | 1 komentar | Bagikan ke WhatsApp
  • Struktur model bahasa minimal yang mengimplementasikan seluruh proses pelatihan dan inferensi model GPT dalam satu file Python murni sepanjang 200 baris
  • Mencakup dataset, tokenizer, mesin autodiff, jaringan saraf mirip GPT-2, optimizer Adam, serta loop pelatihan dan inferensi
  • Melatih dataset nama untuk menghasilkan nama baru, sekaligus memperlihatkan prinsip inti GPT melalui autograd dan struktur Transformer buatan sendiri
  • Berbeda dari LLM skala besar, ia berjalan dengan Python murni tanpa dependensi, menyisakan hanya esensi algoritmisnya
  • Dengan memahami microgpt, kita dapat memahami struktur algoritme dasar model besar seperti ChatGPT

Gambaran umum microgpt

  • microgpt adalah implementasi GPT minimal yang ditulis dalam 200 baris kode Python, tanpa dependensi library eksternal
    • Mencakup dataset, tokenizer, autodiff, struktur mirip GPT-2, optimizer Adam, serta loop pelatihan dan inferensi
  • Proyek artistik yang dibuat Karpathy untuk menyederhanakan LLM ke tingkat esensinya, sebagai kelanjutan dari micrograd, makemore, dan nanogpt
  • Seluruh kode tersedia di GitHub Gist, halaman web, dan Google Colab

Dataset

  • Menggunakan file teks yang berisi sekitar 32.000 nama, satu nama per baris
  • Setiap nama dianggap sebagai satu dokumen, dan model mempelajari pola ini untuk menghasilkan nama baru
  • Contoh hasil generasi setelah pelatihan: kamon, ann, karai, jaire, vialan dan lain-lain

Tokenizer

  • Tokenizer berbasis karakter sederhana yang memberikan ID integer pada setiap karakter unik
  • Total 27 token, mencakup alfabet a–z dan token BOS (beginning of sequence)
  • Setiap dokumen dibungkus dalam bentuk [BOS, e, m, m, a, BOS] saat dilatih

Autodiff

  • Kelas Value melacak nilai skalar dan gradien, sekaligus membentuk grafik komputasi
  • Menyimpan gradien lokal (local gradient) untuk operasi dasar seperti penjumlahan, perkalian, perpangkatan, log, eksponensial, dan ReLU
  • Metode backward() melakukan backpropagation dengan menerapkan chain rule
  • Algoritme yang sama seperti .backward() di PyTorch diimplementasikan langsung pada level skalar

Inisialisasi parameter

  • Model memiliki sekitar 4.192 parameter
  • Terdiri dari tabel embedding, bobot attention, bobot MLP, proyeksi output, dan lain-lain
  • Setiap parameter diinisialisasi dengan bilangan acak dari distribusi Gaussian

Arsitektur model

  • Bentuk yang menyederhanakan struktur GPT-2, menggunakan RMSNorm, ReLU, dan residual connection
  • Komponen utama:
    • Tahap embedding: menjumlahkan embedding token dan posisi
    • Multi-head attention: menghitung vektor Q, K, V lalu memanfaatkan informasi token sebelumnya melalui KV cache
    • Blok MLP: jaringan feedforward 2 lapis untuk komputasi lokal
    • Tahap output: menghasilkan logit untuk ukuran kosakata 27
  • KV cache tetap aktif selama pelatihan, sehingga backpropagation juga mengalir melalui cache

Loop pelatihan

  • Pada setiap step, sebuah dokumen dipilih lalu ditokenisasi menjadi [BOS, ... , BOS]
  • Model memprediksi probabilitas token berikutnya dan menghitung loss cross-entropy
  • Setelah gradien dihitung dengan loss.backward(), parameter diperbarui memakai optimizer Adam
  • Learning rate menggunakan skema linear decay
  • Selama 1.000 step, loss turun dari sekitar 3.3 → 2.37

Inferensi

  • Setelah pelatihan selesai, model memulai dari token BOS untuk menghasilkan nama baru
  • Pada tiap langkah, token berikutnya di-sample berdasarkan probabilitas softmax
  • Nilai temperature mengatur kreativitas (lebih rendah lebih konservatif, lebih tinggi lebih beragam)
  • Contoh output: kamon, ann, karai, jaire, vialan, karia, yeran, anna dan lain-lain

Cara menjalankan

  • Bisa dijalankan hanya dengan Python (python train.py)
  • Pelatihan selesai dalam sekitar 1 menit, dengan nilai loss dicetak di setiap tahap
  • Bisa dijalankan dengan cara yang sama di notebook Colab

Tahap perkembangan kode

  • Berkembang bertahap dari train0.py hingga train5.py
    • Bigram → MLP → Autograd → Attention → Multi-head → Adam
  • Setiap tahap dapat dilihat di revisi build_microgpt.py pada Gist

Perbedaan dengan LLM nyata

  • Data: microgpt memakai 32K nama, sedangkan LLM nyata memakai triliunan token
  • Tokenizer: level karakter vs. subword berbasis BPE
  • Autodiff: Python berbasis skalar vs. operasi tensor GPU
  • Arsitektur: 4K parameter vs. ratusan miliar parameter
  • Pelatihan: pengulangan satu dokumen vs. pelatihan batch besar dan mixed precision
  • Optimisasi: Adam sederhana vs. hyperparameter dan scheduling yang disetel sangat presisi
  • Pascapemrosesan: berkembang menjadi bentuk ChatGPT melalui tahap SFT dan RL
  • Infrastruktur inferensi: distribusi GPU, pengelolaan KV cache, kuantisasi, speculative decoding, dan lain-lain

Ringkasan FAQ

  • Model adalah fungsi matematis yang mengubah token masukan menjadi probabilitas token berikutnya
  • Tidak ada “pemahaman”; prediksi dilakukan melalui pembelajaran pola statistik
  • Mengimplementasikan loop prediksi token yang sama seperti ChatGPT dalam bentuk yang diperkecil
  • “Halusinasi (hallucination)” adalah hasil alami dari sampling probabilistik
  • Meski lambat, model ini mereproduksi algoritme inti LLM secara utuh
  • Untuk hasil lebih baik, step pelatihan, ukuran model, dan dataset dapat disesuaikan
  • Dengan mengganti dataset, model dapat mempelajari berbagai pola seperti nama kota, nama Pokémon, puisi, dan lain-lain

microgpt adalah model edukatif dan eksperimental yang mengimplementasikan semua algoritme inti LLM dalam bentuk paling minimal, sehingga menjadi contoh yang sepenuhnya memperlihatkan prinsip kerja model bahasa skala besar.

1 komentar

 
GN⁺ 2026-03-02
Pendapat Hacker News
  • Seseorang memodifikasi microgpt untuk membuat GPT kecil yang menghasilkan nama Korea
    Ada juga halaman web yang memvisualisasikan seluruh proses — dari tokenisasi hingga inferensi, kamu bisa menjelajahi seluruh pipeline
    Bisa langsung dicoba di English GPT lab

    • Hal seperti ini bisa dengan mudah dibuat bahkan dengan model yang jauh lebih ringan
      Cukup lihat tutorial PyTorch char_rnn
    • Saya tidak berhubungan dengan pembuat situsnya, tapi ini situs yang sangat berguna untuk mempelajari struktur internal LLM
      Penjelasannya bagus, mencakup tokenisasi, embedding, attention, loss·gradient, training, inferensi, dan perbandingan dengan Real GPT
    • Istilah “memodifikasi” sebenarnya kurang lebih hanya berarti mengganti daftar nama Inggris menjadi nama Korea
      Situsnya sendiri lebih dekat ke visualisasi buatan AI yang didasarkan pada posting blog aslinya
  • Saya melakukan porting microgpt ke C++
    Tautan kode
    Jumlah baris kode 2x lebih banyak, tapi kecepatannya 10x lebih cepat
    Bagian tersulit adalah merepresentasikan kelas Value di C++, dan akhirnya saya memakai shared_ptr

    • Saya mengimplementasikan backpropagation eksplisit tanpa autodiff, dan hasilnya 8x lebih cepat daripada Python
  • Saya penasaran apa sebenarnya yang dimaksud dengan “halusinasi (hallucination)
    Model hanya melakukan sampling token dari distribusi probabilitas, tidak punya konsep kebenaran
    Jadi muncul pertanyaan apakah LLM bisa memiliki skor kepercayaan terhadap jawabannya sendiri

    • Model bisa melaporkan confidence dari distribusi outputnya, tetapi itu tidak berarti nilainya benar-benar terkalibrasi dengan akurat
      Model pra-pelatihan memang terkalibrasi, tetapi setelah mengikuti instruksi (post-training) hal itu rusak
      Riset terkait: makalah1, makalah2
    • Skor kepercayaan tidak punya arti jika kita tidak tahu cara data latihnya di-sampling
      Seperti interval kepercayaan dalam statistik tanpa mengetahui populasinya, probabilitas LLM juga tidak punya hubungan langsung dengan dunia nyata
      Pada akhirnya LLM itu seperti orang yang hanya membaca buku tanpa pengalaman dunia nyata
    • Secara nyata, LLM memang mengembalikan distribusi probabilitas, lalu melakukan sampling dari situ untuk menghasilkan token
      Tapi probabilitas ini bukan “peluang bahwa ini benar”, melainkan “peluang saya mengeluarkan token ini dalam situasi ini”
    • Ia bisa menghasilkan sesuatu, tetapi karena tidak mengetahui ‘distribusi yang sebenarnya’, tingkat kepercayaannya jadi tidak bermakna
    • Kalimat seperti “saya tidak begitu yakin, tapi mungkin begini” memang tidak terlihat di output, tetapi ada dalam proses penalaran internal
  • Saya mengonversi microgpt ke Rust untuk belajar
    microgpt-rs
    Bagian paling rumit adalah merepresentasikan struktur graph autograd sebagai tipe Rust
    Sekarang sedang dimodifikasi agar bisa berjalan di browser lewat WebAssembly, dan nanti akan saya tulis di blog
    Kode Karpathy benar-benar punya desain yang puitis dan ringkas

    • Menyimpan nilai diferensial di struktur bobot memang terasa agak hacky, tapi kebanyakan orang memang melakukannya begitu
    • Saya juga ingin mencoba mengimplementasikannya sekali dalam bahasa lain
  • Kodenya indah dan mudah dibaca, tetapi akan lebih bagus kalau ada penjelasan dengan komentar baris per baris seperti backbone.js
    Lihat dokumentasi Backbone

    • Sumber berkomentar Backbone dibuat dengan Docco
      Proyek Docco juga alat keren dari pembuat yang sama
    • Ini benar-benar contoh literate programming yang indah
      Ada juga versi kode HTML
    • Ada juga blog walkthrough dari Karpathy
      blog microgpt
    • Ada juga saran untuk meminta LLM berperforma tinggi menjelaskannya
  • Berkat video dan kode Karpathy, saya merasa untuk pertama kalinya benar-benar paham gradient descent, backpropagation, dan chain rule
    Saat hanya melihat matematikanya saya bingung, tapi ketika dilihat bersama kodenya semuanya jadi jelas
    Secara pribadi rasanya seperti pencapaian besar dalam hidup

    • Saya juga ingin mencoba menjelaskannya secara intuitif
      Seperti kata Karpathy, kalau benar-benar ingin paham, penting untuk mencoba mengajarkannya kepada orang lain
  • Saya heran proyek ini baru sekarang muncul di HN
    Saya membuat versi JS 35 baris dan versi Python bernama PicoGPT,
    dan bisa langsung dijalankan di web
    Bahkan ini adalah LLM super kecil yang bisa dijalankan lewat kode QR

    • Saya juga heran. Mengejutkan proyek sekeren ini baru masuk halaman depan HN setelah 2 minggu
      Thread terkait: tautan1, tautan2
    • Sebenarnya ini memang sudah pernah muncul sebelumnya — posting sebelumnya
  • Saya membuat kode microgpt menjadi posting blog visualisasi
    Tautan blog
    Ditampilkan secara interaktif sambil mengikuti alur kode

    • Dikatakan bahwa setelah training selesai, model menghasilkan nama seperti “kamon”, “karai”, “anna”, dan “anton”,
      tetapi sebenarnya keempat nama itu semua sudah ada di dalam dataset
    • Tulisan ini layak diposting sebagai artikel tersendiri di HN
    • Biasanya saya cukup kritis pada blog yang dibantu ditulis LLM, tapi ini contoh yang benar-benar luar biasa
    • Bahkan bagi saya yang masih pemula di ML, ini sama membantunya dengan versi asli Karpathy
    • Benar-benar pekerjaan yang keren
  • Akhir-akhir ini tren ‘micro’ di AI terasa menarik
    Dibanding sekadar terus memperbesar model, efisiensinya justru makin besar pada model kecil yang fokus
    Saya sendiri memakai Gemini Flash untuk analisis domain, dan rasio kecepatan·biayanya jauh lebih baik
    Hanya dari perbedaan latency saja, jenis produk yang bisa dibuat sudah berubah

    • Tapi ini adalah model micro yang tujuannya lebih untuk edukasi daripada aplikasi nyata
  • Untuk disebut microgpt rasanya ini bahkan lebih kecil daripada nanogpt, jadi menurut saya picogpt lebih cocok
    Meski begitu, ini tetap proyek yang keren