View a markdown version of this page

Distribuisci un modello compilato utilizzando l'SDK SageMaker - Amazon SageMaker AI

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 l'SDK SageMaker

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

Se hai compilato il tuo modello utilizzando l'SDK SageMaker

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

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 hai compilato il tuo modello utilizzando MXNet o PyTorch

Crea e implementa il modello SageMaker AI utilizzando. ModelBuilder Specifica il s3_model_data_url parametro come percorso S3 per l'archivio del modello compilato, il role_arn parametro come ruolo di esecuzione e il instance_type parametro per l'istanza di destinazione. È inoltre necessario impostare la variabile di MMS_DEFAULT_RESPONSE_TIMEOUT ambiente su. 500

L'esempio seguente mostra come utilizzare queste funzioni per distribuire un modello compilato utilizzando SageMaker Python SDK:

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

Le policy AmazonSageMakerFullAccess e AmazonS3ReadOnlyAccessdevono essere collegate al ruolo IAM di AmazonSageMaker-ExecutionRole.

Se hai compilato il tuo modello usando Boto3, la console o la CLI per SageMaker TensorFlow

Costruisci un oggetto del modello, quindi chiama 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' )

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

Da questo elenco puoi selezionare un'immagine Docker (URI Amazon ECR) che soddisfi le tue esigenze.

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

Nota

La tua prima richiesta di inferenza potrebbe avere una latenza elevata se distribuisci il modello su una 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 di 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 pagina TensorFlow TFX.