Главная

Tuesday, 27 August 2024

Оптимизация ComfyUI.

Всем привет.

Предлагаемая идея полностью заимствована с ИИ-практикума сайта 3DNews.ru.

Все чаще меня удручает тот факт, что имеющаяся в моем распоряжении видавшая виды GTX 1080 чудовищно медленно обрабатывает workflow с SD3M/SDXL/Flux моделями - генерация картинки идёт со скоростью до 30 секунд на каждую итерацию, и, если учесть, что параметр «Steps» в пробном workflow установлен в значение «22», времени уходит неоправданно много.

Поэтому проведём небольшую оптимизацию ComfyUI - воспользуемся Python-модулем venv (virtual environments, очень полезная вещь между прочим), призванным, в частности, ускорять работу генеративных ИИ-моделей. В комплект поставки портативной версии ComfyUI он не входит, однако есть множество способов его установки, которые в итоге сводятся к развёртыванию полноценного окружения Python на локальном ПК - и активации необходимого модуля уже из этого окружения.

Среди истинных фанатов генеративного ИИ давно водится за правило иметь у себя несколько популярных генераторов как то AUTOMATIC1111, Forge, Fooocus и ComfyUI.

В этом случае для нас всё значительно проще: модуль venv уже развёрнут в AUTOMATIC1111, и всё, что требуется сделать для активации его при запуске рабочей среды ComfyUI, - это должным образом произвести его вызов. 

Скопируем наш run_nvidia_gpu.bat в новый, с именем, допустим, run_with_venv.bat. Исходный файл запуска весьма лаконичен — он просто вызывает портативно развёрнутую копию Python с параметром --windows-standalone-build:

.\python_embeded\python.exe -s ComfyUI\main.py --windows-standalone-build

pause

Параметр этот сам по себе не слишком однозначен - он подразумевает некие оптимизации, которые, скорее всего, рассчитаны как раз на более свежие графические адаптеры NVIDIA и потому могут ухудшать жизнь тех, кто до сих пор продолжает хранить верность своим заслуженным GTX. По этой причине уберём --windows-standalone-build из командной строки, а заодно откажется и от другой новомодной оптимизации — активного по умолчанию «умного менеджера памяти», smart memory, который стремится удерживать как можно больше информации в VRAM, не выгружая её. Это действительно ускоряет рисование ИИ-картинок, однако вместе с тем превращает наш морально устаревший компьютер в однозадачную систему — ни заниматься веб-сёрфингом, ни даже работать с документами и почтой на ПК параллельно с активностью рабочей среды становится уже невозможно. Так что для тех, кто не располагает выделенным компьютером для ИИ-генераций, оптимальным представляется такой BAT-файл для запуска ComfyUI:

@echo off

call cd D:\SDPortable\stable-diffusion-webui\venv\Scripts

echo %cd%

call activate.bat

echo venv activated

call cd D:\SDComfyUI

echo %cd%

call .\python_embeded\python.exe -s ComfyUI\main.py --disable-smart-memory

pause


Модифицировать свой BAT-файл для запуска ComfyUI с предварительной активацией venv можно в любом простом текстовом редакторе. Здесь предполагается, что портативная установка ComfyUI проведена в каталог D:\SDComfyUI\, а AUTOMATIC1111 ранее была  проинсталлирована в D:\SDPortable\. Да-да, я не устаю повторять что portable вариант любой сборки для вас всегда будет предпочтительнее. Конечно еcли у вас не Matrix.

Многочисленные «echo» нужны просто для визуального контроля того, что смена директорий проходит нормально и нужные команды исполняются, — после того как всё будет отлажено, их можно убрать из BAT-файла.

В принципе это все, ваш ComfyUI теперь должен работать намного веселее.

Удачи.

6 comments:

  1. Человек не знаком с кодом ComfyUI, поэтому его советы являются тупо "мне так кажется".

    ReplyDelete
  2. Кто вам мешает предметно поспорить с ним на 3DNews? Ну чтобы нам не казалось).

    ReplyDelete
  3. Я тут прочитал, тут и пишу.

    Цитата "скорее всего, рассчитаны как раз на более свежие графические адаптеры NVIDIA и потому могут ухудшать жизнь тех..." -

    - "охренительное техническое обоснование"!!!

    Типа:

    - "Я просто не знаю, что там скрывается за этим ключом запуска, но мне кажется, что это команда на запуск межконтинентальной ракеты"

    Не знаешь - не болтай херню всякую...

    ReplyDelete
  4. Обязательно передам ваши замечания автору идеи. И следовательно - критикуеш, предлагай! Где можно почитать про Ваши идеи оптимизации ComfyUI?

    ReplyDelete
  5. До речі, ComfyUI працює через venv в Stabіlity Matrix та в SimpleSDXL.

    ReplyDelete
  6. --force-fp16, for VRAM optimal usage
    --disable-smart-memory, for VRAM agressive reusage

    ReplyDelete

А что вы думаете по этому поводу?