Почему отдельный сервер ComfyUI — это не роскошь, а необходимость
Вы замечали, как команда из пяти человек превращает пять рабочих станций в пять отдельных вселенных? Один качает модели размером с небольшую планету, другой экспериментирует с LoRA, третий плачет, потому что на его RTX 4090 не хватает VRAM для SDXL. Звучит знакомо? Это классический ад распределенного инференса.
Общий сервер ComfyUI решает главную проблему — централизует вычислительные ресурсы. Вместо пяти отдельных GPU у вас появляется один мощный узел, доступный всей команде. Экономия на электричестве, охлаждении и, что важнее, на нервах.
Железо: что покупать, а что брать в аренду
Давайте забудем про «бюджетные решения». Если вы собираете сервер для команды, который должен работать 24/7 и не падать при одновременной генерации пяти пользователей — здесь нет места компромиссам. Но и не нужно выбрасывать деньги на ветер.
1 Процессор: почему ThreadRipper PRO, а не Epyc
AMD ThreadRipper PRO 7000WX — ваш выбор. Почему не Epyc? Потому что Epyc создан для виртуализации и баз данных, а ThreadRipper PRO — для рабочих станций. У него больше PCIe линий на канал (х128 против х128 у Epyc, но с другой топологией), что критично при установке 4-8 видеокарт.
Возьмите 64-ядерную модель (например, 7995WX). Не экономьте на ядрах. ComfyUI, особенно с расширениями вроде ComfyUI-Manager, создает десятки процессов. А если вы планируете параллельно запускать Whisper для транскрибации, то эти ядра спасут вас.
Не покупайте ThreadRipper без надписи PRO. Обычные ThreadRipper имеют урезанное количество PCIe линий (х64 вместо х128) и лимит на оперативную память. Для сервера это смертельно.
2 Видеокарты: RTX Pro 6000 против «игровых» аналогов
Здесь всё просто: если сервер корпоративный — только профессиональные карты. RTX 6000 Ada Generation с 48 ГБ VRAM. Да, дорого. Да, можно взять четыре RTX 4090 за те же деньги. И потом потратить ещё столько же на борьбу с thermal throttling, переделку системы охлаждения и молитвы, чтобы карты не сгорели под нагрузкой 24/7.
| Параметр | RTX 6000 Ada | RTX 4090 |
|---|---|---|
| VRAM | 48 ГБ GDDR6 | 24 ГБ GDDR6X |
| TDP | 300 Вт | 450 Вт |
| Охлаждение | Blower (выдув наружу) | Axial (внутри корпуса) |
| Гарантия при 24/7 | 3-5 лет | 0 (нарушаются условия) |
Blower-кулер на профессиональных картах выдувает горячий воздух за пределы корпуса. Это архиважно при установке 4 карт вплотную. Осевые кулеры RTX 4090 превратят ваш сервер в сауну за 10 минут.
3 Блок питания: почему 2500W — это минимум
Считаем: ThreadRipper PRO 7995WX (350W) + 4x RTX 6000 Ada (4x300W = 1200W) + материнская плата, оперативка, SSD (200W). Итого 1750W. Это в пике. Но блок питания не должен работать на 100% мощности — это гарантированный выход из строя через полгода.
Берём с запасом 40-50%. Значит, 2500W — это не прихоть, а необходимость. Выбирайте только сертифицированные 80 PLUS Platinum или Titanium блоки. Seasonic, Super Flower, be quiet! Dark Power Pro.
Сборка: что пойдёт не так (спойлер: всё)
Вы купили железо. Распаковали. Пора собирать. Вот где начинается настоящее веселье.
Материнская плата и PCIe
Нужна плата с минимум 4 слотами PCIe x16, работающими в режиме x16/x16/x16/x16. Не x16/x8/x8/x8. Проверяйте спецификации. ASUS Pro WS WRX90E-SAGE SE — отличный выбор.
Устанавливайте карты через один слот, даже если физически они вплотную. Между ними должен остаться пустой слот для airflow. Иначе получите thermal throttling уже при 70% загрузки.
Охлаждение процессора
Никаких AIO на 240 мм. ThreadRipper PRO под нагрузкой выделяет 350W тепла. Нужен либо массивный воздушный кулер (Noctua NH-U14S TR5), либо AIO на 360 мм с гарантированно надёжной помпой. Помпа должна работать 24/7 три года минимум.
Настройка портов: как не запутаться в трёх сервисах на одном порту
ComfyUI по умолчанию слушает порт 8188. Но у вас несколько пользователей. Им нужно:
- Доступ к веб-интерфейсу ComfyUI
- Загрузка файлов (например, контрольные изображения)
- API для интеграции с другими инструментами
- Возможно, SSH для администрирования
Делаем так:
# Запускаем ComfyUI с разными портами для разных экземпляров
# Пользователь 1
python main.py --port 8188 --listen
# Пользователь 2 (в другом screen/tmux)
python main.py --port 8189 --listen --extra-model-paths configs/user2_models.yaml
# Пользователь 3
python main.py --port 8190 --listen
Но это неэлегантно. Лучше использовать nginx как reverse proxy с subdomain или path-based routing.
# /etc/nginx/sites-available/comfyui
server {
listen 80;
server_name comfy.company.local;
location /user1/ {
proxy_pass http://localhost:8188/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location /user2/ {
proxy_pass http://localhost:8189/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
# Защита API
location /api/ {
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
proxy_pass http://localhost:8188/;
}
}
Теперь пользователи заходят на comfy.company.local/user1/ и comfy.company.local/user2/. У каждого свой порт, свои модели (через --extra-model-paths), свои workflow.
Не используйте порты ниже 1024 без необходимости. Не запускайте ComfyUI от root. Создайте отдельного пользователя comfyui и запускайте от него. Иначе любой RCE в расширении ComfyUI даст злоумышленнику root на всём сервере.
Управление доступом: кто что может
ComfyUI не имеет встроенной системы аутентификации. Это проблема. Решаем её на уровне nginx и файловой системы.
Базовый auth через nginx
# Создаём файл с паролями
sudo apt install apache2-utils
sudo htpasswd -c /etc/nginx/.htpasswd username1
sudo htpasswd /etc/nginx/.htpasswd username2
Теперь доступ к comfy.company.local потребует логин и пароль. Но это всё ещё один пароль на всех. Нужна изоляция.
Изоляция пользователей через Docker
Запускаем каждый экземпляр ComfyUI в отдельном Docker-контейнере с bind mount на персональные директории.
# Для пользователя 1
docker run -d \
--name comfyui-user1 \
--gpus all \
-p 8188:8188 \
-v /home/comfyui/user1/models:/app/models \
-v /home/comfyui/user1/output:/app/output \
-v /home/comfyui/user1/config:/app/config \
--memory=32g \
--memory-swap=64g \
comfyui:latest
Теперь у каждого пользователя:
- Свои модели (не дублируются на диске)
- Свои output-директории
- Лимит по памяти (чтобы один пользователь не съел всю оперативку)
- Возможность кастомизировать конфиг без влияния на других
Мониторинг и обслуживание
Сервер работает. Теперь нужно понять, что он вообще делает.
GPU мониторинг
Установите nvidia-smi с логированием:
# Пишем скрипт для логирования
#!/bin/bash
while true; do
nvidia-smi --query-gpu=timestamp,name,utilization.gpu,utilization.memory,memory.total,memory.used,memory.free,temperature.gpu,power.draw --format=csv -l 1 >> /var/log/gpu_monitor.log
sleep 60
done
Или используйте готовые решения: Grafana + Prometheus + DCGM Exporter. Но для начала хватит и простого логирования.
Очистка кэша
ComfyUI кэширует модели в оперативной памяти. После нескольких дней работы сервер может съесть 128 ГБ RAM просто так. Добавьте cron-задачу:
# Каждый день в 4 утра очищаем кэш
0 4 * * * docker exec comfyui-user1 sh -c "echo 3 > /proc/sys/vm/drop_caches"
Подводные камни, о которых молчат
Проблема 1: Разные версии расширений. Один пользователь поставит ComfyUI-Manager 0.5.0, другой — 0.5.1. Начнутся конфликты. Решение — заморозить версии расширений на сервере и обновлять централизованно.
Проблема 2: Модели занимают место. Одна модель SDXL — 7 ГБ. Десять разных версий — 70 ГБ. Установите квоты на диск. Используйте символические ссылки на общую директорию с моделями, которые точно нужны всем.
Проблема 3: Пользователи убивают процессы. Кто-то захочет «перезапустить ComfyUI» и убьёт все процессы Python. Используйте systemd или supervisor для управления процессами.
# /etc/systemd/system/comfyui@.service
[Unit]
Description=ComfyUI Service for user %i
[Service]
Type=simple
User=comfyui
WorkingDirectory=/home/comfyui/%i
ExecStart=/usr/bin/python /home/comfyui/%i/comfyui/main.py --port 8188 --listen
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
Что дальше? Интеграция в корпоративную инфраструктуру
Ваш сервер ComfyUI работает. Теперь его нужно встроить в общую инфраструктуру. API-ключи для внутренних сервисов, интеграция с системой хранения файлов компании, бэкапы workflow.
Настройте регулярное резервное копирование workflow.json всех пользователей. Эти файлы — результат часов работы. Их потеря деморализует команду больше, чем падение сервера.
И помните: общий сервер — это не просто железо. Это ещё и документы. Напишите инструкцию: как получить доступ, как загрузить свои модели, что делать если что-то сломалось. Сохраните её не на самом сервере (иронично, да?).
Следующий шаг — автоматизация развёртывания. Когда ваш сервер заработает и команда поймёт его ценность, появится запрос на второй такой же. Или на масштабирование. Но это уже тема для отдельного разговора — например, как построить бюджетный кластер для LLM или организовать локальный AI-сервер с доступом к файлам.
Главное — начать. Соберите минимальную конфигурацию. Подключите двух самых технически подкованных пользователей. Получите обратную связь. И только потом масштабируйтесь. Удачи.