Основная цель Myelin — создать инструмент, упрощающий развертывание моделей машинного обучения (ML) в Kubernetes. С тех пор как я начал работать специалистом по данным, самой большой проблемой, с которой я столкнулся, было то, как преодолеть разрыв между наукой о данных и инженерией, чтобы алгоритмы можно было создавать и развертывать для пользователей без особых усилий.
В Kubernetes приложения могут быть контейнеризированы, так что любой код, написанный специалистами по данным, можно взять как есть и выполнить на платформе.
Kubernetes — это декларативная система, которая хорошо подходит для развертывания ML, поскольку позволяет пользователям думать о состоянии, которого они хотели бы достичь, а не о шагах для его достижения. Например, алгоритм, развернутый за API и вычисляющий/обрабатывающий прогнозы для каждого запроса (с разумной точностью и в пределах определенного времени отклика), — это состояние, к которому может стремиться развертывание ML.
Kubernetes также позволил нам в Myelin интегрироваться со многими различными инструментами и технологиями, чтобы мы могли предоставить гибкий и легко расширяемый инструмент.
Основные компоненты
Основными строительными блоками Myelin являются sensors
и tasks
, определенные в файле yaml, который называется axon
. Задачи — это выполняемые шаги, тогда как датчики — это триггеры, управляемые событиями, которые могут запускать некоторые задачи.
Вот простой пример. Пользователь может определить следующие блоки:
Задания:
- Задача предварительной обработки: загрузить некоторые обучающие данные
- Учебное задание: обучение и оценка модели машинного обучения.
- Развертывание задачи: оберните модель в REST API
Датчики:
- Датчик триггера: запуск некоторых задач в первый раз
- Датчик после обучения: проверьте точность обученной модели и выполните шаги развертывания.
- Датчик после развертывания: отслеживайте точность развернутой модели и переобучайте ее, если она падает ниже определенного порога.
После того, как эти строительные блоки разработаны, их можно соединить следующим образом:
- Триггерный датчик выполняет предварительную обработку и обучающую задачу.
- Датчик после обучения прослушивает событие завершения поезда (и то, является ли модель точной) и выполняет задачу развертывания.
- Датчик после развертывания прослушивает событие, которое запускается, когда точность развертывания ниже определенного порога, и выполняет этапы обучения и предварительной обработки, замыкая в этом случае цикл.
В дополнение к модели исполнения есть и другие функции, некоторые из которых стоит выделить:
- Настройка гиперпараметров: Myelin имеет встроенную настройку гиперпараметров, которую можно выполнить как часть этапа обучения, используя Hyperband (https://arxiv.org/abs/1603.06560) под капотом.
- Стратегии маршрутизации развертывания: пользователи могут определять сложные стратегии маршрутизации на нескольких уровнях для каждого развертывания, используя компоненты Istio.
- DAG выполнения развертывания: несколько моделей могут быть развернуты рядом друг с другом в гибкой DAG.
Если вы хотите попробовать Myelin, инструкции по установке опубликованы на нашем веб-сайте для AWS, Azure и GCP (https://myelin.io/#blog).