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.
Étape 5 : déployer le modèle sur Amazon EC2
Pour obtenir des prédictions, déployez votre modèle sur Amazon EC2 à l'aide d'Amazon SageMaker.
Rubriques
Déployer le modèle sur des services SageMaker d'hébergement
Pour héberger un modèle via Amazon EC2 à l'aide d'Amazon SageMaker, déployez le modèle que vous avez entraîné enCréer et exécuter une tâche d'entraînement appelant ladeploy
méthode de l'xgb_model
estimateur. Lorsque vous appelez la méthode deploy
, vous devez spécifier le nombre et le type d'instances de ML EC2 que vous souhaitez utiliser pour héberger un point de terminaison.
import sagemaker from sagemaker.serializers import CSVSerializer xgb_predictor=xgb_model.deploy( initial_instance_count=1, instance_type='ml.t2.medium', serializer=CSVSerializer() )
-
initial_instance_count
(int) – Nombre d'instances pour déployer le modèle. -
instance_type
(str) – Type d'instances que vous souhaitez pour utiliser votre modèle déployé. -
serializer
(int) — Sérialisez les données d'entrée de différents formats (un NumPy tableau, une liste, un fichier ou un tampon) en une chaîne au format CSV. Nous l'utilisons parce que l'algorithme XGBoost accepte les fichiers d'entrée au format CSV.
Ledeploy
procédé crée un modèle déployable, configure le point de terminaison des services SageMaker d'hébergement et lance le point de terminaison pour héberger le modèle. Pour de plus amples informations, veuillez consulter Méthode de classe de déploiement de l'estimateurSageMaker génériquedeploy
, exécutez le code suivant :
xgb_predictor.endpoint_name
Cela doit renvoyer le nom du point de terminaison du xgb_predictor
. Le format du nom du point de terminaison est "sagemaker-xgboost-YYYY-MM-DD-HH-MM-SS-SSS"
. Ce point de terminaison reste actif dans l'instance de ML et vous pouvez effectuer des prédictions instantanées à tout moment, sauf si vous l'arrêtez ultérieurement. Copiez ce nom de point de terminaison et enregistrez-le pour le réutiliser et faire des prédictions en temps réel ailleurs dans les instances de SageMaker bloc-notes ou SageMaker Studio.
Astuce
Pour en savoir plus sur la compilation et l'optimisation de votre modèle pour le déploiement vers des instances Amazon EC2 ou des périphériques en périphérie, veuillez consulter Compiler et déployer des modèles avec Neo.
(Facultatif) Utiliser SageMaker Predictor pour réutiliser le point de terminaison hébergé
Après avoir déployé le modèle sur un point de terminaison, vous pouvez configurer un nouveau SageMaker prédicteur en jumelant le point de terminaison et en effectuant des prédictions en temps réel dans n'importe quel autre bloc-notes. L'exemple de code suivant montre comment utiliser la classe SageMaker Predictor pour configurer un nouvel objet de prédicteur à l'aide du même point de terminaison. Réutilisez le nom du point de terminaison que vous avez utilisé pour le xgb_predictor
.
import sagemaker xgb_predictor_reuse=sagemaker.predictor.Predictor( endpoint_name="
sagemaker-xgboost-YYYY-MM-DD-HH-MM-SS-SSS
", sagemaker_session=sagemaker.Session(), serializer=sagemaker.serializers.CSVSerializer() )
Le prédicteur xgb_predictor_reuse
se comporte exactement comme le xgb_predictor
d'origine. Pour plus d'informations, consultez la classe SageMaker Predictor
(Facultatif) Faire une prédiction avec la transformation par lots
Au lieu d'héberger un point de terminaison en production, vous pouvez exécuter une tâche d'inférence par lots ponctuelle pour effectuer des prédictions sur un jeu de données de test à l'aide de la transformation SageMaker par lots. Une fois votre entraînement du modèle terminé, vous pouvez étendre l'estimateur à untransformer
objet, qui est basé sur la classe SageMakerTransformer
Pour exécuter une tâche de transformation par lots
Exécutez le code suivant pour convertir les colonnes de fonctions du jeu de données de test en fichier CSV et les télécharger dans le compartiment S3 :
X_test.to_csv('test.csv', index=False, header=False) boto3.Session().resource('s3').Bucket(bucket).Object( os.path.join(prefix, 'test/test.csv')).upload_file('test.csv')
Spécifiez les URI du compartiment S3 d'entrée et de sortie pour la tâche de transformation par lots comme indiqué ci-dessous :
# The location of the test dataset batch_input = 's3://{}/{}/test'.format(bucket, prefix) # The location to store the results of the batch transform job batch_output = 's3://{}/{}/batch-prediction'.format(bucket, prefix)
Créez un objet de transformateur en spécifiant le nombre minimal de paramètres : les paramètres
instance_count
etinstance_type
pour exécuter la tâche de transformation par lots, etoutput_path
pour enregistrer les données de prédiction comme indiqué ci-dessous :transformer = xgb_model.transformer( instance_count=1, instance_type='ml.m4.xlarge', output_path=batch_output )
Lancez la tâche de transformation par lots en exécutant la méthode
transform()
de l'objettransformer
comme illustré ci-dessous :transformer.transform( data=batch_input, data_type='S3Prefix', content_type='text/csv', split_type='Line' ) transformer.wait()
Lorsque la tâche de transformation par lots est terminée, SageMaker crée les données de
test.csv.out
prédiction enregistrées dans lebatch_output
chemin, qui doivent être au format suivant :s3://sagemaker-<region>-111122223333/demo-sagemaker-xgboost-adult-income-prediction/batch-prediction
. Exécutez la AWS CLI suivante pour télécharger les données de sortie de la tâche de transformation par lots :! aws s3 cp {batch_output} ./ --recursive
Cela doit créer le fichier
test.csv.out
dans le répertoire de travail actuel. Vous pouvez voir les valeurs flottantes qui sont prédites en fonction de la régression logistique de la tâche d'entraînement XGBoost.