Часть 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-файле, там пакеты не только ComfyUI, но и все пакеты самого питона, который там установлен полностью.
Кстати, пакеты питона самого ComfyUI, довольно сильно отличаются от пакетов, установленных с "pypi", и довольно интересно посмотреть, что "фиксированный набор пакетов питона" - это не что-то "отлитое в мраморе", а довольно вариативно, особенно это касается пакета torch, где совсем по-другому решен вопрос обращения с видеопамятью — вместо cuda-DLL в "lib" торча установлен отдельный пакет от NVIDIA.
Файлы этого примера выложены на GitHub >>> тут <<<
Репозиторий GitHub: https://github.com/Nestorchik/ComfyUI_Anaconda
Примечание: мой ".condarc" выглядит так (порядок каналов):
(просто чтобы утянуть "pypi" вниз, а conda-каналы вверх)
P.S.
Чисто "по ощущениям" мне показалось, что ComfyUI на Conda быстрее шевелится.
Удачи!
NStor
https://t.me/stable_cascade_rus
https://t.me/srigert