От Андреса Альтены, консультанта по науке о данных

вступление

Этот блог — первый из серии, в которой мы будем направлять вас через машинное обучение в облаке с помощью SageMaker. В этом блоге мы познакомим вас с тем, как SageMaker работает за кулисами. Для этого мы рекомендуем ознакомиться с идеей контейнеров, поскольку SageMaker широко использует контейнеры Docker.

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

Что такое Sage Maker?

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

Источник: DeepLearning.ai — Жизненный цикл машинного обучения.

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

Контейнеры в SageMaker

Что такое контейнеры, образы и реестры?

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

Контейнер Docker — это единица программного обеспечения, содержащая код и все его зависимости, так что он будет работать независимо от среды пользователя, что устраняет проблему «это работало на моем компьютере».

Образ Docker действует как набор инструкций по созданию контейнера — думайте о нем как о шаблоне для ваших контейнеров.

И, наконец, реестр контейнеров для контейнеров — то же, что GitHub для кодирования. Реестры контейнеров (например, Amazon’s Elastic Container Registry ECR) хранят образы контейнеров, которые можно сделать общедоступными, совместно использовать для совместной работы или сохранить в частном порядке.

Хорошо, но почему это относится к SageMaker?

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

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

Что происходит, когда вы обучаете или развертываете модель?

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

Источник: https://sagemaker-workshop.com/custom/containers.html

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

Обучение

Для обучения SageMaker необходимо получить следующую информацию:

  • Расположение тренировочных данных в S3
  • Расположение модели в ECR
  • Информация о размере и количестве используемых экземпляров EC2.
  • Где вы хотите, чтобы артефакты вашей модели хранились в S3

Процесс обучения выглядит следующим образом:

  1. SageMaker запускает указанные экземпляры EC2,
  2. SageMaker встраивает образ в контейнер, работающий на этих экземплярах.
  3. Данные обучения импортируются из S3 и сохраняются в каталоге «opt/ml/input/data/<channel_name>» (‹channel_name будет training, eval или test),
  4. Теперь контейнер настроен, поэтому он запускает обучающий скрипт,
  5. Артефакты модели сохраняются в «opt/ml/model», а затем экспортируются в S3,
  6. Инстансы EC2 останавливаются, так как обучение завершено. Вы платите только за время, потраченное на обучение модели.

Поздравляем! Теперь ваша модель обучена. Но это не значит, что он готов делать прогнозы. На самом деле инстансы EC2 теперь отключены — все, что у вас есть, — это несколько файлов, хранящихся в S3, и образ Docker в ECR. Пришло время развернуть вашу модель.

Развертывание

Для развертывания SageMaker необходимо получить следующую информацию:

  • Расположение артефактов модели в S3
  • Расположение модели в ECR
  • Информация о размере и количестве используемых экземпляров EC2.

Процесс развертывания выглядит следующим образом:

  1. SageMaker запускает указанные экземпляры EC2,
  2. SageMaker встраивает образ в контейнер, работающий на этих экземплярах.
  3. Артефакты модели импортируются из S3 и сохраняются в «opt/ml/model»,
  4. Теперь Docker запускает скрипт serve, а это значит, что ваша модель готова к приему запросов!

Вот и все! Ваша модель готова и будет возвращать результаты на любые запросы.

Остался еще один вопрос: конечные точки логического вывода и пакетные преобразования. Это два способа отправки запросов к вашей модели.

Для конечных точек вывода вы развернули свою модель, и она работает и ожидает запросов. Это необходимо, когда вам нужны прогнозы почти в реальном времени, но это связано с затратами — ваш экземпляр EC2 будет продолжать работать до тех пор, пока вы не прикажете ему остановиться, поэтому обязательно следите за ним в Cost Explorer и настройте оповещения о бюджете!

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

Вскоре

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

Хотите узнать больше и не можете дождаться следующего выпуска? Свяжитесь с нами здесь.

Первоначально опубликовано на https://www.crimsonmacaw.com 8 апреля 2022 г.