Déployer un modèle compilé à l'aide du SageMaker SDK - Amazon SageMaker AI

View a markdown version of this page

Déployer un modèle compilé à l'aide du SageMaker SDK - Amazon SageMaker AI

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Déployer un modèle compilé à l'aide du SageMaker SDK

Vous devez satisfaire à la section des prérequis si le modèle a été compilé à l'aide AWS SDK pour Python (Boto3) de la console Amazon AI ou de la console Amazon SageMaker AI. AWS CLI Suivez l'un des cas d'utilisation suivants pour déployer un modèle compilé avec SageMaker Neo en fonction de la façon dont vous avez compilé votre modèle.

Si vous avez compilé votre modèle à l'aide du SageMaker SDK

Le gestionnaire d'objet sagemaker.Model pour le modèle compilé fournit la fonction deploy() pour vous aider à créer un point de terminaison pour servir des demandes d'inférence. La fonctionnalité vous permet de définir le nombre et le type d'instances utilisés pour le point de terminaison. Vous devez choisir une instance pour laquelle vous avez compilé votre modèle. Par exemple, dans la tâche compilée dans la section Compiler un modèle (Amazon SageMaker SDK), c'est ml_c5 le cas.

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)

Si vous avez compilé votre modèle à l'aide de MXNet ou PyTorch

Créez et déployez le modèle d' SageMaker IA à l'aide deModelBuilder. Spécifiez le s3_model_data_url paramètre comme le chemin S3 vers votre archive de modèles compilés, le role_arn paramètre comme votre rôle d'exécution et le instance_type paramètre pour votre instance cible. Vous devez également définir la variable d'MMS_DEFAULT_RESPONSE_TIMEOUTenvironnement sur500.

L'exemple suivant montre comment utiliser ces fonctions pour déployer un modèle compilé à l'aide du SDK 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)
Note

Les politiques AmazonSageMakerFullAccess et AmazonS3ReadOnlyAccess doivent être attachées au rôle IAM AmazonSageMaker-ExecutionRole.

Si vous avez compilé votre modèle à l'aide de Boto3, de SageMaker la console ou de la CLI pour TensorFlow

Construisez un objet modèle, puis appelez 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' )

Pour plus d’informations, consultez Déploiement direct à partir d’artefacts du modèle.

Vous pouvez sélectionner un URI Amazon ECR d'image Docker répondant à vos besoins dans cette liste.

Pour plus d'informations sur la création d'un TensorFlowModel objet, consultez le SageMaker SDK.

Note

La latence de votre première demande d'inférence peut être élevée si vous déployez votre modèle sur un GPU. Cela vient du fait qu'un noyau de calcul optimisé est créé sur la première demande d'inférence. Nous vous recommandons de créer un fichier de préparation des demandes d'inférence, que vous stockerez à côté de votre fichier de modèle avant de l'envoyer à un TFX. C'est ce que l'on appelle « préparer » le modèle.

L'extrait de code suivant montre comment produire le fichier de préparation pour l'exemple de classification d'image dans la section Prérequis :

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

Pour plus d'informations sur la façon de « réchauffer » votre modèle, consultez la page TensorFlow TFX.