Xformers - linwownil/stable-diffusion-webui GitHub Wiki

Xformers

Xformers library is an optional way to speedup your image generation.

This optimization is only available for nvidia gpus, it speeds up image generation and lowers vram usage at the cost of producing non-deterministic results.

Note: Both Windows and linux should no longer need to build. On 1/23/23 webui shifted from a user-built wheel to an official wheel along with other package upgrades, shown in this PR

If you use a Pascal, Turing, Ampere, Lovelace or Hopper card with Python 3.10, launch the repo with --xformers and a compatible wheel will be installed.

Building xformers on Windows by @duckness

  1. Install VS Build Tools 2022, you only need Desktop development with C++

setup_COFbK0AJAZ

  1. Install CUDA 11.3 (later versions are not tested), select custom, you only need the following (VS integration is probably unecessary):

setup_QwCdsQ28FM

  1. Clone the xFormers repo, create a venv and activate it
git clone https://github.com/facebookresearch/xformers.git
cd xformers
git submodule update --init --recursive
python -m venv venv
./venv/scripts/activate
  1. To avoid issues with getting the CPU version, install pyTorch seperately:
pip install torch torchvision --extra-index-url https://download.pytorch.org/whl/cu113
  1. Then install the rest of the dependencies:
pip install -r requirements.txt
pip install wheel
  1. As CUDA 11.3 is rather old, you need to force enable it to be built on MS Build Tools 2022. Do $env:NVCC_FLAGS = "-allow-unsupported-compiler" if on powershell, or set NVCC_FLAGS=-allow-unsupported-compiler if on cmd

  2. You can finally build xFormers, note that the build will take a long time (probably 10-20minutes), it may initially complain of some errors but it should still compile correctly.

OPTIONAL tip: To further speed up on multi-core CPU Windows systems, install ninja https://github.com/ninja-build/ninja. Steps to install:

  1. download ninja-win.zip from https://github.com/ninja-build/ninja/releases and unzip
  2. place ninja.exe under C:\Windows OR add the full path to the extracted ninja.exe into system PATH
  3. Run ninja -h in cmd and verify if you see a help message printed
  4. Run the follow commands to start building. It should automatically use Ninja, no extra config is needed. You should see significantly higher CPU usage (40%+).
python setup.py build
python setup.py bdist_wheel

This has reduced build time on a windows PC with a AMD 5800X CPU from 1.5hr to 10min. Ninja is also supported on Linux and MacOS but I do not have these OS to test thus can not provide step-by-step tutorial.

  1. Run the following:
python setup.py build
python setup.py bdist_wheel
  1. In xformers directory, navigate to the dist folder and copy the .whl file to the base directory of stable-diffusion-webui

  2. In stable-diffusion-webui directory, install the .whl, change the name of the file in the command below if the name is different:

./venv/scripts/activate
pip install xformers-0.0.14.dev0-cp310-cp310-win_amd64.whl
  1. Ensure that xformers is activated by launching stable-diffusion-webui with --force-enable-xformers

Building xformers on Linux (from anonymous user)

  1. go to the webui directory
  2. source ./venv/bin/activate
  3. cd repositories
  4. git clone https://github.com/facebookresearch/xformers.git
  5. cd xformers
  6. git submodule update --init --recursive
  7. pip install -r requirements.txt
  8. pip install -e .