- Z80-μLM adalah model AI percakapan ultra-kecil yang berjalan di atas prosesor Z80 keluaran 1976 (4MHz, RAM 64KB)
- Dengan menerapkan Quantization-Aware Training (QAT), model ini melakukan generasi teks tingkat karakter hanya dengan bobot 2-bit dan operasi bilangan bulat 16-bit
- Di dalam file eksekusi .COM berukuran sekitar 40KB, sudah mencakup mesin inferensi, bobot, dan UI chat
- Dengan trigram hash encoding, input diubah menjadi 128 bucket sehingga dapat menghasilkan respons yang tahan terhadap typo maupun perubahan urutan kata
- Model ini tidak mampu memahami konteks yang kompleks, tetapi menarik sebagai model AI eksperimental yang dapat berjalan bahkan di lingkungan 8-bit yang terbatas
Ikhtisar proyek
- Z80-μLM adalah model bahasa ultra-kecil yang dapat dijalankan di lingkungan retrocomputing
- Berjalan pada CPU Z80 dengan RAM 64KB, dan menghasilkan respons percakapan tingkat karakter
- Ukuran total termasuk model, kode inferensi, dan UI sekitar 40KB
- Pertanyaan inti proyek ini adalah, “seberapa kecil sebuah model bisa dibuat sambil tetap mempertahankan kepribadian,” dan model ini juga dapat didistribusikan secara self-hosted
- Belum mencapai tingkat Turing Test, tetapi dirancang untuk memberi kesenangan kepada pengguna melalui percakapan sederhana
Termasuk dua contoh
-
tinychat
- Chatbot sederhana yang dilatih dengan data Q&A sehari-hari
- Memberikan jawaban singkat dan berkarakter untuk salam, perkenalan diri, dan percakapan umum
- Contoh: “hello” → “HI”, “are you a robot” → “YES”, “do you dream” → “MAYBE”
-
guess
- Model berbentuk permainan 20 Questions
- Mengetahui topik rahasia dan menjawab dengan YES/NO/MAYBE
- Saat pengguna menebak jawaban yang benar, model menampilkan “WIN”
- Data pelatihan dapat dibuat menggunakan Ollama atau Claude API, dan sudah termasuk alat penyeimbang distribusi kelas
Fitur utama
- Trigram hash encoding: meng-hash teks input ke 128 bucket, toleran terhadap typo dan tidak bergantung pada urutan kata
- Kuantisasi bobot 2-bit: setiap bobot bernilai {-2, -1, 0, +1}, dengan 4 bobot disimpan per byte
- Inferensi bilangan bulat 16-bit: menggunakan operasi aritmetika 16-bit milik Z80
- File .COM ~40KB: cocok untuk Transient Program Area (TPA) di CP/M
- Generasi autoregresif: menghasilkan output per karakter
- Tanpa operasi floating point, menggunakan penskalaan fixed-point
- Mendukung mode interaktif: dijalankan dengan perintah
CHAT
Cara interaksi
- Model ini tidak “memahami” input, tetapi merespons berdasarkan bentuk (shape) dari input
- Kalimat input diubah menjadi 128 bucket trigram untuk mempertahankan kemiripan semantik
- Contoh: “hello there” dan “there hello” diproses dengan struktur bucket yang sama
- Sulit membedakan kalimat panjang atau kalimat yang bergantung pada urutan
-
Makna respons singkat
- Bahkan respons 1–2 kata dapat mengekspresikan nuansa yang tak terduga
OK: penerimaan netral
WHY?: menolak pertanyaan
R U?: keraguan akan keberadaan
MAYBE: ketidakpastian
AM I?: pertanyaan reflektif
- Respons singkat ini mendorong pengguna untuk menyimpulkan konteks sendiri
Kekuatan dan keterbatasan
- Kekuatan
- Respons tipe klasifikasi yang konsisten untuk input singkat
- Tahan terhadap typo, penyusunan ulang, dan perubahan urutan kata
- Ekspresi kepribadian melalui pilihan kosakata
- Dapat berjalan bahkan pada perangkat keras 8-bit yang terbatas
- Keterbatasan
- Tidak dapat menghasilkan kalimat baru
- Tidak dapat melacak konteks multi-turn
- Tidak dapat memahami tata bahasa
- Belum mencapai tingkat kecerdasan umum
Arsitektur
- Lapisan input: 128 bucket kueri + 128 bucket konteks
- Lapisan tersembunyi: contoh konfigurasi 256 → 192 → 128
- Lapisan output: 1 neuron untuk setiap karakter dalam charset
- Fungsi aktivasi: ReLU
-
Batasan kuantisasi
- Z80 adalah CPU 8-bit, tetapi melakukan akumulasi dan aktivasi menggunakan pasangan register 16-bit (HL, DE, BC)
- Bobot disimpan 4 per byte (satuan 2-bit)
- Akumulator 16-bit digunakan untuk mencegah overflow saat menjumlahkan 256 input
- Karena bobot 2-bit, daya representasinya terbatas, dan tanpa QAT hasil pelatihan dapat menjadi tidak stabil
-
Loop internal Z80
- Inti inferensi adalah loop multiply-accumulate (MAC)
- Bobot di-unpack, lalu ditambahkan atau dikurangkan ke akumulator (ACC) sesuai nilai -2~-1~0~+1
- Setelah perhitungan tiap lapisan, dilakukan right shift 2-bit untuk mencegah overflow
- Keseluruhan proses inferensi mengulang sekitar 100 ribu operasi per karakter
Lisensi
- Pilihan MIT atau Apache-2.0
2 komentar
Komentar Hacker News
Tangkapan layar
Aku tidak menyangka ada yang akan memposting sesuatu yang pas sekali seperti ini. Kebetulan yang benar-benar aneh tapi luar biasa
Aku membuat emulator dan IDE CP/M berbasis browser: lockboot.github.io/desktop
Awalnya aku mau memposting itu, tapi malah terjebak rabbit hole saat mencari ‘demo keren’
Aku pernah menulis MLP dalam Fortran IV untuk mesin kartu punch era 60-an (proyek Xortran)
Walaupun tidak ada mekanisme perhatian dan konteksnya terbatas pada trigram dari kalimat terakhir, interaksinya tetap cukup bagus
Kalau hal seperti ini sudah mungkin di perangkat keras tahun 60-an, SF dan sains pada masa itu pasti akan benar-benar berbeda
Kalau mau agak terdengar seperti teori konspirasi, salah satu alasan perusahaan AI memborong RAM dalam jumlah besar mungkin agar orang-orang tidak sadar bahwa situasi sekarang mirip dengan era revolusi home computer
Aku memakai mesin dengan RAM 1TB, dan dengan agent kustom performanya lebih baik daripada model komersial. Pribadi, aman, dan tidak dimonetisasi
Lalu pertanyaan berikutnya adalah, bisakah kita membuat model kecil yang belajar sambil mengambil data eksternal
Kalau kita bisa membuat model ultra-kecil yang belajar secara real-time, itu berarti kita akan punya asisten pribadi yang sepenuhnya lokal
Model yang sangat kecil, hampir tanpa pengetahuan ensiklopedis, tetapi punya kemampuan penalaran dasar dan penggunaan alat
Tweet referensi
Kalau begitu, dunia sekarang pasti akan sepenuhnya berbeda
Ini adalah studi kasus eksperimental tentang ‘bagaimana jika RNN ternyata cocok untuk LLM’
Sangat cepat di CPU
Hanya saja, sepertinya sulit untuk benar-benar memanfaatkan context window yang besar
Aku penasaran, kalau seseorang punya akses ke bobot modelnya, apakah rahasia itu bisa diinferensikan balik dari sana, atau hanya bisa diakses lewat pertanyaan
Ini membahas cara menanam backdoor yang tidak dapat dideteksi di dalam model sambil tetap tampak berfungsi normal di permukaan
Secara umum ini termasuk masalah interpretabilitas
Strukturnya 32K×36-bit word, dan tidak mendukung operasi byte
Kalau file eksekusi Z80 berukuran 40KB dipindahkan begitu saja, itu akan cukup sempit
Tapi karena sebagian besarnya adalah bobot 2-bit, mungkin saja bisa
Pada perangkat keras setelahnya, terutama Z80 tahun 1976, situasinya akan jauh lebih longgar
Di versi berikutnya aku akan memperluasnya, jadi pasti ingin mencoba ini
Dulu hanya pencocokan kata kunci yang persis, jadi terasa kaku
Mungkin game terakhir dengan pendekatan seperti itu adalah Wizardry 8 pada 2001
Menurut saya sangat menakjubkan bahwa teknologi terbaru bisa dijalankan pada perangkat keras lama.
Jika nanti AGI muncul di masa depan, apakah itu bisa dijalankan jika kita mengumpulkan seluruh daya komputasi yang ada di Bumi saat ini?