Я закончил обучение своей модели TensorFlow, что мне теперь делать?
Наконец, после тяжелой работы, изучения, проб и ошибок вы закончили свою нейронную сеть для выявления рака в хрящевых тканях. Между прочим, это настоящий рак. Вы готовы поделиться своим открытием, пока не поймете, насколько сложно настроить масштабируемый и безопасный надежный веб-сервер, работающий круглосуточно и без выходных…
Больше нет. AWS SageMaker размещает вашу модель, поэтому вам нужно только беспокоиться о лечении рака. Развертывание вашего хоста в SageMaker дает вам доступ к автомасштабируемым, мультирегиональным и высокодоступным конечным точкам хоста. Вы даже можете провести A / B-тестирование. Вы могли подумать ... Я в деле! Что мне нужно сделать? Ответ заключается в том, что вам необходимо предоставить контейнер Docker с вашей моделью TensorFlow. Но не волнуйтесь, это очень просто - я вас накрою.
В этом руководстве я объясню, как создать и протестировать локально обслуживающий контейнер TensorFlow для AWS SageMaker.
Почему TensorFlow?
Потому что это круто, и все им пользуются. Хорошо, я признаю, что хипстеры и большинство наиболее актуальных исследователей машинного обучения в наши дни находятся в поезде PyTorch. Но дело не в этом. Дело в том, что вы можете разместить что угодно в SageMaker, и мне пришлось начать с чего-нибудь. Если вы считаете «что-то» высокопроизводительным, масштабируемым и надежным веб-сервером - этого достаточно. Давай сделаем это.
Предположим, вы уже преобразовали свою модель в формат сохраненной модели TensorFlow Serving. Если вы еще этого не сделали, вам пригодятся следующие ссылки:
- Как построить и загрузить сохраненную модель
- Формат Сохраненная модель TensorFlow
- Используйте CLI для проверки и выполнения сохраненной модели TensorFlow
Репозиторий GitHub TensorFlow Serving предоставляет несколько готовых сохраненных моделей для тестирования.
В этом примере загрузите модель saved_model_half_plus_three из репозитория GitHub TensorFlow Serving:
Как контейнеры AWS SageMaker обрабатывают запросы на обслуживание
Чтобы иметь возможность обслуживать с помощью AWS SageMaker, в контейнере должен быть реализован веб-сервер, который обрабатывает запросы /invocations
и /ping
через порт 8080.
Клиентские приложения отправляют запросы POST на /invocations
для получения прогнозов, обычно с помощью AWS CLI, boto3 или AWS SDK. В статье Как делать прогнозы относительно конечной точки AWS SageMaker включены некоторые примеры этих прогнозов.
SageMaker отправляет /ping
запросов к контейнеру, чтобы проверить, работает ли контейнер.
Давайте создадим контейнер, который обрабатывает эти запросы.
Создание изображения для обслуживания TensorFlow
Создайте файл с именем Dockerfile со следующим содержанием:
Некоторые примечания о Dockerfile:
- Мы используем официальное изображение tenorflow / serve. Для экземпляров графического процессора вместо этого следует использовать tensorflow / serve: latest-gpu.
- Запросы вывода AWS SageMaker и запросы TensorFlow Servings не соответствуют подписи. Мы используем NGINX, чтобы получить запрос в формате, который ожидает AWS SageMaker, и перенаправить его в службу TensorFlow. Этот метод называется обратным прокси-сервером.
- Мы копируем внутри изображения модели обслуживания TensorFlow (в нашем случае save_model_helf_plus_three) и nginx.conf, настраивая обратный прокси.
- ENTRYPOINT запускает службы. TensorFlow Serving настроен на получение запросов от saved_model_half_plus_three в формате localhost: 8501 / v1 / models / half_plus_three: предсказать
Давайте подробнее рассмотрим файл nginx.conf:
В этой конфигурации NGINX будет перенаправлять запросы в формате {адрес}: 8080 / invocations на http: // localhost: 8501 / v1 / models / half_plus_three: предсказать , который является форматом запроса, ожидаемым службой TF.
Создание образа Docker
Убедитесь, что у вас установлен Докер.
Команда docker build -t sagemaker-tf-serving .
создает образ докера с именем sagemaker-tf-serve:
$docker build -t sagemaker-tf-serving .
Step 1/5 : FROM tensorflow/serving Step 2/5 : RUN apt-get update && apt-get install -y --no-install-recommends nginx git Step 3/5 : COPY saved_model_half_plus_three /saved_model_half_plus_three Step 4/5 : COPY nginx.conf /etc/nginx/nginx.conf Step 5/5 : ENTRYPOINT service nginx start | tensorflow_model_server --rest_api_port=8501 --model_name=half_plus_three --model_base_path=/saved_model_half_plus_three Successfully built ac2cc25f0ee6 Successfully taggedsagemaker-tf-serving
:latest
Локальное тестирование контейнера SageMaker
docker run --rm -p 8080:8080 sagemaker-tf-serving
запускает контейнер и делает порт 8080 доступным вне контейнера.
Теперь мы готовы делать запросы к контейнеру:
$ curl -X POST http://localhost:8080/invocations -d '{"instances": [1.0,2.0,5.0]}' { "predictions": [3.5, 4.0, 5.5] }
Приведенная выше команда выполняет запрос POST / вызовы, передавая полезную нагрузку {"instances": [1.0,2.0,5.0]}
в виде JSON. Помните, что формат ввода и вывода сохраненной модели TF, обслуживающей, определяется при создании модели.
Полезные данные запроса '{"instances": [1.0,2.0,5.0]}'
находятся в том же формате, который ожидает TensorFlow Serving. Я расскажу о TensorFlow Serving REST API в будущих статьях - убедитесь, что вы подписаны на меня в среде и Twitter, чтобы получать обновления.
Мы готовы развернуть ваш контейнер в SageMaker.
Движение вперед с нашим контейнером SageMaker с использованием обслуживания TensorFlow
В следующих статьях вы узнаете:
- Как отправить образ контейнера в репозиторий AWS ECS
- Как развернуть конечную точку AWS SageMaker
- Как делать прогнозы относительно конечной точки SageMaker
использованная литература
- AWS SageMaker - с использованием вашего собственного кода вывода
- GitHub - контейнер SageMaker TensorFlow
- NGINX - пропуск прокси
Вы использовали контейнер? У вас есть вопросы или просьбы о дополнительных статьях? Добавляйте комментарии ниже! И не забывайте хлопать.