Запускаем Stable Diffusion на GPU AMD Radeon в Docker

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

Для запуска нам понадобится Ubuntu с установленными: git, make, docker и ROCm.

ROCm установим по инструкции.

Краткая инструкция установки ROCm
sudo apt install "linux-headers-$(uname -r)" "linux-modules-extra-$(uname -r)"
sudo usermod -a -G render,video $LOGNAME
wget https://repo.radeon.com/amdgpu-install/6.1.2/ubuntu/jammy/amdgpu-install_6.1.60102-1_all.deb
sudo apt install ./amdgpu-install_6.1.60102-1_all.deb

# If an error occurs, you must run:
sudo chown -Rv _apt:root /var/cache/apt/archives/partial/
sudo chmod -Rv 700 /var/cache/apt/archives/partial/

sudo apt update
sudo apt install amdgpu-dkms
sudo apt install rocm-hip-libraries
sudo reboot

Скопируем проект позволяющий настроить и запустить Stable Diffusion в docker контейнере:

git clone https://github.com/HardAndHeavy/stable-diffusion-webui-rocm-docker
cd stable-diffusion-webui-rocm-docker

Запустим Stable Diffusion с помощью команды make run. При первом запуске будет происходить длительный процесс инициализации. Когда этот процесс завершится, Stable Diffusion станет доступен по адресу http://localhost.

Модель для преобразования текста готова, и теперь можно создать обложку для статьи. Предлагаю такую идею для обложки: изображение грузовика с контейнером, на котором написано «Stable Diffusion». Грузовик стоит в порту, готовый к погрузке на контейнеровоз с именем «docker AMD».

Для упрощения процесса рисования нам потребуется расширение ControlNet. Чтобы его установить, нужно перейти на вкладку «Extensions» - «Available». Затем следует нажать кнопку «Load from». После этого откроется список доступных расширений, в котором нужно выбрать «sd-webui-controlnet» и нажать кнопку «Install». Далее необходимо перейти на вкладку «Installed» и нажать кнопку «Apply and quit». После этого контейнер остановится, и чтобы запустить его снова, нужно выполнить команду make run.

Для рисования я буду использовать модель Level4 XL. Её и другие модели можно найти на сайте civitai.com.

Исходя из идеи, промт будет таким: «container ship, container truck, oil painting, heavy brush strokes dominate the canvas, calm colors, pier». Негативный промт — «watercolour». Sampling method выберем DPM++ SDE, Sampling steps — 15, CFG Scale — 2. Теперь можно создать изображение, нажав на кнопку «Generate».

Результат генерации
Результат генерации

Поскольку на картине нет надписей и корабля в порту, как было задумано, нам нужно внести изменения. Для этого мы воспользуемся рисованием по контуру и ещё найдём подходящее изображение в интернете:

Подходящее изображение найденное в интернете
Подходящее изображение найденное в интернете

Для рисования по контору скачаем файл diffusers_xl_canny_full.safetensors, который необходимо разместить в каталоге ./data/stable-diffusion/models/ControlNet. Перед копированием файла необходимо предоставить доступ к каталогу data, так как контейнер запускался от имени пользователя root. Для этого нужно выполнить команду sudo chmod -R 777./data.

На вкладке «ControlNet» загрузим изображение, которое мы нашли в интернете. Установим флаг Pixel Perfect. Control Type выберем Canny, Preprocessor — canny, Model — diffusers_xl_canny_full [2b69fca4], Control Weight — 0.7, Ending Control Step — 0.5. Увеличим размер холста пропорционально загруженному изображению: Width — 828, Height — 476. В результате генерации получится два изображения: рисунок и представление препроцессора для режима canny. Представление препроцессора можно отредактировать в любом графическом редакторе, удалив ненужные линии и добавив необходимые. После этого препроцессорное представление можно сразу загрузить в изображение для «ControlNet».

Результат генерации
Сгенерированное изображение
Сгенерированное изображение
Препроцессорное представление
Препроцессорное представление

В графическом редакторе мы изменяем линии, представленные в препроцессоре, и добавляем надписи отдельным слоем. Затем мы сохраняем результат в виде двух изображений: одно без первого слоя, а другое — без второго.

Работа в графическом редакторе
Отредактированное препроцессорное представление
Отредактированное препроцессорное представление
Надписи
Надписи

Вместо исходного изображения загрузим отредактированный контур. Перейдём на вторую вкладку «ControlNet Unit 1» и добавим изображение надписей. Control Type выберем Canny, Preprocessor — canny, Model — diffusers_xl_canny_full [2b69fca4], Control Weight — 1, Ending Control Step — 1. Обратите внимание, что вес и шаг остановки установлены на 1, чтобы надписи были чёткими и не исчезали.

Нажимаем сгенерировать изображение и получаем обложку для статьи.

Замечание

Для замены лиц рекомендую использовать ReActor. После установки ошибка исправляется докачиванием файла inswapper_128.onnx по рекомендации в каталог .data/stable-diffusion/models/insightface.

Так же лица хорошо заменяет IP-Adapter FaceID, Instant ID и уже описанный здесь Canny.

Источник: https://habr.com/ru/articles/821967/


Интересные статьи

Интересные статьи

Мы выпустили полностью нативную версию браузера Brave для архитектуры ARM64 на Windows. Впервые установив Brave на устройство на базе ARM64 (или проведя чистую переустановку), вы получите ещё более бы...
Привет всем, хочу поделиться своим сборником всяких портабелек нейронок разного пошиба для винды, где уже всё установлено и надо приложить минимальные усилия, чтобы всё это запустить. Вообще все эти ш...
Привет, Хабр!Традиционно начало декабря — время, когда релизятся все продукты JetBrains. И сегодня я расскажу о CLion 2021.3 — новой версии нашей кроссплатформенной IDE для разработки на C и C++....
Иногда YouTube или Twitch не подходят как стриминговая платформа — скажем, если вы пилите портал с вебинарами или контентом 18+, нарушаете авторские права или хотите максимально отгор...
Сегодня мне попался весьма любопытный баг: Docker for Windows не запустится, если у вас запущена панель управления драйвером Razer Synapse. Но интереснее всего то, почему так случилось… ...