Ir para o conteúdo principal
  1. Artigos/

Como Executar o Stable Diffusion no Teu Portátil

Nuno Coração
Autor
Nuno Coração
Principal Product Manager @ Docker
Índice
O Novo Hype da IA - Este artigo faz parte de uma série.
Parte 3: Este artigo

No último ano, vários modelos de aprendizagem automática tornaram-se disponíveis ao público para gerar imagens a partir de descrições textuais. Este foi um desenvolvimento interessante no espaço da IA. No entanto, a maioria destes modelos permaneceu closed source por razões éticas válidas. Por causa disto, mesmo que possas interagir com eles através de alguma interface, estás limitado no número de coisas que podes testar. Até agora…

O mais recente destes modelos é o Stable Diffusion, um modelo de aprendizagem automática aberto desenvolvido pela Stability AI para gerar imagens digitais a partir de descrições em linguagem natural. Este modelo tornou-se bastante popular, principalmente porque foi o primeiro a ser open source.

Já brinquei com o Dall-E e o Midjourney, mas queria tentar executar um modelo localmente e ter mais liberdade para experimentar. Consegui instalar e executar o modelo com sucesso no meu M1 Pro e no meu desktop Windows. Este guia detalha os passos que segui para pôr tudo a funcionar no meu Mac.

Notas Iniciais
#

Algumas notas antes de começarmos. Tentei vários guias online e não consegui ter uma experiência suave com nenhum deles. Tive de tentar inúmeros repos, soluções, etc. O principal objetivo deste guia é fornecer instruções sobre como executar o Stable Diffusion num M1, que foi onde encontrei mais desafios. Instalar no Windows foi muito mais direto.

Dito isto, o repo que acabei por usar tem guias detalhados para todas as plataformas: Windows, Mac e Linux. Não hesites em usar qualquer um desses se estiveres a usar outra plataforma ou se este guia não funcionar para ti no Mac.

Nota: Não experimentei o guia Mac acima, pois quando encontrei este repo já tinha descoberto a maioria dos workarounds necessários para fazer o modelo funcionar.

Obter o Código
#

Vamos começar por obter o código. Estou a usar o fork do InvokeAI do Stable Diffusion, que forkei aqui. Podes usar o repo original do InvokeAI se preferires. Vou usar o meu fork para garantir que o guia permanece atualizado e funcional ao longo do tempo.

Para começar, clona o repo para a tua máquina local.

git clone https://github.com/nunocoracao/InvokeAI

Obter o Modelo
#

Agora precisas de obter o modelo real que contém os pesos para a rede. Este é o resultado de ciclos massivos de treino com conjuntos de dados enormes com os quais um utilizador normal com hardware médio não pode competir. O modelo não é distribuído com o código devido ao seu tamanho (cerca de 7,5 GB) e para garantir que os utilizadores têm de cumprir uma licença.

Vai simplesmente ao site da Hugging Face e faz login, ou cria uma conta se não tiveres uma. Quando estiveres configurado, clica aqui, aceita os termos no model card e descarrega o ficheiro chamado sd-v1-4-full-ema.ckpt. Depois de descarregares o modelo, vai para a pasta do código e coloca-o em models/ldm/stable-diffusion-v1/ com o nome model.ckpt. A pasta stable-diffusion-v1 não existe e precisa de ser criada.

Nota: existem outras variantes do modelo que podes explorar, esta é a recomendada pela maioria dos repos que vi.

Configurar o Ambiente
#

Com o código e o modelo prontos, o próximo passo é configurar o ambiente local para executar tudo.

Instalar o Xcode
#

O primeiro passo é instalar o Xcode. O Xcode pode ser instalado a partir da App Store, ou podes descarregá-lo do site Developer da Apple.

xcode-select --install

Instalar o Conda
#

A maioria das soluções que vi usa o Conda para gerir os pacotes e ambientes necessários. O guia de instalação do Conda é muito claro, por isso aconselho-te a seguir as instruções aqui.

conda

Se o processo de instalação foi bem-sucedido, deves ver algo como a imagem abaixo.

Instalar o Rust
#

Quando seguia outros guias, tinha sempre problemas na parte seguinte do processo, a construção dos ambientes. Depois de muitas tentativas, percebi que me faltava o compilador Rust.

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Construir e Ativar o Ambiente
#

Estamos quase lá. Agora vamos criar o ambiente ldm e ativá-lo antes de começar a gerar imagens.

PIP_EXISTS_ACTION=w CONDA_SUBDIR=osx-arm64 conda env create -f environment-mac.yml

Se tiveres problemas neste passo e precisares de reconstruir o ambiente:

PIP_EXISTS_ACTION=w CONDA_SUBDIR=osx-arm64 conda env update -f environment-mac.yml

Se estiveres num Mac Intel o comando deve ser:

PIP_EXISTS_ACTION=w CONDA_SUBDIR=osx-64 conda env create -f environment-mac.yml

Agora é hora de ativar o ambiente usando:

conda activate invokeai

O último passo é pré-carregar os modelos usando o comando:

python scripts/preload_models.py

Diverte-te…
#

Agora é hora de começar a brincar com o Stable Diffusion. Executa:

python scripts/invoke.py --full_precision --web

E abre o teu browser em localhost:9090

Deves ver uma interface Web como a abaixo.

Escolhe o teu primeiro prompt e experimenta o modelo, todas as imagens serão guardadas em output/img-samples. Explora os vários modelos e configurações possíveis. Tenho executado o meu com imagens 512x512, cerca de 100 ciclos para as imagens finais (5 para as variantes iniciais), e config scale a 7.5. Como sampler prefiro os resultados usando DDIM.

Alguns Exemplos
#

Aqui estão alguns exemplos de imagens das minhas execuções iniciais do modelo. Deixo aqui alguns links para obter ideias sobre como começar a desenhar prompts.

Aviso & Outras Opções
#

Existem imensas opções para executar o modelo Stable Diffusion, algumas locais, algumas na cloud (ex: Google Colab), por isso não te frustres se quiseres experimentar isto mas não tiveres acesso a uma máquina que o possa executar. Existem provavelmente outras soluções que podes usar.

Identifica-me nas redes sociais com as tuas criações se conseguires pôr isto a funcionar:

O Novo Hype da IA - Este artigo faz parte de uma série.
Parte 3: Este artigo

Relacionados