Найти тему

Установка нейросети "ComfyUI" на Miniconda - часть 1

Оглавление

Задача этой статьи — показать порядок действий по установке нейросети "ComfyUI" на дистрибутиве Miniconda под Windows на карте NVIDIA.

  • Miniconda (Миниконда придуманный в шутку программистами несуществующий вид удава по созвучности ассоциированный с "Conda" и "Anaconda") — это минимальный дистрибутив, включающий в себя менеджер пакетов Conda, Python, набор пакетов, от которых они зависят, плюс минимум самых полезных дополнительных пакетов, таких как pip или zlib.
Примечание: если вас интересует разница между Python, Miniconda и Anaconda, возьмите информацию >>> тут <<<

Я рассчитываю на то, что у вас уже установлен GIT в системе, и он находится "в путях" (в PATH). Если это не так — установите его.

Установка Miniconda

С адреса https://docs.anaconda.com/miniconda/miniconda-other-installer-links качаем дистрибутив.

На версию Python можете внимания не обращать, поскольку Miniconda в процессе работы может сама установить нужную версию Python, но я советую в качестве первой-основной ставить самую последнюю версию.

Я сейчас ставлю версию "Miniconda3-py312_24.7.1-0-Windows-x86_64", что означает: "версия 3" + "python 3.12" + "conda v24.7.1" + OS.

Для всех
Для всех
Папка — куда
Папка — куда

Я ставлю с как можно более короткими именами, поскольку придется много текста "набивать ручками", а этот путь у меня вызывает ассоциацию "MiniConda3".

Регистрировать как системный не надо, чистить кэш пакетов тоже не надо.
Регистрировать как системный не надо, чистить кэш пакетов тоже не надо.

Если вы будете работать вообще только на Conda, то можете второй пункт отметить, если у вас уже другие питона стоят — лучше не надо.

Чистить кэш пакетов — если вы первый раз ставите Conda, то у вас еще кэша нет (у него свой кэш!).

Пошло. Ждем...
Пошло. Ждем...

При установке он создаст иконки в меню:

Иконки, созданные в процессе установки.
Иконки, созданные в процессе установки.

Нас интересует первая "Anaconda Pronpt" (там имя папки дописано еще).

Но мы будем пользоваться вот такой командой (чтобы ее запомнить!):

d:\mc3\Scripts\conda

Открыть терминал (командная строка), набрать "d:\mc3\Scripts\conda":

Conda покажет свою "справку".
Conda покажет свою "справку".

Поскольку мы ничего не указали в качестве параметров для Conda, он нам просто открыл справку.

Дерево каталогов Miniconda представляет собой полное повторение структуры каталогов Python, с установленным в него менеджером пакетов Conda. Мы видим все привычные папки и файлы питона на своем месте, и можем просто использовать установленную версию Miniconda как установленный экземпляр питона.

Запрос версии питона.
Запрос версии питона.
_conda.exe - на этот файл не обращаем внимания, мы с ним не работаем.
_conda.exe - на этот файл не обращаем внимания, мы с ним не работаем.

Нормальным правилом работы с питоном является обращение к его компонентам по имени в папку "Scripts", поэтому и вызов Conda мы будем осуществлять всегда вызовом файла "conda.exe" из папки "Scripts" (там же находятся и PIP, и activate/deactivate).

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

Вызов PIP и Conda "как модуль"
Вызов PIP и Conda "как модуль"

Клонирование (установка) "ComfyUI" c GitHub

Требуется установленный "GIT в путях", берем отсюда:
https://git-scm.com/downloads
-11

Сам дистрибутив ComfyUI берем отсюда:
https://github.com/comfyanonymous/ComfyUI
Открываем окно, зеленая кнопка, HTTPS, копируем адрес
git (зеленая стрелка):

Git-адрес "ComfyUI"
Git-адрес "ComfyUI"

Создаем папку (у меня "d:\0"), в которой будем устанавливать ComfyUI, делаем ее "текущей", открываем в ней окно терминала, пишем в начале "git clone " (пробел не забыть после "clone"!!!) дальше Ctrl+V - вставляем то, что скопировали (git-адрес):

ComfyUI установлен.
ComfyUI установлен.

Дальше открываем терминал и командой "cd /d d:\mc3\Scripts" делаем "текущим" каталог "Scripts" (поскольку "в пути" мы miniconda не ставили) после чего вводим команду "conda activate":

cd /d d:\mc3\Scripts
conda activate

Примечание: conda может попросить сначала выполнить команду "conda init", это нормально, выполните.

Ответ Conda
Ответ Conda

Обратите внимание, что у нас в командной строке появился префикс - "(base)".

Наличие префикса означает, что мы находимся в "активном состоянии" и наша текущая система имеет имя "(base)".

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

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

Наберите команду "conda create -n venv_ComfyUI -y":

conda create -n venv_ComfyUI -y

Примечание: я ставлю в конце команды ключ "-y" для того, чтобы Conda не запрашивала у меня подтверждений на каждый "чих". Ключ "-y" означает в Conda - "ответ YES на все вопросы".

Создание venv
Создание venv

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

У меня "каналы" уже отредактированы (они на машине хранятся), а вам надо выполнить следующие команды (просто по одной строке команды копируйте и выполняйте, это можно сделать в любое время ДО установки пакетов):

conda config --add channels pypi
conda config --add channels nvidia
conda config --add channels pytorch
conda config --add channels conda_forge
conda config --add channels anaconda

Примечание: каналы представляют собой аналог ключа "--index-url" в PIP, и указывают какие репозитории и в какой последовательности просматривать при поиске пакетов.

Но мы отвлеклись, давайте активируем наше новое "окружение" командой "conda activate venv_ComfyUI":

conda activate venv_ComfyUI
Смена активного канала
Смена активного канала

Обратите внимание, что при смене активного канала меняется префикс командной строки, и в нем отображается то имя "виртуального окружения", которое мы дали ему во время создания. Дальше идет команда "conda env list", которая показывает список "окружений", а звездочкой отмечается активное "окружение". Эту команду (conda env list) можно всегда вызвать и посмотреть какое из них активно сейчас + префикс командной строки.

Если у вас карта NVIDIA, перед началом установки ComfyUI необходимо СНАЧАЛА (!!!) установить в питона библиотеки для работы с CUDA-ядрами видеокарты NVIDIA.

Примечание: если у вас карта не поддерживающая "cuda" (не NVIDIA), пропустите этот этап, и переходите сразу к установке ComfyUI.

Открываем сайт: https://pytorch.org

Выделяем нужные нам заголовки таблицы: нам надо - Stable + Cuda + Windows + версия 12.4, выделяем и копируем строку команды (обведена зеленым!), которая меняется в зависимости от нашего выбора параметров в этой таблице.

Версии обновляются, и эта строка постоянно меняется.
Версии обновляются, и эта строка постоянно меняется.

Скопировали строку. Выполним ее.

conda install pytorch torchvision torchaudio pytorch-cuda=12.4 -c pytorch -c nvidia
Запрос подтверждения
Запрос подтверждения

Conda начнет собирать информацию, подключаться к "каналам", составлять списки того, что надо установить, и выведя несколько экранов информации будет ждать подтверждения на установку.

Примечание: чтобы не ждать момента, ставьте ключ "-y" в конце команды.

После подтверждения начнется долгая и красивая установка. Процесс скачивания начнется с самых "тяжелых" файлов... "Ждем...

Не изменяйте размера окна, чтобы "картинка" графики скачивания не "поплыла".

Примечание: если что-то "отвалится" - ничего страшного, запускайте команду заново с "-y", все, что уже скачалось, будет до-качиваться. Пока пакеты не в кэше, всё довольно долго происходит именно с этими torch-пакетами, т.к. их размер очень большой.

А пока давайте уясним для себя одно правило Conda:

  • все установки происходят по принципу "транзакций".
  • ТРАНЗАКЦИЯ — группа связанных действий, которые выполняются как одно действие, сколько бы отдельных действий в него не входило, транзакция или выполняется, или не выполняется вообще.
  • установка может быть или произведена, или не произведена, некорректная установка (что-то не докачалось, что-то с ошибками скачано и т.п.) технически невозможна.

Именно поэтому Conda более надежна в техническом плане, чем pip питона.

Отчет об установке
Отчет об установке

Пакеты torch-cuda для видеокарт NVIDIA установлены.

Теперь перейдем к установке самого "ComfyUI"

Установка "ComfyUI"

Скачанный ранее с помощью git дистрибутив ComfyUI у нас находится по пути "d:\0\ComfyUI", и теперь (после установки пакетов "torch-cuda для NVIDIA" если у вас такая карта), можно начать установку самой ComfyUI. Если у вас не NVIDIA-карта, и вы пропустили предыдущий этап установки, то вместе с ComfyUI будет установлен такой же пакет для CPU.

Итак: в корне дистрибутива ComfyUI есть файл "requirements.txt", в котором находится список всего необходимого, что надо установить, перед запуском ComfyUI, вот команда его установки:

conda install --yes --file d:\0\ComfyUI\requirements.txt

Я указал полный путь к файлу, т.к. знаю после скачивания дистрибутива ComfyUI по указанному мною пути, знаю его точное месторасположение. Если у вас он в другом месте, укажите свой путь, но помните, что его место нельзя менять, т.к. при работе сама ComfyUI его тоже использует.

Примечание: названия ключей можно сокращать с "два тире-команда" до "одно тире-первая буква":

  • --yes = -y
  • --file = -f

... и т.п. за редким исключением.

Я всегда ключ "-y" переношу в конец строки.

Я специально прохожу через этот, ошибочный этап:

Ошибка: на текущих каналах указанные пакеты не найдены!
Ошибка: на текущих каналах указанные пакеты не найдены!

Ошибка означает, что на каналах, указанных нами, пакеты из "requirements.txt"не найдены, поскольку разработка ComdyUI велась, в основном, на PIP-ориентированность, как на самый большой рынок.

Но у нас стоит обычный Python, с обычным PIP, и все, что у нас не "пролезло" в Conda, мы можем поставить с помощью PIP, его никто не отменял.

Меняем команду установки на PIP (прямо в том же окне терминала):

pip install -r d:\0\ComfyUI\requirements.txt
Запуск через PIP
Запуск через PIP

Немного ждем (тут все намного быстрее встанет, поскольку основная часть уже установлена).

PIP закончил.
PIP закончил.

Остатки пакетов установлены с помощью PIP.

В списке пакетов в "requirements.txt" есть и строки установки пакетов "torch", но мой личный опыт показал, что пакеты "torch-cuda", устанаdливаемые по каналам Conda, на 30-40% занимают меньше места (на 1,5 гига меньше!), поскольку собираются немного по-другому, подключая свежие драйвера с NVIDIA во время компиляции пакетов. Можете сами проверить и сравнить объем папки "Lib\site-packages\torch\lib", собранный с Conda и с PIP.

Сравните с аналогичной папкой, установленной через PIP
Сравните с аналогичной папкой, установленной через PIP
Папка "torch\lib" в таком же питоне 3.12, но PIP-версия.
Папка "torch\lib" в таком же питоне 3.12, но PIP-версия.

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

Поскольку пакеты "torch-cuda" мы ставили Conda-версии, и у нас не все "зависимости" были просчитаны, поэтому небольшая корректировка командой:

python -m pip install safetensors psutil einops transformers scipy torchsde aiohttp kornia spandrel

... установит то, что "пролетело мимо.

Еще поставим "менеджер" (из другого окна терминала), просто даже не входя в папку "custom_nodes", из любого каталога выполните вот это (все - одна строка!):

git clone https://github.com/ltdrdata/ComfyUI-Manager.git d:\0\ComfyUI\custom_nodes\ComfyUI-Manager
Выполнение "git clone" без захода в папку назначения...
Выполнение "git clone" без захода в папку назначения...

Запуск ComfyUI

Итак: у нас все готово r запуску ComfyUI.

Поскольку мы в терминале находимся в активном "окружении" с именем "venv_ComfyUI", то прямо оттуда и запускаем командой:

python d:\0\ComfyUI\main.py --windows-standalone-build

Поскольку ComfyUI запускается подачей на вход питону файла "main.py", то мы его и подсовываем питону, указав еще дополнительный ключ "--windows-standalone-build", при указании которого ComfyUI:

  • автоматически запускает и открывает браузер
  • включает внутреннюю функцию коррекции ошибок, которые проявляются только на Windows ("файл fbgemm.dll" - описание ошибки >>> тут <<<).

Запуск:

Это я прямо из venv запустил
Это я прямо из venv запустил
Браузер запустился
Браузер запустился

В заключение

Поскольку мы при создании "окружения" не указывали для нее папку (а только имя), то все "окружения", созданные просто "по имени", помещаются в под-папку "envs" в корне установленного экземпляра Miniconda.

Вот она
Вот она

Ее можно перенести теперь куда угодно, она является "портабельной", т.к. содержит в себе и питон. Я ее перенесу к папке ComfyUI:

Перенос venv
Перенос venv

Файл "python.exe" находится в корне "venv_ComfyUI", и строка запуска теперь меняется на:

d:\>d:\0\venv_ComfyUI\python d:\0\ComfyUI\main.py --windows-standalone-build
Запустил с нового места
Запустил с нового места

Запустилось, браузер открылся.

Выводы:

Папка "окружения", созданная с помощью Conda, является полноценной установкой питона, полностью работоспособна отдельно от Conda, и даже обладает возможностью генерировать свои "локальные окружения", но только в формате и средствами питона.

Вот такая информация по запуску ComfyUI на Miniconda с установкой torch-cuda через репозитории Conda.

Часть 2 - https://dzen.ru/a/Zuf0zJSUvCO69zj-

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