本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用部署编译后的模型 SageMaker SDK
如果模型是使用 Amazon SDK for Python (Boto3)、或 Amazon SageMaker 控制台编译的 Amazon CLI,则必须满足先决条件部分。按照以下用例之一,根据您编译模型的方式部署使用 SageMaker Neo 编译的模型。
主题
如果您使用编译模型 SageMaker SDK
已编译模型的 sagemaker.Modelml_c5
。
predictor = compiled_model.deploy(initial_instance_count = 1, instance_type = 'ml.c5.4xlarge') # Print the name of newly created endpoint print(predictor.endpoint_name)
如果您使用MXNet或编译模型 PyTorch
创建 SageMaker 模型并使用特定于框架的模型API下的 deploy () 进行部署。APIs因为MXNet,它是 MXNetModelMMS_DEFAULT_RESPONSE_TIMEOUT
环境变量设置为,500
并将该entry_point
参数指定为推理脚本 (inference.py
),将source_dir
参数指定为推理脚本的目录位置 (code
)。按照先决条件中的步骤准备推理脚本 (inference.py
)。
以下示例说明如何使用这些函数部署使用 for Python SageMaker SDK 的编译模型:
注意
必须为AmazonSageMaker-ExecutionRole
IAM角色附加AmazonSageMakerFullAccess
和AmazonS3ReadOnlyAccess
策略。
如果您使用 Boto3、 SageMaker 控制台或 for 编译模型 CLI TensorFlow
构造一个 TensorFlowModel
对象,然后调用部署:
role='AmazonSageMaker-ExecutionRole' model_path=
'S3 path for model file'
framework_image='inference container arn'
tf_model = TensorFlowModel(model_data=model_path, framework_version='1.15.3', role=role, image_uri=framework_image) instance_type='ml.c5.xlarge' predictor = tf_model.deploy(instance_type=instance_type, initial_instance_count=1)
有关更多信息,请参阅直接使用模型构件部署
您可以从此列表中选择满足您需求ECRURI的 Amazon Docker 镜像。
有关如何构造TensorFlowModel
对象的更多信息,请参阅SageMaker SDK
注意
如果您在上部署模型,则您的第一个推理请求可能会有很高的延迟。GPU这是因为会在第一个推理请求中创建一个优化的计算内核。我们建议您制作一个包含推理请求的预热文件,并将其与模型文件一起存储,然后再将其发送到。TFX这称为“预热”模型。
以下代码段演示如何为先决条件部分中的图像分类示例生成预热文件:
import tensorflow as tf from tensorflow_serving.apis import classification_pb2 from tensorflow_serving.apis import inference_pb2 from tensorflow_serving.apis import model_pb2 from tensorflow_serving.apis import predict_pb2 from tensorflow_serving.apis import prediction_log_pb2 from tensorflow_serving.apis import regression_pb2 import numpy as np with tf.python_io.TFRecordWriter("tf_serving_warmup_requests") as writer: img = np.random.uniform(0, 1, size=[224, 224, 3]).astype(np.float32) img = np.expand_dims(img, axis=0) test_data = np.repeat(img, 1, axis=0) request = predict_pb2.PredictRequest() request.model_spec.name = 'compiled_models' request.model_spec.signature_name = 'serving_default' request.inputs['Placeholder:0'].CopyFrom(tf.compat.v1.make_tensor_proto(test_data, shape=test_data.shape, dtype=tf.float32)) log = prediction_log_pb2.PredictionLog( predict_log=prediction_log_pb2.PredictLog(request=request)) writer.write(log.SerializeToString())
有关如何 “预热” 模型的更多信息,请参阅TensorFlow TFX页面