Skip to content

cloudbridge-research/ai-routing-lab

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AI Routing Lab

Прогнозирование оптимальных маршрутов с использованием машинного обучения для оптимизации задержки и джиттера

License: MIT Python 3.11+ Status

Доступные языки:

  • English: README_en.md
  • Русский: Этот документ (README.md)

Язык: Русский Уровень: Магистратура, PhD исследования Домен: Машинное обучение, Оптимизация маршрутизации, Сетевые технологии Организация: АНО "Центр исследований и разработок сетевых технологий"


Обзор проекта

AI Routing Lab — это исследовательский проект, сосредоточенный на разработке моделей машинного обучения для прогнозирования оптимальных маршрутов в сетевой инфраструктуре CloudBridge. Проект направлен на достижение точности >92% при прогнозировании задержки и джиттера для оптимального выбора маршрутов.

Ключевые задачи:

  • Прогнозирование оптимальных маршрутов на основе прогнозирования задержки/джиттера
  • Интеграция с quic-test для валидации моделей на реальном QUIC трафике
  • Интеграция в производство с CloudBridge Relay для оптимизации маршрутов в реальном времени

Статус проекта

Реализовано и протестировано

Инфраструктура ML:

  • Архитектура моделей (Random Forest, Gradient Boosting)
  • Feature engineering pipeline и Model Registry
  • Data preprocessing и evaluation framework (MAE, RMSE, R², MAPE)
  • 196 unit тестов, 71.73% coverage

Модели прогнозирования:

  • LatencyPredictor и JitterPredictor (Random Forest)
  • RoutePredictionEnsemble (комбинация latency + jitter)
  • LoadPredictionEnsemble (LSTM + Prophet + ARIMA + RF)

Модели маршрутизации:

  • QLearningRouter (Reinforcement Learning)
  • MultiArmedBanditRouter (UCB алгоритм)
  • NeuralNetworkRouteOptimizer

Мониторинг и аномалии:

  • DriftDetector, ModelMonitor, RetrainingOrchestrator
  • IsolationForestModel и AnomalyEnsemble

Интеграция:

  • PrometheusCollector и JSONFileCollector для quic-test
  • FastAPI inference сервис
  • Docker deployment (Prometheus, Grafana, MLflow)
  • 6 лабораторных работ с CAI Framework

Требует данных для валидации

Модели обучены на синтетических данных. Для достижения целевых показателей (R² > 0.92, MAE < 3 мс) требуется:

  • Сбор реальных метрик из quic-test (минимум 2 недели непрерывных измерений)
  • Несколько маршрутов для сравнения (минимум 3)
  • Различные сетевые условия (WiFi, LTE, 5G, satellite, adversarial)
  • Ретрейнинг моделей на production данных

В активной разработке

  • LSTM и Transformer-based модели для временных рядов
  • Graph Neural Networks (GNN) для моделирования топологии сети
  • gRPC API для real-time инференции
  • Автоматическое переключение маршрутов на основе ML предсказаний
  • A/B тестирование ML vs статический BGP
  • Материалы классических лабораторных работ (планируется Q1 2026)

Планируется

  • Автоматический ретрейнинг моделей по расписанию
  • Continuous monitoring дрейфа моделей в production
  • Поддержка XGBoost и LightGBM
  • Multi-objective optimization (latency + cost + reliability)
  • GNN для моделирования сетевой топологии (по примеру RouteNet)
  • Deep RL для адаптивной маршрутизации
  • Федеративное обучение для multi-tenant сценариев
  • Explainable AI для интерпретации решений моделей

Об организации

АНО "Центр исследований и разработок сетевых технологий"

Автономная некоммерческая организация создана в целях:

  • Проведения фундаментальных и прикладных исследований в области сетевых протоколов (QUIC, MASQUE, BGP и других)
  • Разработки и распространения свободного программного обеспечения (Open Source)
  • Образования и повышения квалификации специалистов в области сетевых технологий
  • Сотрудничества с ведущими российскими и международными вузами
  • Подготовки высококвалифицированных кадров для индустрии

Больше информации:


Цели исследования

Основная цель

Разработать модели машинного обучения, которые могут предсказывать задержку и джиттер маршрутов с точностью >92% для обеспечения проактивного выбора маршрутов в сети CloudBridge.

Области исследования

  1. Прогнозирование задержки (Latency Prediction)

    • Прогнозирование временных рядов задержки маршрутов
    • Сравнение задержек на множественных путях
    • Анализ исторических паттернов
  2. Прогнозирование джиттера (Jitter Prediction)

    • Моделирование изменчивости джиттера
    • Анализ влияния условий сети
    • Оценка стабильности маршрутов
  3. Оптимизация выбора маршрутов (Route Selection Optimization)

    • Ансамблевые модели для ранжирования маршрутов
    • Инференция прогнозов в реальном времени
    • Интеграция с CloudBridge Relay

Архитектура

┌─────────────────────────────────────────────────────────┐
│           AI Routing Lab (Python)                       │
│                                                         │
│  ┌──────────────────────────────────────────────────┐   │
│  │  Сбор данных (Data Collection)                   │   │
│  │  • Метрики Prometheus из quic-test               │   │
│  │  • JSON экспорт из quic-test                     │   │
│  │  • Хранение исторических данных                  │   │
│  └──────────────────────────────────────────────────┘   │
│                          │                              │
│                          ▼                              │
│  ┌──────────────────────────────────────────────────┐   │
│  │  ML Pipeline (Конвейер обучения)                 │   │
│  │  • LatencyPredictor (Random Forest)              │   │
│  │  • JitterPredictor (Random Forest)               │   │
│  │  • RoutePredictionEnsemble                       │   │
│  │  • Feature Engineering (Инженерия признаков)     │   │
│  │  • Model Evaluation (Оценка моделей)             │   │
│  └──────────────────────────────────────────────────┘   │
│                          │                              │
│                          ▼                              │
│  ┌──────────────────────────────────────────────────┐   │
│  │  Inference Engine (Движок инференции)            │   │
│  │  • Real-time Predictions (Прогнозы в реальном)   │   │
│  │  • Route Optimization (Оптимизация маршрутов)    │   │
│  │  • API для CloudBridge Relay                     │   │
│  └──────────────────────────────────────────────────┘   │
│                          │                              │
│                          │ Валидация (Validation)       │
│                          ▼                              │
│  ┌──────────────────────────────────────────────────┐   │
│  │  quic-test (Go)                                  │   │
│  │  • Генерация реального QUIC трафика              │   │
│  │  • Сбор метрик                                   │   │
│  │  • Валидация ML прогнозов                        │   │
│  └──────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────┘

Структура проекта

ai-routing-lab/
├── README.md                    # Основная документация (русский)
├── README_en.md                 # Документация (английский)
├── QUICKSTART.md                # Быстрый старт
├── DOCKER.md                    # Руководство по Docker
├── LICENSE                      # Лицензия MIT
├── requirements.txt             # Зависимости Python
├── requirements-dev.txt         # Dev зависимости
├── pyproject.toml               # Конфигурация проекта
├── pytest.ini                   # Настройки pytest
├── Makefile                     # Команды автоматизации
├── Dockerfile                   # Docker образ
├── docker-compose.yml           # Docker Compose конфигурация
├── setup.py                     # Конфигурация пакета
│
├── data/                        # Сбор и обработка данных
│   ├── collectors/
│   │   └── quic_test_collector.py    # Интеграция с quic-test
│   └── pipelines/
│       └── data_pipeline.py     # Pipeline обработки данных
│
├── models/                      # Определения ML моделей
│   ├── core/                    # Основная ML инфраструктура
│   │   ├── model_registry.py    # Версионирование моделей
│   │   ├── data_preprocessor.py  # Предобработка данных
│   │   ├── feature_extractor.py # Инженерия признаков
│   │   └── model_validator.py   # Валидация моделей
│   ├── prediction/              # Модели прогнозирования
│   │   ├── latency_predictor.py # Прогнозирование задержки
│   │   ├── jitter_predictor.py  # Прогнозирование джиттера
│   │   ├── load_ensemble.py     # Ансамбль прогнозирования нагрузки
│   │   ├── arima_model.py       # ARIMA модель
│   │   └── prophet_model.py     # Prophet модель
│   ├── routing/                 # Модели оптимизации маршрутов
│   │   ├── q_learning_route.py  # Q-Learning
│   │   ├── multi_armed_bandit.py # Multi-Armed Bandit
│   │   └── neural_network_route.py # Neural Network
│   ├── anomaly/                 # Обнаружение аномалий
│   │   ├── isolation_forest.py  # Isolation Forest
│   │   └── anomaly_ensemble.py  # Ансамбль аномалий
│   └── monitoring/              # Мониторинг моделей
│       ├── drift_detector.py    # Детектор дрейфа
│       ├── model_monitor.py     # Монитор метрик
│       └── retraining_orchestrator.py # Оркестратор переобучения
│
├── training/                    # Скрипты обучения
│   ├── train_latency_model.py   # Обучение latency модели
│   └── train_jitter_model.py    # Обучение jitter модели
│
├── inference/                   # Движок инференции
│   └── predictor_service.py     # FastAPI сервис
│
├── evaluation/                  # Оценка моделей
│   └── model_evaluator.py       # Оценка и валидация
│
├── experiments/                 # Лабораторные эксперименты
│   ├── lab_experiment.py       # Фреймворк экспериментов
│   ├── example_experiment.py   # Пример эксперимента
│   └── latency_jitter_experiment.py # Полный workflow
│
├── labs/                        # Лабораторные работы с CAI
│   ├── lab_ai_routing.py       # AI-ассистированная оптимизация маршрутизации
│   ├── lab_ml_security.py      # Тестирование безопасности ML-систем
│   └── lab_ai_monitoring.py    # AI-мониторинг сетевой инфраструктуры
│
├── examples/                    # Примеры использования
│   └── cai_integration.py      # Примеры интеграции CAI
│
├── tests/                       # Тесты
│   ├── unit/                    # Unit тесты
│   ├── integration/             # Integration тесты
│   └── e2e/                     # End-to-end тесты
│
├── monitoring/                  # Мониторинг
│   └── prometheus.yml           # Конфигурация Prometheus
│
└── docs/                        # Документация
    ├── architecture/            # Архитектура
    ├── development/             # Разработка
    ├── guides/                  # Руководства
    └── labs/                    # Документация лабораторных работ
        └── CAI_INTEGRATION.md  # Интеграция CAI Framework

Быстрый старт

Предварительные требования

  • Python 3.11+
  • quic-test - основной инструмент тестирования QUIC протокола для генерации метрик и валидации моделей
  • Prometheus (опционально, для сбора метрик из quic-test)

Установка

Вариант 1: С использованием Makefile (рекомендуется)

# Клонирование репозитория
git clone https://github.com/twogc/ai-routing-lab.git
cd ai-routing-lab

# Установка всех зависимостей для разработки
make install-dev

Вариант 2: Ручная установка

# Клонирование репозитория
git clone https://github.com/twogc/ai-routing-lab.git
cd ai-routing-lab

# Создание виртуального окружения
python3 -m venv venv
source venv/bin/activate  # На Windows: venv\Scripts\activate

# Установка зависимостей
pip install -r requirements.txt
pip install -r requirements-dev.txt

# Установка пакета в режиме разработки
pip install -e .

# Установка pre-commit hooks
pre-commit install

Базовое использование

Обучение моделей

# Обучение latency модели
python training/train_latency_model.py \
  --data-path data/training_data.json \
  --model-output models/ \
  --n-estimators 100

# Обучение jitter модели
python training/train_jitter_model.py \
  --data-path data/training_data.json \
  --model-output models/

Запуск inference сервиса

# Запуск FastAPI сервиса
python -m uvicorn inference.predictor_service:app --host 0.0.0.0 --port 5000

# Или через Docker
make docker-up

Запуск экспериментов

# Запуск примера эксперимента прогнозирования задержки
python experiments/example_experiment.py

# Запуск полного эксперимента задержка/джиттер
python experiments/latency_jitter_experiment.py

Сбор данных из quic-test

# Сбор метрик из Prometheus
python -m data.collectors.quic_test_collector --prometheus-url http://localhost:9090

Лабораторные работы с CAI Framework (опционально)

# Установка CAI framework (опционально)
pip install cai-framework==0.5.5

# Настройка API ключей в .env файле
# OPENAI_API_KEY=your-api-key-here
# CAI_MODEL=openai/gpt-4o

# Запуск лабораторных работ
python -m labs.lab_ai_routing        # AI-ассистированная оптимизация маршрутизации
python -m labs.lab_ml_security       # Тестирование безопасности ML-систем
python -m labs.lab_ai_monitoring     # AI-мониторинг сетевой инфраструктуры

Подробнее см. Лабораторные работы с CAI и Руководство по интеграции CAI.

Тестирование

# Запуск всех тестов
make test

# Только unit тесты
make test-unit

# С coverage отчетом
pytest --cov=. --cov-report=html

Docker

# Сборка образа
make docker-build

# Запуск всех сервисов (API, Prometheus, Grafana, MLflow)
make docker-up

# Просмотр логов
make docker-logs

# Остановка
make docker-down

Подробнее см. DOCKER.md и QUICKSTART.md.


Модели

Prediction Models (Прогнозирование)

  • LatencyPredictor: Random Forest для прогнозирования задержки (R² > 0.92).
  • JitterPredictor: Random Forest для прогнозирования джиттера.
  • LoadPredictionEnsemble: Ансамбль (LSTM, Prophet, ARIMA, RF) для прогнозирования нагрузки.
  • ARIMAModel & ProphetModel: Статистические модели для временных рядов.

Routing Models (Маршрутизация)

  • RoutePredictionEnsemble: Комбинирует прогнозы задержки и джиттера (70/30).
  • QLearningRouter: Reinforcement Learning для адаптивной маршрутизации.
  • MultiArmedBanditRouter: UCB алгоритм для исследования/эксплуатации маршрутов.
  • NeuralNetworkRouteOptimizer: Глубокое обучение для сложных паттернов маршрутизации.

Anomaly Detection (Аномалии)

  • IsolationForestModel: Обнаружение аномалий в сетевом трафике.
  • AnomalyEnsemble: Взвешенный ансамбль (Isolation Forest, One-Class SVM, LSTM Autoencoder) для надежного детектирования.

Monitoring (Мониторинг)

  • DriftDetector: Обнаружение дрейфа данных (Data Drift) и концепций (Concept Drift).
  • ModelMonitor: Отслеживание метрик здоровья моделей в реальном времени.
  • RetrainingOrchestrator: Автоматическое переобучение при деградации качества.

Интеграция с quic-test

AI Routing Lab интегрируется с quic-test - основным инструментом тестирования QUIC протокола для обеспечения полного цикла разработки ML моделей. Полная документация по интеграции доступна в docs/QUIC_TEST_INTEGRATION_RU.md.

quic-test является основным источником данных для обучения и валидации ML моделей, предоставляя реальные метрики QUIC трафика в различных сетевых условиях.

Ключевые возможности интеграции:

  1. Сбор данных (Data Collection):

    • Экспорт метрик Prometheus из quic-test
    • JSON экспорт для исторических данных
    • Потоковая передача метрик в реальном времени
    • Сбор метрик в различных сетевых условиях (WiFi, LTE, 5G, satellite, adversarial)
  2. Валидация моделей (Model Validation):

    • Валидация ML прогнозов на реальном QUIC трафике из quic-test
    • Сравнение прогнозируемых vs фактических значений задержки/джиттера
    • Расчет метрик точности прогнозирования
    • Валидация на различных сетевых профилях
  3. Тестирование в производстве (Production Testing):

    • Тестирование выбора маршрутов в контролируемой среде с использованием quic-test
    • Фреймворк A/B тестирования
    • Бенчмарки производительности

Настройка интеграции

  1. Запуск quic-test с экспортом Prometheus:

    cd cloudbridge/quic-test
    ./bin/quic-server --prometheus-port 9090
  2. Сбор метрик:

    from data.collectors.quic_test_collector import PrometheusCollector
    
    collector = PrometheusCollector(prometheus_url="http://localhost:9090")
    metrics = collector.collect_all_metrics()

Лабораторные эксперименты

Проект включает комплексный фреймворк лабораторных экспериментов:

from experiments.lab_experiment import create_latency_prediction_experiment
from models.prediction import LatencyPredictor

# Создание эксперимента
lab = create_latency_prediction_experiment()

# Подготовка данных
X_train_proc, y_train_proc, _ = lab.prepare_data(X_train, y_train)

# Обучение модели
model = LatencyPredictor(n_estimators=100, max_depth=15)
model.fit(X_train_proc, y_train_proc)

# Оценка
metrics = model.evaluate(X_test_proc, y_test_proc)
print(f"Точность (R²): {metrics['r2_score']:.4f}")

Более подробную документацию см. в experiments/README.md.


Лабораторные работы

AI Routing Lab предлагает два уровня лабораторных работ для образовательных программ.

1. Продвинутые лабораторные работы с CAI Framework (реализованы)

Уникальная особенность проекта: интеграция с CAI Framework для создания AI-агентов, автоматизирующих сетевые задачи.

Доступные лабораторные работы:

  1. AI-ассистированная оптимизация маршрутизации (labs/lab_ai_routing.py)

    • Создание AI-агента для автоматического выбора маршрутов
    • Интеграция с ML моделями прогнозирования
  2. Тестирование безопасности ML-систем (labs/lab_ml_security.py)

    • Автоматическое тестирование API безопасности
    • Анализ уязвимостей моделей (adversarial attacks)
  3. AI-мониторинг сетевой инфраструктуры (labs/lab_ai_monitoring.py)

    • Автоматический анализ метрик Prometheus
    • Интеллектуальные алерты
  4. Автономный VPN администратор (labs/lab_autonomous_vpn.py)

    • Автономное управление Masque VPN сервером
    • Применение политик безопасности через AI
  5. Автономное QUIC тестирование (labs/lab_quic_testing.py)

    • Активное тестирование QUIC протокола
    • Автоматизированное стресс-тестирование
  6. Оркестрация сети (labs/lab_orchestrator.py)

    • Координация нескольких AI-агентов
    • Closed-loop управление системой

Подробная документация: docs/labs/CAI_INTEGRATION.md

2. Классические лабораторные работы (в разработке)

Традиционные учебные лабораторные работы для изучения основ ML в сетевых задачах (планируется Q1 2026):

  • ЛР #1: Сбор и анализ данных
  • ЛР #2: Feature Engineering
  • ЛР #3: Обучение моделей
  • ЛР #4: Инференция и оптимизация

Все материалы находятся в директории labs/.


Команды Makefile

Проект включает Makefile с удобными командами для разработки:

# Показать все доступные команды
make help

# Установка
make install          # Установить зависимости
make install-dev      # Установить dev зависимости + pre-commit

# Тестирование
make test             # Запустить все тесты с coverage
make test-unit        # Только unit тесты
make test-integration # Только integration тесты

# Качество кода
make lint             # Проверить код линтерами
make format           # Автоматически отформатировать код
make check            # Полная проверка (lint + test + security)

# Docker
make docker-build     # Собрать Docker образ
make docker-up        # Запустить все сервисы
make docker-down      # Остановить контейнеры
make docker-logs      # Просмотр логов
make docker-shell     # Подключиться к контейнеру

# Обучение моделей
make train-latency    # Обучить latency модель
make train-jitter     # Обучить jitter модель

# Утилиты
make clean            # Очистить временные файлы
make security         # Проверка безопасности

Подробнее см. QUICKSTART.md.


Документация

Быстрый старт

  • QUICKSTART.md - Быстрый старт после обновлений
  • DOCKER.md - Руководство по Docker deployment

Архитектура

Руководства

Разработка

Эксперименты

Лабораторные работы с CAI

Отчеты


Стек технологий

  • Язык: Python 3.11+
  • ML фреймворк: scikit-learn (Random Forest), TensorFlow/PyTorch (опционально)
  • Отслеживание экспериментов: MLflow
  • Обработка данных: pandas, numpy
  • Сбор метрик: prometheus-client
  • API: FastAPI / gRPC
  • AI Agents Framework: CAI Framework 0.5.5 (опционально, для лабораторных работ)

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

CloudBridge Relay

AI Routing Lab интегрируется с CloudBridge Relay для:

  • Использование прогнозов в реальном времени: Встроенные предсказания используются для выбора оптимального маршрута при маршрутизации пакетов
  • Оптимизация сетевых путей: Динамическая адаптация маршрутов на основе предсказанной задержки и стабильности
  • Мониторинг и обратная связь: Сравнение прогнозов с реальными результатами для постоянного улучшения моделей

CloudBridge Research

Этот проект является частью инициативы CloudBridge Research Center:

  • Научные исследования: Разработка новых подходов к оптимизации маршрутизации
  • Образовательные программы: Использование в курсах машинного обучения и сетевых технологий
  • Open Source публикации: Результаты исследований доступны как открытый исходный код

Рабочий процесс интеграции

Фаза 1: Сбор данных

# Запуск quic-test для сбора метрик
./bin/quic-test --mode=test --network-profile=mobile --duration=600 --report=metrics.json

# Сбор метрик из различных сетевых условий
for profile in excellent good poor mobile satellite adversarial; do
  ./bin/quic-test --mode=test --network-profile=$profile --duration=600 --report=metrics_${profile}.json
done

Фаза 2: Подготовка данных

from models.core.data_preprocessor import DataPreprocessor
from data.pipelines.data_pipeline import DataPipeline
import numpy as np
import json

# Загрузка данных
with open('metrics.json', 'r') as f:
    data = json.load(f)

# Извлечение features
X = np.array([item['features'] for item in data])

# Создание pipeline для предобработки
pipeline = DataPipeline()
pipeline.add_preprocessing_stage(strategy='mean', normalization='standard')
pipeline.add_feature_extraction_stage()

# Обработка данных
result = pipeline.process(X)
X_processed = result['data']

Фаза 3: Обучение моделей

# Обучение LatencyPredictor
python training/train_latency_model.py \
  --data-path data/preprocessed_metrics.json \
  --model-output models/ \
  --n-estimators 100

# Обучение JitterPredictor
python training/train_jitter_model.py \
  --data-path data/preprocessed_metrics.json \
  --model-output models/

# Модели автоматически сохраняются в ModelRegistry

Фаза 4: Валидация моделей

from evaluation.model_evaluator import ModelEvaluator
from models.core.model_registry import ModelRegistry
import numpy as np

# Загрузка модели из registry
registry = ModelRegistry(models_dir="models/")
model, metadata = registry.get_model("latency_predictor")

# Оценка модели
evaluator = ModelEvaluator()
result = evaluator.evaluate(model, X_test, y_test, use_cross_validation=True)

# Генерация отчета
report = evaluator.generate_report(result, model_name="LatencyPredictor")
print(report)

Фаза 5: Развертывание в производство

# Запуск inference сервиса (FastAPI)
python -m uvicorn inference.predictor_service:app --host 0.0.0.0 --port 5000

# Или через Docker
make docker-up

# API будет доступен на http://localhost:5000
# Endpoints:
#   GET  /health - проверка здоровья
#   GET  /models - список моделей
#   GET  /metrics - Prometheus метрики
#   POST /predict - предсказание для одного маршрута
#   POST /predict/routes - сравнение нескольких маршрутов

Примеры использования

Прогнозирование задержки для одного маршрута

from models.prediction import LatencyPredictor
from models.core.model_registry import ModelRegistry
import numpy as np

# Создание и обучение модели
model = LatencyPredictor(n_estimators=100, max_depth=15)

# Подготовка данных
X_train = np.array([
    [25.5, 2.3, 0.95, 1.0],
    [30.1, 3.1, 0.85, 1.2],
    # ... больше данных
])
y_train = np.array([26.0, 31.0, ...])  # Фактические значения задержки

# Обучение
model.fit(X_train, y_train)

# Подготовка признаков для предсказания
features = np.array([[25.5, 2.3, 0.95, 1.0]])

# Прогнозирование
prediction = model.predict(features)
print(f"Прогнозируемая задержка: {prediction.predicted_latency_ms:.2f} мс")
print(f"Доверительный интервал: {prediction.confidence_interval}")
print(f"Уверенность: {prediction.confidence_score:.2%}")

# Сохранение модели через ModelRegistry
registry = ModelRegistry(models_dir="models/")
registry.register_model(
    model_id="latency_predictor",
    model=model,
    model_type="prediction",
    accuracy=0.95,
    framework="scikit-learn"
)

Выбор оптимального маршрута из множества

from models.prediction import LatencyPredictor, JitterPredictor, RoutePredictionEnsemble
import numpy as np

# Создание и обучение моделей
latency_model = LatencyPredictor()
jitter_model = JitterPredictor()

# Обучение на данных
X_train = np.random.randn(100, 4)
y_latency = np.random.randn(100) * 10 + 25
y_jitter = np.random.randn(100) * 2 + 2

latency_model.fit(X_train, y_latency)
jitter_model.fit(X_train, y_jitter)

# Создание ансамбля
ensemble = RoutePredictionEnsemble(
    latency_model=latency_model,
    jitter_model=jitter_model
)

# Данные о нескольких маршрутах (объединенные features)
routes_features = {
    'route_0': np.array([[25.5, 2.3, 0.95, 1.0]]),
    'route_1': np.array([[30.1, 3.1, 0.85, 1.2]]),
    'route_2': np.array([[20.3, 1.8, 0.98, 0.8]]),
}

# Прогнозирование и выбор оптимального маршрута
best_route, predictions = ensemble.select_best_route(routes_features)
print(f"Оптимальный маршрут: {best_route}")

Использование через REST API

import requests

# Предсказание для одного маршрута
response = requests.post('http://localhost:5000/predict', json={
    'features': [25.5, 2.3, 0.95, 1.0],
    'route_id': 'route_0'
})
print(response.json())

# Сравнение нескольких маршрутов
response = requests.post('http://localhost:5000/predict/routes', json={
    'routes': {
        'route_0': [25.5, 2.3, 0.95, 1.0],
        'route_1': [30.1, 3.1, 0.85, 1.2],
        'route_2': [20.3, 1.8, 0.98, 0.8]
    }
})
result = response.json()
print(f"Лучший маршрут: {result['best_route']}")
print(f"Ранжирование: {result['ranking']}")

Целевые показатели

Note

Приведенные ниже результаты являются целевыми показателями, которые мы ожидаем получить при обучении моделей на реальных данных из quic-test. Сейчас модели валидированы на синтетических данных.

Целевая точность моделей

Точность моделей зависит от качества и количества обучающих данных. При обучении на реальных данных из quic-test (2+ недели) ожидаются следующие результаты:

Модель Целевой R² Score Ожидаемый MAE (мс) Ожидаемый RMSE (мс) Статус
LatencyPredictor >0.92 <3.0 <4.0 Валидация данных
JitterPredictor >0.92 <1.5 <2.0 Валидация данных
RoutePredictionEnsemble >0.95 - - Готов к тестам

Ожидаемое улучшение производительности

Ожидаемые улучшения при использовании ML выбора маршрутов (по сравнению с BGP):

  • Уменьшение средней задержки: На 15-20%
  • Уменьшение пиковых задержек: На 25-30% в условиях перегруженной сети
  • Повышение стабильности: На 40% (снижение джиттера)

Лицензия

Этот проект лицензирован под лицензией MIT - см. файл LICENSE для деталей.


Связанные проекты

  • quic-test - Инструмент тестирования QUIC протокола

Контакты


Благодарности

Модели и инфраструктура адаптированы из экосистемы 2GC CloudBridge Global Network.


Инфраструктура разработки

Тестирование

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

  • 196 unit тестов для основных компонентов
  • Integration тесты для интеграции с quic-test
  • E2E тесты для полного workflow
  • Coverage: 71.73% (цель: 70% достигнута)

CI/CD

Автоматизированный pipeline включает:

  • Автоматический запуск тестов на Python 3.11 и 3.12
  • Проверка качества кода (black, isort, flake8, mypy, ruff)
  • Security scanning (bandit, safety)
  • Coverage reporting

Инструменты разработки

  • Makefile - удобные команды для всех операций
  • Pre-commit hooks - автоматическая проверка перед коммитом
  • Docker - полная контейнеризация с Prometheus, Grafana, MLflow
  • Линтеры и форматтеры - поддержание качества кода

Подробнее см. QUICKSTART.md и Makefile.


Статус: В активной разработке Последнее обновление: Ноябрь 2025 Версия: 0.2.1

About

Predictive Route Selection using Machine Learning for Latency/Jitter Optimization

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors