These instructions are for setting up a Stable Diffusion instance on Google Cloud.
I created an n1-standard-4 instance with an nVidia Tesla T4 GPU, which has 16GB of VRAM. I chose the “c0-deeplearning-common-cu110-v20220806-debian-10” image and sized it to 80GB. If I had it to do over again, I’d make a separate disk for the models and the generated output, but it’s not a big deal.
Here are the (cleaned up) commands I used.
# after GCP has completed installing nVidia drivers sudo reboot # install a Python virtual-environment tool wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh bash Miniconda3-latest-Linux-x86_64.sh conda update -n base -c defaults conda # get the Stable Diffusion model and put it in a central # location, because you'll probably try out different forks # of the SD code and don't want to accidentally delete the # model curl https://www.googleapis.com/storage/v1/b/aai-blog-files/o/sd-v1-4.ckpt?alt=media > ~/sd-v1-4.ckpt # get a copy of the original project git clone https://github.com/CompVis/stable-diffusion # let miniconda set up all the dependencies cd stable-diffusion conda env create -f environment.yaml conda activate ldm # make a symlink to the SD model within the project mkdir -p models/ldm/stable-diffusion-v1/ ln -sf ~/sd-v1-4.ckpt models/ldm/stable-diffusion-v1/model.ckpt
Then do this each time you ssh back into the machine:
cd stable-diffusion conda activate ldm python scripts/txt2img.py --prompt "a photograph of an astronaut riding a horse" --plms
I’m having good luck with these commands:
$ python scripts/txt2img.py \ --prompt "abstract painting of sunset" \ --seed 42 --n_sample 1 --n_iter 8 \ --ddim_steps 100 --plms --H 512 --W 832 $ python scripts/img2img.py \ --prompt "woman standing next to jet airplane by pablo picasso" \ --init-img imput-image.jpg --skip_grid --scale 12 \ --seed 42 --n_sample 1 --n_iter 8 --ddim_steps 100 \ --strength 0.8
Since GCP assigns ephemeral IP addresses by default to new instances, and you pay for static ones that you’re not using, I have a simple line in my Bash history that helps connect after the instance starts up and sets up an sshfs share to easily get at the output:
SDIP=x.x.x.x; sshfs $SDIP: ~/instance-sd ; ssh $SDIP
The other fork you should know about is maintained by basujindal. It has more features than the original code, and runs on lower-spec hardware. I haven’t found it to run any faster on GCP.
Artists who use color well to model for interesting images (“an apple in the style of yuri petrenko”)