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

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

Направления 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

Проблема: почему предиктивное обслуживание дешевле профилактики?

Телеком-сеть — тысячи активных элементов: базовые станции, коммутаторы, маршрутизаторы, оптические усилители. Превентивная замена компонентов по расписанию дороже предиктивного: до 60% замен происходит досрочно, а внеплановый простой одной базовой станции может стоить $10 000 в час. Мы разрабатываем AI-системы предиктивного обслуживания под ключ — от сбора SNMP-телеметрии до интеграции с NOC. Опыт 5+ лет в ML для телекома, сертифицированные инженеры по сетям. Закажите консультацию — оценим ваш проект за 2 дня. Согласно Wikipedia, такой подход уже снизил простои на 30–50% в ведущих операторах.

Как AI предсказывает отказы сетевого оборудования?

Система строит тренды ключевых KPI за несколько временных окон, использует историю аварий и контекстные признаки (возраст, вендор, нагрузка). Модель LightGBM выдаёт вероятность отказа в ближайшие 7 дней. Для оптического транспорта (DWDM) дополнительно анализируем тренд OSNR и прогнозируем превышение порога.

Телеметрия сетевых элементов

Источники данных для предиктивного анализа:

data_sources = {
    'snmp_traps': {
        'protocol': 'SNMP v2c/v3',
        'frequency': 'event-driven + 5-min polling',
        'examples': ['linkDown', 'authenticationFailure', 'cpuThreshold']
    },
    'netflow_ipfix': {
        'measures': 'flow statistics, traffic matrix',
        'frequency': '1-min aggregates'
    },
    'syslog': {
        'content': 'structured error/warning messages',
        'volume': '10k-100k events/hour на medium network'
    },
    'performance_counters': {
        'for_base_stations': ['RSSI', 'SINR', 'handover_success_rate', 'RRC_setup_failure'],
        'for_routers': ['cpu_util', 'memory_util', 'interface_error_rate', 'bgp_route_flaps'],
        'for_optical': ['optical_power_dbm', 'chromatic_dispersion', 'OSNR']
    }
}

Почему LightGBM лучше других моделей для телеметрии?

Категориальные признаки (vendor, climate zone) и разреженные события отказов делают градиентный бустинг оптимальным выбором. LightGBM в 3-5 раз быстрее XGBoost при обучении на больших временных рядах, а встроенная обработка категорий снижает объём feature engineering. Мы также используем scale_pos_weight для компенсации дисбаланса классов (≈6% отказов в 30-дневном окне).

Предиктивная модель для базовых станций

import pandas as pd
import numpy as np
from lightgbm import LGBMClassifier

def build_bs_failure_predictor(training_data: pd.DataFrame) -> LGBMClassifier:
    """
    Предсказание отказа базовой станции за 7 дней.
    Признаки: тренды KPI за 7/14/30 дней + hardware counters.
    """
    feature_groups = {
        'kpi_trends': [
            'rssi_trend_7d', 'sinr_trend_7d', 'handover_sr_trend_7d',
            'rrc_failures_trend_7d', 'vswr_trend_7d'
        ],
        'hw_metrics': [
            'cpu_util_avg_30d', 'cpu_util_max_7d',
            'memory_util_avg_30d', 'temperature_max_30d',
            'fan_speed_deviation', 'power_consumption_trend'
        ],
        'event_history': [
            'alarm_count_7d', 'critical_alarm_count_30d',
            'restart_count_90d', 'hw_error_count_7d'
        ],
        'context': [
            'age_years', 'vendor_encoded', 'climate_zone',
            'traffic_load_avg_30d'
        ]
    }

    all_features = [f for group in feature_groups.values() for f in group]

    model = LGBMClassifier(
        n_estimators=300,
        learning_rate=0.05,
        scale_pos_weight=15,
        metric='average_precision'
    )
    model.fit(
        training_data[all_features],
        training_data['failure_in_7d']
    )
    return model

Feature Engineering для трендов

def compute_kpi_trends(kpi_series: pd.Series, windows=[7, 14, 30]) -> dict:
    trends = {}
    for w in windows:
        recent = kpi_series.tail(w)
        if len(recent) >= 3:
            x = np.arange(len(recent))
            slope, intercept = np.polyfit(x, recent.values, 1)
            trends[f'slope_{w}d'] = slope
            trends[f'std_{w}d'] = recent.std()
            trends[f'mean_{w}d'] = recent.mean()
            trends[f'min_{w}d'] = recent.min()
    return trends

Как мы мониторим деградацию оптического тракта?

Для сетей DWDM с каналами 100G и выше критично отслеживать падение OSNR и рост дисперсии. Наш анализатор вычисляет тренд OSNR за 30 дней и прогнозирует, когда он упадёт ниже порога (15 dB для 100G). Если порог будет достигнут менее чем через 14 дней или отклонение мощности превышает 3 dB — модуль помечается как требующий обслуживания.

Мониторинг деградации оптического тракта

def analyze_optical_degradation(optical_samples: pd.DataFrame,
                                  channel_id: str) -> dict:
    channel_data = optical_samples[optical_samples['channel_id'] == channel_id].sort_index()
    osnr_trend = compute_kpi_trends(channel_data['osnr_db'])['slope_30d']
    current_osnr = channel_data['osnr_db'].iloc[-1]
    osnr_threshold = 15.0
    if osnr_trend < 0:
        days_to_threshold = (current_osnr - osnr_threshold) / abs(osnr_trend)
    else:
        days_to_threshold = float('inf')
    power_deviation = abs(channel_data['rx_power_dbm'].iloc[-1] -
                          channel_data['rx_power_dbm'].mean())
    return {
        'channel_id': channel_id,
        'current_osnr': current_osnr,
        'osnr_trend_db_per_day': osnr_trend,
        'days_to_osnr_threshold': round(days_to_threshold, 1),
        'power_deviation_db': round(power_deviation, 2),
        'maintenance_recommended': days_to_threshold < 14 or power_deviation > 3
    }

Что делать с разными типами отказов?

Мы классифицируем отказы на шесть категорий: hardware_failure, software_crash, overload, configuration_error, power_issue, optical_degradation. Для каждой — своя стратегия dispatch. Например, software_crash решается удалённым ребутом, а hardware_failure требует выезда инженера. Модель SHAP объясняет, какие признаки повлияли на решение.

Классификация типов отказов

Мультиклассовая модель + интерпретация:

from sklearn.ensemble import RandomForestClassifier
import shap

failure_types = [
    'hardware_failure', 'software_crash', 'overload',
    'configuration_error', 'power_issue', 'optical_degradation'
]

def classify_failure_type(fault_features: pd.DataFrame) -> dict:
    model = RandomForestClassifier(n_estimators=200, class_weight='balanced')
    probabilities = model.predict_proba([fault_features.values])[0]
    predicted_class = failure_types[np.argmax(probabilities)]

    dispatch_recommendation = {
        'hardware_failure': 'field_engineer_required',
        'software_crash': 'remote_reboot_and_monitoring',
        'overload': 'traffic_rerouting_capacity_upgrade',
        'configuration_error': 'rollback_config_change',
        'power_issue': 'check_ups_and_power_supply',
        'optical_degradation': 'schedule_fiber_inspection'
    }

    return {
        'failure_type': predicted_class,
        'confidence': float(max(probabilities)),
        'dispatch': dispatch_recommendation[predicted_class],
        'probabilities': dict(zip(failure_types, probabilities.tolist()))
    }

Как внедрение влияет на KPI сети?

Внедрение предиктивного обслуживания приводит к измеримым улучшениям: снижение аварийных простоев на 30–60%, уменьшение числа внеплановых выездов инженеров на 40% и оптимизация запасов запчастей. Средний ROI проекта составляет 3–6 месяцев. Экономия на ремонтных работах и сокращение простоев напрямую снижают совокупную стоимость владения (TCO).

Этапы внедрения и сроки

Мы работаем по итеративной схеме: обследование и сбор телеметрии (1-2 недели) → разработка пилота на одной технологии (3-4 недели) → расширение на всю сеть и интеграция с NOC (4-8 недель). Полный цикл от запроса до продакшена — 2-4 месяца. Стоимость рассчитывается индивидуально; мы даём фиксированную цену после аудита.

Этап Длительность Результат
Аудит и сбор данных 1-2 недели Аналитический отчёт, план ML-моделей
Разработка пилота 3-4 недели Рабочий прототип на одном сегменте сети
Полномасштабное внедрение 4-8 недель Продуктив: обученные модели, интеграция с NOC, дашборды
Оптимизация и обучение 2-4 недели Тюнинг гиперпараметров, обучение команды NOC

Как проходит аудит перед началом работ?

На первом этапе мы анализируем текущую телеметрию, определяем KPI для прогноза и оцениваем качество данных. Результат — детальный отчёт с рекомендованным стеком и объёмом работ.

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

  • Полный цикл MLOps: версионирование данных (DVC), экспериментов (MLflow), деплой (Docker + Kubernetes).
  • Документация: model card, data sheet, API-спецификация.
  • Интеграция с ServiceNow / Remedy / Jira через REST API.
  • Обучение сотрудников NOC интерпретации предсказаний.
  • Поддержка и дообучение модели раз в квартал.
Дополнительно: пример dispatch-правил
Тип отказа Действие Канал
Hardware failure Выезд инженера с запчастями Приоритетная очередь
Software crash Удалённый рестарт, мониторинг Автоматический тикет
Overload Перемаршрутизация трафика Уведомление сетевому инженеру
Configuration error Откат конфигурации Чат поддержки
Power issue Проверка источника питания Экстренная диспетчеризация
Optical degradation Заказ осмотра ВОЛС Плановая заявка

Результаты внедрения

Точность предсказания отказа за 7 дней — 85% average precision. Снижение аварийных простоев: 30-60%. Сокращение затрат на внеплановое ТО: до 40%. Вы получаете систему, которая оправдывает себя за 3-6 месяцев.

Свяжитесь с нами для бесплатной оценки вашей сети — предложим решение под ключ.

Детекция аномалий: автоэнкодеры, 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 незапланированных остановки по $40k каждая. Экономия после внедрения — $120k за полгода (отчёт о пилоте на объекте клиента).

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

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

  • 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-мониторинге. Получите консультацию — расскажем, как решить вашу задачу.