Пайплайны ассетов: кеши, версии и артефакты
Задача страницы. Дать инженерный шаблон для организации пайплайна ассетов (модели, текстуры, материалы, UDIM‑сеты, превью/рендеры, выпеченные карты) в облаке: единый источник правды, кеширование, артефакты, версии и публикация. Показать архитектуры очередей, конфиги, метрики и экономику.
TL;DR
- SSOT и версии. Единый источник правды по ассету {asset}/{version}. Производные артефакты (LOD, KTX2, превью, bake‑карты) — повторяемые и детерминированные.
- Три уровня хранения. «Горячее» NVMe (кеш шейдеров, DDC, временные EXR/UDIM), «тёплое» объектное (исходники, мастер‑артефакты), «холодное» архив. См. https://cloudcompute.ru/solutions/storage-data/
- Очереди и идемпотентность. Работа мелкими чанками (UDIM/карта/превью ≤ 120 с) под Interruptible с ретраями и безопасной сборкой. См. https://cloudcompute.ru/solutions/interruptible-patterns/
- GPU там, где нужно. Превью/turntable, bake карт, денойз, ускоренные конвертеры — на GPU. Считайте U и удерживайте высокую загрузку. См. https://cloudcompute.ru/solutions/performance-tuning/
- Наблюдаемость. asset_ingest_seconds, artifact_build_seconds{type}, cache_hit_ratio, gpu_utilization, gpu_memory_used_bytes, p50/p95. См. https://cloudcompute.ru/solutions/monitoring-logging/
- Экономика. Cost_per_asset = (c_gpu * t_gpu / 3600) / U * r + Storage_cost. Планируйте бюджет на 1 000 ассетов. См. https://cloudcompute.ru/solutions/cost-planner/
- Безопасность. Секреты, лицензии, приватные ассеты, аудит публикаций. См. https://cloudcompute.ru/solutions/security/
- Интеграции. Сборки превью/рендера/выпечки и транскода — готовые рецепты: https://cloudcompute.ru/solutions/rendering/blender/, https://cloudcompute.ru/solutions/rendering/pbr-baking/, https://cloudcompute.ru/solutions/rendering/de-noising/, https://cloudcompute.ru/solutions/rendering/video-transcode/
Сценарии
- Игровая библиотека. Массовый инжест моделей, нормализация UV/UDIM, выпечка PBR‑карт, упаковка RMA/MRA, конверсия текстур (KTX2/BCn/ASTC), генерация LOD.
- VFX/архвиз. Инжест высокополигональных сцен, превью/turntable, EXR‑мастера, денойз, USD‑варианты и публикация.
- Каталоги/маркетплейсы. Унификация нейминга/цвет‑пространства, превью для веба, лёгкие прокси.
- Сим/цифровые двойники. Крупные наборы ассетов: кластерный bake, нормализация материалов, подготовка к Omniverse/Isaac. См. https://cloudcompute.ru/solutions/rendering/omniverse/
Архитектуры/пайплайны A. Инжест → Валидация → Артефакты → Публикация (SSOT)
[Drop/Import] -> [Validator/Probe] -> [SSOT Registry] -> [Job Queue] -> [GPU Workers]
| | | | |
(raw) schema/UV/UDIM/OCIO {asset}/{version} idempotent bake/preview/convert
| | | |
+---> [Quarantine] <----------------+-------------------+-----------+
(failed checks/needs fix)
|
[Publish/Review/Sign]
|
[Delivery/API]
Ключи: неизменяемые версии (v001, v002), атомарные публикации, строгая схема каталогов и шаблонов имён.
B. Трёхуровневое хранение + кеши
[Hot NVMe] <---- prefetch / write-back ---- [Warm Object Storage] ----> [Cold Archive]
(shader/DDC/temp/tiles) (исходники, мастера, индексы) (долгий ретеншн)
— Критичные этапы/временные файлы — только на NVMe. — Мастера/превью — в «тёплом». — Автоматическая миграция в «холодное».
C. Параллелизм по UDIM/карте/превью
[Asset vNNN] -> split -> [UDIM 1001] [UDIM 1002] ... -> bake/convert (≤ 120 c) -> join/index
— Любая единица работы идемпотентна и перезапускаема.
Профили GPU/VRAM/скоростей (ориентиры)
| **Профиль** | **VRAM** | **Где применяем в пайплайне** | **Режим** | **Отн. throughput (≈)** | **Примечания** |
| **24 ГБ (Compact)** | 24 ГБ | Превью/turntable 1080p, конверсия небольших карт | On‑Demand / Interruptible | 1.0 | Следить за VRAM при EXR 16f и множестве AOV |
| **48 ГБ (Balanced)** | 48 ГБ | Выпечка 2–4 K, 2–8 UDIM, денойз, KTX2 партиями | On‑Demand / Interruptible | 1.5–1.8 | Базовый профиль очередей |
| **80 ГБ (HQ)** | 80 ГБ | 8 K/много UDIM, тяжёлые превью/патч‑рендер | On‑Demand / Interruptible | 2.2–2.6 | Возможен MIG‑шардинг: https://cloudcompute.ru/solutions/mig/ |
Индексы относительные; итог зависит от разрешений, кол‑ва UDIM и графа артефактов.
Конфиги и скелеты
1)Спека задания на артефакты (YAML)
job:
name: "asset_chair_v002_build"
mode: "interruptible" # on-demand | interruptible
gpu_profile: "48GB-Balanced" # 24GB-Compact | 48GB-Balanced | 80GB-HQ
chunk_seconds: 120
retries: 3
input:
asset: "chair"
version: "v002"
src_model: "s3://warm/assets/chair/v002/chair_low.fbx"
src_textures: "s3://warm/assets/chair/v002/textures/*.tif"
udims: [1001,1002]
build:
bake_maps:
enable: true
maps:
- {type: "normal", res: 4096, bitdepth: "16f", space: "tangent", y_flip: true}
- {type: "ao", res: 4096, bitdepth: "16f", samples: 64}
preview_turntable:
enable: true
fps: 30
frames: 120
denoise: true
textures_convert:
enable: true
to: "ktx2"
quality: "uastc" # пример профиля
pack_channels:
enable: true
layout: "RMA" # R=roughness G=metallic B=ao
output:
dir: "s3://warm/artifacts/chair/v002/"
index: "s3://warm/index/chair_v002.json"
hooks:
on_start: ["python /scripts/prefetch_nvme.py"]
on_artifact: ["python /scripts/register_artifact.py"]
on_success: ["python /scripts/publish_sign.py"]
on_failure: ["python /scripts/requeue.py --backoff"]
2) Валидатор ассета (Python‑скелет)
# validate_asset.py
import json, re, sys, glob, os
RULES = {
"mesh_ext": [".fbx", ".obj", ".usd"],
"tex_ext": [".exr", ".tif", ".png", ".tga"],
"max_tex_res": 8192,
"udim_re": re.compile(r".*.(1d{3}).")
}
def validate_mesh(path):
ok = os.path.splitext(path)[1].lower() in RULES["mesh_ext"]
return ok, "mesh_ext" if not ok else None
def validate_textures(pattern):
fails = []
for p in glob.glob(pattern):
ext = os.path.splitext(p)[1].lower()
if ext not in RULES["tex_ext"]:
fails.append((p, "tex_ext"))
# UDIM check (optional)
m = RULES["udim_re"].match(p.replace("_", "."))
if m and not (1001 <= int(m.group(1)) <= 1099):
fails.append((p, "udim_range"))
return fails
def main(mesh, textures_glob):
ok_mesh, err = validate_mesh(mesh)
tex_fail = validate_textures(textures_glob)
report = {"mesh_ok": ok_mesh, "mesh_err": err, "tex_fail": tex_fail}
print(json.dumps(report)); return 0 if ok_mesh and not tex_fail else 2
if __name__ == "__main__":
sys.exit(main(sys.argv[1], sys.argv[2]))
3) Превью‑рендер (Blender headless, turntable)
docker run --rm --gpus all -v /assets:/assets -v /out:/out registry.local/blender-gpu:latest
blender -b /assets/chair_v002.blend -P /assets/scripts/turntable.py --
--out /out/chair_v002 --frames 120 --fps 30 --denoise 1
4) Конверсия текстур и упаковка каналов (шаблон)
# KTX2 (пример профиля)
toktx --uastc 4 --zcmp 18 --target_type RGBA --assign_oetf linear
out_ktx2/roughness.ktx2 src/roughness_1001.exr
# Упаковка RMA (см. pack_rma.py на странице PBR-baking)
python /scripts/pack_rma.py out/rough.exr out/metal.exr out/ao.exr out/RMA_1001.exr
5) Воркер и брокер публикаций (Compose)
services:
artifact-broker:
image: registry.local/artifact-broker:latest
environment:
- REGISTRY=s3://warm/index/
- SIGN_POLICY=strict
networks: [assets-net]
gpu-worker:
image: registry.local/asset-worker:latest
deploy:
resources:
reservations:
devices: [{capabilities: ["gpu"]}]
environment:
- NVME=/nvme
volumes:
- /nvme:/nvme
- /mnt/warm:/warm
- /mnt/cold:/cold
networks: [assets-net]
networks:
assets-net: {}
``` **Наблюдаемость/метрики/алерты**
См. хабы:[ https://cloudcompute.ru/solutions/monitoring-logging/](https://cloudcompute.ru/solutions/monitoring-logging/?utm_source=chatgpt.com) и[ https://cloudcompute.ru/solutions/llm-inference/observability/](https://cloudcompute.ru/solutions/llm-inference/observability/?utm_source=chatgpt.com)
**Метрики пайплайна:**
- asset\_ingest\_seconds — время инжеста/валидации.
- artifact\_build\_seconds{type} — bake/preview/convert.
- cache\_hit\_ratio{tier="nvme"} — эффективность горячего кеша.
- gpu\_utilization, gpu\_memory\_used\_bytes, io\_read\_mb\_s, io\_write\_mb\_s.
- job\_queue\_depth, tasks\_inflight, retry\_total.
- Качество: seam\_artifacts\_rate, color\_space\_mismatch\_total, udim\_missing\_total.
**Алерты:**
- p95 artifact\_build\_seconds{type} растёт > X% к эталону N минут.
- cache\_hit\_ratio < целевого → усилить префетч/увеличить NVMe.
- gpu\_utilization < 60% при глубокой очереди → I/O узкое место или неверный параллелизм.
- Утечки NVMe (занято > 85%) → автоматический drain/evict.
- Частые color\_space\_mismatch\_total → корректируем правила валидатора.
## **Экономика и формулы**
См.[ https://cloudcompute.ru/solutions/cost-planner/](https://cloudcompute.ru/solutions/cost-planner/?utm_source=chatgpt.com) и <https://cloudcompute.ru/solutions/throughput-vs-latency/>
**Стоимость обработки ассета:**
Cost\_per\_asset = (c\_gpu \* t\_gpu / 3600) / U \* r + Storage\_cost
где t\_gpu = t\_bake + t\_preview + t\_denoise + t\_convert,
U — целевая загрузка GPU, r — retry‑factor (Interruptible).
**1 000 ассетов:**
Cost\_per\_1K\_assets = 1000 \* Cost\_per\_asset
**Выгода NVMe‑кеша:**
Δt\_io = t\_io\_without\_cache - t\_io\_with\_cache
Savings\_per\_asset = (c\_gpu \* Δt\_io / 3600) / U
**Пропускная способность:**
Assets\_per\_day ≈ (N\_gpu \* Work\_hours \* U) / (t\_gpu / 3600)
**Безопасность/политики**
См.[ https://cloudcompute.ru/solutions/security/](https://cloudcompute.ru/solutions/security/?utm_source=chatgpt.com)
- **Секреты/лицензии.** Токены хранилищ, ключи плагинов — в секрет‑хранилище; запрет логирования секретов.
- **Права на ассеты.** Лицензии моделей/текстур; публикация только подписанных артефактов (broker).
- **Изоляция проектов.** Отдельные сети/учётки; ограниченный egress.
- **Аудит.** Кто и что опубликовал; соответствие версии и артефактов.
- **Ретеншн.** Сырые входы и временные — автоархив; храним только мастера/публикуемые форматы.
**Траблшутинг (симптом → причина → решение)**
<table><tbody><tr><td>**Симптом**
</td><td>**Причина**
</td><td>**Решение**
</td></tr><tr><td>Пропали UDIM тайлы
</td><td>Неверный шаблон нейминга/диапазон
</td><td>Валидатор UDIM; единый шаблон {asset}\_{map}\_{udim}
</td></tr><tr><td>Лестница/артефакты на нормалях
</td><td>Смешаны OpenGL/DirectX, отсутствует Y‑flip
</td><td>Зафиксировать конвенцию; автоматический Y‑flip в конвертере
</td></tr><tr><td>Разные цвета в превью/рендерах
</td><td>Несогласованный OCIO/цвет‑пространство
</td><td>Валидация цвет‑профилей; приведение к линейному/сценарному
</td></tr><tr><td>Швы по UV после bake
</td><td>Малый padding или эмиссионный bake не совпал
</td><td>Увеличить dilation, единый нод‑граф для Emission bake
</td></tr><tr><td>OOM на превью/выпечке
</td><td>Много AOV/8K/большой UDIM‑набор
</td><td>Резать на чанки ≤ 120 с, 48–80 ГБ профиль, снизить параллелизм
</td></tr><tr><td>Низкий GPU util
</td><td>Узкое место I/O/холодный кеш
</td><td>NVMe‑префетч, не чистить кеш между задачами, pinned memory
</td></tr><tr><td>Дубликаты артефактов
</td><td>Пере‑публикация без idempotency
</td><td>Контроль хэшей, атомарная публикация через broker
</td></tr><tr><td>«Битые» ссылки в USD
</td><td>Расхождение версий/относительных путей
</td><td>SSOT‑ревайринг при публикации, проверка ссылок валидатором
</td></tr></tbody></table>
## **Как запустить в cloudcompute.ru**
1. **Шаблон**:[ https://cloudcompute.ru/solutions/templates/](https://cloudcompute.ru/solutions/templates/?utm_source=chatgpt.com)
- «Asset Pipeline (GPU Workers)» — базовый пайплайн инжеста/артефактов.
- Профильные шаблоны: превью/рендер → <https://cloudcompute.ru/solutions/rendering/blender/>, выпечка → <https://cloudcompute.ru/solutions/rendering/pbr-baking/>, денойз → <https://cloudcompute.ru/solutions/rendering/de-noising/>
2. **Профиль GPU**: 24/48/80 ГБ по таблице выше; большие UDIM/8 K — 80 ГБ (HQ).
3. **Режим**:
- Массовые очереди — **Interruptible** (чанк ≤ 120 с, ретраи).
- Критичные публикации — **On‑Demand**.
4. **Хранилище/кеши**: NVMe для «горячего»; «тёплое» для мастеров; «холодное» для архива. См.[ https://cloudcompute.ru/solutions/storage-data/](https://cloudcompute.ru/solutions/storage-data/?utm_source=chatgpt.com)
5. **Оркестрация/CI**: YAML‑спеки, брокер публикаций, smoke‑пайплайн на эталонном ассете. См. <https://cloudcompute.ru/solutions/containers-ci-cd/>
6. **Наблюдаемость/алерты**: дашборды пайплайна + GPU/I‑O; алерты p95. См.[ https://cloudcompute.ru/solutions/monitoring-logging/](https://cloudcompute.ru/solutions/monitoring-logging/?utm_source=chatgpt.com)
7. **Безопасность**: секреты/лицензии/аудит; изоляция проектов. См.[ https://cloudcompute.ru/solutions/security/](https://cloudcompute.ru/solutions/security/?utm_source=chatgpt.com)
**Чек‑лист перед продом**
- Описан SSOT и схема версий; атомарная публикация артефактов.
- Валидатор ловит UDIM/цвет/нейминг/OCIO; quarantine настроен.
- NVMe‑кеш включён; префетч работает; cache\_hit\_ratio высокий.
- Очереди раскраивают работу на чанки ≤ 120 с; ретраи/backoff активны.
- Метрики/алерты p50/p95 заведены; дашборды доступны команде.
- Экономика рассчитана: Cost\_per\_asset, Assets\_per\_day, ретеншн‑стоимость.
- Политики безопасности (секреты, публикация, ретеншн) применены.
- Smoke‑пайплайн прошёл на эталонном ассете; результаты детерминированы.
**Навигация**
- Хаб «Рендеринг»: <https://cloudcompute.ru/solutions/rendering/>
- Шаблоны запусков:[ https://cloudcompute.ru/solutions/templates/](https://cloudcompute.ru/solutions/templates/?utm_source=chatgpt.com)
- Хранилище и данные:[ https://cloudcompute.ru/solutions/storage-data/](https://cloudcompute.ru/solutions/storage-data/?utm_source=chatgpt.com)
- Оптимизация:[ https://cloudcompute.ru/solutions/performance-tuning/](https://cloudcompute.ru/solutions/performance-tuning/?utm_source=chatgpt.com)
- Multi‑GPU/MIG:[ https://cloudcompute.ru/solutions/multi-gpu/](https://cloudcompute.ru/solutions/multi-gpu/?utm_source=chatgpt.com) • <https://cloudcompute.ru/solutions/mig/>
- Мониторинг и логи:[ https://cloudcompute.ru/solutions/monitoring-logging/](https://cloudcompute.ru/solutions/monitoring-logging/?utm_source=chatgpt.com)
- Наблюдаемость:[ https://cloudcompute.ru/solutions/llm-inference/observability/](https://cloudcompute.ru/solutions/llm-inference/observability/?utm_source=chatgpt.com)
- Throughput vs Latency: <https://cloudcompute.ru/solutions/throughput-vs-latency/>
- Interruptible‑паттерны: <https://cloudcompute.ru/solutions/interruptible-patterns/>
- CI/CD: <https://cloudcompute.ru/solutions/containers-ci-cd/>
- Родственные страницы:
- Blender/Cycles: <https://cloudcompute.ru/solutions/rendering/blender/>
- Houdini Karma XPU: <https://cloudcompute.ru/solutions/rendering/houdini-karma/>
- Redshift/Octane/V‑Ray: <https://cloudcompute.ru/solutions/rendering/redshift/>
- PBR‑выпечка: <https://cloudcompute.ru/solutions/rendering/pbr-baking/>
- Деноайзинг: <https://cloudcompute.ru/solutions/rendering/de-noising/>
- Транскодирование: <https://cloudcompute.ru/solutions/rendering/video-transcode/>
- Удалённые станции: <https://cloudcompute.ru/solutions/rendering/studio-remote/>
Готовы запустить?
Запустить GPU-сервер