- Este artículo trata sobre la ejecución de Stable Diffusion XL 1.0 en una microcomputadora Raspberry Pi Zero 2 con 512 MB de RAM.
- El desafío es ejecutar Stable Diffusion 1.5, un gran modelo Transformer con casi mil millones de parámetros, sin aumentar el espacio de swap ni descargar resultados intermedios al disco.
- El autor creó OnnxStream, una biblioteca de inferencia pequeña y modificable enfocada en minimizar el consumo de memoria.
- OnnxStream separa el motor de inferencia del componente que proporciona los pesos del modelo, lo que permite distintos tipos de carga, caché y prefetch de parámetros del modelo.
- OnnxStream consume 55 veces menos memoria que OnnxRuntime, aunque solo es entre 0.5 y 2 veces más lento.
- El artículo incluye imágenes generadas por una implementación de ejemplo de Stable Diffusion usando OnnxStream con distintas precisiones en el decodificador VAE.
- La implementación de ejemplo de Stable Diffusion en OnnxStream ahora es compatible con SDXL 1.0, que requiere más cómputo que SD 1.5 pero puede generar imágenes más grandes.
- OnnxStream puede ejecutar SDXL 1.0 con menos de 300 MB de RAM, por lo que es adecuado para la Raspberry Pi Zero 2.
- El artículo analiza optimizaciones específicas para SDXL 1.0, incluido el uso de decodificación por mosaicos para reducir el consumo de memoria de 4.4 GB a 298 MB.
- Entre las funciones de OnnxStream están la separación entre el motor de inferencia y
WeightsProvider, attention slicing, cuantización dinámica y estática, y soporte para FP16.
- El artículo ofrece instrucciones detalladas sobre cómo compilar el ejemplo de Stable Diffusion en varios sistemas operativos.
- La implementación de Stable Diffusion de
sd.cpp se basa en otros dos proyectos y fue modificada para usar OnnxStream en lugar de NCNN.
1 comentarios
Comentarios en Hacker News