Skip to content

Xformers

ClashSAN edited this page Jul 1, 2023 · 14 revisions

Xformers Library (Optional)

The Xformers library provides an optional method to accelerate image generation. This enhancement is exclusively available for NVIDIA GPUs, optimizing image generation and reducing VRAM usage. Older versions below 0.0.20 will produce non-deterministic results.

Important Notice - No Need for Manual Installation

As of January 23, 2023, neither Windows nor Linux users are required to manually build the Xformers library. This change was implemented when WebUI transitioned from a user-built wheel to an official wheel. You can view the package upgrades and other details of this update in this PR.

Usage

If you are using a Pascal, Turing, Ampere, Lovelace, or Hopper card with Python 3.10, simply launch the repository using the --xformers flag. The compatible wheel will be automatically 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 .
Clone this wiki locally