4 puntos por GN⁺ 2023-10-04 | 1 comentarios | Compartir por WhatsApp
  • 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

 
GN⁺ 2023-10-04
Comentarios en Hacker News
  • Un artículo sobre el uso de OnnxStream muestra que consume 55 veces menos memoria que OnnxRuntime, aunque es entre 0.5 y 2 veces más lento.
  • La compensación entre uso de memoria y tiempo de inferencia puede ser ventajosa en algunos escenarios, y podría permitir tamaños de lote más grandes con la misma RAM.
  • Algunos usuarios están usando Stable Diffusion en una MacBook Pro mediante invoke.ai, pero buscan recomendaciones para una mejor parametrización.
  • El artículo menciona que generar imágenes con este método toma mucho tiempo; el Readme indica que tarda 11 horas.
  • La compensación entre uso de memoria y tiempo de inferencia puede ser un obstáculo para aplicaciones en tiempo real o casi en tiempo real, donde la latencia es un factor importante.
  • Hay confusión con la expresión "0.5-2 veces más lento", lo que sugiere que podría faltar claridad en la comunicación dentro de la comunidad.
  • Algunos usuarios buscan un resumen de los requisitos mínimos para ejecutar y generar con los principales modelos de código abierto.
  • Se destaca el rápido avance en este campo, especialmente las mejoras de velocidad en los últimos 6 a 18 meses.
  • Se sugiere que los intentos de regular tecnologías del tipo Stable Diffusion podrían ser en vano, ya que estos modelos y su infraestructura de inferencia podrían reducirse hasta un tamaño capaz de ejecutarse en una PS2.
  • Aunque el tiempo de generación es largo, a algunos usuarios les impresiona que Stable Diffusion pueda ejecutarse en hardware como una Pi Zero.