Como usar o Stable Diffusion sem placa de vídeo (guia de CPU)
Stable Diffusion sem placa de vídeo

A geração de imagens com inteligência artificial tomou a Web e as redes sociais de assalto. As soluções online são cada vez mais robustas e avançadas, mas a execução local de modelos tem duas vantagens fundamentais: é gratuita e elimina os limites impostos pelas plataformas online. A melhor opção offline continua sendo o Stable Diffusion, mas sua configuração padrão recomenda placas de vídeo Nvidia. Por sorte, recomendação não é obrigação, e hoje vamos explorar uma forma de redirecionar o Stable Diffusion para que use a CPU…

Quer molhar os pés nas águas da geração de imagens? A forma mais simples é criar uma conta no DreamStudio ou usar o Midjourney através do Discord, mas nenhuma dessas opções é gratuita, e você precisará comprar créditos assim que esgotar os testes de cortesia. Como alternativa, a demo pública do Stable Diffusion não foi a lugar nenhum, e se você tiver paciência (estou me referindo à fila de espera, aos erros espontâneos e a «trabalhar» seus prompts) pode criar imagens muito interessantes.

No entanto, também existe a geração offline, e se você possui uma placa de vídeo Nvidia compatível, é de longe a melhor forma de obter imagens. As razões? Você pode explorar diferentes modelos compartilhados pela comunidade, escapar dos limites (lógicos) das edições online e, o mais importante, criar imagens sem pagar nem um centavo. Mas o que acontece se a placa de vídeo não for uma opção? Nesse caso, a solução é convencer o Stable Diffusion a usar a CPU.

Antes de começar…

Você precisa moderar suas expectativas. O processo sacrifica tempo em troca de compatibilidade. O desempenho exato depende de cada processador e da força de seus núcleos (núcleos no plural, definitivamente você precisa de um chip multicore e 16 GB de RAM para isso), mas em média você deve esperar cerca de cinco minutos por imagem configurada a 20 passos. Alguns métodos de sampling exigem entre 30 e 40 para alcançar resultados ótimos, portanto, é preciso ter paciência.

Como configurar o Stable Diffusion sem placa de vídeo

Como usar o Stable Diffusion sem placa de vídeo (guia de CPU)
O WebUI do Stable Diffusion, versão Automatic1111, funcionando sem GPU
  • Em essência, este guia segue os mesmos passos do tutorial de instalação para a versão WebUI do Stable Diffusion desenvolvida por Automatic1111 no GitHub. É uma das mais populares e atualizadas na Web, mas não funcionará com processadores sem algumas modificações no final. Esse é o nosso trabalho.
  • Em primeiro lugar, você deve instalar o Python 3.10.6 ou superior baixando-o do site oficial, selecionando a opção Add Python to PATH quando o instalador apresentar essa opção.
  • Depois é a vez do Git para Windows. No momento em que escrevo estas linhas, seu último build é o 2.38.0, compatível com sistemas de 64 bits.
  • Duas opções aqui: você pode usar o comando git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git para baixar o repositório completo, ou realizar essa mesma descarga manualmente clicando aqui, no botão verde Code e depois escolhendo Download Zip. A primeira rota permite que você use git pull para atualizá-lo mais tarde, e com a segunda você precisa baixar o zip em cada ocasião. De qualquer forma, a instalação do git é obrigatória.
  • O passo mais complicado: obter o modelo 1.4 do Stable Diffusion. Isso é um baita arquivo de quatro gigabytes, então recomendo usar um link magnético para baixá-lo via BitTorrent usando um cliente como Tixati. Outra alternativa é a descarga direta, mas cruze os dedos para que sua conexão não seja interrompida.
  • Depois de baixar o modelo, você deve renomeá-lo para model.ckpt e colocá-lo dentro de stable-diffusion-webui-master\models\Stable-diffusion\. Os demais modelos são baixados automaticamente com a primeira execução.
  • Ainda não saímos da selva. A chave para que isso funcione é forçar o uso da CPU e, ao mesmo tempo, indicar que não há dispositivos CUDA presentes.
  • Para conseguir isso, você deve editar o arquivo webui.bat e adicionar duas linhas como mostra a imagem abaixo: set CUDA_VISIBLE_DEVICES=-1 e set COMMANDLINE_ARGS=--precision full --no-half --use-cpu all --skip-torch-cuda-test --autolaunch. Salve as alterações.
Como usar o Stable Diffusion sem placa de vídeo (guia de CPU)
O arquivo webui.bat deve ficar exatamente como visto aqui, com essas linhas adicionais
  • Abra um console com privilégios elevados e execute o webui.bat. Essa elevação não é estritamente necessária, mas evita qualquer conflito potencial com o Windows.
  • Se o WebUI precisar de mais alguma coisa, é bem provável que tente baixá-lo automaticamente. Esse é o comportamento esperado. Se tudo correr bem, o WebUI do Stable Diffusion abrirá na aba do seu navegador padrão, com endereço 127.0.0.1:7860.
  • Insira um prompt e limite a quantidade de passos a 20 para começar. Nem todos os samplers funcionam em modo CPU (por exemplo, DDIM), e minha sugestão é permanecer em Euler A ou LMS. Um clique em Generate e é só esperar.
Como usar o Stable Diffusion sem placa de vídeo (guia de CPU)
Stable Diffusion apenas com CPU, 16 threads
Como usar o Stable Diffusion sem placa de vídeo (guia de CPU)
Por mais que configuremos o uso da CPU, alguns samplers simplesmente não funcionarão

É isso aí! Com esses passos, a geração de imagens usando Stable Diffusion e um processador se tornará realidade. O resto é... paciência. Pessoalmente, posso criar 16 imagens na GPU para cada uma na CPU, portanto estamos diante de uma enorme diferença de desempenho. No entanto, calibrar o número de passos e a resolução ajudará a reduzir o tempo de processamento. Boa sorte!