Étape 5 : déployer le modèle sur Amazon EC2 - Amazon SageMaker

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évisions, déployez votre modèle sur Amazon EC2 à l'aide d'Amazon. SageMaker

Déployer le modèle dans les 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 utilisé en Créer et exécuter une tâche d'entraînement appelant la deploy méthode de l'xgb_modelestimateur. 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érialise les données d'entrée de différents formats ( NumPy tableau, liste, fichier ou tampon) dans une chaîne au format CSV. Nous l'utilisons parce que l'algorithme XGBoost accepte les fichiers d'entrée au format CSV.

Le deploy 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 plus d'informations, consultez la méthode de classe de déploiement de l'Estimator SageMaker générique dans le SDK Amazon SageMaker Python. Pour récupérer le nom du point de terminaison généré par la méthode deploy, 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 le nom de ce point de terminaison et enregistrez-le pour le réutiliser et effectuer des prédictions en temps réel ailleurs dans les instances de SageMaker Studio ou de SageMaker Notebook.

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) Utilisez SageMaker Predictor pour réutiliser le point de terminaison hébergé

Après avoir déployé le modèle sur un terminal, vous pouvez configurer un nouveau SageMaker prédicteur en associant le point de terminaison et en effectuant des prédictions en temps réel en continu sur tous les autres blocs-notes. L'exemple de code suivant montre comment utiliser la classe SageMaker Predictor pour configurer un nouvel objet prédicteur utilisant le 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 dans le SDK Amazon SageMaker Python.

(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 unique pour établir des prédictions sur un ensemble de données de test à l'aide de la transformation SageMaker par lots. Une fois l'entraînement de votre modèle terminé, vous pouvez étendre l'estimateur à un transformer objet, basé sur la classe SageMakerTransformer. Le transformateur par lots lit les données d'entrée à partir d'un compartiment S3 spécifié et fait des prédictions.

Pour exécuter une tâche de transformation par lots
  1. 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')
  2. 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)
  3. Créez un objet de transformateur en spécifiant le nombre minimal de paramètres : les paramètres instance_count et instance_type pour exécuter la tâche de transformation par lots, et output_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 )
  4. Lancez la tâche de transformation par lots en exécutant la méthode transform() de l'objet transformer comme illustré ci-dessous :

    transformer.transform( data=batch_input, data_type='S3Prefix', content_type='text/csv', split_type='Line' ) transformer.wait()
  5. Lorsque le travail de transformation par lots est terminé, SageMaker crée les données de test.csv.out prédiction enregistrées dans le batch_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.