В машинном обучении (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 |
- переборные,
- байесовские,
- на основе правил,
- эволюционные,
- гибридные,
- метаподходы.
Выбор подходов и инструментов зависит от компромисса между сложностью решения, которое нужно найти и доступными вычислительными ресурсами: чем больше мощностей, как, например, при работе в облаке, тем более продвинутые решения можно использовать. Одно из таких решений — фреймворк 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 предоставляет несколько базовых инструментов, доступных как сервис в облаке.
-
JupyterHub. Инструмент считается приоритетной средой разработки для Data-специалистов. Представляет собой предварительно настроенное, готовое из коробки окружение с установленными библиотеками, поддерживает множество пользователей — обеспечивает работу в команде. При этом JupyterHub легко кастомизируется.
-
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, получая нужные вычислительные мощности и дополнительные компоненты. Посмотреть примеры решенных таким образом задач можно в репозитории и в записи нашего вебинара.
Выводы
- Часто базовой автоматизации машинного обучения недостаточно: возникает необходимость дополнительной автоматизации с помощью AutoML-инструментов.
- В идеальных условиях AutoML позволяет полностью автоматизировать применение машинного обучения к реальным задачам. Но на практике абсолютно универсальных AutoML-решений нет, существующие инструменты способны решать только часть задач.
- Есть несколько основных видов решений для автоматического машинного обучения. Один из лучших инструментов для автоматического поиска пайплайнов — FEDOT.
- FEDOT — Open-Source-фреймворк для решения широкого круга задач автоматического машинного обучения. Он использует эволюционные подходы к построению пайплайнов. Это делает FEDOT эффективным даже при решении сложных и нетипичных задач классификации, регрессии, прогнозирования временных рядов, мультимодального моделирования.
-
Cloud ML Platform от VK Cloud — платформа для полного цикла ML-разработки и совместной работы Data-команд. Cloud ML Platform позволяет решать различные Data-Science-задачи и предоставляет в виде предварительно настроенных и интегрированных облачных сервисов JupyterHub и MLflow.
- FEDOT можно использовать в связке с инструментами Cloud ML Platform, получая нужные вычислительные мощности и дополнительные компоненты. Посмотреть примеры решенных таким образом задач можно в репозитории.