46 poin oleh GN⁺ 2026-04-07 | 1 komentar | Bagikan ke WhatsApp
  • Model bahasa superkecil dengan sekitar 9 juta parameter, dirancang agar bisa dilatih dalam kurang dari 5 menit hanya dengan satu notebook Colab
  • Seluruh proses dari pembuatan data, tokenizer, pelatihan model, hingga inferensi dilakukan dalam satu lingkungan, dengan dukungan browser, Colab, dan lokal
  • Dirancang sebagai karakter “Guppy” yang membayangkan lingkungan bawah air, berbicara dengan kalimat pendek dan sederhana dengan fokus pada transparansi untuk pembelajaran
  • Menggunakan arsitektur Transformer dasar untuk memperlihatkan struktur inti model bahasa dengan jelas tanpa teknik yang rumit
  • Proyek open source yang memungkinkan siapa pun bereksperimen dan belajar dengan dataset publik HuggingFace dan lisensi MIT

Gambaran umum GuppyLM

  • GuppyLM adalah model bahasa superkecil dengan sekitar 9 juta parameter, yang bercakap-cakap seperti karakter ikan “Guppy”
  • Dirancang dengan tujuan menjadi LLM yang bisa langsung dilatih sendiri dalam kurang dari 5 menit hanya dengan satu notebook Colab, sehingga seluruh proses dari pembuatan data, tokenizer, struktur model, loop pelatihan, hingga inferensi dapat dijalankan dalam satu lingkungan
  • Dibuat agar pengguna dapat merasakan langsung cara kerja internal model bahasa tanpa perlu klaster GPU besar atau pengetahuan khusus
  • Meski tidak menghasilkan teks panjang seperti model besar, ini adalah model edukasi yang secara transparan memperlihatkan seluruh alur input, pembelajaran bobot, dan pembuatan output
  • Dapat dijalankan di browser, Colab, dan lingkungan lokal, dan dataset serta modelnya dibuka melalui HuggingFace

Karakteristik model

  • GuppyLM adalah karakter yang berpikir terutama tentang lingkungan bawah air seperti air, suhu, cahaya, getaran, dan makanan
  • Menggunakan kalimat pendek dengan huruf kecil, dan tidak memahami konsep abstrak manusia seperti uang atau politik
  • Memiliki kepribadian yang ramah, penuh rasa ingin tahu, dan sederhana
  • Data latih terdiri dari 60 topik dan 60 ribu sampel percakapan sintetis, dan dapat dilatih dalam sekitar 5 menit pada satu GPU
  • Karena ukuran modelnya kecil, inferensi berbasis WebAssembly di dalam browser juga dimungkinkan

Arsitektur

  • Jumlah parameter: 8.7M
  • Jumlah layer: 6
  • Dimensi hidden: 384
  • Attention head: 6
  • Dimensi FFN: 768 (ReLU)
  • Ukuran kosakata: 4,096 (BPE)
  • Panjang sekuens maksimum: 128 token
  • Normalisasi: LayerNorm
  • Embedding posisi: terlatih
  • LM head: berbagi bobot dengan embedding
  • Struktur Transformer dasar tanpa memakai teknik rumit seperti GQA, RoPE, SwiGLU, early exit

Kepribadian dan topik percakapan

  • Guppy berbicara dengan kalimat pendek, ekspresi huruf kecil, dan cara berpikir berbasis indera
  • Merespons berbagai topik seperti makanan, air, cahaya, akuarium, gelembung, pantulan, permukaan air, dan dunia luar
  • 60 topik utama mencakup sapaan, emosi, suhu, makanan, cahaya, air, akuarium, kebisingan, kesepian, mimpi, musim, lelucon, cinta, kesehatan, TV dan lain-lain
Iklan

Cara menjalankan dan menggunakan

  • Menjalankan di browser

    • Menjalankan inferensi lokal berbasis WebAssembly
    • Mengunduh model ONNX terkuantisasi berukuran sekitar 10MB dan dapat dijalankan tanpa server atau API key
  • Chat di Colab

    • Mengunduh model pra-latih dari HuggingFace dan menggunakannya melalui antarmuka interaktif
    • Jalankan semua sel dan bisa langsung mulai mengobrol
  • Pelatihan di Colab

    • Atur runtime ke T4 GPU lalu jalankan semua sel
    • Mengotomatisasi unduhan dataset, pelatihan tokenizer, pelatihan model, hingga pengujian
    • Model hasilnya dapat diunggah ke HuggingFace atau disimpan secara lokal
  • Chat di lingkungan lokal

    • Instal dengan pip install torch tokenizers lalu jalankan perintah python -m guppylm chat
    • Jika percakapan terlalu panjang, kualitas akan menurun karena batas 128 token
    • Juga mendukung mode yang menerima satu prompt, memberikan jawaban, lalu langsung keluar
Iklan

Dataset

  • Menggunakan dataset HuggingFace arman-bd/guppylm-60k-generic
  • Jumlah sampel: 60,000 (latih 57K / uji 3K)
  • Format: {"input": "...", "output": "...", "category": "..."}
  • Jumlah kategori: 60
  • Metode pembuatan: data sintetis berbasis template
    • Sekitar 60 template, 30 objek akuarium, 17 jenis makanan, dan 25 kombinasi aktivitas untuk menghasilkan sekitar 16.000 output unik

Struktur proyek

  • guppylm/

    • config.py: model dan hyperparameter pelatihan
    • model.py: model Transformer dasar
    • dataset.py: pemuatan data dan pemrosesan batch
    • train.py: loop pelatihan (cosine LR, AMP)
    • generate_data.py: pembuatan data percakapan 60 topik
    • eval_cases.py: kasus uji
    • prepare_data.py: persiapan data dan pelatihan tokenizer
    • inference.py: antarmuka chat
  • tools/

    • make_colab.py: pembuatan notebook Colab
    • export_onnx.py: ekspor ke model ONNX (kuantisasi uint8)
    • export_dataset.py: unggah dataset ke HuggingFace
    • dataset_card.md: deskripsi dataset untuk HuggingFace
    Iklan
  • docs/

    • index.html: demo browser (ONNX + WASM)
    • download.sh: unduh model dan tokenizer
    • model.onnx: model terkuantisasi (~10MB)
    • tokenizer.json: tokenizer BPE
    • guppy.png: gambar logo

Keputusan desain

  • Menghapus system prompt:Model 9M sulit mengikuti instruksi bersyarat, sehingga alih-alih memakai prompt yang sama di semua sampel, kepribadian langsung ditanamkan ke dalam bobot

    • Dengan ini, saat inferensi dapat menghemat sekitar 60 token
    • Percakapan satu giliran: karena batas 128 token, kualitas menurun setelah 3–4 giliran
    • Ini cocok dengan konsep ‘ingatan ikan mas’ milik Guppy, tetapi satu giliran adalah yang paling stabil
    • Mempertahankan Transformer dasar: GQA, SwiGLU, RoPE, early exit tidak memberi peningkatan kualitas pada skala 9M dan hanya menambah kompleksitas
    • Kombinasi attention standar + ReLU FFN + LayerNorm sudah memberikan performa yang memadai
    • Menggunakan data sintetis: untuk menjaga konsistensi karakter, dipilih metode pembuatan data berbasis template

Lisensi

  • Lisensi MIT

1 komentar

 
GN⁺ 2026-04-07
Komentar Hacker News
  • Penasaran apakah ada dokumentasi untuk proyek ini
    Kodenya sendiri terlihat seperti salah satu implementasi paling sederhana dari (Not So) Large Language Model, tetapi tidak mudah dipahami bagi developer yang belum akrab dengan multi-head attention, ReLU FFN, LayerNorm, positional embedding, dan sebagainya
    Proyek ini punya sifat edukatif yang mirip dengan Minix. Seperti Minix digunakan sebagai alat untuk mempelajari desain sistem operasi, membiarkan mahasiswa menambahkan fitur ke GuppyLM untuk mempelajari desain LLM juga merupakan pendekatan yang baik

    • Mungkin juga bagus jika kode tersebut dimasukkan ke LLM lalu diajak berdialog tentangnya
  • Penasaran apa perbedaan proyek ini dengan microgpt atau minGPT milik Andrej Karpathy

    • Saya belum membandingkannya, tetapi terima kasih atas sarannya. Saya berencana melihat kedua proyek itu
    • Perbandingan itu bukan hal yang penting. Ini bukan produk, melainkan proyek eksperimen yang keren
  • Ada contoh visualisasi 3D dari layer LLM kecil di bbycroft.net/llm. Itu sangat membantu untuk memahami cara kerja internalnya
    Diskusi terkait juga bisa dilihat di sini

    • Cukup keren! Saya akan melihatnya lebih dalam
    • Tidak berhubungan langsung, tetapi proyeknya benar-benar keren. Sepertinya akan bagus jika ditambahkan sedikit lagi UI
    • Visualisasinya menarik
  • Ini benar-benar sangat bagus untuk pengantar LLM
    Dulu saya pernah membuat model saya sendiri berbasis Paradise Lost karya Milton
    Referensi: wvrk.org/works/milton

  • Ini mungkin terjadi karena data latihnya seluruhnya huruf kecil

    You> hello
    Guppy> hi. did you bring micro pellets.
    You> HELLO
    Guppy> i don't know what it means but it's mine.
    
    • Temuan yang bagus! Sepertinya token huruf besar memang sama sekali tidak ada di tokenizer
      Meski begitu, respons karakternya masih tetap terasa hidup
  • Jadi penasaran apakah mungkin membuat LLM yang dilatih hanya dengan Toki Pona
    Lihat wiki Toki Pona

    • Tapi data latihnya tidak cukup. Inti dari LLM adalah data dan sumber daya komputasi dalam jumlah besar
  • Saya sedang mengerjakan proyek di mana beberapa agen LLM berbagi satu dunia virtual dan berinteraksi secara otonom
    Hal yang mengejutkan adalah bahwa keberadaan ‘dunia’ itu sangat memengaruhi perilaku model
    Bahkan dengan model yang sama dan prompt yang sama, hasilnya bisa sepenuhnya berbeda jika elemen lingkungan seperti keterbatasan sumber daya, agen lain, atau memori persisten berubah
    Kita terlalu fokus hanya pada optimasi model itu sendiri, dan terlalu sedikit memikirkan lingkungan operasinya

  • Rasanya akhirnya muncul LLM yang jujur tentang dunia
    Jawaban “makna hidup adalah makanan” terasa tidak sekeliru jawaban yang diberikan model-model yang 10.000 kali lebih besar

    • Bahkan mungkin itu interpretasi yang lebih baik daripada jawaban terkenal itu
    • Tujuan kehidupan adalah reproduksi. Makanan hanyalah sarananya, dan semua sumber daya serta sifat ada untuk membantu perkawinan
  • Idenya bagus, tetapi contoh-contohnya tampak seperti disalin mentah-mentah dari data latih
    Penasaran bagaimana ia menangani pertanyaan yang belum dikenal

    • Hampir tidak bisa. Dengan 9M parameter, kapasitasnya sangat terbatas
      Tujuan proyek ini adalah mendemonstrasikan prinsip kerja LLM
  • Kerja yang keren. Terima kasih sudah membagikannya
    Tapi sekarang saya penasaran apakah LLM benar-benar terasa ‘sudah tidak lagi misterius’
    Tetap saja mengejutkan bahwa hasil seperti ini bisa muncul hanya dari statistik sederhana dan komputasi dalam jumlah besar