Micro Diffusion - Öğrenme için küçük bir Diffusion modeli
(github.com/Siwoo4985)Merhaba, yaklaşık bir ay önce metin Diffusion modelini sıfırdan geliştirip yayımlamıştım. Son zamanlarda GeekNews'e bakarken birden aklıma geldi, ben de ancak şimdi paylaşabiliyorum.
Yapma motivasyonu
Andrej Karpathy'nin MicroGPT'sini görünce, "GPT'nin özünü bu kadar kısa bir kodla anlatmak mümkünmüş" diye düşünmüştüm. Tam o sırada Diffusion'ı da öğrenmek istiyordum; ikisini birleştirip "Diffusion'ı da aynı şekilde anlamayı sağlayan bir kod yazmak eğlenceli olur" fikriyle başlayan eğitsel bir proje oldu.
AR vs Diffusion: fark ne?
LLM çağında metin üretiminin neredeyse tamamı Autoregressive (AR) yöntemiyle yapılıyor. Yani soldan sağa token'ları tek tek tahmin eden bir yaklaşım.
Discrete Diffusion ise bunun tersidir. Tüm diziyi bir kerede ele alır ve gürültüden (maskelenmiş durumdan) başlayarak kademeli biçimde geri yükler.
"emma" adını örnek alalım:
Forward (eğitim - gürültü ekleme):
t=0 : e m m a ← orijinal
t=25: e _ m a ← kısmi maskeleme
t=50: _ _ m _ ← daha fazla maskeleme
t=100: _ _ _ _ ← tamamen maskelenmiş
Reverse (üretim - gürültü giderme):
t=100: _ _ _ _ ← boş durumdan başlama
t=75: _ m _ _ ← önce güvenin yüksek olduğu konumlar geri yüklenir
t=50: e m _ a
t=0 : e m m a ← tamamlandı
AR "kelimeyi harf harf yazmak" gibiyse, Diffusion da daha çok "bulmacayı çözmek" gibidir.
Uygulama yapısı
Üç farklı sürüm var; zorluk seviyesine göre istediğinizi seçip inceleyebilirsiniz.
train_minimal.py— 2 katmanlı MLP / yalnızca NumPy kullanır (en basit)train_pure.py— 3 katmanlı MLP + skip connection / yalnızca NumPy kullanırtrain.py— 4 katmanlı Transformer / PyTorch kullanır
Üç sürüm de aynı diffusion döngüsünü paylaşır. Sadece denoiser mimarisi farklıdır.
Eğitim verisi 32.000 İngilizce isimden oluşuyor, parametre sayısı ise 170K~239K seviyesinde.
Hemen çalıştırabilirsiniz:
pip install numpy # minimum sürüm
python train_minimal.py
Geri bildirimlere ve PR'lara açığım!
Henüz yorum yok.