

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 o SageMaker SDK
<a name="neo-deployment-hosting-services-sdk"></a>

Você deve atender à seção de [pré-requisitos](https://docs.aws.amazon.com//sagemaker/latest/dg/neo-deployment-hosting-services-prerequisites) se o modelo tiver sido compilado usando AWS SDK para Python (Boto3) o console Amazon AI ou o console Amazon SageMaker AI. AWS CLI Siga um dos seguintes casos de uso para implantar um modelo compilado com SageMaker o Neo com base em como você compilou seu modelo.

**Topics**
+ [Se você compilou seu modelo usando o SageMaker SDK](#neo-deployment-hosting-services-sdk-deploy-sm-sdk)
+ [Se você compilou seu modelo usando MXNet ou PyTorch](#neo-deployment-hosting-services-sdk-deploy-sm-boto3)
+ [Se você compilou seu modelo usando o Boto3, o SageMaker console ou a CLI para TensorFlow](#neo-deployment-hosting-services-sdk-deploy-sm-boto3-tensorflow)

## Se você compilou seu modelo usando o SageMaker SDK
<a name="neo-deployment-hosting-services-sdk-deploy-sm-sdk"></a>

O identificador de objeto [sagemaker.Model](https://sagemaker.readthedocs.io/en/stable/api/inference/model.html?highlight=sagemaker.Model) para o modelo compilado fornece a função [deploy()](https://sagemaker.readthedocs.io/en/stable/api/inference/model.html?highlight=sagemaker.Model#sagemaker.model.Model.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)](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-job-compilation-sagemaker-sdk.html), 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
<a name="neo-deployment-hosting-services-sdk-deploy-sm-boto3"></a>

Crie o modelo de SageMaker IA e implante-o usando a API deploy () no modelo específico da estrutura. APIs Pois MXNet, é [MXNetmodelo](https://sagemaker.readthedocs.io/en/stable/frameworks/mxnet/sagemaker.mxnet.html?highlight=MXNetModel#mxnet-model) e para PyTorch, é [ PyTorchModel](https://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/sagemaker.pytorch.html?highlight=PyTorchModel#sagemaker.pytorch.model.PyTorchModel). Ao criar e implantar um modelo de SageMaker IA, 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 AI SDK para 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 políticas `AmazonSageMakerFullAccess` e `AmazonS3ReadOnlyAccess` devem ser anexadas à função IAM `AmazonSageMaker-ExecutionRole`. 

## Se você compilou seu modelo usando o Boto3, o SageMaker console ou a CLI para TensorFlow
<a name="neo-deployment-hosting-services-sdk-deploy-sm-boto3-tensorflow"></a>

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](https://sagemaker.readthedocs.io/en/stable/frameworks/tensorflow/deploying_tensorflow_serving.html#deploying-directly-from-model-artifacts) para obter mais informações. 

Você pode selecionar uma imagem do Docker (URI do Amazon ECR) que atenda às suas necessidades [nessa lista](https://docs.aws.amazon.com//sagemaker/latest/dg/neo-deployment-hosting-services-container-images.html). 

Para obter mais informações sobre como construir um `TensorFlowModel` objeto, consulte o [SageMaker SDK](https://sagemaker.readthedocs.io/en/stable/frameworks/tensorflow/sagemaker.tensorflow.html#tensorflow-serving-model). 

**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:](https://docs.aws.amazon.com//sagemaker/latest/dg/neo-deployment-hosting-services-prerequisites) 

```
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 do TensorFlow TFX](https://www.tensorflow.org/tfx/serving/saved_model_warmup).