Пакетная генерация на interruptible GPU: стратегия
Задача страницы. Показать, как массово генерировать изображения и видео на дешёвых interruptible‑инстансах без провалов по качеству и срокам: архитектура очередей и воркеров, разбиение задач на «чанки», кэш весов на NVMe, идемпотентность и детерминизм (seeds/манifest), метрики/алерты, расчёт времени/стоимости и выбор профилей GPU.
TL;DR
- Архитектура: управляющая плоскость и очередь — на on‑demand; генерация — на interruptible. Возврат задач по таймауту «лиза» (lease).
- Чанкование: одна единица работы ≤ 30–120 с. Потеря при прерывании ≈ пол‑чанка; длиннее — дороже ретраи.
- Идемпотентность: request_id + param_hash + фиксированные seed/версии весов → повторный запуск даёт тот же результат.
- Кэш весов/артефактов: локальный NVMe + прогрев воркеров; карты ControlNet/маски/видео‑кадры — переиспользовать.
- Наблюдаемость: imgs_per_min, p95 t_step_ms, VRAM пик, доля ретраев/прерываний, кэш‑хиты.
- Смежные разделы: обзор генерации — https://cloudcompute.ru/solutions/image-video-gen/ • шаблоны — https://cloudcompute.ru/solutions/templates/ • прерываемые паттерны — https://cloudcompute.ru/solutions/interruptible-patterns/ • тюнинг — https://cloudcompute.ru/solutions/performance-tuning/ • стоимость — https://cloudcompute.ru/solutions/cost-planner/ • хранение — https://cloudcompute.ru/solutions/storage-data/ • мониторинг — https://cloudcompute.ru/solutions/monitoring-logging/ • наблюдаемость — https://cloudcompute.ru/solutions/llm-inference/observability/
Архитектура: разделяем управление и вычисления
Контур:
- Control‑plane (on‑demand): очередь/БД/метрики/дашборды/логика приоритизации.
- Workers (interruptible): контейнеры ComfyUI/WebUI/TensorRT‑LLM и вспомогательные сервисы (препроцессоры, апскейл, реставрация лиц, транскод).
Роли и протоколы:
| **Компонент** | **Роль** | **Требования** |
| **Очередь** | Выдаёт задачи по lease (видимость/таймаут) | TTL < длительность чанка, повторная публикация по тайм‑ауту |
| **Диспетчер** | Приоритизация (short/long), квоты, дедлайны | SLA‑классы, лимиты параметров |
| **Воркеры** | Выполняют чанки, ведут heartbeat | Прогрев весов, локальный NVMe‑кэш |
| **Репозиторий артефактов** | Хранение результатов/логов/отчётов | Идемпотентная запись по request\_id |
См. также: стриминг прогресса — https://cloudcompute.ru/solutions/llm-inference/streaming/, CI/CD для контейнеров — https://cloudcompute.ru/solutions/containers-ci-cd/
Разбиение задач: «чанки» и манифест партии
Почему чанк ≤ 2 минут: при прерывании теряется в среднем ½ длительности текущего чанка. Короткие чанки уменьшают потерю, а накладные остаются терпимыми, если кэш на NVMe и модели прогреты.
Структура партии (manifest):
batch_id: cat-2025-09-collections
pipeline: comfyui-sdxl-style
defaults:
width: 1024
height: 1024
steps: 26
cfg: 6.0
sampler: dpmpp_2m
seed_strategy: fixed-per-item
items:
- request_id: 0001
prompt: "modern product photo, soft light"
negative: "blurry, watermark"
refs:
style: "s3://assets/style/brandA.jpg"
control_canny: "s3://assets/edges/0001.png"
outputs:
path: "s3://batches/cat-2025-09/0001/"
name_pattern: "{request_id}_{seed}.png"
- request_id: 0002
...
Идемпотентность:
- param_hash = sha256(pipeline + prompt + negative + refs + steps + seed + model_versions)
- Воркеры сначала проверяют наличие готового файла с тем же param_hash, затем считают.
Детерминизм: семена и версии - Seed‑политика: фиксируйте seed (или функцию seed_i = hash(batch_id, request_id, i)), чтобы ретраи приносили тот же результат.
- Версионирование: храните в отчёте «манифест версии»: model_name@digest, lora@digest, controlnet@digest, vae@digest.
- Хеш путей: складывайте param_hash в имя выходного файла/папки.
Кэш и прогрев: NVMe как ускоритель
Локальный NVMe на воркере:
- Каталоги: /models, /weights, /pipelines, /cache/refs, /cache/tiles.
- Первичная синхронизация при старте воркера; прогрев (глухой прогон) модели в «тихом» режиме.
- Кэш препроцессоров: карты Canny/Pose/Depth; для видео — разложенные кадры (см. https://cloudcompute.ru/solutions/image-video-gen/video/).
Подробнее: https://cloudcompute.ru/solutions/storage-data/
Очереди, лизы и ретраи
Алгоритм:
- Воркер берет сообщение с lease_ttl = 90 с.
- Каждые 15–30 с шлёт heartbeat (продление lease).
- При успехе — ack и загрузка результатов/логов/метрик.
- При прерывании — lease истекает, задача снова видна другим воркерам.
Важные поля задачи:
request_id, param_hash, priority, deadline, max_retries, cost_cap, chunk_type
- max_retries: 3–5 (зависит от частоты прерываний).
- cost_cap: «секёшь» слишком дорогую задачу, чтобы не выбиться из бюджета.
Приоритизация:
- Очереди short (превью) и long (массовые партии).
- «Справедливость» по клиентам/проектам: квоты и лимиты воркеров. Профили пайплайнов: изображения и видео
Изображения (SDXL/SD3, стиль/контроль):
- Чанк = «N изображений одной сцены/стиля» (например, 4–8 шт.), чтобы прогреваться один раз.
- Строгая экономия: 768–1024² → апскейл 2–4× после (см. https://cloudcompute.ru/solutions/image-video-gen/upscaling/).
- ControlNet/IP‑Adapter лучше держать в одном чанке с одинаковыми весами. (Подробнее: https://cloudcompute.ru/solutions/image-video-gen/controlnet/)
Видео (генерация/стилизация/интерполяция):
- Чанк = отрезок 3–5 с или K кадров; хранить промежуточные PNG в NVMe.
- Пайплайн: кадры → стиль/варп → (апскейл) → транскод (https://cloudcompute.ru/solutions/rendering/video-transcode/).
- Подробный конвейер — https://cloudcompute.ru/solutions/image-video-gen/video/
Прерывания: что именно сохранять
- Метаданные: stdout/stderr шага, seed, param_hash, время, VRAM пик, версии весов.
- Промежуточные артефакты: карты препроцессоров, VAE‑латенты (если стек позволяет), PNG‑кадры видео.
- Чекпоинт «чего‑сделано»: done.list (перечень успешных выходов), чтобы ретрай взял только недоделанное.
- В генерации изображений не всегда есть смысл «продолжать шаги диффузии» после прерывания — проще пересчитать картинку детерминированно, поэтому короткий чанк критичен.
Безопасность и политика
- Лимиты параметров: max_resolution, max_steps, max_batch, max_duration (для видео), max_concurrent_jobs.
- Белые списки моделей/LoRA/контрольных модулей; маскирование PII в логах.
- Санация путей ввода/вывода и контроль контента.
Подробнее: https://cloudcompute.ru/solutions/security/ и https://cloudcompute.ru/solutions/llm-inference/guardrails/
Метрики, логи и алерты
Сбор и визуализация — https://cloudcompute.ru/solutions/monitoring-logging/ и https://cloudcompute.ru/solutions/llm-inference/observability/
Технические:
- imgs_per_min / frames_per_min, p50/p95 t_step_ms, queue_wait_ms.
- VRAM пик, GPU util, частота OOM/ретраев, прерывания/час.
- Кэш‑хиты NVMe, время загрузки весов.
Качество:
- Доля дефектов (швы тайлов, ореолы, «восковые» лица) — см. https://cloudcompute.ru/solutions/image-video-gen/upscaling/ и https://cloudcompute.ru/solutions/image-video-gen/face-restoration/
Алерты:
Рост p95 t_step_ms, падение кэш‑хитов, всплеск OOM/ретраев, превышение cost_cap.
Экономика: простые формулы
Пусть P_on — цена on‑demand, P_int — цена interruptible, λ — частота прерываний (в час), τ — длительность чанка (в часах).
Потеря работы из‑за прерываний (в доле времени):
overhead_preempt ≈ λ × τ × 0.5
(в среднем теряем ~½ текущего чанка при каждом прерывании)
Эффективная цена часа вычислений:
P_eff ≈ P_int / (1 - overhead_preempt)
Условие выгоды interruptible:
P_eff < P_on ⇒ P_int < P_on × (1 - overhead_preempt)Отсюда видно: чем короче чанк, тем меньше overhead, тем чаще interruptible побеждает. Гайд по планированию — https://cloudcompute.ru/solutions/cost-planner/
Рекомендованные профили GPU
| **Профиль** | **Для чего** | **Примеры задач** | **Ориентиры** |
| **Compact** (24 ГБ) | Превью/каталоги, upscaling 2× | SDXL @768–1024², A1111, Real‑ESRGAN, Face‑Restore | Высокий TPS на дешёвых воркерах |
| **Balanced** (48 ГБ) | Стабильный прод для SDXL/SD3 | ControlNet+IP‑Adapter, апскейл 4×, видео 576–720p | Хороший запас по VRAM |
| **HQ** (80 ГБ) | Тяжёлые SD3/видео‑пайплайны | 1024²+, мульти‑ветки контроля, 1080p видео | Дорогой, держать часть on‑demand |
Выбор под стек — в разделах: SDXL — https://cloudcompute.ru/solutions/image-video-gen/sdxl/ • SD3 — https://cloudcompute.ru/solutions/image-video-gen/sd3/ • Control — https://cloudcompute.ru/solutions/image-video-gen/controlnet/ • Апскейл — https://cloudcompute.ru/solutions/image-video-gen/upscaling/
Пример: минимальный воркер и протокол с очередью
Соглашение:
- POST /v1/batch/enqueue — ставит запросы;
- GET /v1/queue/pull?lease=90 — выдаёт задачу;
- POST /v1/queue/heartbeat — продление «лиза»;
- POST /v1/queue/ack — подтверждает выполнение.
Скелет воркера (псевдокод):
def run_worker():
while True:
job = queue.pull(lease=90)
if not job: sleep(2); continue
try:
warmup_if_needed(job.model_bundle)
with heartbeat(interval=20):
for chunk in plan(job): # разбиваем на чанки
if already_done(chunk.param_hash): continue
out = execute_chunk(chunk) # comfyui/a1111 API
upload(out)
record_done(chunk)
queue.ack(job.id)
except Preempted:
# lease истечёт или ловим сигнал; ничего не делаем — очередь вернёт задание
pass
except Exception as e:
mark_error(job, str(e))
Примеры API для ComfyUI/A1111 — в разделах: ComfyUI — https://cloudcompute.ru/solutions/image-video-gen/comfyui/ • WebUI — https://cloudcompute.ru/solutions/image-video-gen/automatic1111/
Контроль качества перед выгрузкой
- Gate‑проверки перед ack: размер/битность, отсутствие «швов/ореолов», «восковых» лиц.
- Автодоправка: при дефекте — повторный расчёт с мягко изменёнными параметрами (например, +4 шага, слабее denoise, другая карта порогов Canny).
- Отчёты по партии: превью‑коллажи, статистика дефектов/времени/цены.
Как запускать в cloudcompute.ru
Шаблоны: https://cloudcompute.ru/solutions/templates/
- “Batch‑Render (Images)” — очереди short/long, ComfyUI/A1111, NVMe‑кэш, отчёты.
- “Batch‑Render (Video)” — шардинг кадров, ретраи чанков, варп/стилизация/апскейл, транскод: https://cloudcompute.ru/solutions/image-video-gen/video/ и https://cloudcompute.ru/solutions/rendering/video-transcode/
- “ComfyUI‑GPU” — готовые графы для SDXL/SD3, ControlNet/IP‑Adapter: https://cloudcompute.ru/solutions/image-video-gen/comfyui/
- “A1111‑GPU” — WebUI + Extras API: https://cloudcompute.ru/solutions/image-video-gen/automatic1111/
Экономика/SLA — https://cloudcompute.ru/solutions/cost-planner/ • эксплуатация — https://cloudcompute.ru/solutions/performance-tuning/ • прерываемые паттерны — https://cloudcompute.ru/solutions/interruptible-patterns/
Чек‑лист перед продом
- Разделены control‑plane (on‑demand) и workers (interruptible).
- Размер чанка ≤ 120 с; настроены lease_ttl, heartbeat и ретраи.
- Идемпотентность: request_id + param_hash + фиксированные seed/версии.
- NVMe‑кэш и прогрев моделей; кэш карт препроцессоров и кадров.
- Приоритизация short/long, квоты, лимиты параметров (max_resolution/steps/batch/duration).
- Метрики/алерты/трейсинг включены; отчёты по времени/цене/дефектам.
- Рассчитан P_eff и подтверждён выигрыш interruptible по вашему λ и τ.
Навигация по разделу «Генерация изображений и видео»
https://cloudcompute.ru/solutions/image-video-gen/ • https://cloudcompute.ru/solutions/image-video-gen/comfyui/ • https://cloudcompute.ru/solutions/image-video-gen/automatic1111/ • https://cloudcompute.ru/solutions/image-video-gen/sdxl/ • https://cloudcompute.ru/solutions/image-video-gen/sd3/ • https://cloudcompute.ru/solutions/image-video-gen/controlnet/ • https://cloudcompute.ru/solutions/image-video-gen/upscaling/ • https://cloudcompute.ru/solutions/image-video-gen/face-restoration/ • Вы здесь: https://cloudcompute.ru/solutions/image-video-gen/batch-render/ • видео: https://cloudcompute.ru/solutions/image-video-gen/video/ • инфраструктура: https://cloudcompute.ru/solutions/performance-tuning/ • https://cloudcompute.ru/solutions/cost-planner/ • https://cloudcompute.ru/solutions/storage-data/ • https://cloudcompute.ru/solutions/monitoring-logging/ • https://cloudcompute.ru/solutions/llm-inference/observability/ • https://cloudcompute.ru/solutions/llm-inference/streaming/ • https://cloudcompute.ru/solutions/interruptible-patterns/ • https://cloudcompute.ru/solutions/rendering/video-transcode/ • https://cloudcompute.ru/solutions/containers-ci-cd/
Готовы запустить?
Запустить GPU-сервер