- 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
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
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
-
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
Belum ada komentar.