Найти в Дзене

Установка нейросети "ComfyUI" на Miniconda - часть 2 - установка из bat-файла

Оглавление

Часть 1 - https://dzen.ru/a/ZubUajk1RnuyMqxc

В продолжении темы мы затронем "воспроизводимость" установки ComfyUI на Conda - как ее распространять, чтобы дистрибутив был маленький, и без ошибок у всех вставала.

О тонкостях механизма этой установки почитайте >>> тут <<<, а кто не хочет вдаваться в технические подробности, просто привожу порядок действий.

Установка ComfyUI и ComfyUI-Manager

(в примере на "d:\0\ComfyUI")

md d:\0
cd /d d:\0
git clone https://github.com/comfyanonymous/ComfyUI.git
cd d:\0\ComfyUI\custom_nodes
git clone
https://github.com/ltdrdata/ComfyUI-Manager.git

Создание YML-файла для рассылки пользователям

Сoздание нового "окружения"

Создадим "окружение" с версией питона 3.12 (питон от 3.10 до 3.12, все команды приводятся в для режима conda):

conda create -n venv_comfy312 python=3.12 -y
conda activate venv_comfy312


Установим в него самую главную часть -
"torch-cuda"

conda install pytorch torchvision torchaudio pytorch-cuda=12.4 -c pytorch -c nvidia -y

Установим пакеты через Conda

conda install einops transformers safetensors tokenizers sentencepiece pyyaml scipy psutil kornia aiohttp -y

Установим пакету через PIP (их нет в других conda-каналах)

pip install torchsde spandrel soundfile

Экспортируем YML-файл

conda env export > d:\0\conda_comfyui_required.yml

Для проверки запустим ComfyUI командой

python d:\0\ComfyUI\main.py --windows-standalone-build
Лог старта
Лог старта
Автозапуск окна
Автозапуск окна

Все свершилось.

Теперь надо протестировать "воспроизводимость" нашего Conda-окружения, установив его для пробы из сгенерированного YML-файла.

Закроем все и удалим из Conda наше "окружение" с именем "venv_comfy312"

Вот наше "окружение"
Вот наше "окружение"

Поскольку мы при его создании задавали только его имя (а не путь), то оно, по умолчанию, создалось в под-папке "envs" от корня установки Conda (у меня это папка "d:\an3" - "Anaconda 3").

Я вышел из Conda, поэтому просто удаляю саму папку в файловой системе, а не через саму конду (это равнозначно).

Создаем новое "окружение" Conda и даем команду "взять все из YML-файла", который мы ранее экспортировали. Запустим Conda (можно ничего не активировать, просто в "base").

Сохраните команды ниже КАК ОДНУ СТРОКУ в bat-файл, и запускайте ее из терминала Conda для воссоздания окружения.

conda env create -f d:\0\conda_comfyui_required.yml && activate venv_comfy312 && python d:\o\ComfyUI\main.py --windows-standalone-build

Я применил тут конкатенацию команд через "&&", чтобы автоматически продолжить выполнение команд: создание "окружения" + активации нового "окружения" (которого еще не было до первой команды!) + команда запуска ComfyUI.

Используйте такой способ для записи команд Conda в bat-файлах, которые можно запускать прямо из строки Conda. В терминале Conda все команды, которые она не может распознать, спускаются ниже - в cmd.exe, поэтому там прекрасно работают все DOS-команды (cls, dir...) и нормально запускаются внешние bat-файлы.

В примере на репозитории выложен >>> bat-файл <<<, который будучи запущен прямо из терминала Conda, сам делает вообще все, от скачивания и установки ComfyUI с менеджером, до создания "окружения" и установки в него пакетов.

В данном примере основная часть пакетов питона принципиально бралась не с "pypi", а с каналов из Conda, чтобы просто показать, что на PIP-установке свет клином не сошелся. Список и каналы пакетов этого примера можно посмотреть >>> тут <<<.

>>> YML-файл тут <<<

Не обращайте внимания на большое количество пакетов а YML-файле, там пакеты не только ComfyUI, но и все пакеты самого питона, который там установлен полностью.

Кстати, пакеты питона самого ComfyUI, довольно сильно отличаются от пакетов, установленных с "pypi", и довольно интересно посмотреть, что "фиксированный набор пакетов питона" - это не что-то "отлитое в мраморе", а довольно вариативно, особенно это касается пакета torch, где совсем по-другому решен вопрос обращения с видеопамятью — вместо cuda-DLL в "lib" торча установлен отдельный пакет от NVIDIA.

Файлы этого примера выложены на GitHub >>> тут <<<
Репозиторий
GitHub: https://github.com/Nestorchik/ComfyUI_Anaconda

Примечание: мой ".condarc" выглядит так (порядок каналов):
(просто чтобы утянуть "pypi" вниз, а conda-каналы вверх)

файл .condarc
файл .condarc

P.S.
Чисто "по ощущениям" мне показалось, что ComfyUI на Conda быстрее шевелится.

Удачи!
NStor
https://t.me/stable_cascade_rus
https://t.me/srigert