Déploiement d'un modèle compilé à l'aide du SDK SageMaker
Vous devez satisfaire les prérequis si le modèle a été compilé à l'aide du AWS SDK for Python (Boto3), de la AWS CLI ou de la console Amazon SageMaker. Déployez un modèle compilé avec SageMaker Neo, selon l'un des cas d'utilisation suivants, en fonction de la façon dont vous avez compilé votre modèle.
Rubriques
Si vous avez compilé votre modèle à l'aide du SDK SageMaker
Le gestionnaire d'objet sagemaker.Modelml_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)
Si vous avez compilé votre modèle à l'aide de MXNet ou PyTorch
Créez le modèle SageMaker et déployez-le à l'aide de l'API deploy() sous les API de modèle spécifiques au cadre. Pour MxNet, il s'agit de MXNetModelMMS_DEFAULT_RESPONSE_TIMEOUT
sur 500
et spécifier le paramètre entry_point
comme script d'inférence (inference.py
) et le paramètre source_dir
comme emplacement de répertoire (code
) du script d'inférence. Pour préparer le script d'inférence (inference.py
) suivez l'étape Prérequis.
L'exemple suivant montre comment utiliser ces fonctions pour déployer un modèle compilé à l'aide du SDK SageMaker pour Python :
Les stratégies 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 la console SageMaker ou de la CLI pour TensorFlow
Créez un objet TensorFlowModel
, puis appelez la fonction 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)
Pour de plus amples informations, veuillez consulter Deploying directly from model artifacts (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 de plus amples informations sur la création d'un objet TensorFlowModel
, veuillez consulter le SDK SageMaker
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 de plus amples informations sur la façon de « préparer » votre modèle, veuillez consulter la page TensorFlow TFX