Хочу показать вам один из способов локальной установки нейросетей в "страшной смеси", которую я называю "LinDows" (или "WinUx"). Работа в этом режиме иногда позволяет запустить на Windows то, для чего не существуе (пока) Windows-версии или пакетов питона под Windows.
Тут и далее я использую для примера "ComfyUI"
Поскольку основные разработки нейросетей ведутся не для Windows, а для Linux, то раньше всего все обновления и новые разработки появляются именно для линукс платформы и используя описанную технологию вы можете на Windows-машине работать напрямую с линуксом.
Как известно, в современных версиях Windows корпорация Microsoft внедрила подсистему Windows для Linux (WSL) — функции, позволяющей запускать среду Linux непосредственно в Windows без необходимости использования виртуальных машин или двойной загрузки системы. Эта технология, впервые представленная в Windows 10, получила дальнейшее развитие в Windows 11, где установка WSL стала доступна прямо из "Microsoft Store".
Такая интеграция создана для тех, кто ценит гибкость Linux и удобство Windows. WSL не просто эмулирует команды Linux, а предоставляет полноценную совместимость с бинарными файлами благодаря архитектуре WSL 2, основанной на гипервизоре Hyper-V3. Пользователи получают доступ к мощным инструментам разработки, включая поддержку графических приложений через wslg, прямую работу с GPU и даже возможность запуска кроссплатформенных проектов без потери производительности.
Именно на примере этой подсистемы я и покажу вам как можно использовать "ComfyUI" и в той, и в другой среде.
Windows Subsystem for Linux (WSL) — это технология от Microsoft, которая позволяет запускать Linux-дистрибутивы прямо в Windows.
WSL работает как слой совместимости, который переводит команды Linux в понятные для Windows операции. В итоге можно использовать большинство Linux-команд и утилит, таких как bash, grep, apt, и даже запустить графические интерфейсы приложений.
Установка проводится на машине со следующими характеристиками:
Все команды, выполняемые в этом примере, пронумерованы и для повторения в вашей системе просто выполните их в том же порядке. Каждая команда оформлена в тексте как "элемент списка", например:
- Это команда!
Введение
Встроенная подсистема линукса на Windows-машине вызывается командой:
- wsl
Общее правило: при обращении к системе WSL из терминала Windows надо просто начинать команду с символов "wsl" + "команда".
Следующая команда выводит список доступных для онлайн установки дистрибутивов линукс:
- wsl --list --online
Для установки системы WSL возьмем систему "kali-linux" (вы можете выбрать себе любую, которая вам больше нравится, я взял просто для примера).
Установка WSL
Для установки дистрибутива "kali-linux" следует выполнить команду:
- wsl --install kali-linux
После этого начнется скачивание указанного дистрибутива:
Как только он будет завершен, вам будет выдана команда для её запуска:
Запускаем систему командой:
- wsl -d kali-linux
Система первым делом попросит вас ввести "Имя пользователя":
Примечание: если не хотите проблем, пишите имя пользователя латиницей без пробелов и в нижнем регистре, поскольку линукс (в отличие от Windows) различает в командах и путях регистр символов (выбирайте имя покороче)!
Я введу имя "nstor" + Enter
Система запросит ввод пароля для нового пользователя:
Я введу "1234".
Система попросит повторить пароль еще раз:
После повторного ввода пароля система создаст каталог нового пользователя и выведет командную строку линукса.
Ву-а-ля! Мы теперь в терминале линукса!
Для перехода в режим "root" (администратор), служит команда:
- sudo -s
... для выхода обратно в режим пользователя служит команда:
- exit
Пример (система запросит пароль перед первым входом в режим "root"):
Запуск и остановка WSL
В окне терминала Windows (режим командной строки "cmd") просто введите команду:
- wsl
Ниже скриншот, в котором желтой стрелкой выделена последовательность команд:
- запуск wsl
- переход в режим "root"
- ввод пароля для "root"
- выход в пользовательский (nstor) режим
- выход в Windows
Настройка "Kali-Linux" на русский язык
Теперь установим локализации, (в том числе русскую, "штоп по-русски писала" и интерфейс русский был!).
- sudo apt install locales
Система скачает языковые пакеты локализаций (локали):
Теперь переключимся на русский язык:
- sudo dpkg-reconfigure locales
В открывшемся окне пролистайте список клавишами курсора, выберите (пробелом) "ru_RU.UTF-8 UTF-8", перейдите ("Tab") на кнопку "Оk" и нажмите "Enter":
Откроется окно, в котором курсором выбрать "ru_RU.UTF-8", с помощью "Tab" перейти на "Ok" и нажать "Enter". Так системе будет дана команда использовать интерфейс на русском языке.
ПЕРЕЗАГРУЗИТЕ СИСТЕМУ WSL !!!!!!!!!!!!!!!!!!!!!!!!!!
Просто закройте терминал и запустите его снова.
Установка графического интерфейса
И так: система у нас установлена, она вполне работоспособна, но пока не настроена так, чтобы с ней было удобно работать. Нам ведь требуется не только "посмотреть на линукс", а хорошо бы, чтобы его хоть как-то использовать с пользой.
Команда "sudo apt update" используется для обновления списка доступных пакетов в системе Linux. Команда подключается к настроенным в системе программным репозиториям и загружает актуальные списки пакетов и их версий. Это позволяет системе узнать, какие обновления или новые пакеты доступны для установки.
Примечание: "sudo" обозначает, что следующая за ним команда должна выполняться в режиме "root" (от имени администратора) без постоянного перехода в режим "sudo -s" прямо из режима пользователя "nstor". Если вы уже находитесь в режиме "root", то приставку "sudo" можно опустить, поскольку вы и так уже в "root".
Пурпурной рамкой обведено сообщение системы о том, что информационно сообщение, которое выводится каждый раз при старте режима терминала можно скрыть набрав команду "touch ~/.hushlogin". Я ее сейчас введу один раз, и оно больше появляться не будет:
Обновляем список пакетов:
- sudo apt update
Будет запрошен пароль "root", начнется скачивание пакетов в систему и в конце она сообщит, что все пакеты обновлены.
Установка графического интерфейса производится командой:
- sudo apt install -y kali-win-kex
Система начнет закачивать большое количество файлов, выведет вам несколько "простыней" - отчетов, что она делает, что качает и т.п. Я не привожу скриншотов этого процесса, мы просто ждем, пока она закончит установку.
Можно смело пойти попить чаю, и не только....
Запуск графического интерфейса
Есть разные режимы работы с графикой, я больше работаю через "RDP клиент Windows" (режим ESM).
Команда запуска графического интерфейса со звуком:
- kex --esm -s
Интерфейс запустился, открылось окно RDP-терминала и вывело сообщение, что оно ожидает ввода пароля пользователя:
После этого открывается графический терминал "Kali-Linux", причем уже сразу на русском языке (поскольку русскую локаль мы установили ДО его установки).
Установка "MC":
Менеджер файлов "Midnight Commander"
- sudo apt install mc
Система найдет его, высчитает список пакетов, которые требуется установить для его нормальной работы, и запросив у вас подтверждение на установку, все сама скачает и установит (надо только "y" подтвердить).
Теперь запускаем "Midnight Commander":
- mc
Ву-а-ля! Русский язык!
Примечание: в этой системе софт включает свой интерфейс в зависимости от установленного языка системы!
Поэтому желательно сначала установить русскую локаль и русский интерфейс, а уж потом начать инсталляцию софта.
Многие программы могут переключать язык интерфейса на язык установленной локали системы, но лично мне встречался софт, который при инсталляции скачивает только язык локализации текущего интерфейса, и последующее переключение языка интерфейса системы не приводило к смене языка интерфейса уже установленного приложения!
Поэтому я взял себе за правило:
- сначала установи все локали и языки
- потом начинай инсталляцию софта
В нашем случае, при уже установленной и настроенной русской локали, графический интерфейс сразу установится и включится на русском языке!!!
При этом надо помнить, что запуск программ может быть осуществлен как в графическом интерфейсе RDP, там и в строке терминала Windows:
Без графического интерфейса режим терминала работает на порядок быстрее, поскольку работа идет через гипервизоре Hyper-V3.
Установка "htop"
- sudo apt install htop
- htop
Работа с линукс в режиме терминала
Как я уже писал, команду в линукс можно послать прямо из командной строки Windiws вызвав WSL и передав ему параметры. К примеру, команда "wsl mc" сразу откроет "Midnight Commander" прямо в windows терминале:
- wsl mc
Результат ее выполнения:
Точно так же можно пересылать любые команды в линукс через терминал, ответ вернется в терминал Windows:
Доступ к файловой системе линукса
После установки любого дистрибутива линукса его дерево каталогов появится в дереве проводника Windows:
Доступ к файлам осуществляется традиционно — через проводник Windows
Адресация файлов будет выглядеть так:
Попробуем вставить адрес в этой нотификации в windows-терминал:
Команды, которые нам нужны
В режиме Windows-терминала:
- wsl - запускает экземпляр линукса в терминале
- wsl mc - запуск экземпляра файлового менеджера
- wsl htop - запуск линукс наблюдения за нагрузкой на систему
... и т.п., любые терминальные программы линукса прямо под Windows
В режиме Linux-терминала:
- kex --esm -s - запуск графического интерфейса
Подключение к незакрытой (текущей) сессии линукса через RDP-терминал:
Примечание: если сессия линукса не запущена, сначала выполнить вход в терминал линуксе по "wsl" и уже из него запустить "kex --esm -s".
Автоматически открывшееся окно можно просто закрыть "по крестику" (не Выход!!!"), и после этого настроить свой вход через терминал дальше:
- mstsc - открыть клиент удаленного доступа
После чего откроется окно, в которое ввести:
- localhost:3390
Можно, нажав на "Показать параметры", открыть и настроить все остальные параметра подключения, какие там есть:
Нажав на "Сохранить как" можно записать свой файл RDP, щелчком по которому и можно будет входить в линукс с описанными в нем настройками:
Сохранив настройки в файле:
Примечание:
В Kali Linux нельзя настроить автоматический ввод пароля ESM (Enhanced Session Mode) для входа по RDP. При первом запуске графической оболочки "Kali Linux в режиме ESM" пароль для сервера RDP задаётся вручную.
После первого запуска в режиме ESM пароль для сервера RDP сохраняется в хранилище учётных данных Windows. Изменить его позже можно командой:
- kex --esm --passwd
Если нужно, чтобы пароль не запрашивался при последующих запусках, при первом запуске можно установить флажок «Больше не спрашивать» и подтвердить предупреждения. Эта опция запустит сервер "Win-KeX" и клиент в полноэкранном режиме.
Все это хорошо, но причем тут нейросети?
А вот теперь, когда система WSL у нас установлена и настроена, мы приступаем к параллельной установке "ComfyUI" сразу в двух экземплярах:
- под Windiws 11
- под Kali-Linux
Примечание:
Обе установки будут совершенно одинаковые, различия будут только в компонентах, отличных для каждой из этих операционных систем.
Две установки нам нужны для того, чтобы мы могли запустить тестовые задания для нейросети и посмотреть, на какой из наших систем она справится быстрее.
Установка "ComfyUI" под "Windows 11"
Последовательность команд (для bat-файла):
1. powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
2. uv python install 3.12
3. mkdir c:\Test312
4. cd /d c:\Test312
5. git clone https://github.com/comfyanonymous/ComfyUI.git
6. git clone https://github.com/ltdrdata/ComfyUI-Manager.git "c:\Test312\ComfyUI\custom_nodes\ComfyUI-Manager"
7. uv venv --python 3.12
8. uv pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124
9. uv pip install pip
10. uv pip install -r "c:\Test312\ComfyUI\requirements.txt"
11. uv run "c:\Test312\ComfyUI\main.py" --windows-standalone-build --front-end-version Comfy-Org/ComfyUI_frontend@latest
12. pause
1. Установка менеджера "UV"
У кого установлен. можно пропустить
2. Скачивание и установка "CPython 3.12"
- uv python install 3.12
3 и 4. Создание рабочего каталога и переход в него
- mkdir c:\Test312
- cd /d c:\Test312
Без скриншотов )
5. Скачать репозиторий "ComfyUI" с "GitHub"
6. Скачать репозиторий "ComfyUI Manager" с "GitHub"
Просто в указанную папку, мы знаем где он должен стоять
- git clone https://github.com/ltdrdata/ComfyUI-Manager.git "c:\Test312\ComfyUI\custom_nodes\ComfyUI-Manager"
7. Создание VENV питона с помощью "UV"
- uv venv --python 3.12
8. Установка пакетов "TORCH-CUDA" для карт NVIDIA
- uv pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu128
Примечание:
Это самая долгая операция, поскольку скачать надо около 6 гигабайт!
После первого скачивания дистрибутив помещается в кеш, и последующие повторные установки его занимают секунды.
9. Установка менеджера пакетов PIP
- uv pip install pip
Примечание:
Я пользуюсь новым менеджером "UV" (который раз в 100 быстрее), который появился около года назад. Но сам "ComfyUI" и его компоненты требуют менеджера "pip", значит его устанавливаем именно для них.
10. Установка всех пакетов, которые требуются для работы "ComfyUI"
- uv pip install -r "c:\Test312\ComfyUI\requirements.txt"
11. Запуск установленного "ComfyUI" с помощью "UV"
- uv run "c:\Test312\ComfyUI\main.py" --windows-standalone-build --front-end-version Comfy-Org/ComfyUI_frontend@latest
Можете прописать себе в bat-файл эту команду, только путь поменяйте. Именно так запускается PY-скрипт через "UV"
Лог первого запуска.
Во время первого запуска система настраивается, подкачивает недостающие компоненты и пакеты, создает кэш "байт-кода" и т.п. Следующие запуски будут отличаться по времени, скорости и логам, т.к. часть подготовительных операций уже пройдена.
Скрин WEB-интерфейса:
Лог второго запуска (можете сравнить с логом первого запуска):
Итог: "ComfyUI" под "Windows" установлен без ошибок.
Очередь за Linux-версией.
Установка "ComfyUI" под "Linux"
Установку под "WSL Linux" буду описывать по шагам.
1. Вход в терминал "Linux"
- wsl
2. Установка менеджера "UV" под линуксом
Примечание:
"sudo" перед командой как указание на то, что надо перейти в режим "root" для установки. Зеленая стрелка - место запроса и ввода пароля "root". Исполнено две команды подряд, вторая как проверка доступности толь ко что установленного "UV".
2. Установка "CPython 3.12" с помощью "UV"
Мы устанавливаем ту же версию "CPython 3.12", что и на Windows, и с помощью того же менеджера "UV".
- uv python install 3.12
3. Создание каталога установки нейросети
Поскольку я уже знаю локальные пути пользователя в линуксе, то я прямо создам папку "Test312" в домашней папке пользователя "nstor" следующей командой. Поскольку в линуксе это "домашняя папка пользователя", то добавление "sudo" перед командой не требуется.
- mkdir /home/nstor/Test312
- cd /home/nstor/Test312
Сразу две команды - создать каталог и перейти в него (сделать текущим)
4. Скачать репозиторий "ComfyUI" с "GitHub"
Команда аналогичная Windows
Проверяем, появилась ли она:
Папка появилась и путь к ней (посмотреть в полосе адреса в эксплорере):
- \\wsl.localhost\kali-linux\home\nstor\Test312
Вот доступ к ней через "Total Commander":
5. Установка "ComfyUI Manager"
Поскольку локальные пути известны, то я дам команду клонировать репозиторий сразу в нужную папку в линукс нотации.
Напоминаю, что линукс различает верхний и нижний регистр символов, поэтому все пути и имена файлов пишем ПРАВИЛЬНО!
- git clone https://github.com/ltdrdata/ComfyUI-Manager.git /home/nstor/Test312/ComfyUI/custom_nodes/ComfyUI-Manager
Проверяем, закачалось ли.
5. Создание VENV с помощью "UV"
Примечание: в команде я принудительно указываю версию питона.
Поскольку в линуксе уже есть свой питон (причем вместе с "kali-linux" он установился версии 3.13), то я указываю от какой версии питона мне надо создать venv, поскольку "UV" мог обнаружить имеющийся питон и "подхватить" его настройки при инсталляции.
Напомню, что текущая папка у нас "/home/nstor/Test312" (!!!)
- uv venv --python 3.12
6. Установка пакетов "TORCH-CUDA" для карт NVIDIA
Команда установки пакетов "torch-cuda" под линукс сейчас точно такая же, как под Windows, но сами пакеты и их структура совершенно другая!
Процесс установки долгий, поскольку закачиваются очень большие объемы файлов, просто ждем, когда все закончится успешно. После закачки пакетов менеджер UV помещает их к кэш, и последующие установки тех же пакетов занимают считанные секунды.
- uv pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu128
Идет процесс закачки:
Когда установка пакетов "torch-cuda" закончится, отобразится такой экран:
Далее пойдут аналогичные Windows команды установки пакетов "pip" и пакетов из "requirements.txt". Саим команды менеджера "UV" в разных системах друг от друга не отличаются.
7. Установка менеджера "pip"
Его наличия требуют многие сторонние компоненты. устанавливаемые на "ComfyUI", значит его устанавливаем именно для них.
- uv pip install pip
8. Установка всех пакетов, которые требуются для работы "ComfyUI"
- uv pip install -r /home/nstor/Test312/ComfyUI/requirements.txt
9. Запуск установленного "ComfyUI" с помощью "UV" под линуксом
Все то же самое, что и под Windows, только убираем специфичный для windows-ключ и меняем путь до файла "main.py" на линуксовый.
- uv run /home/nstor/Test312/ComfyUI/main.py --front-end-version Comfy-Org/ComfyUI_frontend@latest
Первый старт под линукс:
WEB-интерфейс:
Второй старт на линукс:
Обратите внимание на то, что:
- при втором запуске уже непроисходит никаких установок и запуск происходит намного быстрее
- видеопамять доступна вся (всего 16Gbt на этой видеокарте)
- RAM (оперативная) память доступна половина от имеющихся у меня 64Gb
Парметры выделения памяти и настройки запуска WSL зависят от его конфигурации. Файлы "wsl.conf" и ".wslconfig" используются для настройки расширенных параметров в WSL, которые будут применены "при запуске виртуальной машины WSL".
"wsl.conf" используется для применения параметров на основе дистрибутива WSL, а ".wslconfig" используется для применения глобальных параметров к WSL. Подробнее о различиях можно прочитать тут:
Как запускать "ComfyUI" в нашей конфигурации
Можно даже не входить в графический интерфейс линукса, а работать из терминала командной строки Windows:
- wsl
- cd /home/nstor/Test312
- uv run /home/nstor/Test312/ComfyUI/main.py --front-end-version Comfy-Org/ComfyUI_frontend@latest
Скриншот запуска где три команды терминала и далее, в зеленой рамке, начало лога запуска "ComfyUI":
Дальше просто открываем ЛОКАЛЬНЫЙ БРАУЗЕР прямо в Windows по адресу:
- http://127.0.0.1:8188
Сейчас модельку кинем какую-то в "models" и протестируем генерацию.
Открываем два окна проводника (да любого мменеджера файлов), слева папка "models\checkpoints" в комфи на линуксе по адресу:
- "\\wsl.localhost\kali-linux\home\nstor\Test312\ComfyUI\models\checkpoints"
Справа папка с вашими моделями и просто перетаскиваем справа налево модель мышкой.
Она копируется:
И появляется там:
Далее рефрешим локальный браузер, выбираем нашу модель:
И запускаем 6 генераций подряд:
Несколько генераций для того, чтобы посмотреть до какого минимального значения упадет время генерации картинки.
Если есть желание превратиться в садо-мазохиста, то можно войти в сессию линукса по RDP, открыть там в графическом интерфейсе браузер, выбрать скачанную модель, и провести генерацию внутри графической системы линукс:
Генерим из графического интерфейса линукс несколько снимков подряд:
Время генерации не изменилось, что в графическом интерфейсе открывать браузер, что локальный Windows браузер - все едино.
Поэтому в графический интерфейс линукса можно даже не заходить, а работать в локальном Wimdows терминале и локаоьном браузере.
А что будет в сравнении с Windows установкой "ComfyUI"?
Закрываем сессию линукса полностью, запускаем нашу Windows установку комфика и генерим несколько снимков подряд:
- cd /D c:\Test312
- uv run c:\Test312\ComfyUI\main.py --windows-standalone-build --front-end-version Comfy-Org/ComfyUI_frontend@latest
Вске работоспособно. О скорости работы и "выгодах" или "не-выгодах" говорить сейчас рано. Надо нагружать и ту и ту систему одинаковой тяжелой задачей, а не простой и элементарной картинкой, тогда и можно будет делать какие-то выводы. Но это цель другой статьи - следующей.
Выводы
- имея в наличии лишь Windows-машину под управление "Windows 10/11" на ней можно запустить как полностью Windows-версию установки "ComfyUI" (читай - любого Python-проекта), так и полностью Linux-версию любого Python-проекта.
- отдельны компьютер/сервер для этого не требуется
- любое Python-приложение, которое не имеет версии или нужного состава пакетов пиитона для Windows-версии, можно именно такои обращов запустить в Linux-варианте.
С чем вас и поздравляю.
Удачи!