4 pontos por GN⁺ 2023-10-04 | 1 comentários | Compartilhar no WhatsApp
  • 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

 
GN⁺ 2023-10-04
Comentários do Hacker News
  • Artigo sobre o uso do OnnxStream, que aparentemente consome 55 vezes menos memória que o OnnxRuntime, embora seja de 0,5 a 2 vezes mais lento.
  • O trade-off entre uso de memória e tempo de inferência pode ser vantajoso em alguns cenários, permitindo tamanhos de lote maiores com a mesma RAM.
  • Alguns usuários estão usando Stable Diffusion em um MacBook Pro via invoke.ai, mas procuram recomendações para uma parametrização melhor.
  • O artigo menciona que leva muito tempo para gerar imagens com esse método; o Readme diz que são necessárias 11 horas.
  • O trade-off entre uso de memória e tempo de inferência pode atrapalhar aplicações em tempo real ou quase em tempo real, nas quais a latência é um fator importante.
  • Há confusão em torno da expressão "0,5 a 2 vezes mais lento", o que indica possível falta de clareza na comunicação dentro da comunidade.
  • Alguns usuários procuram um resumo dos requisitos mínimos para executar e gerar com os principais modelos open source.
  • O rápido avanço nessa área chama atenção, especialmente as melhorias de velocidade nos últimos 6 a 18 meses.
  • Sugere-se que tentativas de regular tecnologias do tipo Stable Diffusion podem ser em vão, já que esses modelos e sua infraestrutura de inferência podem ser reduzidos a um tamanho capaz de rodar em um PS2.
  • Apesar do longo tempo de geração, alguns usuários ficam impressionados com o fato de o Stable Diffusion poder rodar em hardware como um Pi Zero.