/stable-diffusion-macos-install-help

Stable Diffusion: macOS install help with homebrew, python, anaconda, dream, etc.

Stable Diffusion: macOS install help

Stable Diffusion macOS install help is our guide for this kind of setup:

See our Stable Diffusion image gallery:

https://github.com/joelparkerhenderson/stable-diffusion-image-gallery

Guide Goals

This guide is our notes about our preferred way of installing Stable Diffusion.

This guide is intentionally step-by-step, because we want to help more people be successful, including people who are trying these kinds of software installs for the first time.

This guide is intentionally using steps that help multiple macOS users on the same system, because we want this guide to be able to help people who share a computer, such as teachers and students in schools.

This guide is intentionally doing "kitchen sink" approach, because this can help people with more capabilities as they try Stable Diffusion.

We welcome constructive feedback via GitHub issues, or pull requests, or email to joel@joelparkerhenderson.com.

Thanks

Thanks to many developers working on Stable Diffusion and help for it, and special thanks to:

https://www.assemblyai.com/blog/how-to-run-stable-diffusion-locally-to-generate-images/

https://github.com/lstein/stable-diffusion/blob/main/README-Mac-MPS.md

https://news.ycombinator.com/item?id=32678664

Homebrew

Install:

% /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Verify the path is typical:

% brew --prefix
/opt/homebrew

Verify your system can locate the program:

% which brew
/opt/homebrew/bin/brew

Verify the version is 3.5.10 or higher:

% brew --version
Homebrew 3.5.10

Python

Install:

brew install python

Verify the path is typical:

% brew --prefix python
/opt/homebrew/opt/python@3.10

Verify your system can locate the program:

% which python3
/opt/homebrew/bin/python3

Verify the version is 3.10.6 or higher:

% python3 --version
Python 3.10.6

cmake

Install:

% brew install cmake

Verify the path is typical:

% brew --prefix cmake 
/opt/homebrew/opt/cmake

Verify your system can locate the program:

% which cmake
/opt/homebrew/bin/cmake

Verify the version is 3.24.1 or higher:

% cmake --version
cmake version 3.24.1

git

Install:

% brew install git

Verify the path is typical:

% brew --prefix git  
/opt/homebrew/opt/git

Verify your system can locate the program:

% which git
/opt/homebrew/bin/git

Verify the version is 2.37.3 or higher:

% git --version
git version 2.37.3

protobuf

Install:

% brew install protobuf

Verify the path is typical:

% brew --prefix protobuf
/opt/homebrew/opt/protobuf

Rust

Install:

% brew install rust

Verify the path is typical:

% brew --prefix rust
/opt/homebrew/opt/rust

Verify your system can locate the program:

% which rustc
/opt/homebrew/bin/rustc

Verify the version is 1.63.0 or higher:

% rustc --version
rustc 1.63.0

Anaconda

Install:

% brew install anaconda

Verify:

% brew info --cask anaconda
==> anaconda: 2022.05 (auto_updates)
https://www.anaconda.com/
/opt/homebrew/Caskroom/anaconda/2022.05 (304.8MB)
…

Script

Anaconda uses an installation script, and you must run it, such as:

% sudo /opt/homebrew/Caskroom/anaconda/2022.05/Anaconda3-2022.05-MacOSX-arm64.sh

License

Anaconda prompts you to agree to the license:

Do you accept the license terms? [yes|no]

Type yes, then return.

Directory

Anaconda prompts you to choose an installation directory:

Anaconda3 will now be installed into this location:
/Users/…/anaconda3

  - Press ENTER to confirm the location
  - Press CTRL-C to abort the installation
  - Or specify a different location below

If you are generally a novice user, then use the Anaconda default directory, such as:

/Users/YourNameHere/anaconda3

If you are generally an advanced user, then you may want to use our preferred naming convention, which installs many programs into the user's opt directory, such as:

$HOME/opt/anaconda3

Type your installation directory, then return.

conda init

Anaconda prompts you to run this:

Do you wish the installer to initialize Anaconda3
by running conda init? [yes|no]

Type yes, then return.

Success

Anaconda installs and advises you:

For changes to take effect, close and re-open your current shell.

Verify the installation works by running Anaconda using its full path:

% /opt/anaconda3/condabin/conda --version
conda 4.13.0

Path

Optionally, you can append the Anaconda path to your environment, such as by editing any of these:

  • /etc/bashrc

  • /etc/zshrc

  • $HOME/.bashrc

  • $HOME/.zshrc

Export your preferred path such as:

export PATH="$PATH:$HOME/opt/anaconda3/condabin"

Restart your terminal, or source the path file, or equivalent.

After you add the Anaconda path, then you can verify it:

% conda --version
conda 4.13.0

Update

Update conda just in case it's changed recently:

% conda update -n base -c defaults conda

Stable Diffusion weights file

Download the Stable Diffusion weights file; heads up that the file is somewhat large, more than 4GB.

curl "https://www.googleapis.com/storage/v1/b/aai-blog-files/o/sd-v1-4.ckpt?alt=media" > sd-v1-4.ckpt

We prefer to put the file in its own directory so it's easier to access for all our macOS users:

% sudo mkdir /opt/stable-diffusion-ckpt
% sudo mv sd-v1-4.ckpt /opt/stable-diffusion-ckpt

Stable Diffusion repository

This section comes from:

https://github.com/lstein/stable-diffusion/blob/main/README-Mac-MPS.md

Install

Install:

% cd ~
% git clone https://github.com/lstein/stable-diffusion.git
% cd stable-diffusion

Link

Link to the CKPT file:

% mkdir -p models/ldm/stable-diffusion-v1/
% PATH_TO_CKPT="/opt/stable-diffusion-ckpt"  # use your own directory that contains your CPKT file
% ln -sfn "$PATH_TO_CKPT/sd-v1-4.ckpt" models/ldm/stable-diffusion-v1/model.ckpt

Create conda environment

Create:

% CONDA_SUBDIR=osx-arm64 conda env create -f environment-mac.yaml

You should see output such as:

Collecting package metadata (repodata.json)

Restart your terminal.

Activate

Activate:

% conda activate ldm

Preload models

Preload python models:

% python scripts/preload_models.py

Heads up that the script does downloads that are somewhat large, more than 1GB.

You should set output such as:

preloading bert tokenizer...
preloading Kornia requirements ...
preloading CLIP model ...

Run dream

Run:

% python scripts/dream.py --full_precision  # half-precision requires autocast and won't work

You should see output such as:

* Initializing, be patient...
…
* Initialization done! Awaiting your command (-h for help, 'q' to quit)
dream> 

Troubleshooting TypeAlias

If you get this error...

File "…/stable-diffusion/src/k-diffusion/k_diffusion/sampling.py", line 10, in <module>
    from typing import Optional, Callable, TypeAlias
ImportError: cannot import name 'TypeAlias' from 'typing' ("…/opt/anaconda3/envs/ldm/lib/python3.9/typing.py)

Then try editing this file:

src/k-diffusion/k_diffusion/sampling.py`

Change this line:

from typing import Optional, Callable, TypeAlias

To:

from typing import Optional, Callable
from typing_extensions import TypeAlias

invoke-ai/InvokeAI#302

Generating

When you have the dream prompt:

dream>

Then you can enter your own command such as:

"photography of a cat on the moon" -s 20 -n 3 --sampler k_euler -W 384 -H 384

You should see output such as:

Generating…
Outputs:
outputs/img-samples/000001.2080708373.png …
outputs/img-samples/000001.1839445463.png …
outputs/img-samples/000001.2463981689.png …

You might see warning messages that you can ignore for now:

…/stable-diffusion/ldm/modules/embedding_manager.py:152: 
UserWarning: The operator 'aten::nonzero' is not currently supported 
on the MPS backend and will fall back to run on the CPU. 
This may have performance implications.

Your output files are now ready in this directory:

outputs/img-samples