Micro Diffusion - model Diffusion kecil untuk belajar
(github.com/Siwoo4985)Halo, sekitar sebulan yang lalu saya mengimplementasikan model Diffusion teks dari nol dan merilisnya. Belakangan saat membaca GeekNews, saya tiba-tiba teringat dan baru sekarang mempostingnya.
Latar belakang pembuatannya
Setelah melihat MicroGPT karya Andrej Karpathy, saya terkesan bahwa "ternyata inti GPT bisa dijelaskan dengan kode sesingkat ini". Kebetulan saya juga sedang ingin mempelajari Diffusion, jadi saya memulai proyek edukasi ini dengan gagasan, "akan menarik jika membuat kode yang bisa membantu memahami Diffusion dengan cara yang sama".
AR vs Diffusion: apa bedanya?
Hampir semua generasi teks di era LLM menggunakan pendekatan Autoregressive (AR). Caranya adalah memprediksi token satu per satu dari kiri ke kanan.
Discrete Diffusion adalah kebalikannya. Seluruh sekuens ditempatkan sekaligus, lalu dipulihkan secara bertahap dari noise (masking).
Ambil nama "emma" sebagai contoh:
Forward (pelatihan - menambahkan noise):
t=0 : e m m a ← asli
t=25: e _ m a ← sebagian dimasking
t=50: _ _ m _ ← lebih banyak masking
t=100: _ _ _ _ ← masking penuh
Reverse (generasi - menghilangkan noise):
t=100: _ _ _ _ ← mulai dari keadaan kosong
t=75: _ m _ _ ← memulihkan dari posisi dengan keyakinan tinggi
t=50: e m _ a
t=0 : e m m a ← selesai
Jika AR itu seperti "menulis kata satu huruf demi satu", maka Diffusion lebih mirip "menyelesaikan teka-teki silang".
Struktur implementasi
Ada tiga versi, jadi Anda bisa memilih sesuai tingkat kesulitannya.
train_minimal.py— MLP 2-layer / hanya menggunakan NumPy (paling sederhana)train_pure.py— MLP 3-layer + skip connection / hanya menggunakan NumPytrain.py— Transformer 4-layer / menggunakan PyTorch
Ketiga versi berbagi loop diffusion yang sama. Hanya arsitektur denoiser-nya yang berbeda.
Data latihnya adalah 32.000 nama bahasa Inggris, dengan parameter di kisaran 170K~239K.
Bisa langsung dijalankan:
pip install numpy # versi minimum
python train_minimal.py
Umpan balik dan PR sangat diterima!
Belum ada komentar.