Недавно я столкнулся с требованием в моей организации, где нам нужно было получить прогнозы с помощью Amazon SageMaker Hosted endpoint из нашего кода Java. Большинство примеров, представленных в документации SageMaker, используют python SDK, и, несмотря на наличие подробного Java API, понять, как их использовать, не очень просто.

Что такое модель SageMaker

Модель в SageMaker — это обертка из 2-х объектов

  1. Образ контейнера Docker с веб-сервером
  2. Файл модели в папке S3

Образ докера должен иметь веб-сервер и отвечать на определенные API REST. Например, /ping, который должен ответить кодом состояния 200 и пустым текстом, и для выводов он должен реализовать /invocations как POST API на порту 8080. Подробнее см. здесь. ».

Модель представляет собой tar-файл с расширением tar.gz, который помещается в корзину S3.

Как обслуживаются модели

Единственный способ получить какие-либо прогнозы из моделей, управляемых SageMaker, — через веб-сервер с помощью /вызововREST API. Существуют различные способы запуска и использования этих веб-серверов, которые объясняются ниже.

Пользователи могут свободно использовать артефакты модели, присутствующие в расположении S3, и образ Docker, прикрепленный к модели, если они хотят запустить модель локально на другом веб-сервере, но тогда она не будет управляться SageMaker.

Различные способы развертывания

  1. Пакетное преобразование
  2. Размещенные конечные точки
  3. "Локальный режим"

Вывод с использованием SageMaker Java SDK

Код со структурой maven присутствует в этом git-репозитории.

Здесь мы используем размещенную конечную точку, созданную с помощью примера блокнота tensorflow_BYOM_iris. Код будет запускаться из экземпляра EC2 в том же облаке VPC. Пожалуйста, используйте prepareEnv.sh, чтобы настроить окружение перед доступом к конечной точке из EC2.