Медицинское 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/ Баланс through­put↔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-сервер