View a markdown version of this page

Implante um modelo compilado usando o SageMaker SDK - SageMaker IA da Amazon

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á.

Implante um modelo compilado usando o SageMaker SDK

Você deve atender à seção de pré-requisitos se o modelo foi compilado usando AWS SDK para Python (Boto3) AWS CLI, ou o console Amazon SageMaker AI. 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 Compile a Model (Amazon SageMaker SDK), isso é. ml_c5

from sagemaker.serve import ModelBuilder model_builder = ModelBuilder( model=compiled_model, role_arn=role, instance_type='ml.c5.4xlarge', ) endpoint = model_builder.build().deploy( initial_instance_count=1, instance_type='ml.c5.4xlarge' ) # Print the name of newly created endpoint print(endpoint.endpoint_name)

Se você compilou seu modelo usando o MXNet ou PyTorch

Crie e implante o modelo de SageMaker IA usandoModelBuilder. Especifique o s3_model_data_url parâmetro como o caminho do S3 para seu arquivo de modelo compilado, o role_arn parâmetro como sua função de execução e o instance_type parâmetro para sua instância de destino. Você também deve definir a variável de MMS_DEFAULT_RESPONSE_TIMEOUT ambiente como500.

O exemplo a seguir mostra como usar essas funções para implantar um modelo compilado usando o SDK do SageMaker Python:

from sagemaker.serve import ModelBuilder # V3 uses a unified ModelBuilder approach for all frameworks model_builder = ModelBuilder( s3_model_data_url='insert S3 path of compiled model archive', role_arn='AmazonSageMaker-ExecutionRole', instance_type='ml.p3.2xlarge', env={'MMS_DEFAULT_RESPONSE_TIMEOUT': '500'}, ) endpoint = model_builder.build().deploy( initial_instance_count=1, instance_type='ml.p3.2xlarge' ) # Print the name of newly created endpoint print(endpoint.endpoint_name)
nota

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

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

Construa um objeto de modelo e, em seguida, chame deploy:

from sagemaker.serve import ModelBuilder model_builder = ModelBuilder( s3_model_data_url='S3 path for model file', role_arn=role, instance_type='ml.c5.xlarge', ) endpoint = model_builder.build().deploy( initial_instance_count=1, instance_type='ml.c5.xlarge' )

Consulte Implantação diretamente dos artefatos do modelo para obter mais informações.

Você pode selecionar uma imagem do Docker (URI do Amazon ECR) que atenda às suas necessidades nessa lista.

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

nota

Sua primeira solicitação de inferência pode ter alta latência se você implantar seu modelo em uma 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 página TensorFlow TFX.