Amazon web services 在AWS Sagemaker上部署带有TF服务容器的TF2.1模型后ping healthcheck失败
我们希望将一个经过训练的Tensorflow模型部署到AWS Sagemaker,以便使用Tensorflow服务容器进行推理。Tensorflow版本是2.1。按照指南,已采取以下步骤:Amazon web services 在AWS Sagemaker上部署带有TF服务容器的TF2.1模型后ping healthcheck失败,amazon-web-services,tensorflow,machine-learning,tensorflow-serving,amazon-sagemaker,Amazon Web Services,Tensorflow,Machine Learning,Tensorflow Serving,Amazon Sagemaker,我们希望将一个经过训练的Tensorflow模型部署到AWS Sagemaker,以便使用Tensorflow服务容器进行推理。Tensorflow版本是2.1。按照指南,已采取以下步骤: 构建TF2.1 AMI,并在本地测试成功后将其发布到AWS ECR 为S3和ECR设置Sagemaker执行角色权限 将保存的TF模型文件夹(保存的_model.pb、资产、变量)打包到model.tar.gz中 已创建具有实时预测器的端点: 创建批处理转换作业: 步骤4和5都在运行,在AWS Cloudwa
import os
import sagemaker
from sagemaker.tensorflow.serving import Model
from sagemaker.tensorflow.model import TensorFlowModel
from sagemaker.predictor import json_deserializer, json_serializer, RealTimePredictor
from sagemaker.content_types import CONTENT_TYPE_JSON
def create_tfs_sagemaker_model():
sagemaker_session = sagemaker.Session()
role = 'arn:aws:iam::XXXXXXXXX:role/service-role/AmazonSageMaker-ExecutionRole-XXXXXXX
bucket = 'tf-serving'
prefix = 'sagemaker/tfs-test'
s3_path = 's3://{}/{}'.format(bucket, prefix)
image = 'XXXXXXXX.dkr.ecr.eu-central-1.amazonaws.com/sagemaker-tensorflow-serving:2.1.0-cpu'
model_data = sagemaker_session.upload_data('model.tar.gz', bucket, os.path.join(prefix, 'model'))
endpoint_name = 'tf-serving-ep-test-1'
tensorflow_serving_model = Model(model_data=model_data, role=role, sagemaker_session=sagemaker_session, image=image, framework_version='2.1')
tensorflow_serving_model.deploy(initial_instance_count=1, instance_type='ml.c4.xlarge', endpoint_name=endpoint_name)
rt_predictor = RealTimePredictor(endpoint=endpoint_name, sagemaker_session=sagemaker_session, serializer=json_serializer, content_type=CONTENT_TYPE_JSON, accept=CONTENT_TYPE_JSON)
def create_tfs_sagemaker_batch_transform():
sagemaker_session = sagemaker.Session()
print(sagemaker_session.boto_region_name)
role = 'arn:aws:iam::XXXXXXXXXXX:role/service-role/AmazonSageMaker-ExecutionRole-XXXXXXXX'
bucket = 'XXXXXXX-tf-serving'
prefix = 'sagemaker/tfs-test'
image = 'XXXXXXXXXX.dkr.ecr.eu-central-1.amazonaws.com/sagemaker-tensorflow-serving:2.1.0-cpu'
s3_path = 's3://{}/{}'.format(bucket, prefix)
model_data = sagemaker_session.upload_data('model.tar.gz', bucket, os.path.join(prefix, 'model'))
tensorflow_serving_model = Model(model_data=model_data, role=role, sagemaker_session=sagemaker_session, image=image, name='deep-net-0', framework_version='2.1')
print(tensorflow_serving_model.model_data)
out_path = 's3://XXXXXX-serving-out/'
input_path = "s3://XXXXXX-serving-in/"
tensorflow_serving_transformer = tensorflow_serving_model.transformer(instance_count=1, instance_type='ml.c4.xlarge', accept='application/json', output_path=out_path)
tensorflow_serving_transformer.transform(input_path, content_type='application/json')
2020-07-08T17:07:16.162+02:00 INFO:main:using default model name: model
2020-07-08T17:07:16.162+02:00 INFO:main:tensorflow serving model config:
`Could not find any versions of model None`
class PythonServiceResource:
def __init__(self):
if SAGEMAKER_MULTI_MODEL_ENABLED:
self._model_tfs_rest_port = {}
self._model_tfs_grpc_port = {}
self._model_tfs_pid = {}
self._tfs_ports = self._parse_sagemaker_port_range(SAGEMAKER_TFS_PORT_RANGE)
else:
self._tfs_grpc_port = TFS_GRPC_PORT
self._tfs_rest_port = TFS_REST_PORT
self._tfs_enable_batching = SAGEMAKER_BATCHING_ENABLED == 'true'
self._tfs_default_model_name = os.environ.get('TFS_DEFAULT_MODEL_NAME', "None")
import os
import sagemaker
from sagemaker.tensorflow.serving import Model
from sagemaker.tensorflow.model import TensorFlowModel
from sagemaker.predictor import json_deserializer, json_serializer, RealTimePredictor
from sagemaker.content_types import CONTENT_TYPE_JSON
def create_tfs_sagemaker_model():
sagemaker_session = sagemaker.Session()
role = 'arn:aws:iam::XXXXXXXXX:role/service-role/AmazonSageMaker-ExecutionRole-XXXXXXX
bucket = 'tf-serving'
prefix = 'sagemaker/tfs-test'
s3_path = 's3://{}/{}'.format(bucket, prefix)
image = 'XXXXXXXX.dkr.ecr.eu-central-1.amazonaws.com/sagemaker-tensorflow-serving:2.1.0-cpu'
model_data = sagemaker_session.upload_data('model.tar.gz', bucket, os.path.join(prefix, 'model'))
endpoint_name = 'tf-serving-ep-test-1'
env = {"SAGEMAKER_TFS_DEFAULT_MODEL_NAME": "model"}
tensorflow_serving_model = Model(model_data=model_data, role=role, sagemaker_session=sagemaker_session, image=image, name='model', framework_version='2.1', env=env)
tensorflow_serving_model.deploy(initial_instance_count=1, instance_type='ml.c4.xlarge', endpoint_name=endpoint_name)
rt_predictor = RealTimePredictor(endpoint=endpoint_name, sagemaker_session=sagemaker_session, serializer=json_serializer, content_type=CONTENT_TYPE_JSON, accept=CONTENT_TYPE_JSON)