Настройка Canary Deployment для ML-моделей

Проектируем и внедряем системы искусственного интеллекта: от прототипа до production-ready решения. Наша команда объединяет экспертизу в машинном обучении, дата-инжиниринге и MLOps, чтобы AI работал не в лаборатории, а в реальном бизнесе.
Показано 1 из 1Все 1566 услуг
Настройка Canary Deployment для ML-моделей
Средний
~3-5 дней
Часто задаваемые вопросы

Направления AI-разработки

Этапы разработки AI-решения

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1288
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1198
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    902
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1123
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    590
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    860

Настройка Canary Deployment для ML-моделей

Canary deployment — стратегия постепенного выкатывания новой версии модели: сначала на малую долю трафика (5-10%), затем при отсутствии проблем — на всё большую аудиторию. Это снижает риск деградации для всех пользователей одновременно и даёт возможность быстрого отката.

Когда canary предпочтительнее blue-green

Blue-green переключает весь трафик сразу — подходит для сервисов с высокой уверенностью в новой версии. Canary нужен, когда:

  • Модель обучена на новых данных, но реакция пользователей непредсказуема
  • Изменилась архитектура модели (другой тип, другие входные признаки)
  • Критичный production-сервис с высокой ценой ошибки
  • Нет полного набора интеграционных тестов

Реализация на Kubernetes с KServe

KServe (бывший KFServing) поддерживает canary из коробки:

apiVersion: serving.kserve.io/v1beta1
kind: InferenceService
metadata:
  name: fraud-detector
spec:
  predictor:
    canaryTrafficPercent: 10  # 10% на новую версию
    model:
      modelFormat:
        name: sklearn
      storageUri: s3://models/fraud-detector-v2/
    # Предыдущая версия - canary baseline

Переключение трафика без даунтайма:

# Увеличение с 10% до 50%
kubectl patch inferenceservice fraud-detector \
  --type='json' \
  -p='[{"op": "replace", "path": "/spec/predictor/canaryTrafficPercent", "value": 50}]'

# Продвижение канарейки в production (100%)
kubectl patch inferenceservice fraud-detector \
  --type='json' \
  -p='[{"op": "remove", "path": "/spec/predictor/canaryTrafficPercent"}]'

Реализация на Seldon Core

apiVersion: machinelearning.seldon.io/v1
kind: SeldonDeployment
metadata:
  name: fraud-detector
spec:
  predictors:
    - name: main
      replicas: 3
      traffic: 90
      graph:
        name: fraud-v1
        implementation: SKLEARN_SERVER
        modelUri: s3://models/fraud-v1
    - name: canary
      replicas: 1
      traffic: 10
      graph:
        name: fraud-v2
        implementation: SKLEARN_SERVER
        modelUri: s3://models/fraud-v2

Автоматическое управление трафиком

Прогрессивное увеличение трафика автоматически на основе метрик:

def progressive_canary_rollout(service_name, metrics_client):
    stages = [5, 10, 25, 50, 100]

    for target_traffic in stages:
        set_canary_traffic(service_name, target_traffic)
        time.sleep(300)  # 5 минут стабилизации

        metrics = metrics_client.get_metrics(window='5m')

        # Проверка guardrail метрик
        if metrics['canary_error_rate'] > 0.01:
            rollback_canary(service_name)
            alert(f"Canary rollback: error rate {metrics['canary_error_rate']:.2%}")
            return False

        if metrics['canary_p99_latency_ms'] > 500:
            rollback_canary(service_name)
            alert("Canary rollback: latency SLA violated")
            return False

        if metrics['business_metric_delta'] < -0.02:  # -2% деградация
            rollback_canary(service_name)
            alert("Canary rollback: business metric degraded")
            return False

    return True  # Успешный полный деплой

Метрики для решения о продвижении

Метрика Условие продвижения Условие отката
Error rate < 0.5% > 1%
p99 latency < 200мс > 500мс
Prediction drift PSI < 0.1 PSI > 0.2
Business proxy Нет деградации > 1% Деградация > 3%

Интеграция с Argo Rollouts

Argo Rollouts — Kubernetes-контроллер с поддержкой canary и blue-green для любых workload, не только ML:

spec:
  strategy:
    canary:
      steps:
        - setWeight: 5
        - pause: {duration: 5m}
        - setWeight: 25
        - pause: {duration: 10m}
        - setWeight: 50
        - pause: {duration: 10m}
        - analysis:
            templates:
              - templateName: ml-model-metrics

Canary deployment как практика снижает MTTR (mean time to recovery) при деградации модели: вместо полного отката и реплоя достаточно уменьшить canary-трафик до нуля.