Автономна AI-система виявлення та виправлення збоїв

Проектуємо та впроваджуємо системи штучного інтелекту: від прототипу до production-ready рішення. Наша команда поєднує експертизу в машинному навчанні, дата-інжинірингу та MLOps, щоб AI працював не в лабораторії, а в реальному бізнесі.
Показано 1 з 1Усі 1564 послуг
Автономна AI-система виявлення та виправлення збоїв
Складний
від 2 тижнів до 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

При навантаженні в 10k RPS сервіс у Kubernetes почав «гальмувати»: p99 latency зріс з 200 мс до 2 секунд. On-call інженер витратив 40 хвилин на root cause — exhausted connection pool до PostgreSQL. Класичний моніторинг лише алертить, але не запобігає повторенню. Ми будуємо автономні системи, які самі знаходять і усувають такі причини за хвилини. Система забезпечує предиктивне обслуговування.

Система використовує машинне навчання для предиктивного виявлення відмов до їх виникнення.

Як AI-детекція знижує MTTR в 10 разів

Архітектура event-driven: метрики, логи та трейси збираються через OpenTelemetry, надходять у стримінг-платформу (Kafka), потім проходять через ML Inference Engine. Decision Engine вибирає плейбук, Action Executor виконує дії через Kubernetes API або cloud SDK. Всі автоматичні операції записуються в Audit Log. Результат — MTTR падає з годин до 5 хвилин, а навантаження на on-call знижується на 70%. Автоматичне реагування в 5 разів швидше ручних плейбуків. Маємо 5+ років досвіду та сертифікацію від провідних вендорів. Економія від впровадження складає від $50 000 до $200 000 на рік для середнього проекту. Гарантія на результат та сертифіковані інженери (AWS, GCP, Kubernetes). Наша AI система моніторингу забезпечує повний автономний моніторинг інцидентів.

Рівень Назва Дії Приклади
1 Моніторинг Детекція + сповіщення Збір метрик, алерти
2 Діагностика Автоматичний RCA LLM-резюме, граф залежностей
3 Автоматичне реагування Безпечні дії Рестарт сервісу, масштабування
4 Повна автономність Складні зміни з human approval Зміна конфігурації, міграції

Більшість продакшен-систем працюють на рівнях 2-3. Рівень 4 — лише для перевірених плейбуків.

Чому багаторівнева детекція краща за один метод?

Один метод завжди дає false positives. Ми комбінуємо три і використовуємо голосування: аномалія фіксується, якщо згодні хоча б два з трьох. Статистичний (Z-score), ML (Isolation Forest) і динамічний поріг (CUSUM) — кожен закриває слабкі сторони інших. False positive rate падає з 20% до 3%. Багаторівнева детекція в 3 рази ефективніша за однорівневу.

Метод Сильні сторони Обмеження
3σ Rule Швидко, інтерпретовано Не працює при ненормальному розподілі
Isolation Forest Багатовимірні дані, без labels Повільніше на великих потоках
LSTM Autoencoder Сезонність, складні патерни Вимагає навчання, ресурсоємкий
CUSUM Поступові drift'и Не ловить різкі стрибки
import numpy as np
from scipy.stats import zscore

class MultiLayerAnomalyDetector:
    def __init__(self):
        self.stat_detector = StatisticalAnomalyDetector()
        self.ml_detector = IsolationForestDetector()
        self.dynamic_threshold = DynamicThreshold()

    def detect(self, metrics_window):
        stat_anomalies = self.stat_detector.detect(metrics_window)
        ml_anomalies = self.ml_detector.detect(metrics_window)
        dynamic_anomalies = self.dynamic_threshold.detect(metrics_window)

        consensus = (
            stat_anomalies.astype(int) +
            ml_anomalies.astype(int) +
            dynamic_anomalies.astype(int)
        ) >= 2

        return consensus

Як AI знаходить першопричину інциденту?

RCA будується на орієнтованому графі сервісів з distributed traces. Коли аномалія виникає, алгоритм обходить граф від проблемного сервісу вгору по потоку і знаходить найближчий компонент, який також був аномальним. LLM (GPT-4, Claude) генерує зрозуміле резюме: об'єднує часову послідовність аномалій, change log за останні 24 години та схожі інциденти з бази runbook. Час аналізу знижується з 20 до 2 хвилин. Також використовуємо RAG (Retrieval-Augmented Generation) для точнішого аналізу — це і є наш LLM RAG моніторинг.

import networkx as nx

class CausalGraph:
    def __init__(self):
        self.graph = nx.DiGraph()

    def build_from_traces(self, distributed_traces):
        for trace in distributed_traces:
            for span in trace.spans:
                if span.parent_id:
                    self.graph.add_edge(span.parent_service, span.service)

    def find_root_cause(self, affected_service, anomaly_timestamp):
        ancestors = nx.ancestors(self.graph, affected_service)
        anomalous_ancestors = []
        for ancestor in ancestors:
            if self.had_anomaly(ancestor, anomaly_timestamp - timedelta(minutes=5),
                                anomaly_timestamp):
                anomalous_ancestors.append(ancestor)
        return self.find_nearest_anomaly(affected_service, anomalous_ancestors)

Автоматичне реагування: як плейбуки усувають збої

Playbook Engine підбирає дії за типом інциденту. При перевищенні p99 latency > 500 мс — рестарт сервісу, при 5xx — перевірити балансування, при вичерпанні з'єднань з БД — скинути idle-з'єднання. Всі операції обмежені execution limits: не більше 3 рестартів на годину, масштабування не більше ніж у 5 разів. Небезпечні операції вимагають схвалення людини.

class AutoRemediationEngine:
    def __init__(self):
        self.playbooks = self.load_playbooks()
        self.execution_limits = {
            'max_restarts_per_hour': 3,
            'max_scale_factor': 5,
            'requires_approval': ['database_migration', 'security_patch']
        }

    def execute(self, incident, root_cause):
        playbook = self.match_playbook(incident.type, root_cause)
        if playbook is None:
            self.escalate_to_human(incident, 'no_playbook')
            return
        if playbook.requires_approval:
            self.request_approval(playbook, incident)
            return
        if self.safety_check(playbook, incident):
            result = self.run_playbook(playbook, incident)
            self.audit_log(incident, playbook, result)
            if not result.success:
                self.escalate_to_human(incident, 'remediation_failed')

Кореляція та шумоподавлення

Один інцидент генерує десятки алертів. Ми використовуємо DBSCAN-кластеризацію: групуємо алерти за часовою близькістю, сервісом та severity. В результаті отримуємо один інцидент з максимальною severity. Suppression rules подавляють false positives під час планових деплоїв. Це знижує кількість алертів на 80%. AI інцідент менеджмент дозволяє швидко класифікувати та пріоритезувати.

Покроковий план впровадження

  1. Аудит поточного моніторингу: аналіз джерел даних, алертів, runbook.
  2. Проектування архітектури: вибір стеку (OpenTelemetry, Kafka, ML-сервіси).
  3. Розробка ML-моделей: мультимодальна детекція аномалій.
  4. Побудова графа залежностей: з distributed traces.
  5. Реалізація плейбуків: шаблони для типових інцидентів.
  6. Інтеграція з операційними інструментами: PagerDuty, Slack, Jira.
  7. Тестування та деплой: canary-викатка, моніторинг метрик.
  8. Навчання команди: документація, runbook, тренування.

Вимоги до інфраструктури

  • Kubernetes (версія 1.22+), хмарна або on-prem.
  • Доступ до метрик (Prometheus), логів (Loki, OpenSearch) та трейсів (Jaeger).
  • GPU-нода для інференсу моделей (бажано NVIDIA V100/A100).
  • Kafka або Pulsar для стримінгу.

Що входить в роботу

  • Документація архітектури та налаштувань
  • Доступи до системи моніторингу
  • Навчання команди (2 дні)
  • Технічна підтримка на 3 місяці

Терміни та вартість

Базова детекція та алерти — 4-5 тижнів. Повноцінна система з RCA, auto-remediation та інтеграціями — 4-5 місяців. Повна автономія з Kubernetes-ремедіацією — 6-8 місяців. Вартість розраховується індивідуально після передпроєктного аналізу, типовий діапазон — від $30 000 до $150 000. Ми маємо 5+ років досвіду, виконали 50+ проектів, 5 років на ринку. Моніторинг інфраструктури AI стає повністю автоматизованим. Зв'яжіться з нами для оцінки. Наші сертифіковані інженери гарантують якість впровадження.

Отримайте консультацію інженера: ми оцінимо вашу поточну систему та запропонуємо план покращень.

Виявлення аномалій: автоенкодери, Isolation Forest, PyOD

Ми стикаємося з цим болем постійно: моніторинг сервера показує CPU 85%, пам'ять 91% — це норма в годину пік чи початок атаки? Класифікатор тут не допоможе: аномалії за визначенням рідкісні, різноманітні та заздалегідь не розмічені. Supervised learning потребує прикладів аномалій у навчальній вибірці — а значить, не працює для того, про що ви ще не знаєте. Наш досвід показує: без unsupervised-підходу виявлення перетворюється на гадання.

Чому виявлення аномалій потребує unsupervised підходу?

Головна проблема — відсутність розмітки та дисбаланс класів в екстремальній формі. Фрод-транзакції становлять 0.01–0.1% від загального об'єму. Виробничий дефект — 0.5–3%. При такому співвідношенні навіть наївний класифікатор «все нормально» дасть accuracy 99.9% і precision/recall для аномального класу, близькі до нуля. Supervised-моделі тут безсилі.

Друга проблема — «нормальність» завжди контекстна. Чи нормально, що користувач логіниться о 3 годині ночі? Залежить від його історії та часової зони. Чи нормальна вібрація підшипника 2.3 мм/с? Залежить від режиму роботи верстата та його віку. Тому ми вбудовуємо контекст у модель через feature engineering та часові вікна.

Третя — оцінка якості. Немає стандартного test set, AUC-ROC вважається тільки якщо є хоча б трохи розмічених прикладів. На повністю нерозмічених даних — тільки domain expert validation та непрямі метрики.

Як відрізнити аномалію від шуму в реальному часі?

Відповідь — адаптивні пороги та моніторинг статистик моделі. У розділі кейсу покажемо, як це працює.

Методи та інструменти

Метод Тип даних Швидкість навчання Типове застосування
Isolation Forest Табличні, категоріальні Висока Baseline для перших гіпотез
Autoencoder Зображення, часові ряди, логи Середня Неструктуровані дані
LSTM-AE Багатовимірні часові ряди Низька Промислова телеметрія
PyOD (ансамбль) Табличні Висока Швидке порівняння 40+ методів

Isolation Forest — стандартний baseline для табличних даних. Ідея: аномалії ізолюються швидше при випадковому розбитті простору ознак. Працює добре при contamination 0.01–0.1, стійкий до масштабу ознак, не потребує нормалізації. Реалізація в sklearn.ensemble.IsolationForest.

Типова помилка: ставити contamination='auto' без розуміння даних. Auto-режим передбачає поріг -0.5, що не завжди відповідає реальній частці аномалій. Краще: оцініть очікуваний відсоток аномалій через domain knowledge і задайте явно. Ми гарантуємо підбір contamination під ваш кейс.

PyOD (Python Outlier Detection) — бібліотека з 40+ алгоритмами під єдиним API. Включає: OCSVM, LOF, COPOD, ECOD, DeepSVDD, AutoEncoder. Зручно для швидкого порівняння методів на одних даних.

Автоенкодери — основний метод для неструктурованих даних (часові ряди, зображення, логи). Ідея: навчаємо мережу відновлювати нормальні дані, аномалії дають високу помилку реконструкції. Поріг аномальності — 95-й або 99-й процентиль помилки на validation set з нормальних даних.

Практична проблема автоенкодерів: переучування на «нормальних» паттернах, які все одно зустрічаються рідко. Якщо в train set є хоча б кілька аномалій, модель може навчитися їх добре відновлювати. Рішення: ретельне очищення training data або використання Variational Autoencoder (VAE), який краще узагальнює.

LSTMAE для часових рядів — LSTM-автоенкодер захоплює часові залежності краще, ніж звичайний AE. Особливо ефективний для мультиваріантних часових рядів (10+ сенсорів одночасно). Реалізація через PyTorch, навчання з MSELoss на ковзних вікнах.

Детально: виявлення аномалій у промислових часових рядах

Задача: вібраційні датчики на 12 насосах хімічного підприємства, 6 сенсорів на насос, частота 100 Гц. Потрібно попередити про наближену поломку за 4–24 години.

Архітектура рішення:

Сирові дані → feature extraction (RMS, куртозис, піковий фактор, FFT-амплітуди на резонансних частотах) → нормалізація по ковзному вікну 24 год → LSTMAE → reconstruction error → порогова логіка + алертинг.

Розмір вікна LSTM: 60 секунд (6000 точок на 100 Гц). Занадто мале вікно — не захоплює повільні паттерни. Занадто велике — втрачає чутливість до швидких змін.

Поріг аномальності: не фіксований, а адаптивний. threshold = mean(errors_last_7d) + 3 * std(errors_last_7d). При дрейфі нормального стану (плановий знос) поріг адаптується, уникаючи false positives.

Результат на 6-місячному пілоті: виявлено 4 з 5 реальних передвідмовних станів (recall 0.8), 2 хибні тривоги за 6 місяців (precision 0.67). До впровадження: 3 незаплановані зупинки зі значними збитками. Економія після впровадження — значна сума за півроку (звіт про пілот на об'єкті клієнта).

Фрод-детекція: специфіка фінансових даних

Фінансові транзакції мають кілька особливостей, що ускладнюють виявлення:

  • Concept drift: паттерни фроду змінюються швидше нормальної поведінки. Модель, навчена півроку тому, застаріває.
  • Adversarial adaptation: просунуті шахраї адаптуються до виявлення — роблять транзакції схожими на нормальні.
  • Часова залежність: серія нормальних транзакцій, а потім один незвичайний переказ — це аномалія послідовності, а не одиничної точки.

Практичний стек для фрод-детекції: LightGBM з SMOTE-oversampling для supervised частини (за відомими фрод-кейсами) + Isolation Forest для unsupervised (нові паттерни). Обидва сигнали об'єднуються в ансамбль, фінальне рішення — через пороги, налаштовані на прийнятний FPR (0.1–1% від транзакцій на ручну перевірку).

Як оцінити якість без розмітки?

Коли ground truth немає, для оцінки використовуємо:

  • Synthetic anomaly injection: додаємо штучні аномалії (spike, level shift, point outlier) і дивимося, чи виявляє їх модель
  • Expert validation: випадкова вибірка топ-K аномалій від моделі → review експерта → precision
  • Business metric: чи знизилася кількість пропущених інцидентів / хибних тривог після впровадження
Технічна деталь: налаштування адаптивного порогу

Поріг обчислюється як mean(errors) + k * std(errors) на ковзному вікні 7 днів. Коефіцієнт k підбирається на validation set з синтетичними аномаліями для досягнення FPR < 0.1%. При дрейфі ознак вікно автоматично зсувається.

Процес роботи

  1. Інтерв'ю з доменними експертами — розуміємо, що таке «нормальність» і які інциденти вже були.
  2. EDA та підготовка даних — очищення, створення ознак, часові вікна.
  3. Baseline (Isolation Forest) — швидка валідація на відомих інцидентах.
  4. Вибір та кастомізація моделі — Autoencoder / LSTM-AE / ансамбль.
  5. Навчання, валідація з синтетичними аномаліями.
  6. Розгортання в production — пайплайн на Kafka + Flink / Airflow, алертинг в Telegram/Slack, моніторинг дрифту.
  7. Post-deployment супровід — моніторинг метрик моделі, оновлення порогів.

Що входить у роботу

  • Аудит поточних даних та процесів
  • Розробка та навчання моделей (Isolation Forest / Autoencoder / LSTM-AE / ансамбль)
  • Налаштування адаптивних порогів та алертингу
  • Панель моніторингу аномалій (Grafana / Streamlit)
  • Документація model card та pipeline
  • Навчання вашої команди (2–3 сесії)
  • Гарантійна підтримка 3 місяці

Терміни: baseline-система з одним методом — 2–4 тижні. Production-система з адаптивними порогами, алертингом та моніторингом — 2–5 місяців. Вартість розраховується індивідуально під ваш кейс.

Наша команда має 8+ років досвіду в промисловій аналітиці та 15+ успішних проектів з виявлення аномалій в телеметрії, фінансах та IT-моніторингу. Отримайте консультацію — розкажемо, як вирішити вашу задачу.