Stable Diffusion 3.5 baştan sona saf PyTorch ile yeniden uygulandı
(github.com/yousef-rafat)- miniDiffusion projesi, Stable Diffusion 3.5 modelini yalnızca PyTorch kullanarak sıfırdan yeniden uygulayan bir açık kaynak çalışmasıdır
- Projenin yapısı özellikle eğitim amacıyla ve deney, hacking kullanımları için tasarlanmıştır
- Tüm kod tabanı yaklaşık 2800 satır olup VAE'den DiT'e, eğitim ve veri kümesi betiklerine kadar her şey minimum kodla oluşturulmuştur
- Başlıca bileşenler arasında VAE, CLIP, T5 metin kodlayıcıları, çok modlu difüzyon transformer'ı, joint attention yer alır
- Henüz deneysel özellikler içerdiğinden daha fazla test gerekmektedir
miniDiffusion projesine giriş
miniDiffusion, Stable Diffusion 3.5'in temel işlevlerini yalnızca PyTorch ile yeniden uygulayan açık kaynak bir projedir
Bu proje, mevcut Stable Diffusion 3.5 ile karşılaştırıldığında şu avantajlara sahiptir
- Kod tabanı yaklaşık 2.800 satır olduğu için küçüktür ve yapıyı doğrudan analiz edip öğrenmek için çok uygundur
- Çeşitli makine öğrenimi deneyleri ve model hacking için faydalı biçimde kullanılabilir
- Bağımlılıkları çok azdır ve yalnızca minimum düzeyde kütüphane kullanır
Temel yapı ve bileşen dosyaları
- dit.py : ana Stable Diffusion modelinin uygulama bölümü
- dit_components.py : embedding, normalization, patch embedding ve DiT yardımcı işlevleri
- attention.py : Joint Attention algoritmasının uygulama bölümü
- noise.py : Rectified Flow için Euler ODE scheduler içerir
- t5_encoder.py, clip.py : T5 ve CLIP metin kodlayıcılarının uygulanması
- tokenizer.py : Byte-Pair ve Unigram tokenizer uygulaması
- metrics.py : FID(Fréchet inception distance) değerlendirme metriğinin uygulanması
- common.py : eğitim için gerekli yardımcı işlevleri sağlar
- common_ds.py : görselleri DiT için eğitim verisine dönüştüren iterable dataset uygulaması
- model klasörü : eğitim sonrası model checkpoint'leri ve log'ların saklanması
- encoders klasörü : VAE, CLIP gibi ayrı modüllerin checkpoint'lerinin saklanması
⚠️ Deneysel özellikler ve test gerekliliği miniDiffusion hâlâ deneysel özellikler içermektedir ve daha fazla teste ihtiyaç duymaktadır
Başlıca işlevlere göre ayrıntılı yapı
Core Image Generation Modules
- VAE, CLIP, T5 metin kodlayıcıları uygulaması
- Byte-Pair, Unigram tokenizer uygulaması
SD3 Components
- Multi-Modal Diffusion Transformer Model
- Flow-Matching Euler Scheduler uygulaması
- Logit-Normal Sampling
- Joint Attention algoritmasının kullanımı
Model eğitimi ve çıkarım betikleri
- SD3(Stable Diffusion 3.5) için eğitim ve çıkarım betikleri sağlanır
Lisans
- MIT lisansı ile yayımlanmıştır ve eğitim ile deney amaçları için hazırlanmıştır
Bu açık kaynak projenin anlamı ve avantajları
- Stable Diffusion 3.5 düzeyindeki güncel görüntü üretim modeli yapıları saf PyTorch ile doğrudan eğitilip hacklenebilir
- Kod kısa ve bağımsız olduğundan yapı analizi / model tuning / yeni algoritma araştırması için optimize edilmiştir
- Güncel çok modlu, transformer ve attention teknikleri doğrudan pratik edilebilir
- Ticari projelerden bağımsız olarak güvenli biçimde deney yapılabilecek bir temel sunar
1 yorum
Hacker News görüşleri
Flux referans implementasyonu gerçekten çok minimal bir yapıya sahip; ilgilenenler için bir göz atmaya değer
Flux GitHub
minRF projesinin avantajı, rectified flow kullanarak küçük diffusion modellerini eğitmeye başlamak için kolay bir giriş noktası sunması
minRF GitHub
Stable Diffusion 3.5’in referans implementasyonu da oldukça sade yazılmış, bu yüzden incelemek için uygun
SD 3.5 GitHub
Referans implementasyonlar çoğu zaman iyi bakım görmüyor ve çok sayıda hata içeriyor
cudagraphsgibi yerlerde ufak sorunlara yol açabilecek hatalar barındırıyorminiDiffusion projesinin gerçekten Stable Diffusion 3.5 modelini kullandığı mı kastediliyor diye merak ediyorum
İlgili kod
Eğitim veri kümesi çok küçük ve yalnızca moda ile ilgili fotoğraflar içeriyor
Moda veri kümesi
Bu veri kümesi, diffusion model fine-tuning pratiği yapmak için kullanılıyor
Saf PyTorch kullanmanın NVIDIA dışındaki GPU’larda bir performans avantajı sağlayıp sağlamadığını, yoksa PyTorch’un CUDA için bu kadar optimize olması yüzünden diğer GPU üreticilerinin zaten yarışamayacağını merak ediyorum
PyTorch, Apple Silicon’da da oldukça iyi çalışıyor
AMD gibi NVIDIA dışı aygıtlarda da ML iş yükleri Vulkan üzerinden çalıştırılabiliyor
PyTorch’un ROCm desteği çok yavaş ilerliyor ve çalıştırmayı başarsanız bile yavaş
PyTorch ROCm üzerinde fena çalışmıyor ama gerçekten tamamen “aynı seviyede” çalışıp çalışmadığından emin değilim
PyTorch kodunda
yerine
gibi bir yaklaşım denemenin iyi olabileceği öneriliyor
Öğrenenler için iyi bir kaynak gibi görünüyor
Acaba yeni başlayanların da takip edebileceği bir eğitim ya da rehber var mı
fast.ai’de Stable Diffusion’ı doğrudan implement etmeye yönelik bir ders var
Bunun Stable Diffusion’ı lisans kısıtlaması olmadan kullanabilmek anlamına gelip gelmediğini merak ettim
Açıkçası biraz utanç verici ama, bu repo(lar) ortaya çıkmadan önce ve sonra elimizde yeni olarak ne olduğu konusunda kafam karışık
Ben şahsen model geliştirmekten hep uzak durdum, daha çok ortaya çıkan sonuçları dışarıdan takip eden taraftaydım
Zaten PyTorch tabanlı inference/eğitim script’lerinin önceden de açık olduğunu varsayıyordum
En azından inference script’lerinin modelle birlikte verileceğini, fine-tuning/eğitim script’lerinin de bulunacağını düşünüyordum
Bu projenin “clean room” ya da “dirty room” tarzı bir yeniden yazım mı olduğunu, yoksa mevcut PyTorch kodlarının bile CUDA/C tabanlı ve fazla karmaşık olduğu için saf PyTorch sürümünün gerçekten önemli mi olduğunu kestiremiyorum
Her hâlükârda tam anlayamadım; bilen biri açıklarsa sevinirim
Bu projenin temel değeri “minimum bağımlılıkla implementasyon” olması
transformersgibi çok büyük kütüphaneler içeriyor; bu da gerçek iş ortamlarında ciddi sorun yaratabiliyorStability AI, Stable Diffusion modellerini Stability AI Community License ile dağıtıyor; bu da MIT gibi “tamamen özgür” bir lisans değil
SD 3.5’i (ya da herhangi bir sürümünü) düşününce, benim için asıl önemli kısım eğitim sürecinden çıkan ağırlıklar
Ludwig Maximilian University’nin CompViz grubunun yayımladığı orijinal akademik kaynağın pratikte kullanılabilirliği hakkında merakım var
Buradaki diffusion transformer (DiT) implementasyonunun, SD 3.5’in tam sürümündeki gibi cross-token attention’ı gerçekten doğru şekilde uygulayıp uygulamadığını, yoksa kod okunabilirliği için basitleştirilmiş olup olmadığını merak ediyorum