Задача этой статьи — показать порядок действий по установке нейросети "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, он нам просто открыл справку.
Дерево каталогов Miniconda представляет собой полное повторение структуры каталогов Python, с установленным в него менеджером пакетов Conda. Мы видим все привычные папки и файлы питона на своем месте, и можем просто использовать установленную версию Miniconda как установленный экземпляр питона.
Нормальным правилом работы с питоном является обращение к его компонентам по имени в папку "Scripts", поэтому и вызов Conda мы будем осуществлять всегда вызовом файла "conda.exe" из папки "Scripts" (там же находятся и PIP, и activate/deactivate).
Conda, так же, как и PIP, является "модулем" для питона, и может вызываться как обычный модуль питона, через ключ "-m"
Клонирование (установка) "ComfyUI" c GitHub
Требуется установленный "GIT в путях", берем отсюда:
https://git-scm.com/downloads
Сам дистрибутив ComfyUI берем отсюда:
https://github.com/comfyanonymous/ComfyUI
Открываем окно, зеленая кнопка, HTTPS, копируем адрес git (зеленая стрелка):
Создаем папку (у меня "d:\0"), в которой будем устанавливать ComfyUI, делаем ее "текущей", открываем в ней окно терминала, пишем в начале "git clone " (пробел не забыть после "clone"!!!) дальше Ctrl+V - вставляем то, что скопировали (git-адрес):
Дальше открываем терминал и командой "cd /d d:\mc3\Scripts" делаем "текущим" каталог "Scripts" (поскольку "в пути" мы miniconda не ставили) после чего вводим команду "conda activate":
cd /d d:\mc3\Scripts
conda activate
Примечание: conda может попросить сначала выполнить команду "conda init", это нормально, выполните.
Обратите внимание, что у нас в командной строке появился префикс - "(base)".
Наличие префикса означает, что мы находимся в "активном состоянии" и наша текущая система имеет имя "(base)".
Это "виртуальное окружение" представляет собой "базовый" питон, со всем набором его пакетов и модулей. Conda рассматривает "базовый" питон как одно из "виртуальных окружений", с которым работает точно так же, как и со всеми остальными.
Создание нового "окружения" для ComfyUI
Наберите команду "conda create -n venv_ComfyUI -y":
conda create -n venv_ComfyUI -y
Примечание: я ставлю в конце команды ключ "-y" для того, чтобы Conda не запрашивала у меня подтверждений на каждый "чих". Ключ "-y" означает в Conda - "ответ YES на все вопросы".
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.
В списке пакетов в "requirements.txt" есть и строки установки пакетов "torch", но мой личный опыт показал, что пакеты "torch-cuda", устанаdливаемые по каналам Conda, на 30-40% занимают меньше места (на 1,5 гига меньше!), поскольку собираются немного по-другому, подключая свежие драйвера с NVIDIA во время компиляции пакетов. Можете сами проверить и сравнить объем папки "Lib\site-packages\torch\lib", собранный с Conda и с 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
Запуск ComfyUI
Итак: у нас все готово r запуску ComfyUI.
Поскольку мы в терминале находимся в активном "окружении" с именем "venv_ComfyUI", то прямо оттуда и запускаем командой:
python d:\0\ComfyUI\main.py --windows-standalone-build
Поскольку ComfyUI запускается подачей на вход питону файла "main.py", то мы его и подсовываем питону, указав еще дополнительный ключ "--windows-standalone-build", при указании которого ComfyUI:
- автоматически запускает и открывает браузер
- включает внутреннюю функцию коррекции ошибок, которые проявляются только на Windows ("файл fbgemm.dll" - описание ошибки >>> тут <<<).
Запуск:
В заключение
Поскольку мы при создании "окружения" не указывали для нее папку (а только имя), то все "окружения", созданные просто "по имени", помещаются в под-папку "envs" в корне установленного экземпляра Miniconda.
Ее можно перенести теперь куда угодно, она является "портабельной", т.к. содержит в себе и питон. Я ее перенесу к папке ComfyUI:
Файл "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