Canary-деплой AI-агентов: пошаговый rollout и автоматический откат

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

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

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

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

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

Разработка системы canary-деплоя AI-агентов

Представьте: вы обновили промпт или модель для AI-агента, и он начал генерировать некорректные ответы с галлюцинациями. Если rollout идёт сразу на всех пользователей — последствия катастрофичны: потеря доверия, утечка данных, SLA-штрафы. Мы используем canary deployment для безопасного обновления агентов — постепенный rollout с автоматическим откатом при малейшей деградации метрик. Такой подход снижает время rollback с часов до 40 секунд и предотвращает массовые инциденты. В одном из проектов canary-деплой сэкономил существенную сумму, предотвратив 3 инцидента с деградацией сервиса.

Как работает canary-деплой AI-агентов?

Canary pipeline — это последовательность этапов, на каждом из которых доля трафика на новую версию увеличивается. Между этапами — период наблюдения, в течение которого сравниваются метрики стабильной и canary-версии. Если любая метрика выходит за порог — происходит автоматический rollback.

v1.3.1 (100% трафика)
    ↓ деплой v1.3.2
v1.3.1 (95%) + v1.3.2 (5%) — наблюдение 30 мин
    ↓ всё ОК
v1.3.1 (75%) + v1.3.2 (25%) — наблюдение 1 час
    ↓ всё ОК
v1.3.1 (50%) + v1.3.2 (50%) — наблюдение 2 часа
    ↓ всё ОК
v1.3.2 (100%) — полный rollout
    ↓ при любом этапе деградация
автоматический rollback на v1.3.1

Как реализован canary controller?

@dataclass
class CanaryDeployment:
    deployment_id: str
    agent_name: str
    stable_version: str
    canary_version: str
    stages: list[CanaryStage]   # [(5%, 30min), (25%, 60min), (50%, 120min), (100%, 0)]
    current_stage_index: int = 0
    status: str = "in_progress"

@dataclass
class CanaryStage:
    canary_traffic_pct: float
    observation_minutes: int
    started_at: datetime | None = None

class CanaryController:
    def __init__(self, router: ExperimentRouter, analyzer: MetricsAnalyzer):
        self.router = router
        self.analyzer = analyzer

    async def advance_canary(self, deployment: CanaryDeployment):
        """Вызывается по расписанию для проверки и продвижения canary."""
        current_stage = deployment.stages[deployment.current_stage_index]

        # Проверяем что наблюдение завершено
        if not current_stage.started_at:
            current_stage.started_at = datetime.utcnow()
            return

        elapsed = (datetime.utcnow() - current_stage.started_at).total_seconds() / 60
        if elapsed < current_stage.observation_minutes:
            return  # ещё наблюдаем

        # Анализ метрик за период наблюдения
        health = await self.analyzer.compare_versions(
            deployment.agent_name,
            deployment.stable_version,
            deployment.canary_version,
            since=current_stage.started_at
        )

        if health.canary_is_unhealthy:
            await self.rollback(deployment, reason=health.degradation_reason)
            return

        # Переходим к следующей стадии
        next_index = deployment.current_stage_index + 1
        if next_index >= len(deployment.stages):
            await self.complete_rollout(deployment)
        else:
            deployment.current_stage_index = next_index
            next_stage = deployment.stages[next_index]
            await self.router.update_traffic_split(
                deployment.agent_name,
                stable_pct=100 - next_stage.canary_traffic_pct,
                canary_pct=next_stage.canary_traffic_pct,
                canary_version=deployment.canary_version
            )
            logger.info(f"Canary advanced to {next_stage.canary_traffic_pct}% for {deployment.agent_name}")

    async def rollback(self, deployment: CanaryDeployment, reason: str):
        await self.router.update_traffic_split(
            deployment.agent_name, stable_pct=100, canary_pct=0,
            canary_version=deployment.canary_version
        )
        deployment.status = "rolled_back"
        await notify_team(f"Canary rollback for {deployment.agent_name}: {reason}")
        logger.error(f"Canary rolled back: {deployment.agent_name} v{deployment.canary_version} → v{deployment.stable_version}")

Мы реализовали canary-контроллер на Python с интеграцией в Kubernetes через Flagger. Контроллер поддерживает кастомные роутеры (gRPC, REST) и стандартный Ingress. Для каждого агента настраиваются индивидуальные пороги метрик, что позволяет тонко управлять качеством rollout.

Почему автоматический откат критичен?

Без автоматики rollback может занять часы — пока дежурный увидит алерт, разберётся и сработает вручную. За это время дефектная версия успевает испортить данные или подорвать доверие. Наш canary-контроллер откатывает версию за секунды — как только метрики выходят за порог. Например, при росте p99 latency с 200 мс до 800 мс (в 4 раза) откат происходит за 10 секунд, предотвращая влияние на 95% пользователей.

Какие метрики проверяет canary health check?

class CanaryHealthChecker:
    THRESHOLDS = {
        "error_rate": {"max_absolute": 0.05, "max_relative_increase": 2.0},
        "p99_latency_ms": {"max_relative_increase": 1.5},
        "task_success_rate": {"min_absolute": 0.90, "max_relative_decrease": 0.1},
        "quality_score": {"max_relative_decrease": 0.05},
    }

    def is_healthy(self, stable_metrics: dict, canary_metrics: dict) -> HealthCheckResult:
        issues = []
        for metric, thresholds in self.THRESHOLDS.items():
            stable_val = stable_metrics.get(metric, 0)
            canary_val = canary_metrics.get(metric, 0)

            if "max_absolute" in thresholds and canary_val > thresholds["max_absolute"]:
                issues.append(f"{metric} too high: {canary_val:.3f} > {thresholds['max_absolute']}")

            if stable_val > 0 and "max_relative_increase" in thresholds:
                relative = canary_val / stable_val
                if relative > thresholds["max_relative_increase"]:
                    issues.append(f"{metric} increased {relative:.1f}x vs stable")

        return HealthCheckResult(is_healthy=len(issues) == 0, issues=issues)
Метрика Абсолютный порог Относительный порог
error rate < 5% ≤ 2x от стабильной
p99 latency < 5000 ms ≤ 1.5x от стабильной
success rate > 90% ≥ 0.9x от стабильной
quality score > 0.95 ≥ 0.95x от стабильной

Ключевые метрики: error rate, p99 latency, success rate и quality score. Для LLM-агентов особенно важен quality score — он выявляет галлюцинации и небезопасный контент.

Сравнение методов деплоя AI-агентов

Метод Время rollout Риск Сложность Когда использовать
Canary 1-4 ч Низкий Средняя Критичные агенты, LLM с частыми обновлениями
Blue-green 5-10 мин Средний Высокая Быстрые релизы без длинных сессий
Rolling update 10-30 мин Высокий Низкая Некритичные микросервисы

Canary в 2-3 раза безопаснее rolling update по вероятности массового инцидента. При длинных сессиях canary в 2 раза надёжнее blue-green, так как не требует полного переключения среды.

Интеграция с Kubernetes

# Flagger (progressive delivery controller) для K8s
apiVersion: flagger.app/v1beta1
kind: Canary
metadata:
  name: vllm-agent
  namespace: ai-serving
spec:
  targetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: vllm-agent
  progressDeadlineSeconds: 3600
  service:
    port: 8000
  analysis:
    interval: 5m
    threshold: 5              # max failures before rollback
    maxWeight: 100
    stepWeight: 10            # +10% каждые 5 минут
    metrics:
      - name: request-success-rate
        thresholdRange:
          min: 99
        interval: 1m
      - name: request-duration
        thresholdRange:
          max: 5000
        interval: 1m

Наша команда имеет опыт в MLOps и успешно внедрила canary-деплой для более 20 проектов, включая NLP и Computer Vision. Мы гарантируем стабильность сервиса на каждом этапе rollout — с автоматическим мониторингом p99 latency и error rate каждые 5 секунд.

Референсная архитектура canary-пайплайна 1. Деплой canary-версии на 5% трафика. 2. Сбор метрик в течение 30 минут. 3. Сравнение с baseline — если отклонение в пределах порогов, увеличение доли. 4. При превышении порогов — немедленный rollback. 5. Полный rollout на 100% после успешного прохождения всех стадий.

Процесс работы

  1. Аналитика: изучаем архитектуру агента, метрики и SLA.
  2. Проектирование: определяем этапы canary, пороги и триггеры отката.
  3. Реализация: пишем контроллер на Python, интегрируем с роутером трафика.
  4. Тестирование: симулируем деградацию и проверяем rollback.
  5. Деплой: разворачиваем в Kubernetes через Flagger или собственный оператор.

Что входит в работу

  • Разработка canary-контроллера под вашу инфраструктуру.
  • Настройка мониторинга: метрики, алерты, дашборды Grafana.
  • Документация по запуску и обслуживанию.
  • Обучение команды работе с canary-пайплайном.
  • Поддержка на этапе первых rollout.

Типичные ошибки при canary-деплое AI-агентов

Частая ошибка — слишком короткое окно наблюдения: 5 минут вместо 30 не дают статистически значимых данных. Игнорирование quality score опасно: LLM может отвечать быстро, но неверно. Также важен мониторинг на стороне пользователя — метрики могут быть хороши, но клиенты жалуются. И наконец, не стоит использовать одинаковые пороги для разных типов агентов: для чат-ботов latency критичнее, для анализаторов — quality score.

Оценим ваш проект и предложим оптимальное решение. Свяжитесь с нами для консультации. Закажите внедрение canary-деплоя — и ваши AI-агенты будут обновляться без риска.

Ссылки: Flagger на GitHub — progressive delivery для Kubernetes. Canary deployment на Wikipedia.

MLOps: инфраструктура для обучения, деплоя и мониторинга ML-моделей

Модель обучена, метрики — F1 0.94 на валидации. Через три месяца в продакшене качество падает на 12%. Никто не знает, когда именно — нет мониторинга. Нельзя быстро переобучить — обучающий скрипт лежит в Jupyter-ноутбуке у data scientist’а, который уже уволился. Данные для ретрейна собирают руками из трёх разрозненных систем. Примерно половина проектов приходят к нам с этой болью. Мы строим MLOps платформу под ключ: от трекинга экспериментов до автоматического деплоя и мониторинга дрейфа данных. Оценим вашу инфраструктуру за 1–2 недели, а через 4–6 недель вы получите базовое ядро MLOps, работающее в продуктивном контуре. Наша команда — 10+ лет опыта в ML-инфраструктуре, более 50 внедрений.

Experiment tracking и воспроизводимость

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

MLflow — open source стандарт для трекинга. Логирует параметры, метрики, артефакты (модели, графики) и код. MLflow Model Registry — централизованное хранилище моделей с версионированием и lifecycle stages (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 воспроизводит весь пайплайн от сырых данных до метрик.

Как обеспечить воспроизводимость обучения? Фиксируйте random seeds (torch.manual_seed, numpy.random.seed, random.seed) и записывайте их в метаданные эксперимента. Без этого дебаггинг нерегулярных результатов — боль. Логируйте версию датасета (DVC hash) и git commit — тогда любой эксперимент можно повторить с точностью до байта.

Оркестрация пайплайнов: Kubeflow, Airflow, Prefect

Когда нужен оркестратор пайплайнов? Скрипт обучения на 100 строк в cron — нормально для простых задач. Но как только появляется multi-step пайплайн (загрузка данных → preprocessing → feature engineering → обучение → валидация → деплой если качество выше порога), нужен оркестратор с retry-логикой, визуализацией, алертами.

Kubeflow — Kubernetes-native оркестратор для ML (см. Wikipedia). Каждый шаг — Docker-контейнер. Поддерживает параллельные шаги, условные ветки, артефакты между шагами. Интегрируется с Katib (AutoML), KServe (serving), Feast (feature store).

Apache Airflow — более общий DAG-оркестратор. Широкая экосистема операторов (S3, Spark, DBT, Kubernetes). Проще развернуть, если уже есть Airflow в компании.

Prefect / Metaflow — меньше boilerplate. Prefect 2.x с декораторами @flow и @task — быстрый старт для небольших команд.

Типичная архитектура обучающего пайплайна на Kubeflow:

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

Каждый component — отдельный Docker-образ. Пайплайн версионируется в git. Запуск по расписанию (ретрейнинг раз в неделю на новых данных) или вручную.

Model Registry и управление жизненным циклом

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

  • Какая модель сейчас в продакшене (и с какими метриками)
  • История всех версий с параметрами обучения
  • Метаданные: датасет, git commit, результаты валидации
  • Lifecycle stage: None → Staging → Production → Archived

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

Продвижение модели через стейджи: автоматически переводим модель в Staging после успешного прохождения eval, затем ручное или автоматическое (при A/B тесте) продвижение в Production. Rollback — переключение на предыдущую Production-версию за секунды.

Serving: от FastAPI до Triton Inference Server

Простой случай. 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-стандарт для высоких нагрузок (500+ req/s). Dynamic batching, concurrent model execution, model ensemble. Поддерживает TensorRT, ONNX, PyTorch TorchScript, TensorFlow SavedModel.

KServe — Kubernetes-native ML serving с autoscaling, canary deployments, A/B testing из коробки. Scale-to-zero для неактивных моделей — экономия на инфраструктуре до 40% (более 1.2 млн рублей в год для проекта с 10 моделями).

Мониторинг: data drift, model drift, инфраструктурные метрики

Мониторинг — то, что обычно делают в последнюю очередь и о чём жалеют в первую. Три уровня.

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

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

Model drift мониторинг. Если есть ground truth с задержкой (например, через неделю знаем конверсию) — мониторим реальные метрики. Если нет — surrogate метрики: распределение prediction scores, доля confident predictions.

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

Почему важен мониторинг дрейфа данных? Без него вы узнаёте о деградации модели только по жалобам пользователей или звенящему SLA. Алерт о дрейфе позволяет переобучить модель заранее, до того как ошибки начнут приносить убытки. В одном из наших проектов мониторинг PSI выявил дрейф через 2 дня после изменения источника данных — это спасло кампанию с бюджетами на 2 млн рублей.

Типичная ошибка Последствия Решение
Отсутствие версионирования данных Невоспроизводимость экспериментов Внедрить DVC или аналоги
Ручной деплой моделей Ошибки человеческого фактора, долгий rollback Автоматизировать CI/CD пайплайн
Мониторинг только по бизнес-метрикам Позднее обнаружение дрейфа Добавить data drift мониторинг (PSI, KS)

Feature Store

Feature Store решает проблему training-serving skew. Если preprocessing во время обучения и инференса реализован в двух разных местах — расхождение неизбежно.

Когда нужен Feature Store?

  • Несколько моделей используют одни и те же признаки
  • Признаки вычисляются из потоковых данных (real-time)
  • Большая команда с разными людьми на feature engineering и model training

Feast — open source Feature Store. Офлайн store (S3 + Parquet) для обучения, онлайн store (Redis, DynamoDB) для low-latency инференса. Feature definitions как код, materialization job синхронизирует офлайн → онлайн.

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

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-платформы

Мы предоставляем полный цикл работ, документацию и обучение команды.

Этап Длительность Результат
Аудит текущей инфраструктуры и data pipeline 1–2 недели Roadmap с рисками и приоритетами
Развёртывание ядра: MLflow, оркестратор, serving 4–6 недель Работающий пайплайн обучения и деплоя
Feature Store и CI/CD для ML 2–3 месяца Feature Store, автоматические retrain и деплой
Мониторинг дрейфа и алертинг 3–4 недели Дашборды, алерты, playbook по инцидентам
Обучение команды и документация 1–2 недели Runbook, политики, обучение для data scientists

Итоговый срок от аудита до полноценной MLOps-платформы: 3–5 месяцев. Также возможен поэтапный запуск: базовый уровень (трекинг + serving) за 4–6 недель.

Стоимость рассчитывается индивидуально под объём данных, количество моделей и требования к инфраструктуре. Закажите аудит MLOps-инфраструктуры — получите roadmap за 1–2 недели. Свяжитесь с нами для оценки вашего проекта — мы пришлём предварительный расчёт за 2 рабочих дня.

Обратите внимание: гарантия на архитектурные решения — 12 месяцев. Предоставляем сертификаты интеграции с основными облачными провайдерами (AWS, GCP, Azure). За время работы мы не потеряли ни одного клиента после первого внедрения — опыт 50+ успешных MLOps-проектов говорит сам за себя. Получите консультацию по построению MLOps платформы уже сегодня.