Distribuisci un modello compilato utilizzando SageMaker SDK - Amazon SageMaker

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Distribuisci un modello compilato utilizzando SageMaker SDK

È necessario soddisfare la sezione dei prerequisiti se il modello è stato compilato utilizzando AWS SDK for Python (Boto3) AWS CLI, o la SageMaker console Amazon. Segui uno dei seguenti casi d'uso per distribuire un modello compilato con SageMaker Neo in base a come hai compilato il tuo modello.

Se hai compilato il tuo modello usando il SageMaker SDK

L'handle di oggetto sagemaker.Model per il modello compilato fornisce la funzione deploy(), che consente di creare un endpoint per servire richieste di inferenza. La funzione consente di impostare il numero e il tipo di istanze che vengono utilizzate per l'endpoint. È necessario scegliere un'istanza per la quale è stato compilato il modello. Ad esempio, nel lavoro compilato nella sezione Compile a Model (Amazon SageMaker SDK), questo è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 hai compilato il tuo modello usando MXNet o PyTorch

Crea il SageMaker modello e distribuiscilo utilizzando deploy () nel modello specifico API del framework. APIs Perché lo è MXNet e per, lo è MXNetModel. PyTorch PyTorchModel Quando create e distribuite un SageMaker modello, dovete impostare la variabile di MMS_DEFAULT_RESPONSE_TIMEOUT ambiente su 500 e specificare il entry_point parametro come script di inferenza (inference.py) e il source_dir parametro come posizione della directory (code) dello script di inferenza. Per preparare lo script di inferenza (inference.py), segui la fase Prerequisiti.

L'esempio seguente mostra come utilizzare queste funzioni per distribuire un modello compilato utilizzando 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

Le AmazonS3ReadOnlyAccess politiche AmazonSageMakerFullAccess e devono essere associate al AmazonSageMaker-ExecutionRole IAM ruolo.

Se hai compilato il modello utilizzando Boto3, SageMaker console o for CLI TensorFlow

Costruisci un oggetto TensorFlowModel, quindi richiama 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)

Per ulteriori informazioni, consulta Distribuzione diretta da artefatti del modello.

Puoi selezionare un'immagine Docker Amazon ECR URI che soddisfi le tue esigenze da questo elenco.

Per ulteriori informazioni su come costruire un TensorFlowModel oggetto, consulta il. SageMaker SDK

Nota

La tua prima richiesta di inferenza potrebbe avere una latenza elevata se distribuisci il tuo modello su un. GPU Questo perché alla prima richiesta di inferenza viene creato un kernel di calcolo ottimizzato. Ti consigliamo di creare un file di riscaldamento delle richieste di inferenza e di archiviarlo insieme al file del modello prima di inviarlo a un. TFX Questo processo è noto come “riscaldamento” del modello.

Il seguente frammento di codice mostra come produrre il file di riscaldamento per l'esempio di classificazione delle immagini nella sezione dei prerequisiti:

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

Per ulteriori informazioni su come «riscaldare» il modello, consulta la TensorFlow TFX pagina.