В машинном обучении (Machine Learning, ML), чтобы обеспечить требуемые показатели метрик качества ML-моделей зачастую надо строить многокомпонентные пайплайны и комбинировать десятки алгоритмов моделирования. Нередко это сложно и долго. В таких ситуациях на помощь приходит AutoML — автоматическое машинное обучение.

Я Александр Волынский, технический менеджер продукта, отвечаю за развитие Cloud ML Platform в VK Cloud. Статья подготовлена на основе совместного вебинара с Николаем Никитиным, руководителем направления AutoML, NSS Lab, ИТМО. Мы говорили про назначение AutoML-инструментов, их разновидности, фреймворк FEDOT и возможности Cloud ML Platform для работы с AutoML-решениями. 

Введение в AutoML


Machine Learning — сложный, многоэтапный процесс, который поддается автоматизации: данные загружают в модель, обученная реализация обрабатывает данные и выдает предсказание, которое можно использовать для аналитики.

Но часто базовой автоматизации машинного обучения не хватает — в таких случаях требуется дополнительная с помощью AutoML-инструментов. Рассмотрим, зачем это нужно, на примере построения классического пайплайна обучения ML-модели и ее применения для получения предсказаний.


Классический пайплайн обучения ML-модели 

В классической схеме есть:

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

Их совместное использование позволяет получить результат.

Но для разных данных нужны разные моделирующие функции, наборы гиперпараметров и признаков: чтобы качественно обучить модель, все составляющие пайплайна должны быть подобраны под конкретную задачу. 

Особенно актуально это при ансамблировании с объединением нескольких вариантов моделей в один пайплайн. Классический переборный подход к построению пайплайнов для этого плохо подходит. Он требует значительных затрат времени эксперта и при этом может выдавать невысокое качество моделирования. Именно поэтому нужно автоматическое машинное обучение, то есть AutoML.

В широком смысле AutoML — инструмент, который позволяет полностью автоматизировать применение методов ML к реальным задачам: подбирать оптимальную структуру всего пайплайна моделирования с выбором всех действий и параметров для максимально эффективного решения задач. Но на практике AutoML обычно используют для более частных задач — например, совместной автоматизации подготовки данных, извлечения и отбора признаков, выбора модели или оптимизации гиперпараметров. 

Во многом возможности инструментов автоматического машинного обучения зависят от доступных алгоритмических решений и вычислительных ресурсов — мощностей нужно в разы больше, чем для простого ML. Поэтому для работы с AutoML больше подходят облачные платформы: они позволяют получить любой объем ресурсов, что важно для создания оптимальной модели машинного обучения.   

Структуры пайплайнов моделирования 


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


Линейная архитектура пайплайна

Архитектура простая и логичная, но не всегда достаточно эффективная. 
Сейчас чаще используют ансамблевую архитектуру пайплайна, в которой блоки расположены нелинейно: для соединения моделей и операций обработки данных могут применять различные варианты и приемы. 


Ансамблевая архитектура пайплайна

Строить подобные разветвленные пайплайны без AutoML-инструментов зачастую слишком сложно. 

Разновидности инструментов AutoML


Один из открытых вопросов — выбор AutoML-инструментов. Сейчас есть несколько основных видов решений для автоматизации машинного обучения:
Задачи
Пример инструментов
Отбор признаков
Tsfresh, Meyda, pliers, ITMO_fs
Синтез новых задач
Featuretools, AutoFeat
Оптимизация гиперпараметров
Optuna, Tune, hyperopt
Explainable AI
Shap, Interpret, Lucid
Neural Architecture Search
NNI, Determined, AutoPyTorch
Автоматический поиск пайплайна
TPOT, H2O, AutoGluon, FEDOT, Lama
Основа любого AutoML — решение задач оптимизации. Для этого существует несколько базовых методов:

  • переборные,
  • байесовские,
  • на основе правил,
  • эволюционные,
  • гибридные,
  • метаподходы.

Выбор подходов и инструментов зависит от компромисса между сложностью решения, которое нужно найти и доступными вычислительными ресурсами: чем больше мощностей, как, например, при работе в облаке, тем более продвинутые решения можно использовать. Одно из таких решений — фреймворк FEDOT.

Фреймворк FEDOT


FEDOT — Open-Source-фреймворк для решения широкого круга задач автоматического машинного обучения. От большинства аналогичных решений его отличает:

  • возможность создания ML-пайплайнов произвольной структуры;
  • поддержка разных типов данных: таблиц, текста, изображений, временных рядов;
  • возможность объединения нескольких задач в рамках одного пайплайна;
  • модульность, расширяемость, интегрируемость с ML-инструментами;
  • структурная оптимизация с помощью многокритериального генетического алгоритма;
  • сочетание легковесного API для конечного пользователя и расширенного конфигурирования для исследовательских задач;
  • возможность участия пользователя в создании пайплайна.

Архитектура фреймворка FEDOT


FEDOT построен на базе оптимизатора, который получает на вход три основные сущности:

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


Принцип работы оптимизатора фреймворка FEDOT

На основе полученных данных оптимизатор с помощью эволюционного алгоритма исследует пространство поиска и выдает одно или несколько решений.

Используемые фреймворком FEDOT эволюционные подходы к построению пайплайнов основаны на идеях биологической эволюции: в каждом поколении «выживает» самый сильный и приспособленный вариант модели. 

В контексте машинного обучения это проявляется тем, что:

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


Пример генетического подхода к дизайну моделей

Благодаря подходу с графовым представлением структура оптимизируемых пайплайнов может быть разной. Например:

  • взвешенный  ансамбль;
  • многоуровневый «стекинговый» ансамбль;
  • пайплайн, внутри которого заложена идея бустинга на уровне отношений в графе — каждая модель корректирует результат другой;
  • мультимодальный пайплайн для нескольких типов входных данных.


Пример графовых пайплайнов

Пример потенциальных задач


Есть ряд задач, которые FEDOT решает лучше большинства других AutoML-инструментов. Одна из таких — прогнозирование временных рядов. Для ее выполнения и получения прогноза фреймворк:

  • выполняет оконное преобразование временного ряда в траекторную матрицу с окном заданной ширины;
  • обучает несколько регрессионных моделей;
  • объединяет их в ансамбль;
  • добавляет при необходимости нейросетевые рекуррентные и статистические модели;
  • объединяет в единый пайплайн;
  • решает задачу оптимизации структуры такого пайплайна;
  • строит прогноз.


Пример схемы моделирования временных рядов

Благодаря гибкой архитектуре фреймворк FEDOT отлично подходит для прогнозирования одномерных и многомерных временных рядов. По результатам тестирования независимыми экспертами, после трехминутной генерации моделей для временных рядов FEDOT показал наименьшую ошибку прогнозирования по сравнению с другими AutoML-решениями — всего 4,58 %.

FEDOT также может решать задачи моделирования на мультимодальных данных. Например, при работе с тремя источниками и типами данных (изображения, табличные данные и текст) фреймворк:

  • создает три независимые ветки на основе tfidf, сверточной нейронной сети и модели случайного леса;
  • объединяет их предсказания моделью регрессии;
  • оптимизирует пайплайн, используя описанный вариант как начальное приближение для эволюции.


Мультимодальный пайплайн, созданный с помощью FEDOT для набора данных MM-IMDB

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

FEDOT успешно применяется для решения реальных задач в области нефтехимии, геологии, медицины, гидрометеорологии. В разных областях, где возникают задачи моделирования на данных, FEDOT позволяет автоматизировать существенную часть рутинных операций без снижения качества обучения моделей.

Cloud ML Platform позволяет удобно работать с AutoML


Для эффективной работы AutoML-решений в сложных задачах нужны большие вычислительные ресурсы, которые можно легко масштабировать. При использовании физической инфраструктуры это становится проблемой: строить, поддерживать и масштабировать ее сложно и дорого. Поэтому с AutoML-инструментами чаще работают в облаках и на облачных ML-платформах.

Cloud ML Platform от VK Cloud — платформа для полного цикла ML-разработки и совместной работы Data-команд. Она позволяет:

  • получать любой объем вычислительных ресурсов с масштабированием по запросу;
  • просто устанавливать, настраивать и интегрировать компоненты;
  • использовать предварительно настроенные, готовые к работе и интегрированные между собой ML-инструменты;
  • оптимизировать расходы благодаря оплате по модели Pay-as-you-go — только за использованные ресурсы.

Cloud ML Platform позволяет решать различные Data-Science-задачи:

  • экспериментировать с данными и моделями машинного обучения;
  • отслеживать и версионировать эксперименты, ML-модели, данных и другие артефакты.

С ее помощью можно выполнять деплой ML-модели, мониторинг и обновления моделей в Production.

Для решения всего спектра задач Cloud ML Platform предоставляет несколько базовых инструментов, доступных как сервис в облаке.

  1. JupyterHub. Инструмент считается приоритетной средой разработки для Data-специалистов. Представляет собой предварительно настроенное, готовое из коробки окружение с установленными библиотеками, поддерживает множество пользователей — обеспечивает работу в команде. При этом JupyterHub легко кастомизируется. 
  2. MLflow. Один из самых известных комплексных инструментов для решения MLOps-задач. С его помощью можно решать задачи деплоя моделей, а также организовывать централизованный трекинг и хранение моделей, параметров экспериментов и прочих артефактов, возникающих в процессе работы Data-специалистов.

Cloud ML Platform предоставляет из коробки интеграцию MLflow и JupyterHub — при запуске MLflow автоматически интегрируется с JupyterHub, а все параметры и настройки инструментов синхронизируются. Это расширяет возможности контроля за процессами машинного обучения.
  
Инструменты, доступные в облаке VK Cloud, закрывают полный цикл машинного обучения:

  • Data Engineering — Hadoop, Greenplum, Airflow (доступны в облаке по модели PaaS);
  • ML Model Engineering — Cloud ML Platform;
  • Мodel Deployment — Cloud ML Platform.

Создание инстансов инструментов в Cloud ML Platform


Создаем инстанс JupyterHub.

1. Заходим в личный кабинет VK Cloud.



2. В меню слева выбираем ML Platform.



3. Находим JupyterHub, нажимаем «Создать инстанс».



4. Выбираем тип инстанса — «Инстанс JupyterHub», нажимаем «Следующий шаг».



5. Определяем нужную конфигурацию: указываем имя инстанса, тип и параметры виртуальной машины для развертывания JupyterHub, зону доступности, размер и тип диска, имя пользователя и пароль. Доменное имя генерируется автоматически. Нажимаем «Следующий шаг».





6. Выбираем сеть — можно выбрать существующую или создать новую — и указываем SSH-ключ. Нажимаем «Создать инстанс».



На этом настройка завершена — JupyterHub доступен к работе.

Создаем инстанс MLflow.

1. В меню ML Platform находим MLflow, нажимаем «Создать инстанс».



2. Выбираем тип инстанса — «Инстанс MLflow», нажимаем «Следующий шаг».

3. По аналогии с настройкой конфигурации JupyterHub: указываем имя инстанса, тип и параметры виртуальной машины для развертывания MLflow, зону доступности, размер и тип диска, доменное имя. Дополнительно указываем инстанс Jupyterhub для совместной работы: выбираем заранее выбранный инстанс Jupyterhub для интеграции инструментов. Нажимаем «Следующий шаг».



4. Выбираем сеть — можно выбрать существующую или создать новую — и указываем SSH-ключ. Нажимаем «Создать инстанс».



Инструменты Cloud ML Platform можно использовать в связке с FEDOT, получая нужные вычислительные мощности и дополнительные компоненты. Посмотреть примеры решенных таким образом задач можно в репозитории и в записи нашего вебинара

Выводы


  1. Часто базовой автоматизации машинного обучения недостаточно: возникает необходимость дополнительной автоматизации с помощью AutoML-инструментов.
  2. В идеальных условиях AutoML позволяет полностью автоматизировать применение машинного обучения к реальным задачам. Но на практике абсолютно универсальных AutoML-решений нет, существующие инструменты способны решать только часть задач. 
  3. Есть несколько основных видов решений для автоматического машинного обучения. Один из лучших инструментов для автоматического поиска пайплайнов — FEDOT. 
  4. FEDOT — Open-Source-фреймворк для решения широкого круга задач автоматического машинного обучения. Он использует эволюционные подходы к построению пайплайнов. Это делает FEDOT эффективным даже при решении сложных и нетипичных задач классификации, регрессии, прогнозирования временных рядов, мультимодального моделирования. 
  5. Cloud ML Platform от VK Cloud — платформа для полного цикла ML-разработки и совместной работы Data-команд. Cloud ML Platform позволяет решать различные Data-Science-задачи и предоставляет в виде предварительно настроенных и интегрированных облачных сервисов JupyterHub и MLflow.
  6. FEDOT можно использовать в связке с инструментами Cloud ML Platform, получая нужные вычислительные мощности и дополнительные компоненты. Посмотреть примеры решенных таким образом задач можно в репозитории

Комментарии (0)