ComfyUI на GPU в аренде: сетап, переживающий перезагрузки

Юнит systemd, модели на постоянном томе, пароль перед интерфейсом и замеры RTX 4090 и 5090 для SDXL и FLUX.

GCGPU-команда CheapServАвтор 7 мин чтения
Мольберт со светящимся изображением рядом с GPU
На этой странице5
  1. Структура: модели на томе, приложение в юните
  2. Юнит systemd
  3. Доступ без публикации наружу
  4. На что способны карты
  5. Эксплуатация

ComfyUI — инструмент для построения воркфлоу, который запускает большинство наших клиентов, занимающихся генерацией изображений. В тикетах поддержки мы видим конфигурации с одними и теми же проблемами: процесс умирает при закрытии SSH-сессии, модели скачиваются заново после каждой переустановки, а интерфейс доступен любому, кто найдёт порт. Здесь описана конфигурация, которая решает все три проблемы, а также приведены наши замеры SDXL и FLUX на тарифах с RTX 4090 и RTX 5090.

Структура: модели на томе, приложение в юните

Всё, что дорого скачивать, держите на постоянном томе, а всё, что дёшево пересобрать, — в каталоге приложения. На наших GPU-тарифах том смонтирован в /data: при переустановке корневой диск стирается, а /data — нет.

/opt/comfy/                # the app, a git checkout, disposable
/data/models/checkpoints/  # SDXL, FLUX and friends: 6 to 24 GB each
/data/models/loras/
/data/models/vae/
/data/output/              # generated images

Установите из шаблона ComfyUI или вручную на базовом образе Ubuntu 24.04 с CUDA:

apt install -y git python3-venv
git clone https://github.com/comfyanonymous/ComfyUI /opt/comfy
python3 -m venv /opt/comfy/venv && /opt/comfy/venv/bin/pip install -U pip
/opt/comfy/venv/bin/pip install torch torchvision --index-url https://download.pytorch.org/whl/cu124
/opt/comfy/venv/bin/pip install -r /opt/comfy/requirements.txt
git clone https://github.com/ltdrdata/ComfyUI-Manager /opt/comfy/custom_nodes/ComfyUI-Manager

Укажите ComfyUI путь к тому через extra_model_paths.yaml, чтобы в каталоге приложения не было вообще никаких моделей:

cat > /opt/comfy/extra_model_paths.yaml <<'EOF'
data:
  base_path: /data/models/
  checkpoints: checkpoints/
  loras: loras/
  vae: vae/
  clip: clip/
  unet: unet/
EOF

Юнит systemd

useradd -r -m -d /opt/comfy -s /usr/sbin/nologin comfy && chown -R comfy /opt/comfy /data
cat > /etc/systemd/system/comfy.service <<'EOF'
[Unit]
Description=ComfyUI
After=network-online.target
[Service]
User=comfy
WorkingDirectory=/opt/comfy
ExecStart=/opt/comfy/venv/bin/python main.py --listen 127.0.0.1 --port 8188 --output-directory /data/output
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload && systemctl enable --now comfy

Две вещи в юните сделаны намеренно: он слушает только localhost и запускается от непривилегированного пользователя. Кастомные ноды выполняют произвольный Python-код, а скомпрометированная нода в процессе от root — это потерянный сервер.

Доступ без публикации наружу

Выберите одну из двух дверей. Закрытая — Tailscale (дополнение в форме заказа): установите его, и http://server-name:8188 будет открываться с любого вашего устройства вообще без открытых портов; для этого укажите в --listen адрес Tailscale. Открытая — Caddy с паролем; заодно вы получаете HTTPS:

apt install -y caddy
HASH=$(caddy hash-password --plaintext 'a-long-password')
cat > /etc/caddy/Caddyfile <<EOF
comfy.example.com {
  basicauth { me $HASH }
  reverse_proxy 127.0.0.1:8188
}
EOF
systemctl reload caddy

Никогда не публикуйте порт 8188 напрямую. В ComfyUI нет аутентификации, через API можно читать и записывать файлы, а сканеры находят открытые экземпляры в течение нескольких часов.

На что способны карты

Замеры на стандартных воркфлоу: 20 шагов, Euler, размер батча 1, после прогрева, на наших тарифах:

МодельРазрешениеRTX 4090 (24 GB)RTX 5090 (32 GB)
SDXL 1.01024 × 10243.9 s2.3 s
SDXL + рефайнер1024 × 10245.6 s3.3 s
FLUX.1 dev, FP81024 × 102414 s8 s
FLUX.1 schnell, 4 шага1024 × 10241.9 s1.1 s
SDXL, батч 81024 × 102425 s15 s

RTX 5090 быстрее примерно в 1.7 раза по всем пунктам, а именно её 32 GB делают FLUX dev комфортным при одновременно загруженных LoRA и ControlNet; на 4090 он тоже запускается, но модели приходится постоянно выгружать и подгружать. По чистой производительности SDXL в пересчёте на доллар тариф с 4090 остаётся более выгодной покупкой.

Эксплуатация

  • Обновления: cd /opt/comfy && git pull && venv/bin/pip install -r requirements.txt && systemctl restart comfy. Сначала сделайте снапшот в панели управления: кастомные ноды ломаются при обновлениях чаще, чем сам ComfyUI.
  • Переустановка: выберите шаблон ещё раз, подключите том заново, восстановите extra_model_paths.yaml и юнит; модели остаются на месте.
  • Диск: /data/output быстро растёт при размере батча больше единицы. Еженедельный запуск find /data/output -mtime +30 -delete по таймеру не даёт каталогу разрастаться — разумеется, после того как вы скопируете всё, что хотите сохранить.
  • Следите за VRAM: запускайте nvidia-smi во время генерации. Воркфлоу, который помещается с запасом всего в 1 GB, перестанет работать в тот день, когда вы добавите ещё одну ноду; дополнение netdata строит график использования во времени.

При такой настройке GPU-сервер переживает перезагрузки, переустановки и ваши собственные эксперименты, а единственное, чего вы касаетесь из месяца в месяц, — воркфлоу.

GC
GPU-команда CheapServ

Бенчмарки, образы и шаблоны для парка GPU-серверов.

Разверните первый сервер меньше чем за минуту.

Пополните баланс от $25 в BTC, ETH, XMR или USDT. Баланс не сгорает, а неиспользованные средства можно вернуть.

Создать аккаунт