Настройка стабильного Diffusion для MacOS


Поскольку ландшафт быстро меняется, эта статья быстро устаревает!

Если у вас возникли проблемы с приведенным ниже руководством, я рекомендую вам ознакомиться с последними советами здесь.


Stable Diffusion — это модель скрытой диффузии текста в изображение, которая недавно стала открытой.

Для пользователей Linux с выделенными графическими процессорами NVDIA инструкции по настройке и использованию относительно просты. Однако для пользователей MacOS вы не сможете использовать проект «из коробки». Не волнуйтесь! Есть несколько шагов, чтобы заставить его работать!

Настройка среды

Для начала вам потребуется установить Python, Conda и несколько других библиотек:

# Install Python, Cmake, Git, and Protobuf
brew install python 
  cmake 
  git 
  protobuf

# Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

# Install Conda:
## Either use this for older "pre-M1" Macs:
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.sh
bash Miniconda3-latest-MacOSX-x86_64.sh

## Or use this for older M1 Macs:
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-arm64.sh
bash Miniconda3-latest-MacOSX-arm64.sh
Войдите в полноэкранный режим Выйти из полноэкранного режима

Возможно, вам придется перезапустить терминал, чтобы изменения для новых библиотек были подхвачены.

Клонируйте этот форк проекта и проверьте ветку с яблочным патчем:

git clone https://github.com/magnusviri/stable-diffusion
cd stable-diffusion
git checkout apple-silicon-mps-support
Войти в полноэкранный режим Выйдите из полноэкранного режима

На этом этапе вам нужно убедиться, что вы используете Python 3. Ознакомьтесь с этой статьей о различных способах сделать Python 3 версией по умолчанию на вашем Mac.

Настройте среду Conda:

conda env create -f environment-mac.yaml
conda activate ldm
Вход в полноэкранный режим Выйти из полноэкранного режима

И, наконец, установите следующую переменную окружения:

export PYTORCH_ENABLE_MPS_FALLBACK=1
Войти в полноэкранный режим Выйти из полноэкранного режима

Изменения в коде

Наше окружение теперь настроено, но нам нужно внести несколько изменений, чтобы код мог плавно вернуться к использованию CPU (если потребуется!).

Добавьте .contiguous() в ldm/models/diffusion/plms.py#L27 в результате:

-        attr = attr.to(torch.float32).to(torch.device(self.device_available))
+        attr = attr.to(torch.float32).to(torch.device(self.device_available)).contiguous()
Войти в полноэкранный режим Выйти из полноэкранного режима

Аналогично добавьте новую строку x = x.contiguous() после ldm/modules/attention.py#L211, чтобы это выглядело примерно так:

def _forward(self, x, context=None):
+       x = x.contiguous()
        x = self.attn1(self.norm1(x)) + x
Войти в полноэкранный режим Выход из полноэкранного режима

Загрузка стабильных диффузионных весов

Давайте установим наши диффузионные грузы

curl "https://www.googleapis.com/storage/v1/b/aai-blog-files/o/sd-v1-4.ckpt?alt=media" > sd-v1-4.ckpt
Войти в полноэкранный режим Выйти из полноэкранного режима

Создание изображений 🚀

Теперь вы должны быть готовы к созданию изображений на вашем устройстве MacOS с помощью Stable Diffusion! 🎉 🎉

python scripts/txt2img.py --prompt "a drawing of web developers" --plms --ckpt sd-v1-4.ckpt --skip_grid --n_samples 1
Вход в полноэкранный режим Выход из полноэкранного режима


Трюки и хаки взяты с сайта https://github.com/CompVis/stable-diffusion/issues/25 — спасибо всем участникам этой темы за то, что подсказали, как заставить все работать!

Оцените статью
devanswers.ru
Добавить комментарий