Skip to content

sausheong/stable-diffusion

 
 

Repository files navigation

Stable Diffusion for Mac M1/M2 machines

The original README is here.

This is a fork of the popular CompVis Stable-Diffusion repository, taken from @bfirsh's fork that enabled Mac M1/M2 machines to run Stable Diffusion, using Apple's Metal Performance Shaders (MPS). @bfirsh has also written a short post on how to deploy using his fork.

I forked this out to play around with Stable Diffusion on my own machine and also built a minimal web app over it.

Screenshot of Stable Diffusion web app

Deploying Stable Diffusion

Here are the steps to deploy Stable Diffusion on your M1/M2 machine. I used conda because that's what I'm used to but you can also use pip like @bfirsh. You can download conda here.

Download the repository

Download the repository from Github.

$ git clone https://github.com/sausheong/stable-diffusion.git

Download the weights

Go into the repository directory and create a directory to store your weights.

$ cd stable-diffusion
$ mkdir -p models/ldm/stable-diffusion-v1/

Go to the Hugging Face repository (https://huggingface.co/CompVis/stable-diffusion-v-1-4-original) and download the sd-v1-4.ckpt file (it's about 4GB) and save it as models/ldm/stable-diffusion-v1/model.ckpt.

Install Python 3.10

You need Python 3.10 to run Stable Diffusion. Create a separate environment for running Stable Diffusion and activate it.

$ conda create -n sd python=3.10
$ conda activate sd

Install the requirements

Install all the dependencies.

(sd) $ pip install -r requirements.txt

I find that I need to install OpenCV separately through conda before it works, but your mileage might differ.

(sd) $ conda install opencv

If you're seeing errors like Failed building wheel for onnx you might need to install these packages:

(sd) $ brew install Cmake protobuf rust

And that's it!

Checking if the installation works

Try running the txt2img.py script:

(sd) $ python scripts/txt2img.py --prompt "astronaut riding a horse in photorealistic style"

You should get something like this in the outputs/txt2img-samples/samples directory.

astronaut riding a horse in photorealistic style

Stable Diffusion webapp

I added in a simple webapp that will generate single images and display in a gallery together with the text prompts. To start the web app, go to the webapp directory and run the web app.

(sd) $ cd webapp
(sd) $ flask run

Go to http://localhost:5000/ and you should see a simple web app like this.

Screenshot of Stable Diffusion web app

Have fun with the web app! I ran this on my M1 Pro MacBook Pro with 32GB of RAM and it generates 1 512x512 images in around 1.5 minutes.

Screenshot of Stable Diffusion web app

If you see black images or Rick, that's not a bug, it's because the model detected some potential NSFW images and returned that instead.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Jupyter Notebook 89.6%
  • Python 10.2%
  • Other 0.2%