Мы хотим развернуть обученную модель Tensorflow в AWS Sagemaker для вывода с помощью контейнера-тензора-потока. Версия Tensorflow - 2.1. Следуя руководству на https://github.com/aws/sagemaker-tensorflow-serving-container, были предприняты следующие шаги:
Выполняются шаги 4 и 5, и в журналах AWS Cloudwatch мы видим успешный запуск экземпляров, загрузку модели и TF -Поддержка входа в событие l oop - см. Ниже:
2020-07-08T17: 07: 16.156 + 02: 00 INFO: main : запуск услуг
2020-07-08T17: 07: 16.156 + 02: 00 ИНФОРМАЦИЯ: main : nginx config:
2020-07-08T17: 07: 16.156 + 02: 00 load_module modules / ngx_http_js_module.so;
2020-07-08T17: 07: 16.156 + 02: 00 worker_processes auto;
2020-07-08T17: 07: 16.156 + 02: 00 демон выключен ;
2020-07-08T17: 07: 16.156 + 02: 00 pid /tmp/nginx.pid;
2020-07-08T17: 07: 16.157 + 02: 00 error_log / dev / stderr error;
2020-07-08T17: 07: 16.157 + 02: 00 worker_rlimit_nofile 4096;
2020-07-08T17: 07: 16.157 + 02: 00 события {worker_connections 2048;
2020-07-08T17: 07: 16.157 + 02: 00}
2020-07-08T17: 07: 16.162 + 02: 00 http {include / e tc / nginx / mime.types; default_type application / json; access_log / dev / stdout объединены; js_include tensorflow-serve.js; восходящий поток tfs_upstream {локальный сервер сервера: 10001; } восходящий поток gunicorn_upstream {сервер unix: / tmp / gunicorn.sock fail_timeout = 1; } сервер {прослушивание 8080 отложено; client_max_body_size 0; client_body_buffer_size 100 м; subrequest_output_buffer_size 100 м; установить $ tfs_version 2.1; установить $ default_tfs_model Нет; расположение / tfs {rewrite ^ / tfs /(.*) / $ 1 перерыв; proxy_redirect выключен; proxy_pass_request_headers выключен; proxy_set_header Content-Type 'application / json'; proxy_set_header Принять 'приложение / json'; proxy_pass http://tfs_upstream;} расположение / пинг {js_content ping; } местоположение / вызовы {js_content invocations; } местоположение / модели {proxy_pass http://gunicorn_upstream / модели; } location / {return 404 '{"error": "Not Found"}'; } keepalive_timeout 3; }
2020-07-08T17: 07: 16.162 + 02: 00}
2020-07-08T17: 07: 16.162 + 02: 00 INFO: tfs_utils: с использованием имени модели по умолчанию: model
2020-07-08T17: 07: 16.162 + 02: 00 ИНФОРМАЦИЯ: tfs_utils: конфигурация модели обслуживания tenorflow:
2020-07-08T17: 07: 16.162 + 02: 00 model_config_list: { config: {name: "model", base_path: "/ opt / ml / model", model_platform: "tensorflow"}
2020-07-08T17: 07: 16.162 + 02: 00}
2020-07-08T17: 07: 16.162 + 02: 00 INFO: main : с использованием названия модели по умолчанию: model
2020-07-08T17: 07: 16.162 + 02: 00 ИНФОРМАЦИЯ: main : конфигурация модели обслуживания тензорного потока:
2020-07-08T17: 07: 16.163 + 02: 00 model_config_list: {config: {name: "model", base_path: "/ opt / ml / model ", model_platform:" tensorflow "}
2020-07-08T17: 07: 16.163 + 02: 00}
2020-07-08T17: 07: 16.163 + 02 : 00 ИНФОРМАЦИЯ: основная : информация о версии тензорного потока:
2020-07-08T17: 07: 16.163 + 02: 00 TensorFlow ModelServer: 2.1.0-rc1 + dev.sha.075ffcf
2020-07 -08T17: 07: 16.163 + 02: 00 Библиотека TensorFlow: 2.1.0
2020-07-08T17: 07: 16.163 + 02: 00 ИНФОРМАЦИЯ: main : команда обслуживания тензорного потока: tensorflow_model_server --port = 10000 --rest_api_port = 10001 --model_config_file = / sagemaker / model-config.cfg --max_num_load_retries = 0
2020-07-08T17: 07: 16.163 + 02: 00 ИНФОРМАЦИЯ: main : запущено обслуживание тензорного потока (pid: 13)
2020-07-08T17: 07: 16.163 + 02: 00 INFO: main : nginx информация о версии:
2020-07-08T17: 07: 16.163 + 02: 00 nginx версия: nginx / 1.18.0
2020-07-08T17: 07: 16. 163 + 02: 00, созданный g cc 7.4.0 (Ubuntu 7.4.0-1ubuntu1 ~ 18.04.1)
2020-07-08T17: 07: 16.163 + 02: 00, построенный с OpenSSL 1.1. 1 11 сен 2018
2020-07-08T17: 07: 16.163 + 02: 00 Поддержка TLS SNI включена
2020-07-08T17: 07: 16.163 + 02: 00 настроить аргументы: - -prefix = / etc / nginx --sbin-path = / usr / sbin / nginx --modules-path = / usr / lib / nginx / modules --conf-path = / etc / nginx / nginx. conf --error-log-path = / var / log / nginx / error.log --http-log-path = / var / log / nginx / access.log --pid-path = / var / run / nginx .pid --lock-path = / var / run / nginx .lock --http-client-body-temp-path = / var / cache / nginx / client_temp --http-proxy-temp-path = / var / cache / nginx / proxy_temp --http-fastcgi-temp-path = / var / cache / nginx / fastcgi_temp --http-uwsgi-temp-path = / var / cache / nginx / uwsgi_temp --http-scgi-temp -path = / var / cache / nginx / scgi_temp --user = nginx --group = nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with -http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_g unzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_ssl_module --with-http_ssl_module --with-http_ssl_module http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with- cc -opt = '- g -O2 -fdebug-prefix -map = / data / builder / debuild / nginx -1.18.0 / debian / debuild-base / nginx -1.18.0 =. -fstack-protector-strong -Wformat -Werror = format-security -Wp, -D_FORTIFY_SOURCE = 2 -fPI C '--with-ld-opt =' - Wl, -Bsymboli c -functions -Wl, - z, relro -Wl, -z, now -Wl, - по необходимости -p ie '
2020-07-08T17: 07: 16.163 + 02: 00 ИНФОРМАЦИЯ: main : запущено nginx (pid: 15)
2020-07-08T17: 07: 16.163 + 02: 00 2020-07-08 15: 07: 15.075708: I tensorflow_serving / model_servers / server_core. cc: 462] Добавление / обновление моделей.
2020-07-08T17: 07: 16.163 + 02: 00 2020-07-08 15: 07: 15.075760: I tensorflow_serving / model_servers / server_core. cc : 573] (Повторное) добавление модели: model
2020-07-08T17: 07: 16.163 + 02: 00 2020-07-08 15: 07: 15.180755: I tensorflow_serving / util / retrier. cc: 46] Повторная попытка зарезервировать ресурсы для обслуживаемого: {name: model version: 1} исчерпано max_num_retries: 0
2020-07-08T17: 07: 16.163 + 02: 00 2020-07-08 15:07 : 15.180887: I tensorflow_serving / core / basic_manager. cc: 739] Ресурсы успешно зарезервированы для загрузки обслуживаемого {name: model version: 1}
2020-07-08T17: 07: 16.163 + 02: 00 2020-07-08 15: 07: 15.180919: I tensorflow_serving / core / loader_harness. cc: 66] Утверждение нагрузки для обслуживаемой версии {name: model версия: 1}
2020-07-08T17: 07: 16.163 + 02: 00 2020-07-08 15: 07: 15.180944: I tensorflow_serving / core / loader_harness. cc: 74] Загрузка обслуживаемой версии {name: model version: 1}
2020-07-08T17: 07: 16.163 + 02: 00 2020-07-08 15: 07: 15.180995: I external / org_tensorflow / tensorflow / cc / saved_model / reader . cc: 31] Чтение SavedModel из: / opt / ml / model / 1
2020-07-08T17: 07: 16.163 + 02: 00 2020-07-08 15: 07: 15.205712: I external / org_tensorflow / tensorflow / cc / saved_model / reader. cc: 54] Чтение мета-графа с тегами {serve}
2020-07-08T17: 07: 16.164 + 02: 00 2020-07-08 15: 07: 15.205825: I external / org_tensorflow / tensorflow / cc / saved_model / loader. cc: 264] Чтение отладочной информации SavedModel (если есть) из: / opt / ml / model / 1
2020 -07-08T17: 07: 16.164 + 02: 00 2020-07-08 15: 07: 15.208599: I внешний / или g_tensorflow / tensorflow / core / common_runtime / process_util. cc: 147] Создание нового пула потоков с настройкой взаимодействия по умолчанию: 2. Настройте использование inter_op_parallelism_threads для лучшей производительности.
2020-07-08T17: 07: 16.164 +02: 00 2020-07-08 15: 07: 15.328057: I external / org_tensorflow / tensorflow / cc / saved_model / loader. cc: 203] Восстановление пакета SavedModel.
2020-07-08T17: 07: 17.165 + 02: 00 2020-07-08 15: 07: 16.578796: I external / org_tensorflow / tensorflow / cc / saved_model / loader. cc: 152] Выполнение операции инициализации для пакета SavedModel по пути: / opt / ml / model / 1
2020-07-08T17: 07: 17.165 +02: 00 2020-07-08 15: 07: 16.626494: I external / org_tensorflow / tensorflow / cc / saved_model / loader. cc: 333] SavedModel загрузка для тегов {serve}; Статус: успех: ОК. Заняло 1445495 микросекунд.
2020-07-08T17: 07: 17.165 + 02: 00 2020-07-08 15: 07: 16.630443: I tensorflow_serving / servables / tensorflow / saved_model_warmup. cc: 105] Нет Файл данных разминки находится по адресу /opt/ml/model/1/assets.extra/tf_serving_warmup_requests
2020-07-08T17: 07: 17.165 + 02: 00 2020-07-08 15: 07: 16.632461: I tensorflow_serving / util / retrier. cc: 46] Повторная загрузка обслуживаемого объекта: {name: model version: 1} исчерпано max_num_retries: 0
2020-07-08T17: 07: 17.165 + 02: 00 2020- 07-08 15: 07: 16.632484: I tensorflow_serving / core / loader_harness. cc: 87] Успешно загружена обслуживаемая версия {name: model version: 1}
2020-07-08T17: 07: 17.165+ 02:00 2020-07-08 15: 07: 16.634727: I tensorflow_serving / model_servers / server. cc: 362] Запуск gRPC ModelServer на 0.0.0.0:10000 ...
2020-07-08T17 : 07: 17.165 + 02: 00 [предупреждение] getaddrinfo: семейство адресов для nodename не поддерживается
2020-07-08T17: 07: 17.165 + 02: 00 2020-07-08 15: 07: 16.635747: I tenorflow_servi ng / model_servers / server. cc: 382] Экспорт HTTP / REST API на: localhost: 10001 ...
2020-07-08T17: 07: 17.165 + 02: 00 [evhttp_server. cc : 238] NET_LOG: ввод события l oop…
Но оба (конечная точка и пакетное преобразование) не проходят проверку работоспособности Sagemaker Ping с помощью:
Кроме того, при локальном тестировании с самостоятельно созданным docker tf-serve-container модель работает без проблем и может быть запрошена с помощью завиток. В чем может быть проблема?