

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éploiement du modèle sur Amazon EC2
<a name="ex1-model-deployment"></a>

Pour obtenir des prévisions, déployez votre modèle sur Amazon EC2 à l'aide d'Amazon SageMaker AI.

**Topics**
+ [Déployer le modèle sur les services d'hébergement SageMaker AI](#ex1-deploy-model)
+ [(Facultatif) Utiliser SageMaker AI Predictor pour réutiliser le point de terminaison hébergé](#ex1-deploy-model-sdk-use-endpoint)
+ [(Facultatif) Faire une prédiction avec la transformation par lots](#ex1-batch-transform)

## Déployer le modèle sur les services d'hébergement SageMaker AI
<a name="ex1-deploy-model"></a>

Pour héberger un modèle via Amazon EC2 à l'aide d'Amazon SageMaker AI, déployez le modèle que vous avez utilisé en [Créer et exécuter une tâche d’entraînement](ex1-train-model.md#ex1-train-model-sdk) appelant la `deploy` 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é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' XGBoost algorithme 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 d'hébergement SageMaker AI 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'estimateur générique SageMaker AI](https://sagemaker.readthedocs.io/en/stable/estimators.html#sagemaker.estimator.Estimator.deploy) dans le SDK Amazon [ SageMaker Python](https://sagemaker.readthedocs.io/en/stable). 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 SageMaker AI 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 appareils en périphérie, consultez [Compiler et déployer des modèles avec Neo](https://docs.aws.amazon.com/sagemaker/latest/dg/neo.html).

## (Facultatif) Utiliser SageMaker AI Predictor pour réutiliser le point de terminaison hébergé
<a name="ex1-deploy-model-sdk-use-endpoint"></a>

Après avoir déployé le modèle sur un terminal, vous pouvez configurer un nouveau prédicteur d' SageMaker intelligence artificielle 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 AI Predictor pour configurer un nouvel objet prédicteur en 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 AI Predictor](https://sagemaker.readthedocs.io/en/stable/predictors.html#sagemaker.predictor.RealTimePredictor) dans le [SDK Amazon SageMaker Python](https://sagemaker.readthedocs.io/en/stable).

## (Facultatif) Faire une prédiction avec la transformation par lots
<a name="ex1-batch-transform"></a>

Au lieu d'héberger un terminal 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 par lots basée sur l' SageMaker IA. Une fois la formation de votre modèle terminée, vous pouvez étendre l'estimateur à un `transformer` objet, basé sur la classe [SageMaker AI Transformer](https://sagemaker.readthedocs.io/en/stable/api/inference/transformer.html). Le transformeur 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')
   ```

1. Spécifiez le compartiment S3 URIs 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)
   ```

1. 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
   )
   ```

1. 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()
   ```

1. Lorsque le travail de transformation par lots est terminé, SageMaker AI 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 ce qui suit AWS CLI 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 pourrez voir les valeurs flottantes prédites sur la base de la régression logistique du poste de XGBoost formation.