Instalar Stable Disffusion en Ubuntu
Si quieres instalar de forma rápida y sencilla, solo copia y pega.
sudo apt-get update
sudo apt-get install python3.8
wget https://repo.anaconda.com/miniconda/Miniconda3-py38_4.12.0-Linux-x86_64.sh
bash Miniconda3-py38_4.12.0-Linux-x86_64.sh
git clone https://github.com/CompVis/stable-diffusion.git
cd stable-diffusion/
conda env create -f environment.yaml
Hasta aquí es todo instalación de lo necesario, python para procesar el código, anaconda para gestionar los paquetes necesarios y finalmente stable-diffusion. Con todo instalado, solo creamos el entorno con conda 😉
Y una vez creado lo activamos. A tener en cuenta que para poder lanzarlo hace falta:
conda activate ldm
curl https://f004.backblazeb2.com/file/aai-blog-files/sd-v1-4.ckpt > sd-v1-4.ckpt
Estando en el entorno, descargamos el paquete necesario de stable diffusion con curl.
Todo listo para empezar…. Te dejo un ejemplo a mi yo de futuro para que no se me olvide:
python scripts/txt2img.py --prompt "A PIG FLYING" --plms --ckpt sd-v1-4.ckpt --skip_grid --n_samples 1
Bueno… llegado aquí no me funcionó y me dio el error:
runtimeerror no cuda gpus are available ubuntu
Así que posiblemente mi gráfica no estuviera bien configurada, lo cual tras casi 30 min de instalación/descargas era pa matarlo. A ver si reinstalándola de otra manera… si os pasó lo mismo, entrad en: https://developer.nvidia.com/cuda-downloads
Finalmente tuve que instalar una versión de nvidia privativa, ya que la open me estaba cascando… y el error siguiente fue:
RuntimeError: CUDA out of memory. Tried to allocate 114.00 MiB (GPU 0; 3.82 GiB total capacity; 2.22 GiB already allocated; 132.75 MiB free; 2.29 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation. See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF
Demasiado programa para tan poca GPU… pero hay otras formas de conseguirlo y os lo expongo… Utilizar otras mejoras de repositorios mejoradas, os dejo el enlace:
https://github.com/basujindal/stable-diffusion
La diferencia es la carpeta optimizedSD, así que al lanzar el comando solo pon algo como esto:
python optimizedSD/optimized_txt2img.py --prompt "a big house in the montain" --H 512 --W 512 --seed 27 --n_iter 2 --n_samples 5 --ddim_steps 50
De nada 😀