En vista de que google ha restringido el uso de Colab y ya no podemos hacer uso de manera gratuita las GPUs para ejecutar nuestro Stable Diffusion entre las alternativas he encontrado el sevicio de kaggle.com.
Que es Kaggle
Kaggle, una subsidiaria de Google LLC, es una comunidad en línea de científicos de datos y profesionales del aprendizaje automático. Kaggle es una plataforma que incluye, una interfaz de Jupyter Notebooks que puede ajustarse y personalizarse dependiendo de las necesidades y requerimientos de cada usuario. De la misma manera, Kaggle permite el libre acceso a las GPU y a un gran número de datos y códigos de los que publica su extensa comunidad de usuarios.
Como usar Stable Diffusion en Kaggle
- En primer lugar debes regístrate en su pagina usando tu cuenta de Google o con un correo electrónico. No voy a explicar este proceso porque entiendo que ya tienes conocimientos de internet y es sencillo este proceso, solo mencionarte que deberás poner tu nombre completo, aceptar los términos, y si te registraste usando correo electrónico deberás validar tu correo accediendo al enlace que te habrán enviado a tu email.
- Para que te permitan utilizar las GPUs deberás registrar un único numero telefónico, para ello debes entrar en la imagen del pato de la parte superior derecha, y luego en la ventana que aparece elige Settings. En la nueva pagina que aparecerá busca la parte que dice Phone verification donde tendrás que poner tu numero telefónico a donde te enviaran un SMS de verificación. Y ya está.
- Ahora a usar el cuaderno Jupyter de Kaggle, accede al boton Create de la parte superior izquierda, selecciona <>New Notebook, ya lo tienes el notebook para comenzar a trabajar.
- En la sección izquierda de la pagina busca la sección Notebook options ahi en la opción de Accelerator selecciona GPU T4 x2, seleccionar Turn on GPU T4 x2 en la ventana que aparecerá. También en la misma sección izquierda ubica la parte que dice Internet y ponlo en Internet on.
- Ahora has click en el botón + code se creará crear un nuevo espacio de comandos, copia y pegar lo siguiente:
# Codigo tomado de: https://www.kaggle.com/code/amida168/stable-diffusion-webui-various-models
# Instalar Python 3.10
!conda create -n webui_env -c cctbx202208 -y
!source /opt/conda/bin/activate webui_env && conda install -q -c cctbx202208 python -y
# Instalar PyTorch
!/opt/conda/envs/webui_env/bin/python3 -m pip install -q torch==1.13.1+cu117 torchvision==0.14.1+cu117 -f https://download.pytorch.org/whl/torch_stable.html
# Descargar Automatic1111's Stable Diffusion Web UI
!git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
%cd /kaggle/working/stable-diffusion-webui
# Utilice una versión confirmada el 18/2/2023, ya que una versión más reciente podría no funcionar.
!git checkout 0cc0ee1bcb4c24a8c9715f66cede06601bfc00c8
# [Sección de modelos] Utilice un modelo a la vez. Descomentar eliminando # del principio de una línea.
# Uncomment the following line to use Analog Diffusion 1.0
#!wget -O /kaggle/working/stable-diffusion-webui/models/Stable-diffusion/analog-diffusion-1.0.ckpt -L https://huggingface.co/wavymulder/Analog-Diffusion/resolve/main/analog-diffusion-1.0.ckpt
# Uncomment the following two lines to use Anything 3.0
#!wget -O /kaggle/working/stable-diffusion-webui/models/Stable-diffusion/anything-v3-fp16-pruned.safetensors -L https://huggingface.co/Linaqruf/anything-v3.0/resolve/main/anything-v3-fp16-pruned.safetensors
# Uncomment the following line to use Dreamlike Diffusion 1.0
#!wget -O /kaggle/working/stable-diffusion-webui/models/Stable-diffusion/dreamlike-diffusion-1.0.ckpt -L https://huggingface.co/dreamlike-art/dreamlike-diffusion-1.0/resolve/main/dreamlike-diffusion-1.0.ckpt
# Uncomment the following line to use Elldreth's Lucid Mix 1.0
#!wget -O /kaggle/working/stable-diffusion-webui/models/Stable-diffusion/elldrethSLucidMix_v10.safetensors -L https://civitai.com/api/download/models/1450
# Uncomment the following line to use Openjourney
#!wget -O /kaggle/working/stable-diffusion-webui/models/Stable-diffusion/mdjrny-v4.ckpt -L https://huggingface.co/prompthero/openjourney/resolve/main/mdjrny-v4.ckpt
# Uncomment the following line to use ProtoGen X3.4
#!wget -O /kaggle/working/stable-diffusion-webui/models/Stable-diffusion/ProtoGen_X3.4.safetensors -L https://huggingface.co/darkstorm2150/Protogen_x3.4_Official_Release/resolve/main/ProtoGen_X3.4.safetensors
# Uncomment the following line to use ProtoThing_200
#!wget -O /kaggle/working/stable-diffusion-webui/models/Stable-diffusion/ProtoThing_200.ckpt -L https://huggingface.co/NiteStormz/ProtoThing_200/resolve/main/ProtoThing_200.ckpt
# Añada un modelo de su elección. Reemplace model_name, model_link y elimine # de la línea #!wget.
model_name="EimisAnimeDiffusion_1-0v.ckpt"
model_link="https://huggingface.co/eimiss/EimisAnimeDiffusion_1.0v/resolve/main/EimisAnimeDiffusion_1-0v.ckpt"
#!wget -O /kaggle/working/stable-diffusion-webui/models/Stable-diffusion/{model_name} -L {model_link}
# [Sección VAE](Descomenta el que quieras usar. Ve a ajustes para seleccionar el VAE y aplicar ajustes para usarlo)
#!wget -O /kaggle/working/stable-diffusion-webui/models/VAE/vae-ft-mse-840000-ema-pruned.vae.ckpt -L https://huggingface.co/AmethystVera/SimpMaker-3K1/resolve/main/vae-ft-mse-840000-ema-pruned.ckpt
# Añada una VAE de su elección. Sustituya vae_name, vae_link y elimine # de la línea #!wget
vae_name="Anything-V3.0.vae.pt"
vae_link="https://huggingface.co/Linaqruf/anything-v3.0/resolve/main/Anything-V3.0.vae.pt"
#!wget -O /kaggle/working/stable-diffusion-webui/models/VAE/{vae_name} -L {vae_link}
# [Sección de Embedding](Descomenta el que quieras utilizar)
#!wget -O /kaggle/working/stable-diffusion-webui/embeddings/bad-artist.pt -L https://huggingface.co/nick-x-hacker/bad-artist/resolve/main/bad-artist.pt
# Añade un embedding de tu elección. reemplazar embedding_name, embedding_link
embedding_name="bad_prompt_version2.pt"
embedding_link="https://huggingface.co/datasets/Nerfgun3/bad_prompt/resolve/main/bad_prompt_version2.pt"
#!wget -O /kaggle/working/stable-diffusion-webui/embeddings/{embedding_name} -L {embedding_link}
#[Sección de Hypernetwork](Descomenta el que quieras utilizar)
# Crea carpeta de hypernetworks
!mkdir /kaggle/working/stable-diffusion-webui/models/hypernetworks
#!wget -O /kaggle/working/stable-diffusion-webui/models/hypernetworks/eimi.pt -L https://huggingface.co/WarriorMama777/HyperNetworkCollection_v2/resolve/main/_Korea_arca.live_HypernetworkCollection/eimi.pt
# Añada un hypernetwork de su elección. Reemplace hypernetwork_name, hypernetwork_link
hypernetwork_name="azusa.pt"
hypernetwork_link="https://huggingface.co/WarriorMama777/HyperNetworkCollection_v2/resolve/main/_Korea_arca.live_HypernetworkCollection/azusa.pt"
#!wget -O /kaggle/working/stable-diffusion-webui/models/hypernetworks/{hypernetwork_name} -L {hypernetwork_link}
# Habilitar la ampliación de redes adicionales (LoRA)
%cd /kaggle/working/stable-diffusion-webui/extensions
!git clone https://github.com/kohya-ss/sd-webui-additional-networks.git
!mkdir /kaggle/working/stable-diffusion-webui/models/Lora
lora_model_name="makimaChainsawMan_offset.safetensors"
lora_model_link="https://civitai.com/api/download/models/6244"
#!wget -O /kaggle/working/stable-diffusion-webui/models/Lora/{lora_model_name} -L {lora_model_link}
%cd /kaggle/working/stable-diffusion-webui
!/opt/conda/envs/webui_env/bin/python3 launch.py --share --enable-insecure-extension-access
Nota: debes descomentar la fila del modelo de tu elección, para poder usar ese modelo (la fila que comienza con #!wget -O
).
Ahora inicia la maquina virtual y luego ejecuta la celda haciendo click en el botón a de ejecutar que aparece al costado izquierdo de la celda.
Toca esperar unos minutos hasta que cargue y nos aparezca el enlace para abrir Stable Diffusion.
Para descargar las imagenes se puede hacer cada vez que genere o comprimirlos y descargarlo. Ejecutar:
# comprima las imágenes en output.zip. A continuación, puede descargarlo en Data -> Output
!zip -q -r output.zip /kaggle/working/stable-diffusion-webui/outputs
!mv /kaggle/working/stable-diffusion-webui/output.zip /kaggle/working/output.zip
Publicación original en ingles en: https://www.kaggle.com/code/amida168/stable-diffusion-webui-various-models