Redshift/Octane/V‑Ray на GPU: производительность и лицензии
Задача страницы. Дать практический рецепт запуска Redshift/Octane/V‑Ray в облаке: как собирать headless‑ферму, где упирается throughput, как учитывать лицензии (сервер/онлайн/офлайн), как строить очереди и считать стоимость кадра с учётом GPU и лицензий.
TL;DR
- Оффлайн‑рендер (batch): делим по кадрам/тайлам, работаем в Interruptible (чанк ≤ 120 с, ретраи, локальный NVMe‑кэш), итог — stitch+denoise.
- Интерактив (artist/preview): On‑Demand, приоритет — p95 input→pixel и стабильный FPS; рабочие станции/Pixel Streaming. См. https://cloudcompute.ru/solutions/rendering/studio-remote/
- Throughput: один жирный процесс на все GPU ≠ всегда выгодно. Часто быстрее запускать по 1 процессу на 1 GPU, особенно на 24–48 ГБ.
- VRAM‑профили: 24 ГБ (Compact) — предпревью/средние сцены; 48 ГБ (Balanced) — основной «рабочий» профиль; 80 ГБ (HQ) — 4K/8K, волюметрика, сложные шейдеры.
- Лицензии: центр. сервер или аккаунт‑аутентикация. В облаке — хранить ключи/токены в секрете, ограничить egress, учитывать seat‑конкуренцию в планировщике. См. https://cloudcompute.ru/solutions/security/
- Хранилище: ассеты в «тёплом», локальный NVMe — «горячий» кэш шейдеров/текстур; префетч перед стартом. См. https://cloudcompute.ru/solutions/storage-data/
- Наблюдаемость: render_frame_seconds, tile_render_seconds, gpu_utilization, gpu_memory_used_bytes, + license_seats_in_use. См. https://cloudcompute.ru/solutions/monitoring-logging/
- Экономика: Cost_per_frame = ((c_gpu + c_license) * t_frame / 3600) / U * r; для интерактива — Cost_per_hour = (c_gpu + c_license) / U. См. https://cloudcompute.ru/solutions/cost-planner/
Сценарии использования
Оффлайн‑ферма (batch)
- Финальные кадры реклам/анимации, массовые последовательности.
- Экспорт сцен в промежуточные контейнеры: .vrscene / .orbx / .rs‑архивы; headless‑рендер без GUI.
- Параллелизм по кадрам и/или по тайлам (region render) для укладывания в чанк ≤ 120 с.
Интерактив/превью
- Быстрые итерации материалов/света, «look‑dev», короткие сессии художников.
- Переключение сцен/версий в пару кликов, стриминг экрана/кадра, On‑Demand.
- Цель — p95 frame‑time и стабильный FPS; результат — предпросмотр или контрольные кадры.
Гибрид
- Превью и луки — интерактив; финал — в оффлайн‑очередь.
- Denoise/транскод видео — отдельные батчи. См. https://cloudcompute.ru/solutions/rendering/de-noising/ и https://cloudcompute.ru/solutions/rendering/video-transcode/
Архитектуры/пайплайны A. Экспорт → Headless‑рендер → Stitch/Denoise
[DCC (Maya/C4D/3dsMax/Blender)]
| Export (.vrscene/.orbx/.rs)
v
[Warm Storage /assets + /exports] -> [Prefetch -> NVMe "hot" cache] -> [Job Queue]
|
+-------------+-------------+
| |
[GPU Worker #1] [GPU Worker #N]
(1 proc / 1 GPU, tile/frame) (1 proc / 1 GPU)
| |
[Tiles/Frames OUT] [Tiles/Frames OUT]
/
+--------> [Stitch/Denoise/QA] -> [Cold Archive]
Ключи: фиксированные версии рендер‑плагинов, общий базовый образ; NVMe‑кэш; ретраи по тайлам; детерминированные сиды.
B. Лицензионная топология
[License Server/Cloud Account]
^
| TLS-only, allowlist
+----------+----------+
| |
[Worker Pool A] [Worker Pool B]
(seat borrow N) (seat borrow M)
- Планировщик учитывает свободные seat‑ы; держите запас 5–15% для пиков.
- При прерывании/ошибке — быстрая «де‑регистрация» и возврат seat.
C. Много GPU в узле (single vs multi‑proc)
[Worker Node: GPU0, GPU1, GPU2, GPU3]
Mode 1: один процесс -> использует все GPU (монолитные сцены)
Mode 2: по 1 процессу на GPU -> независимые кадры/тайлы (часто быстрее)
Для 80 ГБ: допускается шардинг с MIG под мелкие задачи. См. https://cloudcompute.ru/solutions/mig/
Профили GPU и ориентиры throughput
| **Профиль** | **VRAM** | **Типовые сцены** | **Режим** | **Отн. throughput (≈)** | **Замечания** |
| **24 ГБ (Compact)** | 24 ГБ | предпревью, 1080p, средние шейдеры | Interruptible / On‑Demand | 1.0 | Тайлинг 256–512 px при риске OOM |
| **48 ГБ (Balanced)** | 48 ГБ | 1080p/1440p, более тяжёлые материалы | Interruptible / On‑Demand | 1.5–1.8 | «Рабочая лошадь» фермы |
| **80 ГБ (HQ)** | 80 ГБ | 4K/8K, волюметрика, сложные ноды | On‑Demand / Interruptible | 2.2–2.6 | Поддержка MIG и крупных сцен |
Индексы относительные; фактическая скорость зависит от движка/сцены/настроек.
Конфиги и скелеты
1) Унифицированная YAML‑спека задания (для очереди)
job:
name: "shot_020_rs_tiles"
engine: "redshift" # redshift | octane | vray
mode: "interruptible" # on-demand | interruptible
gpu_profile: "48GB-Balanced" # 24GB-Compact | 48GB-Balanced | 80GB-HQ
chunk_seconds: 120
retries: 3
input:
archive: "/exports/shot_020.rs" # .rs | .orbx | .vrscene
frames: [200, 201, 202, 203]
tiles:
grid: [2, 2] # 2x2 регионы
cache:
nvme_size_gb: 200
warmup: ["textures/", "shaders/"]
output:
dir: "/out/shot_020"
format: "EXR"
license:
server_url: "tls://licenses.internal:5053" # пример
seat_policy: "borrow" # borrow | online | node-locked
hooks:
on_start: ["python /scripts/warm_cache.py"]
on_tile_done: ["python /scripts/register_tile.py"]
on_frame_done: ["python /scripts/stitch_denoise.py"]
on_failure: ["python /scripts/requeue.py --backoff"]
2) Пусковой скрипт под разные движки (обобщённо)
#!/usr/bin/env bash
set -euo pipefail
ENGINE="${ENGINE:-redshift}" # redshift|octane|vray
ARCHIVE="${ARCHIVE:?path to .rs/.orbx/.vrscene}"
FRAME="${FRAME:?frame number}"
OUT="${OUT_DIR:-/out}"
TILE="${TILE_REGION:-}" # "xmin,ymin,xmax,ymax" (0..1), опционально
export LICENSE_SERVER="${LICENSE_SERVER:-tls://licenses.internal:5053}"
export RENDER_TMP="/nvme/tmp"
mkdir -p "$OUT"
case "$ENGINE" in
redshift)
# Псевдо-вызов CLI рендера из архива .rs
renderer="redshift-cli"
;;
octane)
# Псевдо-вызов CLI рендера из .orbx
renderer="octane-cli"
;;
vray)
# Псевдо-вызов CLI рендера из .vrscene
renderer="vray-standalone"
;;
*)
echo "Unknown ENGINE=$ENGINE"; exit 2 ;;
esac
ARGS=("--input" "$ARCHIVE" "--frame" "$FRAME" "--out" "$OUT/frame_${FRAME}.exr" "--tmp" "$RENDER_TMP")
if [[ -n "$TILE" ]]; then
IFS=',' read -r XMIN YMIN XMAX YMAX <<< "$TILE"
ARGS+=("--region" "$XMIN" "$YMIN" "$XMAX" "$YMAX")
fi
exec "$renderer" "${ARGS[@]}"
Имена бинарников условные — в реальной интеграции подставьте конкретный CLI соответствующего движка или headless‑запуск DCC с нужным плагином. Цель — показать шаблон.
3) Docker Compose: воркер + лицензии (пример топологии)
services:
license-proxy:
image: registry.local/license-proxy:latest
environment:
- ALLOWLIST_CIDRS=10.0.0.0/16
networks: [render-net]
deploy:
resources:
reservations:
cpus: '0.2'
memory: 128M
render-worker:
image: registry.local/gpu-renderer:latest
command: ["bash","-lc","/opt/run-job.sh"]
environment:
- ENGINE=redshift
- ARCHIVE=/exports/shot_020.rs
- FRAME=200
- LICENSE_SERVER=tls://license-proxy:5053
volumes:
- /mnt/warm/assets:/assets:ro
- /mnt/warm/exports:/exports:ro
- /mnt/cold/out:/out
- /nvme:/nvme
deploy:
resources:
reservations:
devices:
- capabilities: ["gpu"]
networks: [render-net]
networks:
render-net: {}
4) Экспорт сцен/пакетов (псевдо‑скрипт для DCC)
# exporter.py — идея: экспорт на кадры и/или пакеты по шотам
# Адаптируйте под ваш DCC API и нужный плагин.
import os
SCENE = "/projects/shot_020.scene"
OUT = "/exports"
ENGINE = "vray" # vray|octane|redshift
frames = range(200, 204)
os.makedirs(OUT, exist_ok=True)
def export_frame(engine, frame, out_dir):
# Здесь вызываются API плагина: set_frame(frame), bake/textures, export_archive(...)
# Результат: /exports/shot_020_f0200.vrscene (или .orbx/.rs)
pass
for f in frames:
export_frame(ENGINE, f, OUT)
``` **Наблюдаемость, метрики, алерты**
Опорные страницы:[ https://cloudcompute.ru/solutions/monitoring-logging/](https://cloudcompute.ru/solutions/monitoring-logging/) и[ https://cloudcompute.ru/solutions/llm-inference/observability/](https://cloudcompute.ru/solutions/llm-inference/observability/)
**Метрики рендера:**
- render\_frame\_seconds{engine=...} — гистограмма длительности кадра.
- tile\_render\_seconds{engine=...,grid="2x2"} — длительность тайла.
- gpu\_utilization, gpu\_memory\_used\_bytes, gpu\_power\_watts.
- io\_read\_mb\_s, io\_write\_mb\_s, shader\_cache\_hits\_total.
**Лицензии:**
- license\_seats\_total, license\_seats\_in\_use, license\_checkout\_failures\_total.
- seat\_hold\_seconds — держим под контролем время удержания, чтобы не было «утечек».
**Алерты:**
- p95 render\_frame\_seconds растёт > X% к базовому за 10–15 мин.
- gpu\_utilization < 60% при высокой очереди → I/O/лицензии/версии.
- license\_checkout\_failures\_total > 0 за 5 мин → проверьте сервер и квоты.
- gpu\_memory\_used\_bytes → лимит VRAM → включить тайлинг/снизить разрешение/перейти на больший профиль.
## **Экономика и формулы**
См.[ https://cloudcompute.ru/solutions/cost-planner/](https://cloudcompute.ru/solutions/cost-planner/) и <https://cloudcompute.ru/solutions/throughput-vs-latency/>
**Кадр (учёт лицензий):**
Cost\_per\_frame = ((c\_gpu + c\_license) \* t\_frame / 3600) / U \* r
где c\_gpu — цена/час GPU, c\_license — часовая доля лицензии на воркер (seat/час, или лицензия/узел),
t\_frame — сек/кадр, U — целевая загрузка GPU, r — retry‑factor (interruptible).
**Пакет N кадров:**
Cost\_total = N \* Cost\_per\_frame + Overhead\_io + Cost\_stitch\_denoise
**Интерактив:**
Cost\_per\_hour = (c\_gpu + c\_license) / U\_session
**Seat‑лимиты:**
- Если seats < workers, планировщик запускает min(seats, workers) одновременных задач.
- Рекомендация: seats ≈ ceil(workers \* 0.9) + буфер 5–15% на пики.
**Безопасность и политики**
См.[ https://cloudcompute.ru/solutions/security/](https://cloudcompute.ru/solutions/security/)
- **Ключи/токены/сервер лицензий** — через секрет‑хранилище; не печатаем в логи.
- **Ограничение egress** — разрешаем только домены/порты лицензирования и телеметрию.
- **Приватные ассеты** — временные токены доступа; ретеншн EXR/логов по политике.
- **Изоляция проектов** — сети/неймспейсы; разные сервис‑аккаунты.
- **Аудит** — логируем checkout/check‑in лицензий и соответствие задач.
**Траблшутинг**
<table><tbody><tr><td>**Симптом**
</td><td>**Причина**
</td><td>**Решение**
</td></tr><tr><td>Рендер не стартует, ошибка лицензии
</td><td>Нет seat‑ов или недоступен сервер
</td><td>Проверить license\_seats\_in\_use; увеличить квоту/буфер; проверить egress/сервер
</td></tr><tr><td>Seat «залип» после прерывания
</td><td>Не отработал хук возврата
</td><td>Добавить on\_preempt/on\_failure с принудительным release; уменьшить TTL холда
</td></tr><tr><td>OOM по VRAM
</td><td>Слишком крупный кадр/текстуры
</td><td>Тайлинг 2x2, 3x3; снизить разрешение; перейти на 48–80 ГБ
</td></tr><tr><td>GPU util 30–40%
</td><td>Узкое место I/O/компиляция шейдеров
</td><td>NVMe‑кэш, warmup, увеличить префетч; вынести denoise в отдельный батч
</td></tr><tr><td>Разный результат между нодами
</td><td>Версии плагинов/движков расходятся
</td><td>Единый контейнер‑образ; smoke‑тест кадра перед массовым запуском
</td></tr><tr><td>Просадки FPS в интерактиве
</td><td>Сеть/NVENC перегружены, сцена велика
</td><td>Снизить битрейт/разрешение, уменьшить текстуры/геометрию, выбрать 48–80 ГБ
</td></tr><tr><td>Долгий «первый кадр»
</td><td>Холодный кэш шейдеров
</td><td>Прогрев кэша при старте, не чистить NVMe между задачами
</td></tr><tr><td>Очередь стоит при свободных GPU
</td><td>Лицензии исчерпаны
</td><td>Включить лицензионные метрики в планировщик; расшить seats/расписание
</td></tr></tbody></table>
## **Как запустить в cloudcompute.ru**
1. **Шаблон**: выбрать на[ https://cloudcompute.ru/solutions/templates/](https://cloudcompute.ru/solutions/templates/)
- «GPU Render (headless) — RS/ORBX/VRSCENE» для batch.
- «Remote GPU workstation» для интерактива (см. <https://cloudcompute.ru/solutions/rendering/studio-remote/>).
2. **Профиль GPU**: 24/48/80 ГБ по таблице sizing; для тяжёлых сцен — 80 ГБ (HQ).
3. **Режим**:
- Оффлайн — **Interruptible** (чанк ≤ 120 с, ретраи).
- Критичные/длинные кадры — **On‑Demand**.
4. **Лицензии**: подключить сервер/аккаунт; задать переменные окружения в темплейте; включить метрики seats.
5. **Хранилище**: «тёплое» для ассетов/экспортов, локальный NVMe как «горячий» кэш. См.[ https://cloudcompute.ru/solutions/storage-data/](https://cloudcompute.ru/solutions/storage-data/)
6. **CI/CD контейнеров**: зафиксировать версии плагинов/движков; smoke‑рендер. См. <https://cloudcompute.ru/solutions/containers-ci-cd/>
7. **Наблюдаемость**: включить дашборды GPU/рендера/лицензий. См.[ https://cloudcompute.ru/solutions/monitoring-logging/](https://cloudcompute.ru/solutions/monitoring-logging/)
**Чек‑лист перед продом**
- Единый контейнер с фиксированными версиями Redshift/Octane/V‑Ray и зависимостей.
- Настроен лиценз. сервер/аккаунт, проверены метрики seats и возврат при прерывании.
- Экспорт сцен в .vrscene/.orbx/.rs протестирован; smoke‑рендер на нескольких воркерах.
- NVMe‑кэш прогревается, ассеты префетчатся, IO не бутылочное горлышко.
- План тайлинга/чанков: ≤ 120 с на тайл; ретраи включены.
- p50/p95 render\_frame\_seconds и целевые FPS/латентность (для интерактива) задокументированы.
- Экономика посчитана: Cost\_per\_frame/Cost\_total с учётом c\_license.
- Политики безопасности и ретенции применены; логи без секретов.
**Навигация**
- Хаб «Рендеринг»: <https://cloudcompute.ru/solutions/rendering/>
- Шаблоны запусков:[ https://cloudcompute.ru/solutions/templates/](https://cloudcompute.ru/solutions/templates/)
- Данные и хранение:[ https://cloudcompute.ru/solutions/storage-data/](https://cloudcompute.ru/solutions/storage-data/)
- Оптимизация производительности:[ https://cloudcompute.ru/solutions/performance-tuning/](https://cloudcompute.ru/solutions/performance-tuning/)
- Multi‑GPU/MIG:[ https://cloudcompute.ru/solutions/multi-gpu/](https://cloudcompute.ru/solutions/multi-gpu/) • <https://cloudcompute.ru/solutions/mig/>
- Мониторинг/логи:[ https://cloudcompute.ru/solutions/monitoring-logging/](https://cloudcompute.ru/solutions/monitoring-logging/)
- Throughput vs Latency: <https://cloudcompute.ru/solutions/throughput-vs-latency/>
- Interruptible‑паттерны: <https://cloudcompute.ru/solutions/interruptible-patterns/>
- Деноайзинг: <https://cloudcompute.ru/solutions/rendering/de-noising/>
- Транскодирование: <https://cloudcompute.ru/solutions/rendering/video-transcode/>
- Удалённые GPU‑станции: <https://cloudcompute.ru/solutions/rendering/studio-remote/>
- Пайплайны ассетов: <https://cloudcompute.ru/solutions/rendering/asset-pipelines/>
Готовы запустить?
Запустить GPU-сервер