- Este artigo aborda a discussão sobre rodar o Stable Diffusion XL 1.0 em um microcomputador Raspberry Pi Zero 2 com 512 MB de RAM.
- O desafio é executar o Stable Diffusion 1.5, um grande modelo transformer com quase 1 bilhão de parâmetros, sem aumentar o espaço de swap nem descarregar resultados intermediários em disco.
- O autor criou o OnnxStream, uma biblioteca de inferência pequena e hackeável, focada em minimizar o consumo de memória.
- O OnnxStream separa o mecanismo de inferência dos componentes que fornecem os pesos do modelo, permitindo vários tipos de carregamento, cache e prefetching dos parâmetros do modelo.
- O OnnxStream consome 55 vezes menos memória que o OnnxRuntime, sendo apenas de 0,5 a 2 vezes mais lento.
- O artigo inclui imagens geradas por implementações de exemplo do Stable Diffusion usando o OnnxStream em diferentes níveis de precisão do decodificador VAE.
- A implementação de exemplo do Stable Diffusion no OnnxStream agora oferece suporte ao SDXL 1.0, que exige mais computação que o SD 1.5, mas pode gerar imagens maiores.
- O OnnxStream consegue rodar o SDXL 1.0 com menos de 300 MB de RAM, o que o torna adequado para o Raspberry Pi Zero 2.
- O artigo discute otimizações específicas para o SDXL 1.0, incluindo o uso de decodificação em tiles para reduzir o consumo de memória de 4,4 GB para 298 MB.
- Os recursos do OnnxStream incluem separação entre o mecanismo de inferência e o WeightsProvider, attention slicing, quantização dinâmica e estática, suporte a FP16 e mais.
- O artigo fornece instruções detalhadas sobre como compilar os exemplos de Stable Diffusion em vários sistemas operacionais.
- A implementação de Stable Diffusion do sd.cpp é baseada em outros dois projetos e foi modificada para usar o OnnxStream em vez do NCNN.
1 comentários
Comentários do Hacker News