Implemente um modelo compilado usando SageMaker SDK - Amazon SageMaker

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Implemente um modelo compilado usando SageMaker SDK

Você deve atender à seção de pré-requisitos se o modelo tiver sido compilado usando AWS SDK for Python (Boto3) AWS CLI, ou o console da Amazon. SageMaker Siga um dos seguintes casos de uso para implantar um modelo compilado com SageMaker o Neo com base em como você compilou seu modelo.

Se você compilou seu modelo usando o SageMaker SDK

O identificador de objeto sagemaker.Model para o modelo compilado fornece a função deploy(), que permite criar um endpoint para atender a solicitações de inferência. A função permite definir o número e o tipo de instâncias usadas para o endpoint. Você deve escolher uma instância para a qual compilou seu modelo. Por exemplo, no trabalho compilado na seção Compilar um modelo (Amazon SageMaker SDK), isso éml_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)

Se você compilou seu modelo usando MXNet ou PyTorch

Crie o SageMaker modelo e implante-o usando o deploy () no API modelo específico da estrutura. APIs PoisMXNet, é MXNetModele para PyTorch, é PyTorchModel. Ao criar e implantar um SageMaker modelo, você deve definir a variável de MMS_DEFAULT_RESPONSE_TIMEOUT ambiente 500 e especificar o entry_point parâmetro como o script de inferência (inference.py) e o source_dir parâmetro como a localização do diretório (code) do script de inferência. Para preparar o script de inferência (inference.py), siga a etapa Pré-requisitos.

O exemplo a seguir mostra como usar essas funções para implantar um modelo compilado usando o SageMaker SDK for 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

As AmazonS3ReadOnlyAccess políticas AmazonSageMakerFullAccess e devem ser anexadas à AmazonSageMaker-ExecutionRole IAM função.

Se você compilou seu modelo usando Boto3, SageMaker console ou for CLI TensorFlow

Construa um objeto TensorFlowModel e chame implantar:

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 Implantação diretamente dos artefatos do modelo para obter mais informações.

Você pode selecionar uma imagem Docker da Amazon ECR URI que atenda às suas necessidades nesta lista.

Para obter mais informações sobre como construir um TensorFlowModel objeto, consulte SageMaker SDKo.

nota

Sua primeira solicitação de inferência pode ter alta latência se você implantar seu modelo em um. GPU Isso ocorre porque um kernel de computação otimizado é feito na primeira solicitação de inferência. Recomendamos que você crie um arquivo de aquecimento das solicitações de inferência e o armazene junto com seu arquivo de modelo antes de enviá-lo para um. TFX Isso é conhecido como “aquecimento” do modelo.

O trecho de código a seguir demonstra como produzir o arquivo de aquecimento para o exemplo de classificação de imagens na seção de pré-requisitos:

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 obter mais informações sobre como “aquecer” seu modelo, consulte a TensorFlow TFXpágina.