Implemente un modelo compilado mediante SageMaker SDK - Amazon SageMaker

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Implemente un modelo compilado mediante SageMaker SDK

Debe cumplir con la sección de requisitos previos si el modelo se compiló con AWS SDK for Python (Boto3) AWS CLI, o la SageMaker consola de Amazon. Siga uno de los siguientes casos de uso para implementar un modelo compilado con SageMaker Neo en función de cómo compiló su modelo.

Si compiló el modelo mediante SageMaker SDK

El identificador de objeto sagemaker.Model del modelo compilado proporciona la función deploy(), que le permite crear un punto de conexión para atender solicitudes de inferencia. La función le permite establecer el número y el tipo de instancias que se utilizan para el punto de conexión. Tiene que elegir una instancia para la que haya compilado su modelo. Por ejemplo, en el trabajo compilado en la sección Compile un modelo (Amazon SageMaker SDK), esto esml_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)

Si compiló su modelo utilizando MXNet o PyTorch

Cree el SageMaker modelo e impleméntelo mediante deploy () API en el modelo específico del marco. APIs ParaMXNet, es MXNetModely para PyTorch, es. PyTorchModel Al crear e implementar un SageMaker modelo, debe establecer la variable de MMS_DEFAULT_RESPONSE_TIMEOUT entorno 500 y especificar el entry_point parámetro como el script de inferencia (inference.py) y el source_dir parámetro como la ubicación del directorio (code) del script de inferencia. Para preparar el script de inferencia (inference.py), siga el paso de Requisitos previos.

El siguiente ejemplo muestra cómo usar estas funciones para implementar un modelo compilado SageMaker SDK con Python:

MXNet
from sagemaker.mxnet import MXNetModel # Create SageMaker model and deploy an endpoint sm_mxnet_compiled_model = MXNetModel( model_data='insert S3 path of compiled MXNet model archive', role='AmazonSageMaker-ExecutionRole', entry_point='inference.py', source_dir='code', framework_version='1.8.0', py_version='py3', image_uri='insert appropriate ECR Image URI for MXNet', env={'MMS_DEFAULT_RESPONSE_TIMEOUT': '500'}, ) # Replace the example instance_type below to your preferred instance_type predictor = sm_mxnet_compiled_model.deploy(initial_instance_count = 1, instance_type = 'ml.p3.2xlarge') # Print the name of newly created endpoint print(predictor.endpoint_name)
PyTorch 1.4 and Older
from sagemaker.pytorch import PyTorchModel # Create SageMaker model and deploy an endpoint sm_pytorch_compiled_model = PyTorchModel( model_data='insert S3 path of compiled PyTorch model archive', role='AmazonSageMaker-ExecutionRole', entry_point='inference.py', source_dir='code', framework_version='1.4.0', py_version='py3', image_uri='insert appropriate ECR Image URI for PyTorch', env={'MMS_DEFAULT_RESPONSE_TIMEOUT': '500'}, ) # Replace the example instance_type below to your preferred instance_type predictor = sm_pytorch_compiled_model.deploy(initial_instance_count = 1, instance_type = 'ml.p3.2xlarge') # Print the name of newly created endpoint print(predictor.endpoint_name)
PyTorch 1.5 and Newer
from sagemaker.pytorch import PyTorchModel # Create SageMaker model and deploy an endpoint sm_pytorch_compiled_model = PyTorchModel( model_data='insert S3 path of compiled PyTorch model archive', role='AmazonSageMaker-ExecutionRole', entry_point='inference.py', source_dir='code', framework_version='1.5', py_version='py3', image_uri='insert appropriate ECR Image URI for PyTorch', ) # Replace the example instance_type below to your preferred instance_type predictor = sm_pytorch_compiled_model.deploy(initial_instance_count = 1, instance_type = 'ml.p3.2xlarge') # Print the name of newly created endpoint print(predictor.endpoint_name)
nota

Las AmazonS3ReadOnlyAccess políticas AmazonSageMakerFullAccess y deben estar asociadas a la AmazonSageMaker-ExecutionRole IAM función.

Si compiló el modelo con Boto3, SageMaker la consola o el CLI TensorFlow

Construya un objeto TensorFlowModel y, a continuación, llame a deploy:

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)

Consulte Implementación directa a partir de artefactos del modelo para obtener más información.

Puede seleccionar una imagen de Docker de Amazon ECR URI que se adapte a sus necesidades de esta lista.

Para obtener más información sobre cómo construir un TensorFlowModel objeto, consulte la SageMaker SDK.

nota

Su primera solicitud de inferencia puede tener una latencia alta si implementa su modelo en unGPU. Esto se debe a que en la primera solicitud de inferencia se crea un kernel de procesamiento optimizado. Le recomendamos que cree un archivo de preparación de las solicitudes de inferencia y lo almacene junto con el archivo del modelo antes de enviarlo a un. TFX Esto se conoce como “calentar” el modelo.

El siguiente fragmento de código muestra cómo producir el archivo de calentamiento para el ejemplo de clasificación de imágenes de la sección de requisitos previos:

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())

Para obtener más información sobre cómo «calentar» tu modelo, consulta la TensorFlow TFX página.