У вас есть данные, и у вас есть модель. Вы хотите установить эту модель на свой локальный компьютер и обслуживать модель в производстве? Подумайте еще раз.

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

Тогда неудивительно, когда вы слышите статистику, что только 10% всех моделей ML находятся в производстве. Они скучают по архитектуре (среди прочего). Но что еще важно?

  • Время разработки. Хотя создание хорошего начального алгоритма (с правильными данными) может быть быстрым, время на непрерывную итерацию этой модели без некоторых из перечисленных выше элементов (автоматизация, обслуживающая инфраструктура, управление процессами ) может привести к тому, что проекты будут медленно продвигаться вперед или не будут выходить за рамки проверки концепции. Ниже я приведу пример.
  • Командная работа. Ни один человек не может справиться со всеми вышеперечисленными элементами, а навыки, необходимые для создания моделей машинного обучения, конвейеров разработки функций и автоматизации, совершенно разные, требующие совместной работы нескольких человек для операционализации модели. В результате различных наборов навыков в рамках этих дисциплин (и часто организационной структуры) специалисты по данным, инженеры данных и инженеры DevOps часто работают изолированно, и между командами слишком много ручной передачи.
  • (Самое главное) непредвиденная сложность: мы видим, что многие элементы существуют вне кода самой модели. Проекты машинного обучения часто терпят неудачу из-за того, что заранее не тратят время на понимание среды, в которой должна работать модель.

Так что же такое MLOps?

Чтобы решить поставленную задачу, необходимо применить принципы автоматизации и DevOps к ML (MLOps). Это означает объединение передового опыта в области DevOps, машинного обучения и обработки данных с целью уменьшить риски, ускорить и вдохновить проекты машинного обучения.

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

БЛА БЛА БЛАэто здорово, но приведите пример!

Давайте поговорим о пункте выше, автоматизируя рабочий процесс машинного обучения.

Автоматизация рабочих процессов машинного обучения помогает создавать повторяемые и воспроизводимые модели машинного обучения. Это ключевой шаг в запуске проектов машинного обучения, поскольку мы хотим убедиться, что наши модели актуальны и работают с новыми данными. Amazon Glue, Amazon SageMaker и AWS Step Functions могут помочь автоматизировать рабочие процессы машинного обучения от обработки данных до развертывания моделей в управляемой среде.

В этом посте я буду использовать упомянутые выше сервисы AWS для разработки и автоматизации рабочего процесса машинного обучения с помощью PySpark на AWS Glue для подготовки и обработки данных и Amazon SageMaker для обучения моделей и прогнозирования пакетов. Цель этого — показать, как инженеры и специалисты по данным могут быстро и легко создавать автоматизированные рабочие процессы машинного обучения.

Сервисы АВС:

AWS Glue – это полностью управляемый сервис извлечения, преобразования и загрузки (ETL), который упрощает для клиентов подготовку и загрузку данных для аналитики.

Amazon SageMaker – это полностью управляемый сервис, который позволяет специалистам по данным создавать, обучать, настраивать и развертывать модели машинного обучения в любом масштабе. Этот сервис предоставляет мощную и масштабируемую вычислительную среду, которая также проста в использовании.

Amazon Step Functions позволяет координировать несколько сервисов AWS в бессерверные рабочие процессы, чтобы вы могли быстро создавать и обновлять приложения.

SDK AWS Step Functions Data Science — это библиотека с открытым исходным кодом, которая позволяет специалистам по данным легко создавать рабочие процессы, обрабатывающие и публикующие модели машинного обучения, с помощью Amazon SageMaker и Amazon Step Functions.

Организация рабочих процессов машинного обучения имеет решающее значение для внедрения машинного обучения в производство. Мы собираемся воспроизвести это с помощью AWS Step Functions и Amazon SageMaker, используя SDK AWS Data Science Step Functions. Вы можете найти полные примеры в репозитории Amazon SageMaker Samples GitHub для более подробной информации.

Подход:

В этом посте мы выполним следующие шаги, чтобы создать рабочий процесс машинного обучения:

Напишите сценарий Spark для запуска на AWS Glue.

Давайте посмотрим, что нам нужно выполнить распределенный стиль предварительной обработки на AWS, одним из решений MapReduce является Spark. Этот пример затрагивает основы Glue, для более сложных преобразований данных любезно прочитайте Amazon Glue и PySpark. В приведенном ниже фрагменте кода показано простое преобразование данных в AWS Glue. Для этого давайте определим файл glue-etl-processing.py:

После создания сценария PySpark его необходимо загрузить в папку S3, доступную для Amazon Glue:

$ aws s3 cp glue-etl-processing.py s3://my-code-bucket/glue/glue-etl-processing.py

После успешного выполнения вышеуказанного мы будем использовать AWS Python SDK, Boto3, для создания задания Glue с именем boto3-create-glue-job.py.

Инициализировать рабочий процесс

В этом посте мы будем использовать встроенный в Amazon SageMaker алгоритм XGBoost для обучения и размещения регрессионной модели. Набор данных взят из Пример семинара Amazon SageMaker по прогнозированию продаж видеоигр. Однако мы не будем вдаваться в подробности, поскольку они доступны на Веб-сайте Amazon SageMaker Workshop.

Для подготовки рабочего процесса я буду использовать SDK AWS Step Functions Data Science SDK, который упрощает и ускоряет создание конечных автоматов пошаговых функций на AWS. В следующих шагах я покажу, как создать шаг Glue для обработки данных, этапы обучения и развертывания модели Amazon SageMaker, а также этап пакетного преобразования Amazon SageMaker. Наконец, мы объединим эти шаги в цепочку, чтобы создать рабочий процесс, который затем будет выполняться с помощью AWS Step Functions.

Этап работы с клеем

Amazon SageMaker Estimator и шаг обучения

Наконец, давайте объединим шаги вместе, чтобы создать рабочий процесс.

Конечный результат:

Что мы сделали?

В этом руководстве мы продемонстрировали, как организовать конвейер машинного обучения для пакетного вывода с помощью AWS Step Functions SDK, начиная с обработки данных с помощью Amazon Glue для PySpark и заканчивая созданием модели и пакетным выводом в Amazon SageMaker.

Заключительные слова

В этом примере я продемонстрировал, как можно создать рабочий процесс машинного обучения с помощью Amazon Step Functions. Вы можете автоматизировать переобучение модели с помощью запланированных событий Amazon CloudWatch. Поскольку вы можете ежедневно делать пакетные прогнозы, вы можете подготовить свои данные с помощью AWS Glue, запустить пакетные прогнозы и связать весь шаг вместе с SDK Step Functions. Вы также можете добавить SNSStep, чтобы получать уведомления по электронной почте, slack или SMS о статусе ваших рабочих процессов ML.