← Все проекты
В продакшене Recs Innovation · 2024

Прогноз солнечной генерации и обнаружение аномалий в продакшене

Я пришёл в Recs Innovation стажёром, а через четыре месяца уже руководил ИИ-командой. Команда вывела в продакшен две модели: одна прогнозирует, сколько энергии выработает солнечная электростанция, а другая отмечает необычные показания в данных станции. Результаты обеих поступали в коммерческую виртуальную электростанцию (VPP) — платформу, которая управляет многими станциями как одной.

Моя роль
Data Science Intern → AI Engineer → AI Team Lead (март–ноябрь 2024). Руководил ML-, бэкенд- и фронтенд-командами.
Результат
Ошибка прогноза снизилась с 9% до 7%. Precision детектора вырос на 35 процентных пунктов, recall — на 37. Деплой стал занимать 15 минут вместо 3 часов.
Стек
PyTorch, графовая нейросеть (GNNAD), FastAPI, Docker Compose, GitHub Actions, PostgreSQL, Prometheus, Grafana, MLflow
Эффект для бизнеса
Прогноз позволил компании зарабатывать на посредничестве в торговле электроэнергией на бирже Korea Power Exchange (KPX). Ручной операционной работы стало на 80% меньше — это около $48 тыс. в год.

Задача

Компания выходила на рынок посредничества в торговле электроэнергией, то есть собиралась продавать выработку небольших солнечных электростанций на бирже Korea Power Exchange (KPX). Чтобы участвовать в торгах, компания должна достаточно точно прогнозировать выработку станций.

Кроме того, компании нужно было рано замечать неполадки на станции по показаниям, которые она присылает.

Поэтому две модели должны были работать в продакшене, а не только в экспериментах:

  • прогноз выработки каждой станции, достаточно точный для KPX, и
  • детектор, который отмечает необычные показания в данных станции.

Обе должны были надёжно работать и подключаться к коммерческой платформе VPP.

Обзор системы

  1. Данные электростанций Временные ряды показаний с солнечных электростанций — по многу измерений на каждую станцию.
  2. Обучение Модели на PyTorch, эксперименты отслеживаются в MLflow. Детектор аномалий переобучается каждую ночь.
  3. Модели Прогноз выработки каждой станции и графовый (GNN) детектор аномалий.
  4. API для инференса Сервисы на FastAPI отдают прогнозы и результаты обнаружения аномалий.
  5. Платформа VPP Сервисы подключаются к коммерческой платформе виртуальной электростанции.
  • CI/CDGitHub Actions деплоит сервисы в контейнерах
  • ИнфраструктураСервисы в Docker Compose с PostgreSQL
  • МониторингМетрики Prometheus и дашборды Grafana
Так система устроена в продакшене.

Скриншоты продакшен-системы. Название и местоположение электростанции, а также данные о продажах скрыты.

Прогнозирование

  • На позиции AI Engineer я создал на PyTorch первую модель прогноза. Её средняя ошибка была меньше 10%, и это дало компании допуск к работе на KPX.
  • Уже как тимлид я снизил ошибку с 9% до 7%, проанализировав данные и донастроив модель. Это открыло компании доход от посредничества в торговле электроэнергией.
Ошибка прогноза: чем ниже, тем лучше
До 9%
После 7%

Обнаружение аномалий на солнечных электростанциях

Детектор построен на графовой нейросети (GNNAD). Она учится тому, как показания станции обычно меняются вместе, и отмечает показания, которые выбиваются из этой картины.

Ещё стажёром я настроил его первую версию, отслеживал эксперименты в MLflow и сделал эндпоинты на FastAPI, которые подключают детектор к платформе VPP. Уже как тимлид я шаг за шагом повышал его точность и измерял каждый шаг:

  • Наглядность ошибок. Я основательно переработал open-source-код и добавил графики, которые сравнивают предсказание с фактическим показанием по каждому признаку, чтобы мы видели, где модель ошибается.
  • Более точный расчёт ошибки поднял precision на 5 пунктов, а recall — на 7.
  • Почасовые пороги. Один порог на весь день пропускал аномалии в некоторые часы, потому что ошибка меняется в течение дня. Переход на 24 порога, по одному на каждый час, поднял recall на 10 пунктов.
  • Более чистые обучающие данные. Удаление аномальных точек из обучающей выборки подняло precision на 30 пунктов, а recall — на 20.
  • Честная валидация. Кросс-валидация работает так же, как продакшен: окна инференса по 16 точек, почасовые пороги и ночное переобучение. Поэтому хороший результат на тесте означает хороший результат в продакшене.

В итоге precision вырос примерно на 35 процентных пунктов, а recall — примерно на 37. Проще говоря, детектор стал давать гораздо меньше ложных тревог и пропускать гораздо меньше реальных проблем.

Откуда взялся рост, в процентных пунктах
Precision +5 +30 +35 п. п.
Recall +7 +10 +20 +37 п. п.
  • Более точный расчёт ошибки
  • Почасовые пороги
  • Более чистые обучающие данные

MLOps и деплой

  • На позиции AI Engineer я упаковал детектор в контейнеры и автоматизировал его деплой с помощью GitHub Actions. Деплой стал занимать 15 минут вместо 3 часов.
  • Уже как тимлид я достроил остальную MLOps-инфраструктуру: сервисы в Docker Compose с PostgreSQL, деплой из GitHub Actions и метрики Prometheus на дашбордах Grafana. Ручной операционной работы стало на 80% меньше, что сэкономило около $48 тыс. в год.
До и после внедрения MLOps

Время деплоя

До 3 ч
После 15 мин

Ручная операционная работа

До
После −80%

Руководство командой

На позиции AI Team Lead я руководил ML-, бэкенд- и фронтенд-командами. Моя задача была в том, чтобы модели не остались экспериментами: они должны были работать каждый день и без проблем подключаться к платформе VPP.

Результаты

  • 9% → 7%ошибка прогноза; это открыло доход от посредничества на KPX
  • +35 / +37 п. п.precision / recall детектора аномалий
  • 3 ч → 15 минвремя деплоя
  • −80%ручной операционной работы, около $48 тыс. в год

На этой странице нет кода работодателя, внутренних данных и закрытых URL.