понедельник, 9 октября 2023 г.

Собственный автономный экзмепляр Stable Diffusion на ноутбуке с видеокартой NVIDIA

Наконец-то и я добрался до генеративных возможностей современных нейросетей по части картинок. Сначала поигрался немного с https://www.midjourneyai.ai/ (нашлось поиском одним из первых), где бесплатно в браузере можно нагенерировать всякой всячины (вроде бы там есть лимит порядка 20-ти запросов в сутки, но он будто бы забывается при повторном открытии браузера).

Потом я озадачился тем, чтобы похожую технологию запустить на своём тазике (MaiBenBen XiaoMai 6S-2 c NVIDIA GeForce MX150 на борту под управлением Windows 10 21H1 64-bit). Об этом эксперименте и пойдёт речь...

В качестве отправной точки можно взять русскоязычную инструкцию наподобие такой - Локальные нейросети (генерация картинок, локальный chatGPT). Запуск Stable Diffusion на AMD видеокартах. В ней упоминяется open-source UI-wrapper stable-diffusion-webui, который ранее мне уже попадался (был добавлен в закладки). С него-то я и решил начать

Недолго думая, скачал упомянутый репозиторий в локальную папку (изначально у него размер совсем крошечный - всего 36 MB, из которых git-структуры заниимают 33 MB). С имевшимся Python 3.11.5 эта оболочка подружиться не захотела (скрипт об этом выводит предупреждения), поэтому заменил его на последнюю версию предыдущего поколения Python 3.10.11.
Модель по рекомендации из упомянутой статьи - Deliberate (для пробы взял последнюю версию - V3).
Ещё потребовалось установить CUDA Toolkit 12.2 (другая версия, возможно, тоже подойдёт). В Web-инсталляторе есть возможность отключить установку дополнительных компонентов, от новых версий драйвера видео-адаптера и PhysX я не стал отказываться.
После этого всё заработало как требуется.
Запуск с такими параметрами:
webui-user.bat --lowvram --precision full --no-half --skip-torch-cuda-test
Первичный вывод в лог выглядит таким образом:
venv "D:\???\stable-diffusion-webui\venv\Scripts\Python.exe"
Python 3.10.11 (tags/v3.10.11:7d4cc5a, Apr  5 2023, 00:38:17) [MSC v.1929 64 bit (AMD64)]
Version: v1.6.0
Commit hash: 5ef669de080814067961f28357256e8fe27544f4
Launching Web UI with arguments:
no module 'xformers'. Processing without...
no module 'xformers'. Processing without...
No module 'xformers'. Proceeding without it.
Loading weights [aadddd3d75] from D:\???\stable-diffusion-webui\models\Stable-diffusion\deliberate_v3.safetensors
Creating model from config: D:\???\stable-diffusion-webui\configs\v1-inference.yaml
Running on local URL:  http://127.0.0.1:7860

To create a public link, set `share=True` in `launch()`.
Startup time: 38.5s (prepare environment: 12.9s, import torch: 9.2s, import gradio: 3.9s,
  setup paths: 4.4s, initialize shared: 1.0s, other imports: 3.2s, setup codeformer: 0.4s,
  load scripts: 1.8s, create ui: 1.3s, gradio launch: 0.7s).
Applying attention optimization: Doggettx... done.
Model loaded in 45.5s (load weights from disk: 1.7s, create model: 1.0s,
  apply weights to model: 32.9s, apply half(): 7.0s, load VAE: 0.2s, calculate empty prompt: 2.5s).
Для первой пробы я ввёл задание small red cat playing with a large green ball, и не прошло и полгода, как я получил имидж, отдалённо корреллирующий с ключевыми словами:
00000-1142550
Как говорится, какой запрос - такой и результат! Формально, все ключевые слова учтены :)
small red cat playing with a large green ball
Steps: 20, Sampler: DPM++ 2M Karras, CFG scale: 7, Seed: 1142550, Size: 512x512, Model hash: aadddd3d75, Model: deliberate_v3, Version: v1.6.0
Для генерации этой картинки размером 512x512 нейросеть в тисках моего нотубука пыхтела порядка 10 минут, что, с одной стороны, немножко слишком долго, а с другой - легко ли найти что-то подобное поиском в интернетах? Не говоря уж о соблюдении авторских права на найденное изображение. А тут - "своё" генеративное искусство. Шик!
Возможно, некотороего ускорения можно добиться, если прикрутить модуль xformers (дополню заметку, если разберусь с этим моментом).
Отмечу также, что итоговый каталог с приручённой нейросетью занимает 12 GB (включая модель по-умолчанию v1-5-pruned-emaonly.safetensors размером 4 GB и дополнительно загруженную модель deliberate_v3.safetensors размером 2 GB). Установленный NVIDIA GPU Computing Toolkit занимает 2 GB (в "C:\Program Files\NVIDIA GPU Computing Toolkit").
Для сравнения приведу результаты других генераторов с тем же запросом.
www.midjourneyai.ai - время порядка 1 минуты, размер 1024x1024:
62576935c2f744c3b2fc85941fcd0c27-Comfy-UI-138354
www.stablediffusionai.ai - время ок. 1 минуты, размер 1024x1024:
9ae460598f7b41aabfee5561c2587888-Comfy-UI-132859

С котами и мячами, допустим, всё ясно, а как насчёт картинок из "кучи букв"?
Из заметки "How to run a stable diffusion model quickly without GPUs" я позаимствовал запрос такого вида "dark sci-fi , A huge radar on mountain ,sunset, concept art ,high detail,warm lighting ,volumetric godrays,vivid beautiful,trending on artstation by Jord".
Спустя 10 минут я стал обладателем своего варианта "картины с радаром в лучах заката":
00001-3643061805
Выглядит эпично и оригинально.
Пожалуй, на этом можно и остановиться :)

Комментариев нет:

Отправить комментарий