Медицинское CV на GPU: классификация и сегментация
Задача страницы. Показать, как строить пайплайны компьютерного зрения для медицинских изображений на облачных GPU: классификация и сегментация для CT/MRI/УЗИ, гистопатологии (WSI), 2D/3D‑обработка, требования к VRAM/диску, приватность и аудит, онлайновые и пакетные сценарии, наблюдаемость и расчёт стоимости.
TL;DR
- Онлайн‑сценарии (УЗИ/просмотрщик): on‑demand пулы, p95‑латентность на срез/кадр < 50–200 мс, детерминированные модели, ограниченные параметры.
- Batch‑обработка (архивы CT/MRI, WSI): interruptible пулы, чанк ≤ 2 мин, NVMe‑кэш, тайлинг для гигапикселей.
- 3D‑сегментация требует 48–80 ГБ VRAM или умного патчинга (128³–192³), смешанная точность BF16/FP16.
- Приватность: де‑идентификация, шифрование, контроль региональности, аудит доступа и маскирование PII в логах.
Смежные разделы: хаб CV — https://cloudcompute.ru/solutions/computer-vision/ • тюнинг — https://cloudcompute.ru/solutions/performance-tuning/ • форматы вычислений — https://cloudcompute.ru/solutions/fp8-bf16/ • хранение/кэш — https://cloudcompute.ru/solutions/storage-data/ • прерываемые паттерны — https://cloudcompute.ru/solutions/interruptible-patterns/ • наблюдаемость — https://cloudcompute.ru/solutions/monitoring-logging/ и https://cloudcompute.ru/solutions/llm-inference/observability/ • сервинг — https://cloudcompute.ru/solutions/triton-inference-server/ • CI/CD — https://cloudcompute.ru/solutions/containers-ci-cd/ • безопасность — https://cloudcompute.ru/solutions/security/ и https://cloudcompute.ru/solutions/llm-inference/guardrails/
Модальности и типы данных
| **Модальность** | **Формат/вход** | **Типовые задачи** | **Особенности** |
| **CT/MRI (3D)** | DICOM/NIfTI | 3D‑сегментация органов/очагов, классификация стадий | Патч‑вычисления 128–192³, нормализация HU, спейсинг |
| **УЗИ (2D/видео)** | Стрим/серии кадров | Онлайн‑детекция/сегментация, подсказки оператору | Низкая латентность, «дрожащие» границы, сглаживание |
| **Рентген (2D)** | DICOM/PNG | Классификация/локализация, heatmaps | Высокая пропускная способность, батч‑инференс |
| **Гистопатология (WSI)** | Пирамидальные WSI (гигапиксели) | Сегментация тканей/ядр, грейдинг | Тайлинг 256–1024 px, overlap 16–64 px, NVMe‑кэш |
Подготовка наборов, кэш и иерархии хранилища — https://cloudcompute.ru/solutions/storage-data/
Архитектуры: онлайн vs пакетная обработка
Онлайн (оператор/просмотрщик)
Viewer/ПАЦС → GPU-инференс (2D/3D slice) → overlay/подсказки → события/лог → аудит
Требования: p95‑латентность < 50–200 мс/срез, прогретые модели, on‑demand пулы, лимиты параметров.
Batch (архивы исследований)
Хранилище DICOM/NIfTI/WSI → шардирование → воркеры (тайлы/патчи) → агрегация масок → отчёты/экспорт
Режим: interruptible, чанк ≤ 2 мин, отчёты качества (Dice/IoU/HD95). Паттерны — https://cloudcompute.ru/solutions/interruptible-patterns/
Алгоритмы и шаблоны сетей - Сегментация 2D/3D: семейства U‑Net/Attention‑U‑Net/3D‑U‑Net; для 3D — патчи с перекрытием и сглаживающим блендингом.
- Классификация/локализация: CNN/ViT‑подобные с CAM/Grad‑карточками для интерпретируемости.
- WSI: тайловые CNN/ViT, MIL‑подходы (агрегация по тайлам), пирамидальные уровни.
- ROI‑маски/аннотация: интерактивная сегментация — https://cloudcompute.ru/solutions/computer-vision/sam/
- Эмбеддинги/поиск похожих кейсов: визуальный ретривал — https://cloudcompute.ru/solutions/computer-vision/dinov2/
Профили GPU и ресурсы
| **Профиль** | **Сценарии** | **Ориентиры VRAM/скорость** | **Комментарии** |
| **24 ГБ (Compact)** | 2D‑классификация/сегментация, онлайн УЗИ | До 512–1024², 50–200 мс/кадр | Начальный прод, быстрый отклик |
| **48 ГБ (Balanced)** | 3D‑патчи 128–160³, WSI 512–768 px тайлы | Выше throughput, больше параллелизма | Баланс цена/качество |
| **80 ГБ (HQ)** | 3D‑патчи 192–256³, WSI 1024 px тайлы | Крупные сцены/миллионы тайлов | Пики качества/скорости |
Оптимизация вычислений — https://cloudcompute.ru/solutions/performance-tuning/ и форматы BF16/FP16/FP8 — https://cloudcompute.ru/solutions/fp8-bf16/
Тайлинг и патч‑планирование
WSI (гигапиксели):
- Размер тайла 256–1024 px, overlap 16–64 px, маска фона, предварительный сэмплинг ROI.
- Сборка предсказаний: вероятности + морфологический пост‑проц, снятие «швов».
- NVMe‑кэш тайлов/логитов, отчёт о покрытии/пробелах.
3D CT/MRI:
-
Патч‑размер 128–192³, stride 1/2–2/3 от патча.
-
Нормализация спейсинга/интенсивностей, согласование ориентаций.
-
Сглаживающий блендинг на стыках, агрегирование логитов. Приватность и безопасность
-
Де‑идентификация: удаление идентифицирующих тегов, маскирование PII/PHI на оверлеях и в логах.
-
Контроль доступа: роли/ключи, аудит всех действий, мандатная региональность хранения.
-
Шифрование: трафик/хранилище, защищённые секреты.
Лимиты: max_resolution/volume_size/batch, запрет произвольных скриптов. Подробнее — 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/
- Качество: Dice/IoU, HD95, Sens/Spec, AUC, калибровка порогов.
- Скорость: p50/p95 latency (онлайн), imgs/volumes/min (batch), GPU util/HBM, VRAM пик, cache‑hit NVMe.
- Алерты: рост p95, падение Dice, всплеск таймаутов/ретраев, OOM.
Экономика и режимы
Онлайн:
Cost_per_study ≈ (GPU_hour_price / 3600) × t_study_seconds
Batch:
Units_per_hour ≈ 3600 / t_unit
Cost_per_1000 ≈ (GPU_hour_price × Num_GPU) / (Units_per_hour / 1000)Сравнение on‑demand vs interruptible — https://cloudcompute.ru/solutions/cost-planner/ и https://cloudcompute.ru/solutions/interruptible-patterns/ Баланс throughput↔latency — https://cloudcompute.ru/solutions/throughput-vs-latency/
Конфиги пайплайнов (примеры YAML)
A) 3D‑сегментация CT (batch, патчи)
pipeline: med-seg-ct-3d
input:
format: dicom # или nifti
path: s3://med/ct/
preprocess:
resample_spacing: [1.5, 1.5, 2.0] # мм
intensity_norm: zscore
patching:
size: [160,160,160]
stride: [80,80,80]
model:
family: unet3d
precision: bf16
tta: false
postprocess:
merge: weighted
remove_small: 500 # мм³
export:
format: nifti
path: s3://med/ct_masks/
runtime:
mode: batch
chunk_seconds: 120
retries: 3
nvme_cache: true
B) WSI‑сегментация (тайлы)
pipeline: med-wsi-tiles
input:
format: wsi
path: s3://med/wsi/
tiling:
size: 1024
overlap: 32
background_threshold: 0.8
model:
family: unet2d
precision: fp16
batch: 8
merge:
blend: gaussian
morph_close: 3
export:
mask_format: png
path: s3://med/wsi_masks/
runtime:
mode: batch
chunk_seconds: 90
nvme_cache: true
C) Онлайн УЗИ (низкая латентность)
pipeline: med-us-realtime
stream:
input: rtsp://ultrasound/device/stream
decode: gpu
preprocess:
denoise: mild
normalize: percentile
model:
family: unet2d
precision: fp16
target_p95_ms: 60
output:
overlay: true
events_bus: bus://med/alerts
sla:
p95_latency_ms: 100
drop_policy: latency_guard
API‑скелет сервиса инференса (стриминг)
# fastapi_med_infer.py — укороченный пример
from fastapi import FastAPI, UploadFile
from fastapi.responses import StreamingResponse
import asyncio, json
app = FastAPI()
def infer_3d(volume_bytes):
# ... загрузка NIfTI/DICOM, препроц, патч-инференс на GPU, агрегация ...
return {"dice": {"liver": 0.95}, "mask_url": "s3://.../case123.nii.gz"}
@app.post("/v1/infer3d_stream")
async def infer3d_stream(file: UploadFile):
data = await file.read()
async def gen():
yield "event: startndata: {}nn"
# можно слать прогресс по патчам/slices
result = infer_3d(data)
yield "data: " + json.dumps(result, ensure_ascii=False) + "nn"
yield "event: donendata: [DONE]nn"
return StreamingResponse(gen(), media_type="text/event-stream",
headers={"Cache-Control":"no-cache","X-Accel-Buffering":"no"})
Стриминг/прогресс — https://cloudcompute.ru/solutions/llm-inference/streaming/ Сервинг ансамблей (preproc→model→postproc) — https://cloudcompute.ru/solutions/triton-inference-server/ UI/API — https://cloudcompute.ru/solutions/gradio-fastapi/ CI/CD и воспроизводимость — https://cloudcompute.ru/solutions/containers-ci-cd/
Траблшутинг
| **Симптом** | **Причина** | **Что сделать** |
| Разные результаты между инстансами | Несогласованные версии/нормализация | Зафиксировать версии моделей/препроца, единые конфиги, контроль seed |
| «Швы» на WSI | Недостаточный overlap/не‑блендинг | Увеличить overlap, включить гауссов блендинг/морф‑закрытие |
| OOM на 3D | Слишком крупный патч/батч | Снизить размер патча, включить градиент‑освобождение, BF16 |
| Падение Dice | Порог/спейсинг/интенсивности | Переподобрать пороги, нормализовать спейсинг, улучшить препроц |
| Высокая p95 в онлайне | Узкое место декод/постпроц | NVDEC, отключить тяжёлый overlay, лимитировать batch |
| Долгий WSI‑прогон | Холодный диск | NVMe‑кэш тайлов/логитов, распараллелить чтение |
Шаблоны cloudcompute.ru
Хаб шаблонов — https://cloudcompute.ru/solutions/templates/
- “Med‑3D Segmentation (CT/MRI)” — патч‑планирование, агрегация, отчёты качества.
- “Med‑WSI Tiles” — пирамиды WSI, тайлинг/слияние, экспорт масок.
“Med‑Realtime (US/X‑ray)” — низкая латентность, overlay, алерты. Инфраструктура и эксплуатация: тюнинг — https://cloudcompute.ru/solutions/performance-tuning/ • наблюдаемость — https://cloudcompute.ru/solutions/monitoring-logging/ • безопасность — https://cloudcompute.ru/solutions/security/ • сервинг — https://cloudcompute.ru/solutions/triton-inference-server/
Чек‑лист перед продом
- Определены модальности (CT/MRI/УЗИ/WSI) и режим (онлайн/batch), SLA по p95/throughput.
- Подобраны профили GPU (24/48/80 ГБ), размеры патчей/тайлов, подтверждён VRAM.
- Зафиксированы версии моделей/препроцессинга, единые конфиги/нормализации.
- Настроены метрики качества (Dice/IoU/HD95), наблюдаемость и алерты.
- Включены де‑идентификация, шифрование, аудит, лимиты параметров.
- Рассчитаны Cost_per_study (онлайн) и Cost_per_1000 (batch), выбран режим пулы (on‑demand/interruptible).
Навигация по разделу «Компьютерное зрение»
Хаб: https://cloudcompute.ru/solutions/computer-vision/ • Детекция/треккинг: https://cloudcompute.ru/solutions/computer-vision/yolo/ и https://cloudcompute.ru/solutions/computer-vision/tracking/ • Интерактивная сегментация: https://cloudcompute.ru/solutions/computer-vision/sam/ • Эмбеддинги/поиск: https://cloudcompute.ru/solutions/computer-vision/dinov2/ • Видео‑аналитика: https://cloudcompute.ru/solutions/computer-vision/video-analytics/ • OCR: https://cloudcompute.ru/solutions/computer-vision/ocr/ • 3D‑реконструкция: https://cloudcompute.ru/solutions/computer-vision/3d-reconstruction/ • Гео/SAR: https://cloudcompute.ru/solutions/computer-vision/geospatial/ • Экспорт на edge: https://cloudcompute.ru/solutions/computer-vision/edge-export/ • Тюнинг/хранилище/наблюдаемость: https://cloudcompute.ru/solutions/performance-tuning/ • https://cloudcompute.ru/solutions/storage-data/ • https://cloudcompute.ru/solutions/monitoring-logging/ • https://cloudcompute.ru/solutions/llm-inference/observability/ • Экономика: https://cloudcompute.ru/solutions/cost-planner/ • https://cloudcompute.ru/solutions/interruptible-patterns/ • https://cloudcompute.ru/solutions/throughput-vs-latency/ • Сервинг/CI: https://cloudcompute.ru/solutions/triton-inference-server/ • https://cloudcompute.ru/solutions/containers-ci-cd/
Готовы запустить?
Запустить GPU-сервер