Роадмап продакшен ML-платформы

Путь от первой GPU в кластере до платформы, на которой команды сами обучают и деплоят модели. На каждом шаге: какая проблема появляется, как её решать и где я об этом писал или рассказывал.

На каком уровне твоя команда? Проверь по уровням зрелости MLOps →

DAY 0 · ФУНДАМЕНТ

01

GPU в Kubernetes

Проблема: GPU в кластере есть, а поды её не видят или падают на несовместимой CUDA.

  • драйверы и GPU Operator одной версией на все ноды
  • матрица совместимости драйвер / CUDA / фреймворк
  • ноды и кластер описаны кодом
02

Подбор железа под модель

Проблема: Модель не влезла в карту, или влезла, но под KV-кэш не осталось места.

  • считать память под веса и KV-кэш до покупки
  • выбирать точность под железо: bf16, FP8, int4
  • смотреть на пропускную способность, а не только на VRAM

DAY 1 · ЗАПУСК

03

Первый сервинг

Проблема: Модель живёт в ноутбуке у DS, а в прод её выкатывают руками.

  • один сервер инференса: Triton или vLLM
  • модель как артефакт в реестре, а не файл на диске
  • деплой через CI, а не через ssh
04

Self-service для ML-команд

Проблема: Каждый ноутбук и пайплайн заводится тикетом в DevOps.

  • JupyterHub с профилями под GPU
  • пайплайны и обучение в Kubeflow
  • квоты на команду вместо ручной раздачи карт

DAY 2 · ПРОДАКШЕН

05

Холодный старт

Проблема: Новая реплика поднимается минутами: образы и веса на десятки гигабайт.

  • ленивая загрузка образов: eStargz, SOCI, Nydus
  • веса отдельно от образа: S3, OCI-тома
  • быстрая загрузка весов в GPU
06

Автоскейлинг инференса

Проблема: HPA по CPU не видит нагрузку на GPU, а пики приходят быстрее, чем стартуют реплики.

  • скейлить по очереди и concurrency
  • KEDA или Knative вместо голого HPA
  • держать минимум тёплых реплик
07

Шеринг GPU

Проблема: Под маленькую модель отдали целую A100, и она простаивает.

  • MIG там, где нужна изоляция
  • time-slicing и MPS для dev и лёгких нагрузок
  • HAMi как альтернатива без MIG
08

Утилизация и скедулинг

Проблема: GPU заняты, но не загружены, а команды стоят в очереди.

  • мерить реальную загрузку, а не аллокацию
  • квоты и приоритеты в Kueue
  • вытеснение и fair share между командами
09

Платформа целиком

Проблема: Каждая команда строит свой маленький MLOps для обучения и инференса, и решения расходятся.

  • общий горизонтальный слой для обучения и инференса, а модели остаются у продуктовых команд
  • платформа как внутренний продукт: golden path, шаблоны деплоя и стандартные пайплайны
  • наблюдаемость по SLO, а не «под живой», обновления драйверов и моделей без даунтайма
  • не строить «как у бигтеха», пока нет такого масштаба
10

Безопасный выкат модели

Проблема: Новая модель уходит сразу на всех, а при просадке её откатывают руками.

  • canary или blue-green: сначала малая доля трафика
  • A/B на доле пользователей с бизнес-метриками, а не только с accuracy
  • автооткат, если метрики просели
11

Мониторинг качества, а не только аптайма

Проблема: Сервис жив и отвечает 200 OK, а модель тихо деградирует.

  • дрифт входных данных и прогноз против факта
  • бизнес-метрики и алерты рядом с RPS и задержкой
  • логи и трейсы, чтобы найти причину, а не только симптом

Уровни зрелости MLOps

Day 0/1/2 - это порядок, в котором строят инфраструктуру. Зрелость - про то, как команда работает с моделями. Отметь, что у вас уже есть, и увидишь свой уровень и что закрыть дальше. Критерии - мой пересказ публичных моделей зрелости Microsoft Azure и Google Cloud. Без честной оценки легко оптимизировать не то: на уровне 1-2 рано думать о шеринге GPU.

1Ручной режимточка отсчёта

Ноутбуки без структуры, эксперименты нигде не записаны, данные готовят руками, модель выкатывают руками или не выкатывают вовсе. Мониторинга нет. Отсюда стартуют почти все.

2Повторяемо

Код в Git, обучение запускается скриптом, есть CI с тестами. Результат можно повторить, но многое держится на людях.

3Воспроизводимо

Общий трекер и реестр, автоматическое обучение, данные с версиями. Любую модель в проде можно пересобрать.

4Автоматизировано

Выкат на долю трафика с автооткатом, мониторинг качества с алертами, CI/CD проверяет модель перед продом.

5Самоулучшение

Цикл от данных до мониторинга идёт без ручных шагов: дрифт сам запускает переобучение, у команд есть шаблоны.

Уровень засчитывается, только когда закрыты все его пункты и все пункты ниже: дыра на втором уровне не даст записать себе четвёртый. Галочки хранятся только в твоём браузере.

↑↓ выбор · Enter открыть · Esc закрыть