Недавно я столкнулся с требованием в моей организации, где нам нужно было получить прогнозы с помощью Amazon SageMaker Hosted endpoint из нашего кода Java. Большинство примеров, представленных в документации SageMaker, используют python SDK, и, несмотря на наличие подробного Java API, понять, как их использовать, не очень просто.
Что такое модель SageMaker
Модель в SageMaker — это обертка из 2-х объектов
- Образ контейнера Docker с веб-сервером
- Файл модели в папке S3
Образ докера должен иметь веб-сервер и отвечать на определенные API REST. Например, /ping, который должен ответить кодом состояния 200 и пустым текстом, и для выводов он должен реализовать /invocations как POST API на порту 8080. Подробнее см. здесь. ».
Модель представляет собой tar-файл с расширением tar.gz, который помещается в корзину S3.
Как обслуживаются модели
Единственный способ получить какие-либо прогнозы из моделей, управляемых SageMaker, — через веб-сервер с помощью /вызововREST API. Существуют различные способы запуска и использования этих веб-серверов, которые объясняются ниже.
Пользователи могут свободно использовать артефакты модели, присутствующие в расположении S3, и образ Docker, прикрепленный к модели, если они хотят запустить модель локально на другом веб-сервере, но тогда она не будет управляться SageMaker.
Различные способы развертывания
- Пакетное преобразование
- Размещенные конечные точки
- "Локальный режим"
Вывод с использованием SageMaker Java SDK
Код со структурой maven присутствует в этом git-репозитории.
Здесь мы используем размещенную конечную точку, созданную с помощью примера блокнота tensorflow_BYOM_iris. Код будет запускаться из экземпляра EC2 в том же облаке VPC. Пожалуйста, используйте prepareEnv.sh, чтобы настроить окружение перед доступом к конечной точке из EC2.