MLOps та побудова ML-інфраструктури

Проектуємо та впроваджуємо системи штучного інтелекту: від прототипу до production-ready рішення. Наша команда поєднує експертизу в машинному навчанні, дата-інжинірингу та MLOps, щоб AI працював не в лабораторії, а в реальному бізнесі.
Показано 30 з 111Усі 1566 послуг
Розробка AI-мікросервісу
Середній
від 1 тижня до 3 місяців
Конвертація моделі у ONNX-формат
Середній
від 1 дня до 3 днів
Конвертація моделі у TensorRT-формат
Середній
від 1 дня до 3 днів
Розробка системи A/B-тестування AI-агентів
Середній
від 1 тижня до 3 місяців
Часті запитання

Напрямки AI-розробки

Етапи розробки AI-рішення

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1279
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1194
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    901
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1119
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    586
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    853

MLOps: Інфраструктура для Навчання, Розгортання та Моніторингу ML-Моделей

Модель навчена, метрики чудові. Через три місяці у production якість впала на 12%. Ніхто не знає коли саме — немає моніторингу. Не можна швидко переучити — навчальний скрипт живе у ноутбуці data scientist'а, який звільнився. Дані для переучення потрібно збирати вручну з трьох систем. Це не гіпотетична ситуація — це те, з чим приходять приблизно в половині випадків.

MLOps — інженерна дисципліна, яка робить ML-системи відтворювальними, управлями та підтримуваними у production.

Experiment Tracking та Відтворюваність

Без трекингу експериментів ML-проект швидко стає хаосом: незрозуміло, який чекпоінт краще, які гіперпараметри використовувались, який датасет. Відтворити результат через місяць — квест.

MLflow — open source стандарт для трекингу. Логує параметри, метрики, артефакти (моделі, графіки) та код. MLflow Model Registry — централізоване сховище моделей з версіонуванням та lifecycle стейджами (Staging → Production → Archived). Деплой через MLflow Serving або інтеграція з зовнішніми системами.

import mlflow

mlflow.set_experiment("fraud-detection-v2")
with mlflow.start_run():
    mlflow.log_params({"learning_rate": 3e-4, "batch_size": 64, "epochs": 10})
    mlflow.log_metric("val_f1", val_f1, step=epoch)
    mlflow.pytorch.log_model(model, "model")

Це мінімум. У production додаємо логування системних метрик (GPU utilization, memory), датасету (hash, версія), коду (git commit hash).

Weights & Biases — багатший UI, collaboration features, sweep для hyperparameter optimization. Переважніший для команд з активним експериментуванням. MLflow — для on-premise deployment без зовнішніх залежностей.

DVC (Data Version Control) — версіонування даних та моделей поверх git. Дані зберігаються в S3/GCS/Azure Blob, у git — тільки метадані (хеші). dvc repro воспроізводить весь pipeline від сирих даних до метрик. Без цього "датасет версії 3 з augmentations" — просто надія на пам'ять колег.

Training Pipeline'и: Kubeflow, Airflow, Prefect

Коли потрібен оркестратор. Скрипт навчання на 100 рядків у cron — нормально для простих задач. Але як тільки з'являється multi-step pipeline (завантаження даних → preprocessing → feature engineering → навчання → валідація → деплой якщо якість вище порога), потрібен оркестратор з retry-логікою, візуалізацією, alert'ами.

Kubeflow Pipelines — Kubernetes-native оркестратор для ML. Кожен шаг pipeline — Docker-контейнер. Підтримує паралельні шаги, умовні гілки, артефакти між кроками. Інтегрується з Katib (AutoML), KServe (serving), Feast (feature store). Високий поріг входу, але масштабується до сотень паралельних запусків.

Apache Airflow — більш загальний DAG-оркестратор, не специфічний для ML. Широка екосистема операторів (S3, Spark, DBT, Kubernetes). Простіший deploy ніж Kubeflow, якщо компанія вже має Airflow.

Prefect / Metaflow — сучасніші альтернативи, менше boilerplate. Prefect 2.x з декораторами @flow та @task — швидкий старт для малих команд.

Типова архітектура training pipeline на Kubeflow:

  1. Data ingestion — заходимо дані з S3/БД, валідуємо схему через Great Expectations
  2. Preprocessing — трансформації, нормалізація, train/val/test split
  3. Training — навчання на GPU, логування в MLflow
  4. Evaluation — обчислення метрик, порівняння з baseline у Model Registry
  5. Conditional deployment — деплой тільки якщо нова модель краща на >2% F1

Кожен компонент — окремий Docker-образ. Pipeline версіонується в git. Запуск — ручний або за розкладом (переучування раз на тиждень на нових даних).

Model Registry та Управління Життєвим Циклом

Model Registry — не просто сховище чекпоїнтів. Централізована система, яка знає:

  • Яка модель зараз в production (та її метрики)
  • Історія всіх версій з параметрами навчання
  • Метадані: датасет, git commit, результати валідації
  • Lifecycle: None → Staging → Production → Archived

MLflow Model Registry — стандарт. Для enterprise — Vertex AI (GCP), SageMaker (AWS), Azure ML.

Просування моделі через стейджі. Автоматично переводимо в Staging після успішного eval. Ручне або автоматичне (при A/B тесті) просування в Production. Rollback — переключення на попередню Production-версію за секунди.

Serving: Від Flask до Triton

Простий випадок. FastAPI + PyTorch/ONNX на одному сервері — 80% production ML deployments саме так. Достатньо для більшості задач з навантаженням до 100 req/s.

from fastapi import FastAPI
import onnxruntime as ort

app = FastAPI()
session = ort.InferenceSession("model.onnx", providers=["CUDAExecutionProvider"])

@app.post("/predict")
async def predict(request: PredictRequest):
    inputs = preprocess(request.text)
    outputs = session.run(None, {"input_ids": inputs})
    return {"label": postprocess(outputs)}

Triton Inference Server — production-стандарт для високих навантажень. Dynamic batching (автоматично збирає запити), concurrent model execution, model ensemble. Підтримує TensorRT, ONNX, PyTorch TorchScript, TensorFlow SavedModel. При навантаженні 500+ req/s і кількох моделях одночасно — Triton перемагає будь-який кастомний serving.

KServe (раніше KFServing) — Kubernetes-native ML serving з autoscaling, canary deployments, A/B testing з коробки. Scale-to-zero для неактивних моделей — економія на інфраструктурі.

vLLM для LLM-serving — окрема історія, описана в розділі про LLM.

Моніторинг: Data Drift, Model Drift, Інфраструктурні Метрики

Моніторинг — зазвичай роблять в останню чергу та жалкують спочатку. Три рівні.

Інфраструктурний моніторинг. Latency (P50/P95/P99), throughput (req/s), error rate (4xx, 5xx), GPU/CPU utilization. Prometheus + Grafana — стандарт. Alert при P99 latency > порога або error rate > 1%.

Data drift моніторинг. Розподіл вхідних даних змінюється зі часом. Детектуємо через:

  • PSI (Population Stability Index) для чисел: PSI > 0.2 — сильний дрейф
  • Chi-squared test для категоріальних
  • Kolmogorov-Smirnov для неперервних
  • Evidently AI — open source бібліотека з готовими drift-тестами та HTML-репортами

Model drift моніторинг. Якщо є ground truth з затримкою — мониримо реальні метрики якості. Якщо нема — surrogate метрики: розподіл prediction scores, доля confident передсказань.

Alerting. Три рівні: INFO (невеликий дрейф, логуємо), WARNING (значимий дрейф, сповіщаємо команду), CRITICAL (якість упала нижче порога, автоматичне переключення на fallback або human review).

Feature Store

Feature Store розв'язує проблему training-serving skew. Якщо feature engineering відрізняється між навчанням та інференсом — розхождення невідворотне.

Feast — open source Feature Store. Offline store (S3 + Parquet/Delta) для навчання, online store (Redis, DynamoDB) для low-latency інференса. Feature definitions як код, materialization job синхронізує offline → online.

Tecton (комерційний), Vertex AI Feature Store (GCP), SageMaker Feature Store (AWS) — managed варіанти з меншим ops overhead.

Коли потрібен: кілька моделей використовують одні й ті ж features; features вичісляються з потокових даних (real-time); велика команда з різними людьми на feature engineering та model training.

CI/CD для ML

ML CI/CD — звичайний CI/CD плюс ML-специфічні кроки.

ML-специфічні checks у CI:

  • Перевірка воспроізводимості: запустити навчання з фіксованим seed, результат повинен совпадати
  • Data validation: Great Expectations або Pandera на schema/distribution checks
  • Model performance check: автоматичний eval на holdout, блокувати merge якщо деградація > порога
  • Latency regression test: inference має укладатись в SLA

GitOps для деплоя моделі. Merge у main → CI запускає навчання → eval → якщо проходить → автоматичний деплой у Staging → smoke tests → ручне просування в Production (або автоматичне при успішному canary).

Інструменти: GitHub Actions / GitLab CI для CI, ArgoCD для GitOps на Kubernetes.

Типові Помилки в MLOps

Немає воспроізводимості навчання. Фіксувати random seeds (torch.manual_seed, numpy.random.seed, random.seed) та записувати в метадані експерименту. Без цього debug нерегулярних результатів — мука.

Training-serving skew. Різний preprocessing у train та inference. Рішення: один preprocessing модуль, використовуваний і при навчанні, і при інференсі. Для sklearn: Pipeline об'єкт, що включає трансформації.

Немає версіонування даних. "Датасет v3" у імені файлу — не версіонування. DVC + S3 — мінімум.

Немає fallback. Модель впала або деградувала — немає плану. Завжди мати fallback: попередня версія моделі, rule-based логіка, або graceful "не можемо відповісти".

Терміни та Етапи

Базова MLOps-інфраструктура (трекинг експериментів, Model Registry, serving, базовий моніторинг): 4-6 тижнів. Повнофункціональна платформа з Kubeflow, Feature Store, CI/CD та продвинутим моніторингом: 3-5 місяців. Аудит існуючої інфраструктури та roadmap: 1-2 тижні.