Основная цель 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).