Установка и запуск нейронной сети на ПК с видеокартой AMD

Пост опубликован в блогах iXBT.com, его автор не имеет отношения к редакции iXBT.com

По состоянию статистики Steam на конец января 2023 года, видеокарты компании AMD являются аутсайдерами на рынке графических ускорителей. И всё больше производителей профессионального ПО и игр предпочитают в первую очередь оптимизировать свои продукты под графические решения от компании Nvidia. Такое положение дел не обошло стороной и нейронные сети. В этой небольшой инструкции вы узнаете, как назло общепринятым стандартам, заставить нейронную сеть Stable Diffusion (генерация картинок по любому текстовому запросу) работать c видеокартами AMD.


Установка сети

В настоящее время существует примерно три реализации Stable Diffusion, которые со скрипом, но способны использовать GPU AMD для ускорения обработки задач. Однако все они привязаны к новейшей архитектуре RDNA или работают только под Linux, что автоматом отсеивает большинство красных пользователей, которые не хотят разоряться на покупке новой видеокарты или устанавливать непривычную ОС из-за желания испытать нейронную сеть. Обойдём эти ограничения, заставив нейронную сеть Stable Diffusion работать на Windows 10/11 c любым относительно современным GPU AMD!

Минимальный системные требования:

ОС: Windows 10/11/Linux 64 Бит.

RAM: 8+ Гб.

CPU: 2/4+ ядра 3.0+ ГГц.


GPU: AMD (Возможна работа силами CPU).

1. Скачиваем и устанавливаем необходимые компоненты: 

64-bit Git for Windows Setup.

Python 3.10.6 (Не забудьте поставить галочку PATH).

2. Загружаем архив с нейронной сетью.

Нейронная сеть

3. Распаковываем нейронную сеть в корень любого носителя.


Расположение сети на носителе

4. Скачиваем архивы с модифицированными файлами для работы нейронной сети с видеокартами AMD.

Архивы:

5. Переходим в папку C:\stable-diffusion-webui-directml\repositories и распаковываем все файлы архива k-diffusion-directml-master.zip (Не его папку, а файлы, что внутри неё) в папку k-diffusion. Аналогично поступаем с архивом stablediffusion-directml-main.zip, но его файлы уже распаковываем в папку stable-diffusion-stability-ai.

Правильный вид файлов

6. Теперь нам необходимо в файл запуска нейронной сети webui-user.bat  добавить команды для обхода проверки отсутствующих ядер CUDA и общей оптимизации. Подробнее о параметрах запуска вы всегда можете почитать тут.

@echo off

set PYTHON=
set GIT=
set VENV_DIR=
set COMMANDLINE_ARGS= --lowvram --disable-nan-check --autolaunch --opt-split-attention
set GIT_SSL_NO_VERIFY=true

call webui.bat

Более быстрая генерация (Возможны баги):

@echo off

set PYTHON=
set GIT=
set VENV_DIR=
set COMMANDLINE_ARGS= --lowvram --precision full --no-half --no-half-vae --opt-sub-quad-attention --opt-split-attention-v1 --disable-nan-check --autolaunch
set GIT_SSL_NO_VERIFY=true

call webui.bat

7. Скачиваем обученные модели, чтобы наша нейронная сеть понимала, кого и что ей рисовать. Я остановил свой выбор на NeverEnding Dream.

Выбор модели

Переносим файл обученной модели в:

C:\stable-diffusion-webui-directml\models\Stable-diffusion

8. Теперь необходимо скачать файл конфигурации VAE для нормализации конечного изображения и перенести его в:

C:\stable-diffusion-webui-directml\models\VAE

9. Выполняем запуск нейронной сети через файл webui-user.bat в папке C:\stable-diffusion-webui-directm и дожидаемся загрузки и установки всех необходимых компонентов. Если всё прошло успешно, то вас автоматически перенесёт на страницу панели управления нейронной сетью в вашем браузере.

Адрес панели управления

10. Переходим в Setting и в разделе Stable Diffusion выбираем наш VAE. Теперь нам необходимо выбрать алгоритм восстановление лица, который не зависит от наличия CUDA или тензорных ядер Nvidia. Переходим в раздел Face Restoration, выбираем алгоритм GFPGAN. Применяем настройки.

11. Возвращаемся во вкладку txt2img, где для проверки работы ускорения нейронной сети на GPU AMD вводим любой желаемый запрос. По нагрузке на GPU и CPU в диспетчере задач проверяем результат.

Мониторинг

Фанфары, гром и молния! Всё работает.

Результат (RX 550)

Конечный результат получился немного пошлый, но зато сразу после удалось создать красивого рыцаря.

  • Запрос: Knight girl with red hair (Девушка рыцарь с красными волосами).
  • Модель: NeverEnding Dream.
  • Количество проходов: 40 (GPU).
  • Сэмплер: PLMS.
  • Фильтры и стили: нет.
  • Исправление лица: активно.

Заключение

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

ПС. Инструкция для видеокарт Nvidia.