Рендеринг на облачных GPU: оффлайн vs интерактив

Задача страницы. Помочь выбрать архитектуру и профиль GPU под оффлайн‑рендер (фермы, очереди, пакетные задания) и интерактив (DCC/Unreal/Omniverse, удалённые рабочие станции), быстро стартовать на шаблонах и посчитать экономику.

TL;DR

  • Оффлайн‑рендер → максимальный throughput, допускается Interruptible при грамотном разбиении на короткие чанки (≤ 120 с) и ретраях; артефакты/тайлы/кэш — на локальном NVMe.
  • Интерактив → минимальная латентность, стабильный FPS/отклик; On‑Demand режим, тонкая настройка стриминга (NVENC/AV1), трекинг p50/p95 input‑to‑pixel.
  • Профили GPU: 24 ГБ (Compact) для тестов/превью и небольших сцен; 48 ГБ (Balanced) — основной рабочий профиль; 80 ГБ (HQ) — тяжёлые сцены, большие текстуры, path tracing/denoise.
  • Хранилище: сцены/ассеты в «тёплом» хранилище, локальный NVMe — «горячий» кэш; для оффлайна — префетч батчей.

Сценарии: когда что выбирать

Оффлайн‑рендер (batch/farm)

  • Кинопроекты, рекламные ролики, кадры/анимация в Blender Cycles, Redshift/Octane/V‑Ray, Houdini Karma XPU.
  • Массовые транскоды/денойзинг/апскейл — в отдельные батчи.
  • Параллелим по кадрам/тайлам/strip‑ам; чанк ≤ 120 с для Interruptible.

Интерактив (DCC/Realtime/Pixel Streaming)

  • Сессии художников/тех. артистов в DCC, Unreal/Path Tracer, NVIDIA Omniverse/Isaac; удалённые GPU‑станции.
  • On‑Demand, приоритет — латентность до кадра (stream‑input → frame‑present p95). NVENC/AV1, адекватный битрейт и адаптивный fps.

Гибриды

  • Превью в интерактиве, финальные кадры — в оффлайн‑очередь.

Профили GPU и ориентиры производительности

Профиль VRAM Типовые задачи Режим
24 ГБ (Compact) 24 ГБ Превью/стил‑кадры, лёгкие сцены Interruptible (batch)
48 ГБ (Balanced) 48 ГБ Средние/тяжёлые сцены, анимация 1080p/1440p Interruptible или On‑Demand
80 ГБ (HQ) 80 ГБ Большие сцены, 4K/8K, path tracing, волюметрика On‑Demand

Конфиги и скелеты

Docker‑задача оффлайн‑рендера (Blender headless)

docker run --rm --gpus all \
  -v /projects/scene:/scenes \
  -v /projects/out:/out \
  registry.local/blender-gpu:latest \
  blender -b /scenes/shot.blend -E CYCLES \
  --python-expr "import bpy; \
prefs=bpy.context.preferences.addons['cycles'].preferences; \
prefs.compute_device_type='OPTIX'; \
prefs.get_devices(); [setattr(d,'use',True) for d in prefs.devices]; \
bpy.context.scene.cycles.device='GPU'" \
  -s 100 -e 200 -a -o /out/frame_#### -F PNG

Если кадры длинные (> 120 с), разрежь на тайлы (region render) и рендерь независимо.

YAML‑спека очереди батч‑задач

job:
  name: "shot_010_offline"
  gpu_profile: "48GB-Balanced"
  mode: "interruptible"
  chunk_seconds: 120
  retries: 3
  input:
    scene: "/scenes/shot_010.blend"
    frames: [100,101,102,103,104,105]
  cache:
    nvme_size_gb: 200
    warm_prefetch: ["textures/", "cache/irradiance/"]
  output:
    path: "/out/shot_010/"
    format: "EXR"

Наблюдаемость, метрики, алерты

Ключевые метрики:

  • Оффлайн: render_frame_seconds (histogram), job_queue_depth, tiles_inflight, gpu_utilization, gpu_memory_used_bytes, io_read_mb_s.
  • Интерактив: frame_time_seconds (p50/p95), fps_actual, input_to_pixel_latency_ms, nvenc_sessions, net_rtt_ms.

Алерты: p95 frame_time_seconds > целевого SLA; gpu_utilization < 60% при высокой очереди — признак CPU/I/O узкого места.

Экономика и формулы

Оффлайн:

Cost_per_frame = (c_gpu × t_frame / 3600) / U × r
Cost_total = N × Cost_per_frame + Overhead_io

Интерактив:

Cost_per_hour = c_gpu / U

Где c_gpu — цена/час, t_frame — сек/кадр, U — целевая загрузка GPU (0..1), r — retry‑factor.

Чек‑лист перед продом

  • Версии движка/плагинов зафиксированы в контейнерах; эталонные кадры проверены.
  • Настроен NVMe‑кэш и warm‑префетч ассетов.
  • Определены целевые p50/p95 frame_time/FPS, алерты включены.
  • Выбрана стратегия разбиения (кадр/тайл/strip), чанк ≤ 120 с для Interruptible.
  • Секреты/лицензии вынесены в секрет‑хранилище; egress ограничен.
  • Экономика посчитана (Cost_per_frame/Cost_per_hour) по профилю GPU.

Навигация по разделу «Рендеринг»

Blender CyclesRedshift/Octane/V‑RayHoudini Karma XPUUnreal EngineNVIDIA Omniverse/IsaacТранскодирование видеоДеноизинг

Готовы запустить?

Запустить GPU-сервер