- Dieser Artikel behandelt die Ausführung von Stable Diffusion XL 1.0 auf dem Mikrocomputer Raspberry Pi Zero 2 mit 512 MB RAM.
- Die Herausforderung besteht darin, Stable Diffusion 1.5, ein großes Transformer-Modell mit fast 1 Milliarde Parametern, auszuführen, ohne den Swap-Speicher zu vergrößern oder Zwischenergebnisse auf die Festplatte auszulagern.
- Der Autor hat OnnxStream entwickelt, eine kleine, hackbare Inferenzbibliothek mit Fokus auf minimale Speichernutzung.
- OnnxStream trennt die Inferenz-Engine von den Komponenten, die die Modellgewichte bereitstellen, und ermöglicht so verschiedene Arten des Ladens, Cachings und Prefetchings von Modellparametern.
- OnnxStream verbraucht 55-mal weniger Speicher als OnnxRuntime und ist dabei nur 0,5- bis 2-mal langsamer.
- Der Artikel enthält Bilder, die von der Stable-Diffusion-Beispielimplementierung mit OnnxStream bei verschiedenen Präzisionsstufen des VAE-Decoders erzeugt wurden.
- Die Stable-Diffusion-Beispielimplementierung von OnnxStream unterstützt jetzt SDXL 1.0, das rechnerisch aufwendiger ist als SD 1.5, dafür aber größere Bilder erzeugen kann.
- OnnxStream kann SDXL 1.0 mit weniger als 300 MB RAM ausführen und eignet sich damit für den Raspberry Pi Zero 2.
- Der Artikel behandelt spezifische Optimierungen für SDXL 1.0, darunter Tiled Decoding, um den Speicherverbrauch von 4,4 GB auf 298 MB zu senken.
- Zu den Funktionen von OnnxStream gehören die Trennung von Inferenz-Engine und WeightsProvider, Attention Slicing, dynamische und statische Quantisierung sowie FP16-Unterstützung.
- Der Artikel bietet detaillierte Anleitungen zum Erstellen des Stable-Diffusion-Beispiels auf verschiedenen Betriebssystemen.
- Die Stable-Diffusion-Implementierung von
sd.cpp basiert auf zwei anderen Projekten und wurde so angepasst, dass OnnxStream anstelle von NCNN verwendet wird.
1 Kommentare
Hacker-News-Kommentare