b belajar.myudak

Tiny GPT di browser

Semua soal di jalur tiny GPT berujung di sini. Kode di bawah adalah GPT decoder-only lengkap, sekitar 60 ribu parameter, ditulis dengan minitorch. Ia berjalan di Python yang ada di dalam browsermu, tanpa server. Tekan Latih model, lihat loss turun, lalu baca teks yang ditulisnya.

  1. 1 Tokenizer karakter teks ↔ id
  2. 2 Split train/val tanpa kebocoran
  3. 3 Jendela (x, y) y = x digeser satu
  4. 4 Embedding token + posisi (B, T) → (B, T, d)
  5. 5 Causal multi-head attention token berkomunikasi
  6. 6 Blok pre-LN + residual diulang n_layer kali
  7. 7 Cross-entropy dari logits loss awal ≈ ln V
  8. 8 Training loop zero_grad → backward → step

Yang terjadi saat kamu menekan Latih

Pertama kali, browser mengunduh Python (Pyodide) dan NumPy, sekitar 9 MB, lalu menyimpannya di cache. Training berjalan di Web Worker, jadi halaman tetap responsif. Setiap langkah mengambil 16 potongan acak sepanjang 32 karakter, menjalankan forward, menghitung cross-entropy, lalu backward() dan AdamW memperbarui semua bobot. 500 langkah butuh sekitar satu menit, tergantung perangkatmu.

Cara membaca kurva

  • Awal: loss dimulai dekat garis jingga, ln V. Model menebak secara acak dari V karakter.
  • Turun cepat: model belajar frekuensi huruf, lalu pasangan huruf yang sering muncul, lalu kata pendek.
  • Garis merah naik lagi: setelah sekitar 400 langkah, loss train terus turun tapi loss validasi naik. Itu overfitting: dengan korpus beberapa ribu karakter, model mulai menghafal kalimat, bukan pola. Coba hentikan lebih awal, kecilkan d, atau tempel korpus yang jauh lebih panjang.

Hal yang bisa dicoba

  • Ganti temperature di generate (0.5 lebih "aman", 1.2 lebih liar).
  • Set n_layer = 1 atau n_head = 1 dan bandingkan loss validasinya.
  • Hapus masked_fill di attention. Loss train akan anjlok ke hampir nol, tapi sampelnya kacau. Kenapa? (Petunjuk: soal causal mask.)
  • Buka Korpus dan tempel teks sendiri, misalnya catatan kuliah, lirik buatanmu, atau kode Python.

Kode yang kamu ubah tersimpan otomatis di browser ini. Reset kode mengembalikannya ke versi awal. Struktur model ini sama dengan GPT-2; yang berbeda hanya ukurannya (GPT-2 kecil: 124 juta parameter, konteks 1024 token).