Stable Diffusion 3.5 diimplementasikan ulang dari nol dengan PyTorch murni
(github.com/yousef-rafat)- Proyek miniDiffusion adalah open source yang mengimplementasikan ulang model Stable Diffusion 3.5 dari nol hanya dengan menggunakan PyTorch
- Struktur proyek ini berfokus pada tujuan edukasi serta kebutuhan eksperimen dan hacking
- Seluruh codebase berisi sekitar 2800 baris dan disusun dengan kode minimal, mulai dari VAE hingga DiT, serta skrip pelatihan dan dataset
- Komponen utamanya mencakup VAE, CLIP, encoder teks T5, transformer difusi multimodal, joint attention, dan lain-lain
- Saat ini proyek masih memuat fitur eksperimental sehingga masih memerlukan lebih banyak pengujian
Pengenalan proyek miniDiffusion
miniDiffusion adalah proyek open source yang mengimplementasikan ulang fungsi inti Stable Diffusion 3.5 hanya dengan PyTorch
Dibandingkan Stable Diffusion 3.5 yang ada, proyek ini memiliki keunggulan berikut
- Codebase-nya kecil, sekitar 2.800 baris, sehingga sangat cocok untuk menganalisis struktur secara langsung dan belajar
- Dapat dimanfaatkan secara berguna untuk berbagai eksperimen machine learning dan hacking model
- Ketergantungannya sangat sedikit dan hanya memakai library minimum
Struktur inti dan file penyusun
- dit.py : bagian implementasi model utama Stable Diffusion
- dit_components.py : komponen embedding, normalisasi, patch embedding, dan fungsi bantu DiT
- attention.py : bagian implementasi algoritme Joint Attention
- noise.py : mencakup scheduler Euler ODE untuk Rectified Flow
- t5_encoder.py, clip.py : implementasi encoder teks T5 dan CLIP
- tokenizer.py : implementasi tokenizer Byte-Pair dan Unigram
- metrics.py : implementasi metrik evaluasi FID (Fréchet inception distance)
- common.py : menyediakan fungsi bantu yang diperlukan untuk pelatihan
- common_ds.py : implementasi dataset iterable yang mengubah gambar menjadi data pelatihan untuk DiT
- Folder model : menyimpan checkpoint model dan log setelah pelatihan
- Folder encoders : menyimpan checkpoint modul terpisah seperti VAE dan CLIP
⚠️ Fitur eksperimental dan kebutuhan pengujian miniDiffusion saat ini masih memuat fitur-fitur eksperimental dan masih memerlukan lebih banyak pengujian
Rincian komponen berdasarkan fungsi utama
Core Image Generation Modules
- Implementasi VAE, CLIP, encoder teks T5
- Implementasi tokenizer Byte-Pair, Unigram
SD3 Components
- Multi-Modal Diffusion Transformer Model
- Implementasi Flow-Matching Euler Scheduler
- Logit-Normal Sampling
- Penerapan algoritme Joint Attention
Skrip pelatihan dan inferensi model
- Menyediakan skrip pelatihan dan inferensi untuk SD3 (Stable Diffusion 3.5)
Lisensi
- Dirilis dengan lisensi MIT dan dibuat untuk tujuan edukasi dan eksperimen
Makna dan keunggulan proyek open source ini
- Struktur model generasi gambar mutakhir setingkat Stable Diffusion 3.5 dapat dipelajari dan di-hack langsung hanya dengan PyTorch murni
- Kodenya ringkas dan independen sehingga dioptimalkan untuk analisis struktur / tuning model / riset algoritme baru
- Teknik multimodal, transformer, dan attention terbaru dapat dipraktikkan secara langsung
- Menyediakan fondasi untuk bereksperimen dengan aman secara terpisah dari proyek komersial
1 komentar
Opini Hacker News
Implementasi referensi Flux benar-benar memiliki struktur yang minimal, jadi layak dilihat jika ada yang tertarik
GitHub Flux
Kelebihan proyek minRF adalah memudahkan untuk mulai melatih model difusi kecil dengan memanfaatkan rectified flow
GitHub minRF
Implementasi referensi Stable Diffusion 3.5 juga ditulis cukup ringkas sehingga cocok dijadikan rujukan
GitHub SD 3.5
Implementasi referensi sering kali tidak terlalu terawat dan penuh bug
Muncul pertanyaan apakah proyek miniDiffusion benar-benar berarti menggunakan model Stable Diffusion 3.5
Kode terkait
Dataset pelatihannya sangat kecil dan hanya berisi foto terkait fesyen
Dataset fesyen
Dataset tersebut dipakai untuk latihan fine-tuning model difusi
Penasaran apakah memakai PyTorch murni memberi keuntungan performa di GPU non-NVIDIA, atau apakah PyTorch sudah sedemikian dioptimalkan untuk CUDA sehingga vendor GPU lain sulit bersaing
PyTorch berjalan cukup baik juga di Apple Silicon
Beban kerja ML juga bisa dijalankan di perangkat non-NVIDIA seperti AMD melalui Vulkan
Dukungan ROCm di PyTorch berkembang sangat lambat, dan bahkan jika berhasil dijalankan pun kecepatannya lambat
PyTorch memang berjalan cukup baik di ROCm, tetapi saya tidak yakin apakah sudah benar-benar setara sepenuhnya
Pada kode PyTorch,
ada usulan untuk mencoba menggantinya dengan
seperti ini
Kalau dilakukan seperti ini, parameter q, k, v akan saling terhubung, tidak lagi terpisah independen seperti sebelumnya
Ini tampak seperti materi yang bagus untuk para pembelajar
Saya penasaran apakah ada tutorial atau panduan yang bahkan bisa diikuti pemula
Ada pelajaran dari fast.ai untuk mengimplementasikan Stable Diffusion secara langsung
Muncul pertanyaan apakah ini berarti Stable Diffusion bisa dipakai tanpa batasan lisensi
Terus terang agak memalukan, tetapi saya penasaran apa hal baru yang sebenarnya kita peroleh sebelum dan sesudah repositori ini ada
Saya pribadi cenderung menghindari membuat model, dan selama ini lebih banyak mengamati hasilnya dari samping
Saya samar-samar mengira bahwa skrip inferensi/pelatihan berbasis PyTorch sudah tersedia secara terbuka sejak lama
Setidaknya saya mengira skrip inferensi akan dibagikan bersama saat model dirilis, dan skrip fine-tuning/pelatihan juga mungkin ada
Saya tidak yakin apakah proyek ini adalah penulisan ulang model lama dengan gaya "clean room" atau "dirty room", atau justru karena kode PyTorch yang ada pun selama ini terlalu rumit akibat campuran CUDA/C sehingga versi PyTorch murni memang punya makna besar
Pokoknya saya benar-benar tidak tahu, jadi akan bagus kalau ada yang bisa menjelaskannya
Nilai utama proyek ini adalah "implementasi dengan dependensi seminimal mungkin"
Stability AI mendistribusikan model Stable Diffusion di bawah Stability AI Community License, jadi tidak "sepenuhnya bebas" seperti MIT
Saat memikirkan SD 3.5 (atau versi mana pun), saya menganggap bagian inti ada pada bobot yang dihasilkan dari proses pelatihan
Saya penasaran soal kegunaan praktis sumber akademik asli yang dirilis oleh grup CompViz dari Ludwig Maximilian University
Saya penasaran apakah implementasi diffusion transformer (DiT) di sini benar-benar mengimplementasikan cross-token attention seperti pada SD 3.5 versi penuh, atau disederhanakan demi keterbacaan kode