Конечная точка SageMaker в режиме реального времени — это три вызова API для одного образа контейнера, и эти вызовы — самая простая часть. То, достигнет ли конечная точка InService, зависит от того, достаточно ли быстро ваше изображение отвечает на два HTTP-маршрута, а также от сбоя, когда...
Конечная точка SageMaker в режиме реального времени — это три вызова API для одного образа контейнера, и эти вызовы — самая простая часть. То, достигнет ли конечная точка InService, зависит от того, достаточно ли быстро ваше изображение отвечает на два HTTP-маршрута, а сбой в противном случае — это пятнадцатиминутное ожидание с последующим откатом.
Контейнерный контракт
SageMaker не заботится о том, что находится внутри вашего изображения. Для этого требуется, чтобы контейнер прослушивал порт 8080 и обслуживал два маршрута:
GET /ping — проверка работоспособности. Верните 200, как только модель будет загружена и сможет работать. Вот это важно: SageMaker опрашивает его после запуска контейнера и не вводит конечную точку в эксплуатацию до тех пор, пока это не завершится успешно.
POST/invocases — вывод. Тело запроса — это все, что отправил вызывающий абонент, с установленным им Content-Type; вы возвращаете тело ответа и его тип контента.
Самый распространенный сбой при развертывании — это /ping, который немедленно возвращает 200, пока большая модель все еще загружается в фоновом режиме. SageMaker помечает контейнер работоспособным, направляет к нему запрос, запрос завершается неудачно, и вы получаете ошибку ModelError, не имеющую ничего общего с кодом вашей модели. Сначала загрузите, затем ответьте /ping — логический флаг, установленный в конце загрузки, — это w