- Artikel ini membahas upaya menjalankan Stable Diffusion XL 1.0 pada mikrokomputer Raspberry Pi Zero 2 yang memiliki RAM 512MB.
- Tantangannya adalah menjalankan Stable Diffusion 1.5, sebuah model transformer besar dengan hampir 1 miliar parameter, tanpa menambah ruang swap atau memindahkan hasil antara ke disk.
- Penulis membuat OnnxStream, library inferensi kecil yang mudah diutak-atik dan berfokus pada meminimalkan konsumsi memori.
- OnnxStream memisahkan mesin inferensi dan komponen yang menyediakan bobot model, sehingga memungkinkan berbagai jenis loading, caching, dan prefetching untuk parameter model.
- OnnxStream menggunakan memori 55 kali lebih sedikit dibandingkan OnnxRuntime, meski hanya 0,5-2 kali lebih lambat.
- Artikel ini menyertakan gambar yang dihasilkan oleh implementasi contoh Stable Diffusion menggunakan OnnxStream pada berbagai tingkat presisi VAE decoder.
- Implementasi contoh Stable Diffusion di OnnxStream kini mendukung SDXL 1.0, yang lebih mahal secara komputasi dibanding SD 1.5 tetapi dapat menghasilkan gambar yang lebih besar.
- OnnxStream dapat menjalankan SDXL 1.0 dengan RAM di bawah 300MB, sehingga cocok untuk Raspberry Pi Zero 2.
- Artikel ini membahas optimasi khusus untuk SDXL 1.0, termasuk penggunaan tile decoding untuk menurunkan konsumsi memori dari 4,4GB menjadi 298MB.
- Fitur OnnxStream mencakup pemisahan mesin inferensi dan WeightsProvider, attention slicing, kuantisasi dinamis dan statis, serta dukungan FP16.
- Artikel ini memberikan petunjuk rinci tentang cara membangun contoh Stable Diffusion di berbagai sistem operasi.
- Implementasi Stable Diffusion milik sd.cpp didasarkan pada dua proyek lain, dan telah dimodifikasi agar menggunakan OnnxStream alih-alih NCNN.
1 komentar
Opini Hacker News