Возьмите свои модели, обученные на местном уровне, в производство

Ранее я уже писал о том, как можно обучать и развертывать пользовательские модели Sklearn и TensorFlow в Amazon SageMaker. Однако для определенных случаев использования у вас могут быть предварительно обученные модели, которые вы обучали в другом месте. В этой статье мы рассмотрим, как взять данные предварительно обученной модели и развернуть их в SageMaker. Кроме того, в этом примере мы будем в основном работать с кодом в локальной среде, чтобы убедиться, что у вас не слишком много тяжелой работы в консоли AWS.

ПРИМЕЧАНИЕ. Для тех из вас, кто не знаком с AWS, убедитесь, что вы создали учетную запись по следующей ссылке, если хотите продолжить. В этой статье предполагается, что уровень знаний AWS и SageMaker от новичка до среднего. Мы также не будем изучать теорию построения моделей, основное внимание в этой статье будет уделено развертыванию.

Оглавление

  1. Настраивать
  2. Сценарий развертывания модели
  3. Вызов модели
  4. Дополнительные ресурсы и заключение

1. Настройка

Для начала давайте быстро локально обучим модель Sklearn, которую мы можем использовать для развертывания. Вы можете просто запустить следующий скрипт Python для настройки.

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

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

  1. model_fn: это десериализует и загрузит наш файл joblib.
  2. input_fn: вы можете передать формат данных (json, csv и т. д.), который ваша модель может ожидать для ввода.
  3. predict_fn: функция прогнозирования нашей модели.
  4. output_fn: обрабатывает возвращаемое значение от predict_fn и тип ответа, который получит ваша конечная точка.

Следующая часть — это создание подходящей IAM-роли SageMaker в консоли AWS. Здесь вы хотите предоставить соответствующие разрешения для SageMaker: полный доступ к S3, полный доступ к SageMaker и полный доступ к ECR. Для этого примера это должно быть вашей основной работой в консоли AWS. После того, как вы создали эту роль, мы можем сосредоточиться на создании сценария развертывания нашей модели.

2. Сценарий развертывания модели

Для начала сделайте следующий импорт для сценария развертывания нашей модели. Убедитесь, что этот скрипт находится в том же каталоге, что и ваш обработчик вывода и данные модели (joblib).

Большая часть нашей оркестровки при работе с сервисами AWS осуществляется через SDK, в данном случае Python SDK: Boto3. Мы работаем с клиентом Boto3 для SageMaker, чтобы координировать шаги по развертыванию модели.

Здесь мы создаем экземпляры клиентов для SageMaker и клиента S3, где мы будем хранить данные нашей модели для доступа к SageMaker. Следующим шагом является ключевая часть: SageMaker нужны артефакты/данные модели в формате model.tar.gz. Для этого мы заархивируем артефакт локальной модели и скрипт inference.py в tar-файл.

Затем, чтобы SageMaker понял, нам нужно поместить этот артефакт модели в местоположение S3.

Теперь мы можем сосредоточиться на трех этапах создания конечной точки в SageMaker.

  1. Создание модели
  2. Создание конфигурации конечной точки
  3. Создание конечной точки

Для создания модели SageMaker нам нужны две функции: данные модели и образ нашего контейнера. В этом случае мы можем извлечь образ Sklearn для вывода непосредственно из SageMaker с помощью SageMaker SDK.

Теперь мы можем предоставить данные модели и изображение для создания нашей модели SageMaker.

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

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

Если вы сейчас запустите сценарий, вы увидите успешно созданную конечную точку, которая также будет видна в вашей консоли AWS.

3. Вызов модели

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

4. Дополнительные ресурсы и заключение



Весь код примера доступен по ссылке выше. Развернуть предварительно обученные модели в SageMaker очень просто после понимания формата и структуры данных модели. Основное изменение, которое должно произойти, — это изображение, которое вы извлекаете с помощью SDK, оно должно соответствовать используемой вами платформе. В случае, если контейнер не поддерживается SageMaker, узнайте, как Принести свой собственный контейнер.

Дополнительные ресурсы

Примеры логического вывода SageMaker

Мультимодельные конечные точки TensorFlow с SageMaker

Если вам понравилась эта статья, не стесняйтесь связаться со мной в LinkedIn и подписаться на мою Информационную рассылку. Если вы новичок в Medium, зарегистрируйтесь с помощью моего Реферала для участников.