Как я поднял ComfyUI на CPU и пожалел об этом
Когда я решил попробовать ComfyUI, у меня не было NVIDIA-видеокарты. Вообще. Был только старый домашний сервер на OpenWrt с процессором Intel Celeron и 8 гигабайтами оперативки. И, как вы уже догадались, это была плохая идея.
Но я же самоуверенный айтишник, верно? Гайдов в интернете полно, ComfyUI же вроде как платформонезависимый. Ну, почти.
Сначала я установил Python, скачал репозиторий, запустил установку зависимостей. Всё шло бодро ровно до момента, пока не пошли зависимости для CUDA. Тут я впервые задумался: «А стоп, CUDA же не будет работать на CPU». Но отступать было позло — процесс установки уже шёл четвёртый час, а я люблю смотреть на горячие прогресс-бары.
Решение пришло неожиданно: в репозитории нашёлся флаг —cpu. Я обрадовался, переустановил всё заново, и — о чудо — ComfyUI запустился.
Интерфейс загрузился. Красиво. Современно. Ноды, коннекторы, всё как у людей. Я загрузил первую модель — SDXL, самую лёгкую из того, что нашёл. Нажал «Queue Prompt» и пошёл пить чай.
Вернулся через десять минут. Прогресс-бар стоял на 3%. Я подождал ещё двадцать минут. 7%. Ещё через час — 15%. Я начал подозревать, что генерация одной картинки займёт больше времени, чем написание этой статьи.
Через четыре с половиной часа я всё-таки дождался результата. На картинке было нечто, отдалённо напоминающее кота в космосе. Пиксели, шум, артефакты — но кот в космосе! Я был счастлив. Ровно три секунды. Пока не понял, что для следующей картинки придётся запускать всё заново, потому что оперативки не хватило даже на кэширование модели.
Попытка номер два закончилась крахом. OpenWrt просто убил процесс OOM-killer’ом на шестой минуте. Я попробовал уменьшить размер изображения до 256×256. ComfyUI крашнулся на загрузке модели с ошибкой «cannot allocate memory».
Тогда я пошёл ва-банк: подключил swap на USB-флешке. Система стала тормозить так, что даже ls выполнялся по пять секунд. Но ComfyUI упорно пытался работать. Через час я получил картинку 256×256 — набор цветных пятен, который нейросеть, видимо, считала очень философским.
Итог: я потратил вечер, сжёг несколько гигаватт электроэнергии (шучу, но процессор грелся будь здоров), и получил две картинки, которые нейросеть стеснялась бы показать маме.
Выводы? ComfyUI на CPU — это возможно. Но только если у вас есть неделя свободного времени, вы любите шум кулеров и не боитесь вида ошибок аллокации памяти. Если же вы хотите именно генерировать картинки, а не медитировать на прогресс-бар — лучше купите хотя бы подержанную видеокарту с 6+ гигабайтами. Или арендуйте облачный сервер.
Я же пошёл заказывать RTX 3060. OpenWrt-сервер обиженно гудит в углу.