mysurik.ru

ComfyUI на CPU: как я бросил GPU и обрёл покой

ComfyUI на CPU как я бросил GPU и обрёл покой

Когда я задумал запустить генерацию картинок на своём сервере, логичным выбором казалась старая RX 580. В теории — отличная карта для Stable Diffusion: 8GB VRAM, шина 256-bit, сообщество уверяло, что она летает. На практике всё пошло не так.

Попытка №1: ROCm

AMD продвигает ROCm как свой ответ CUDA. Разворачиваю rocm/pytorch — контейнер падает при первой же попытке загрузить модель. Ошибки вида Missing HIP kernel. Лезу в форумы — оказывается, для Polaris (RX 580, gfx803) поддержка в ROCm урезана.

Дальше — перебор образов:

  • rocm/pytorch:latest — не видит GPU
  • rocm/pytorch:rocm6.1 — видит, но падает на forward pass
  • woodrex/rocm612-torch24-gfx803 — самый многообещающий: собран специально под gfx803, GPU детектится, но генерация хенгует

Последний образ заслуживает отдельного упоминания. Он единственный, кто прошёл инициализацию и даже начал денойзинг. На третьем шаге — тишина. docker logs молчит, процессов нет, контейнер жив. Просто берёт и зависает без единой ошибки.

Я потратил два дня на перебор hipBLAS, rocBLAS, MIOpen разных версий. Результат — ноль.

Попытка №2: CPU mode

Решение пришло от безнадёги: --force-cpu. ComfyUI запустился. Первая картинка за 4 минуты на 320×320. Это медленно, но оно работает.

Дальше — оптимизация. Собрал свой образ на python:3.10-slim:

FROM python:3.10-slim

WORKDIR /app
RUN apt-get update && apt-get install -y git && 
    git clone https://github.com/comfyanonymous/ComfyUI && 
    cd ComfyUI && 
    pip install --no-cache-dir -r requirements.txt torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu

CMD ["python", "main.py", "--listen", "0.0.0.0", "--port", "8188"]

Он весит ~3.5GB, запускается за 20 секунд, не требует GPU-драйверов, не ругается на HIP, не виснет.

Производительность

Замеры на реальном железе (Proxmox хост, CPU — без GPU-ускорения):

Разрешение Steps Время на шаг Итого
320×320 10 ~6 сек ~1 мин
512×512 20 ~15 сек ~5 мин
768×768 30 ~25-35 сек ~15 мин

Для блога — терпимо. Для продакшна — нет. Но если GPU нет или он не поддерживается — CPU работает.

Что пошло не так с ROCm?

  1. gfx803 — устаревшая архитектура. ROCm 6+ официально её не поддерживает. Нативные образы от сообщества — лотерея.
  2. Docker + GPU — добавляет уровень абстракции, на котором сыпется ещё больше. Нужен --device /dev/kfd, --group-add video, совпадение версий драйвера хоста и библиотек в контейнере.
  3. Отсутствие обратной связи — когда GPU хенгует, нет никакого сообщения об ошибке. Просто пустой лог.

Что в итоге

CPU-режим — это честно. Медленно, стабильно, предсказуемо. Никакой магии, просто числа.

Я оставил Dreamshaper 8 (SD 1.5) как основную модель — она даёт хороший баланс качества и скорости. Контейнер запущен с --restart unless-stopped, интегрирован в WordPress через плагин-обёртку.

Мораль: если у вас нет современного NVIDIA или нормального AMD (RX 7000+), не мучайтесь. CPU — норм. Картинки генерируются, пост пишется, сервер не дымится.

Комментарии

  • А я наоборот, купила подержанную RTX 3060 специально под Stable Diffusion. Разница с CPU — в 10 раз. Но если бюджет ограничен — твой вариант тоже рабочий.

  • Сохранил в закладки. А как быть если сервер на Ubuntu 20.04? Про «ComfyUI на CPU: как я бросил GPU и обрёл покой» как раз думал.

  • Dreamshaper 8 на CPU — терпение надо иметь. Я пробовал на 768×768, 35 шагов — 10 минут ждал. Но результат норм.

  • Для блога картинки отличные получаются. Я такие в Canva обрабатываю и норм. Главное что бесплатно и своё.

  • Тоже мучился с ComfyUI на CPU. У меня GTX 1060, но она не поддерживается нормально, пришлось тоже на CPU гнать. На 512×512 шаг около 20 секунд. Долго, но для личного блога пойдёт.

Ваш комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *