А АTuesday 27 August 2024

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

Всем привет.

Все чаще меня удручает тот факт, что имеющаяся в моем распоряжении видавшая виды 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 теперь будет бегать намного веселее. Идея заимствована с ИИ-практикума сайта 3DNews.ru.

Удачи.

2 comments:

Anonymous said...

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

Nyukers said...

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

Post a Comment

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

Версия на печать

Популярное