Skip to content

Latest commit

 

History

History
300 lines (216 loc) · 24.9 KB

ML_System_Design_Doc.md

File metadata and controls

300 lines (216 loc) · 24.9 KB

ML System Design Doc - [RU]

Дизайн ML системы - <Продукт> <MVP or Production System> <Номер>

Шаблон ML System Design Doc от телеграм-канала Reliable ML

Термины и пояснения

  • Итерация - это все работы, которые совершаются до старта очередного пилота
  • БТ - бизнес-требования
  • EDA - Exploratory Data Analysis - исследовательский анализ данных

1. Цели и предпосылки

1.1. Обоснованность разработки продукта

Бизнес-цель:
  • Увеличение выручки от продажи электроэнергии солнечными и ветряными электростанциями на рынке на сутки вперед оптового рынка электроэнергии
Побочная бизнес цель:
  • Дополнительный продукт, показывающий потребность в DWH
Польза от внедрения ML модели
  • Благодаря использованию машинного обучения можно будет учитывать параметры, напрямую влияющие на выработку электроэнергии
Критерии успеха
  • Успехом будет являться рост выручки от продажи электроэнергии на рынке на сутки вперед

  • Результаты модели сопоставимы и\или превышают результаты работы профильного специалиста (трейдера)

  • Результаты, достигаемые трейдером с моделью превышают результаты трейдера без модели

  • План минимум (для рынка РФ) среднесуточное значение ошибки прогноза модели должно быть ниже ошибки трейдера $$dMAPE_{трейдер}≥dMAPE_{модель}$$

$$dMAPE=\frac{1}{N}\displaystyle\sum_{i=1}^{N}|{\frac{\hat{y_{i}}-y_{i}}{y_{i}}}|,$$

$N$ – общее количество торговых дней

$\hat{y}_{i}$ – фактически выработанная электроэнергия за день

$y_{i}$ – предсказанное значение выработки электроэнергии за день

  • План максимум (для зарубежного рынка) среднечасовое значение ошибки прогноза модели должно быть ниже ошибки трейдера $$MAPE_{трейдер}≥MAPE_{модель}$$

$$MAPE=\frac{1}{N}\displaystyle\sum_{i=1}^{N}|{\frac{\hat{y_{i}}-y_{i}}{y_{i}}}|,$$

$N$ – общее количество торговых дней

$\hat{y}_{i}$ – фактически выработанная электроэнергия за час

$y_{i}$ – предсказанное значение выработки электроэнергии за час

  • Суммарные объемы продажи электроэнергии на РСВ, полученные благодаря использованию прогнозов модели, за рассматриваемый период (валидационной выборки) должны быть больше объемов трейдера $$sum_{i=1}^{N}W_{модель}≥sum_{i=1}^{N}W_{трейдер}$$

$W$ – объем выработанной за день электроэнергии

1.2. Бизнес-требования и ограничения

Бизнес-процесс
  • В течение торговых суток (Х+1) участники рынка-владельцы электростанций подают заявки, в которых указывают какой объем электроэнергии планируют к поставке на рынок на сутки вперед.
  • В операционные сутки электростанция вырабатывает столько электроэнергии, сколько это технически возможно
  • Оплата поступает только за объемы электроэнергии, которые были указаны в заявке
  • Если указанный ранее объем не закрыт - разность необходимо докупить на БР по рыночной цене.
  • Если владалец электростанции превысил указанный ранее объем - излишки уходят на рынок за 1 рубль.
Бизнес-ограничения

Целевое видение

  • Параллельно разрабатывает 3 направлениям силами отдельных специалистов
    • Прогноз на основе значений выработки и метеоданных
    • Прогноз на основе выработки и времянной зависимости
    • Нереализуемо. Детекция облаков с помощью CV и вычисление площади затенения станции и интенсивность затенения
      • Нет данных нужного качества в открытом доступе (геоснимки в слишком большом масштабе, станцию не видно)
      • Закрытые данные невозможно получить ввиду политики безопасности компаний (записи с видеокамер)
  • Приоритетным является первое направление как наиболее эффективное.
  • Второе и третье могут дать некоторый прирост к точности всего продукта и сформировать тем самым ансамбль моделей

Общие ограничения

  • Прогноз выработки необходимо делать на сутки вперед.
  • Проверить прогноз можно будет только на следующие сутки.
  • Заявка должна быть сформирована и подана на рынок в течение торговых суток до 13:00 МСК
  • Модель должна оперировать более чем 1 источником метеоданных
  • Модель должна легко масштабироваться с одного объекта на несколько объектов
  • Должен формироваться отчет в формате, удобном для подачи заявки на рынок
  • Должна формироваться визуализация для удобного анализа результатов прогнозов
  • Должен быть сформирован пайплайн обработки метеоданных
  • Архивы метеоданных и метеопрогнозы платные
  • Зимой станцию заметает снегом, сильно снижает качество данных
  • Новые объекты не сразу выходят на установленную мощность
  • Оборудование на объекте может выходить из строя
  • Не всю информацию о работоспособности объекта можно получать в этот же день.
  • В некоторых локациях погода может меняться за день (прогноз уже отправили, а погода поменялась)
  • Объем датасета не менее 1 года, дискретизация не менее 1 часа
  • Валидационная выборка не менее 20% от всего датасета
  • Количество дней в валидационной выборке с объемами выработки электроэнергии не менее 80% максимально зарегестрированных - не менее половины (зимой объемы выработки небольшие, выручка маленькая, а вероятность ошибки прогноза намного выше)
  • Для time-series направления прогноз дополнительно необходимо делать на несколько часов вперед
  • Для CV направления прогноз необходимо делать только на несколько часов вперед

Ограничения для пилота

  • Достаточно прогноза для одного объекта (при достижении удовлетворительной точности)
  • Достаточно прогноза на 1 источнике метеоданных (при достижении удовлетворительной точности)
  • Достаточно прогноза для летних месяцев

Ожидания от пилота

  • Проверка гипотезы, что с помощью машинного обучения на прогнозах погоды можно получить прогнозы выработки лучше, чем их получают трейдеры
  • Полученная в рамках пилота модель будет работать параллельно, чтобы можно было сравнить результаты
  • Критерий успеха пилота: схожая или более высокая точность прогнозов выработки по сравнению с трейдером

1.3. Что входит в скоуп проекта/итерации, что не входит

  • Выявление лучших (реализуемых) технологий машинного обучения для каждого из трех направлений

  • Среднее значение dMAPE >= 85% на валидационной выработке на метеопрогнозе

  • Выявление временнЫх зависимостей и интеграция их в основное решение (с приростом точности)

  • Детекция облаков с прогнозом затенения площади станции и интеграция в основное решение (с приростом точности)

  • Что не будет закрыто Data Scientist

  • Описание результата с точки зрения качества кода и воспроизводимости решения Data Scientist

Технический долг

  • Описание планируемого технического долга (что оставляем для дальнейшей продуктивизации) Data Scientist

1.4. Предпосылки решения

  • Гипотеза, что можно спрогнозировать значения выработки электроэнергии на основе данных прогноза погоды, среди которых основными параметрами являются:
    • Значение солнечной радиации
      • Зависит от угла, под которым солнечные лучи падают на солнечную панель. Есть панели с трекерами, которые обеспечивают "прием" солнечных лучей под углом 90 градусов. На объектах в РФ, угол фиксированный. НЕ каждый метеосервис учитывет (и при этом правильно) данный аспект, поэтому полностью полагаться на значение радиации нельзя (иначе можно было бы всё расчитать по формуле)
      • Может поставлять источником данных в виде суммарного значение, а также в виде отдельных значений в разных плоскостях.
      • Меняется в зависимости времени дня (суточная периодичность)
      • Меняется в зависимости времени года (сезонность)
    • Температура солнечных панелей
      • зависит от температуры окружающего воздуха
      • интенсивности работы (чем больше генерации, например днем, тем сильнее нагреваются)
      • скорости ветра (влияет на теплоотдачу)
      • чем холодней - тем выше эффективность и наоборот
  • Для прогнозов на основе метеоданных разработана LightGBM модель на открытых данных с kaggle подтверждающая гипотезу
  • Есть гипотеза, что отдельная модель, работающая только с временнЫми зависимостями может поднять результаты основной модели, прогнозирующей на основе метеоданных
    • на периоде сутки вперёд
    • на периоде несколько часов вперёд (который будет уточнять прогноз на сутки вперед)
  • Гипотеза, что прогнозируя площадь затенения станции можно поднять точность основной модели и второстепенной модели
      1. Детекция облака, его площади
      1. Расчет скорости его движения, траектории и изменения размеров
      1. Определение "густоты" облака (кучые дождевые облака затенят станцию на 100%, а прозрачные пористые облака из верхних слоёв атмосферы снизят выработку незначительно)
      1. Прогнозирование затеняемой им площади станции с учётом интенсивности затенения (например в виде интегрального показателя показывающего среднее значение затеняемого объекта)
      1. Использование полученного значения в прогнозе на несколько часов вперед (который будет его уточнять)
      1. Нужно учесть, что в основном метеопрогнозе уже учитывается облачность

Описание всех общих предпосылок решения, используемых в системе – с обоснованием от запроса бизнеса: какие блоки данных используем, горизонт прогноза, гранулярность модели, и др. Data Scientist

2. Методология Data Scientist

2.1. Постановка задачи

  • Работа с табличными данными, обладающими времянной зависимостью
  • Прогнозирование на основе погодных данных
  • Прогнозирование временнЫх рядов
  • Детектирование облаков по снимкам спутников

2.2. Блок-схема решения

Как-нибудь потом

  • Блок-схема для бейзлайна и основного MVP с ключевыми этапами решения задачи: подготовка данных, построение прогнозных моделей, оптимизация, тестирование, закрытие технического долга, подготовка пилота, другое. Data Scientist
  • Пример возможной блок схемы

Схема обязательно включает в себя архитектуру бейзлайна. Если бейзлайн и основной MVP отличаются несущественно, то это может быть одна блок-схема. Если значительно, то рисуем две: отдельно для бейзлайна, отдельно для основного MVP.
Если блок-схема шаблонна - т.е. её можно скопировать и применить к разным продуктам, то она некорректна. Блок-схема должна показывать схему решения для конкретной задачи, поставленной в части 1.

2.3. Этапы решения задачи

Этап - 1 подготовка и анализ данных

Пример данных в репозитории. Табличные данные

  • fact.xls - матрица с target - Целевая переменная
  • weather.xls - матрица с признаки
  • тренировочный набор 10% от выборки
  • валидационный набор 20% от выборки
  • Необходимо
    • кросс-валидация на 5 блоках
    • поиск гиперпараметров (GridSearchCV)

Результат

  • обработанный датасет табличных данных, пригодный для обучения
  • скрипт обработки данных, являющийся прототипом для будущего пайплайна
  • результаты анализа данных, выявленные зависимости, закономерности

Этап - 2 анализ технологий машинного обучения и выбор метрики

  • выявление эффективной техологии машинного обучения
    • для прогнозирования на табличных данных: LightGBM, XGBoost, CatBoost, решения основанные на нейронных сетях
    • для прогнозирования временнЫх рядов (ETNA)
  • выбор наиболее эффективной метрики из стандартных (rmse, mse, mape ...)

Результат

  • выбранные библиотеки по прогнозированию
    • табличных данных
    • временнЫх рядов
  • выбранная метрика

Этап - 3 Первая Итерация

  • для табличных данных с метеопрогнозом
    • применением кросс-валидации на не менее чем 5 блоках
    • перебором гиперпараметров с помощью GridSearchCV (не менее 5)
    • При прогнозировании на основе метеоданных выяснить влияние shuffle=True на прогноз (возможно нет необходимости учитывать временную зависимость)
  • имплементировать ClearML для трекинга результатов обучения

Результат

  • обученная модель прогнозирования выработки электроэнергии на основе решающих деревьев
  • имплементирован ClearML для трекинга результатов обучения

Этап - 4 Фич инжиниринг, кастомизация метрик, тюнинг гиперпараметров

  • на основе анализа данных и результатов первой итерации сгенерировать новые фичи
  • создать кастомную метрику dMAPE
  • Интегрировать тюнинг гиперпараметров (optuna)
  • сравнить качество обучения на разных датасетах

Результат

  • добавлены новые фичи
  • обучение модели производится с помощью кастомной метрики dMAPE
  • используется тюнинг гиперпараметров optuna
  • проведено сравнениео бучения на разных датасетах. Выбран один сервис для платной подписки

Этап - 5 Вторая итерация обучения

  • создать и имплементировать обучение на кастомной метрике dwMAPE
  • обучить нейронную сеть для получения доп. признака
  • обучить модель с применение доп. признака от нейронной сети

Результат

  • обученная модель, использующая dwMAPE
  • сравнительный анализ обучения на новой метрике (можно путем версионирования в ClearML)
  • обученная модель на основе нейросетей
  • результат прогнозирования нейросети имплементировано в модель на основе решающих деревьев

3. Подготовка пилота

3.1. Способ оценки пилота

  • Оценка пилота будет проводится с помощью сравнения точности прогнозов
    • новой системы прогнозирования (модель) и старой (человек) в рамках одного объекта
    • расчета потенциальной выручки при использовании прогнозов модели и сравнении с реальной выручкой, полученной на объекте
  • период оценки - 3 месяца без обильных снежных осадков

3.2. Что считаем успешным пилотом

  • Увеличение средней точности прогноза по объекту за рассматриваемый период
  • рост потенциальной (расчетной, на основе результатов модели) выручки с объекта

3.3. Подготовка пилота

  • Удалённый сервер: Аппаратные требования:

    Процессор: 4 ядра, частота 2.0 ГГц или выше (например, Intel Core i5 или аналогичный) ОЗУ: 8 ГБ или больше Жесткий диск: SSD, минимум 256 ГБ Программное обеспечение:

    Операционная система: Ubuntu 20.04/22.04 или другой Linux Python версии 3.7 или выше с установленными библиотеками (NumPy, Pandas, scikit-learn, Streamlit и др.) Пропускная способность канала: от 10 Мбит/с

4. Внедрение

4.1. Архитектура решения

  • Контейнеризация модели в Docker. Модель будет доступна через REST API для получения прогнозов.

4.2. Описание инфраструктуры и масштабируемости

  • Инфраструктура будет развернута на удаленном/локальном сервере.

4.3. Требования к работе системы

  • Время отклика API - не более 100 мс
  • Доступность системы - 99%
  • Пиковая нагрузка - до 1000 запросов в секунду

4.4. Безопасность системы

4.5. Безопасность данных

4.6. Издержки

  • Прогноз погоды по 1 объекту: 100$/год
  • Аренда удаленного сервера 50$/мес (локальный 0$)

4.5. Integration points

  • отсутствует

4.6. Риски

  • Невозможность передачи данных для обучения по внутренним причинам (политика безопасности)