

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 et prédiction des modèles Autopilot
<a name="autopilot-deploy-models"></a>

Ce guide Amazon SageMaker Autopilot décrit les étapes relatives au déploiement du modèle, à la configuration de l'inférence en temps réel et à l'exécution de l'inférence avec des tâches par lots. 

Après avoir entraîné vos modèles Autopilot, vous pouvez les déployer pour obtenir des prédictions de deux manières différentes :

1. Utilisez [Déploiement de modèles pour l’inférence en temps réel](autopilot-deploy-models-realtime.md) pour configurer un point de terminaison et obtenir des prévisions de manière interactive. L’inférence en temps réel est idéale pour les charges de travail d’inférence où vous avez des exigences en temps réel, interactives et à faible latence.

1. Utilisez [Exécution des tâches d’inférence par lots](autopilot-deploy-models-batch.md) pour faire des prévisions en parallèle sur des lots d’observations sur l’ensemble d’un jeu de données. L'inférence par lots est une bonne option pour les grands jeux de données, ou si vous n'avez pas besoin d'une réponse immédiate à une demande de prédiction de modèle.

**Note**  
Pour éviter des frais inutiles, lorsque vous n’avez plus besoin des points de terminaison et des ressources créés lors du déploiement du modèle, vous pouvez les supprimer. Pour plus d'informations sur la tarification des instances par région, consultez [Amazon SageMaker Pricing](https://aws.amazon.com/sagemaker/pricing/).

# Déploiement de modèles pour l’inférence en temps réel
<a name="autopilot-deploy-models-realtime"></a>

L’inférence en temps réel est idéale pour les charges de travail d’inférence où vous avez des exigences en temps réel, interactives et à faible latence. Cette section montre comment vous pouvez utiliser l’inférence en temps réel pour obtenir des prévisions interactives à partir de votre modèle.

Plusieurs options s’offrent à vous pour déployer le modèle qui a produit la meilleure métrique de validation dans une expérience Autopilot. Par exemple, lorsque vous utilisez le pilote automatique dans SageMaker Studio Classic, vous pouvez déployer le modèle automatiquement ou manuellement. Vous pouvez également l'utiliser SageMaker APIs pour déployer manuellement un modèle de pilote automatique. 

Les onglets suivants présentent trois options pour déployer votre modèle. Ces instructions supposent que vous avez déjà créé un modèle dans Autopilot. Si vous ne disposez pas de modèle, consultez [Création de tâches de régression ou de classification pour les données tabulaires à l’aide de l’API AutoML](autopilot-automate-model-development-create-experiment.md). Pour voir des exemples de chaque option, ouvrez chaque onglet.

## Déploiement à l’aide de l’interface utilisateur (UI) d’Autopilot
<a name="autopilot-deploy-models-realtime-ui"></a>

L'interface utilisateur d'Autopilot contient des menus déroulants utiles, des boutons, des infobulles et bien plus encore, pour vous aider à parcours le déploiement du modèle. Vous pouvez déployer à l’aide de l’une des procédures suivantes : automatique ou manuelle.
+ **Déploiement automatique** : pour déployer automatiquement le meilleur modèle, d’une expérience Autopilot vers un point de terminaison

  1. [Créez un test](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-automate-model-development-create-experiment.html) dans SageMaker Studio Classic. 

  1. Basculez la valeur **Auto deploy** (Déploiement automatique) sur **Yes** (Oui).
**Note**  
**Le déploiement automatique échoue si le quota de ressources par défaut ou votre quota client pour les instances de point de terminaison dans une région est trop limité.** En mode d’optimisation des hyperparamètres (HPO), vous devez avoir au moins deux instances ml.m5.2xlarge. En mode d’assemblage, vous devez avoir au moins une instance ml.m5.12xlarge. Si vous rencontrez un échec lié aux quotas, vous pouvez [demander une augmentation de la limite de service](https://docs.aws.amazon.com/servicequotas/latest/userguide/request-quota-increase.html) pour les instances de point de terminaison SageMaker AI.
+ **Déploiement manuel** : pour déployer manuellement le meilleur modèle, d’une expérience Autopilot vers un point de terminaison

  1. [Créez un test](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-automate-model-development-create-experiment.html) dans SageMaker Studio Classic. 

  1. Basculez la valeur **Auto deploy** (Déploiement automatique) sur **No** (Non). 

  1. Sélectionnez le modèle que vous voulez déployer sous **Model name** (Nom du modèle).

  1. Sélectionnez le bouton orange **Deployment and advanced settings** (Déploiement et paramètres avancés) situé à droite du classement. Un nouvel onglet s'ouvre.

  1. Configurez le nom du point de terminaison, le type d’instance et d’autres informations facultatives.

  1.  Sélectionnez le bouton orange **Deploy model** (Déployer le modèle) pour déployer vers un point de terminaison.

  1. Vérifiez la progression du processus de création du point de terminaison en [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)accédant à la section Points de terminaison. Cette section se trouve dans le menu déroulant **Inference** (Inférence) du panneau de navigation. 

  1. Une fois que le statut du point de terminaison est passé de **Creating** à **InService**, comme indiqué ci-dessous, revenez à Studio Classic et appelez le point de terminaison.  
![\[SageMaker Console AI : page Endpoints pour créer un point de terminaison ou vérifier l'état du point de terminaison.\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/autopilot/autopilot-check-progress.PNG)

## Déployez en utilisant SageMaker APIs
<a name="autopilot-deploy-models-api"></a>

Vous pouvez également obtenir une inférence en temps réel en déployant votre modèle à l’aide d’**appels d’API**. Cette section présente les cinq étapes de ce processus à l'aide d'extraits de code AWS Command Line Interface (AWS CLI). 

Pour obtenir des exemples de code complets pour les AWS CLI commandes et le AWS SDK pour Python (boto3), ouvrez les onglets directement en suivant ces étapes.

1. **Obtenir les définitions des candidats**

   Obtenez les définitions des conteneurs candidats auprès de [InferenceContainers](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLCandidate.html#sagemaker-Type-AutoMLCandidate-InferenceContainers). Ces définitions de candidats sont utilisées pour créer un modèle d' SageMaker IA. 

   L'exemple suivant utilise l'[DescribeAutoMLJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJob.html)API pour obtenir les définitions du meilleur modèle candidat. Consultez la AWS CLI commande suivante à titre d'exemple.

   ```
   aws sagemaker describe-auto-ml-job --auto-ml-job-name <job-name> --region <region>
   ```

1. **Liste des candidats**

   L'exemple suivant utilise l'[ListCandidatesForAutoMLJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListCandidatesForAutoMLJob.html)API pour répertorier tous les candidats. La commande AWS CLI suivante constitue un exemple.

   ```
   aws sagemaker list-candidates-for-auto-ml-job --auto-ml-job-name <job-name> --region <region>
   ```

1. **Création d'un modèle d' SageMaker IA**

   Utilisez les définitions de conteneur des étapes précédentes pour créer un modèle d' SageMaker IA à l'aide de l'[CreateModel](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html)API. Consultez la AWS CLI commande suivante à titre d'exemple.

   ```
   aws sagemaker create-model --model-name '<your-custom-model-name>' \
                       --containers ['<container-definition1>, <container-definition2>, <container-definition3>]' \
                       --execution-role-arn '<execution-role-arn>' --region '<region>
   ```

1. **Créer une configuration de point de terminaison** 

   L'exemple suivant utilise l'[CreateEndpointConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpointConfig.html)API pour créer une configuration de point de terminaison. Consultez la AWS CLI commande suivante à titre d'exemple.

   ```
   aws sagemaker create-endpoint-config --endpoint-config-name '<your-custom-endpoint-config-name>' \
                       --production-variants '<list-of-production-variants>' \
                       --region '<region>'
   ```

1. **Créer le point de terminaison** 

   L' AWS CLI exemple suivant utilise l'[CreateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpoint.html)API pour créer le point de terminaison.

   ```
   aws sagemaker create-endpoint --endpoint-name '<your-custom-endpoint-name>' \
                       --endpoint-config-name '<endpoint-config-name-you-just-created>' \
                       --region '<region>'
   ```

   Vérifiez la progression du déploiement de votre terminal à l'aide de l'[DescribeEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeEndpoint.html)API. Consultez la AWS CLI commande suivante à titre d'exemple.

   ```
   aws sagemaker describe-endpoint —endpoint-name '<endpoint-name>' —region <region>
   ```

   Lorsque `EndpointStatus` devient `InService`, le point de terminaison est prêt à être utilisé pour l'inférence en temps réel.

1. **Appeler le point de terminaison** 

   La structure de commande suivante appelle le point de terminaison pour une inférence en temps réel.

   ```
   aws sagemaker invoke-endpoint --endpoint-name '<endpoint-name>' \ 
                     --region '<region>' --body '<your-data>' [--content-type] '<content-type>' <outfile>
   ```

Les onglets suivants contiennent des exemples de code complets pour déployer un modèle avec le kit AWS SDK pour Python (boto3) ou AWS CLI.

------
#### [ AWS SDK for Python (boto3) ]

1. **Obtenez les définitions des candidats** à l'aide de l'exemple de code suivant.

   ```
   import sagemaker 
   import boto3
   
   session = sagemaker.session.Session()
   
   sagemaker_client = boto3.client('sagemaker', region_name='us-west-2')
   job_name = 'test-auto-ml-job'
   
   describe_response = sm_client.describe_auto_ml_job(AutoMLJobName=job_name)
   # extract the best candidate definition from DescribeAutoMLJob response
   best_candidate = describe_response['BestCandidate']
   # extract the InferenceContainers definition from the caandidate definition
   inference_containers = best_candidate['InferenceContainers']
   ```

1. **Créez le modèle** à l'aide de l'exemple de code suivant.

   ```
   # Create Model
   model_name = 'test-model' 
   sagemaker_role = 'arn:aws:iam:444455556666:role/sagemaker-execution-role'
   create_model_response = sagemaker_client.create_model(
      ModelName = model_name,
      ExecutionRoleArn = sagemaker_role,
      Containers = inference_containers 
   )
   ```

1. **Créez la configuration du point de terminaison** à l’aide de l’exemple de code suivant.

   ```
   endpoint_config_name = 'test-endpoint-config'
                                                           
   instance_type = 'ml.m5.2xlarge' 
   # for all supported instance types, see 
   # https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ProductionVariant.html#sagemaker-Type-ProductionVariant-InstanceType    # Create endpoint config
   
   endpoint_config_response = sagemaker_client.create_endpoint_config(
      EndpointConfigName=endpoint_config_name, 
      ProductionVariants=[
          {
              "VariantName": "variant1",
              "ModelName": model_name, 
              "InstanceType": instance_type,
              "InitialInstanceCount": 1
          }
      ]
   )
   
   print(f"Created EndpointConfig: {endpoint_config_response['EndpointConfigArn']}")
   ```

1. **Créez le point de terminaison** et déployez le modèle à l’aide de l’exemple de code suivant.

   ```
   # create endpoint and deploy the model
   endpoint_name = 'test-endpoint'
   create_endpoint_response = sagemaker_client.create_endpoint(
                                               EndpointName=endpoint_name, 
                                               EndpointConfigName=endpoint_config_name)
   print(create_endpoint_response)
   ```

   **Vérifiez l’état de création du point de terminaison** à l’aide de l’exemple de code suivant.

   ```
   # describe endpoint creation status
   status = sagemaker_client.describe_endpoint(EndpointName=endpoint_name)["EndpointStatus"]
   ```

1. **Appelez le point de terminaison** pour une inférence en temps réel en utilisant la structure de commande suivante.

   ```
   # once endpoint status is InService, you can invoke the endpoint for inferencing
   if status == "InService":
     sm_runtime = boto3.Session().client('sagemaker-runtime')
     inference_result = sm_runtime.invoke_endpoint(EndpointName='test-endpoint', ContentType='text/csv', Body='1,2,3,4,class')
   ```

------
#### [ AWS Command Line Interface (AWS CLI) ]

1. **Obtenez les définitions des candidats** à l'aide de l'exemple de code suivant.

   ```
   aws sagemaker describe-auto-ml-job --auto-ml-job-name 'test-automl-job' --region us-west-2
   ```

1. **Créez le modèle** à l’aide de l’exemple de code suivant.

   ```
   aws sagemaker create-model --model-name 'test-sagemaker-model'
   --containers '[{
       "Image": "348316444620.dkr.ecr.us-west-2.amazonaws.com/sagemaker-sklearn-automl:2.5-1-cpu-py3", amzn-s3-demo-bucket1
       "ModelDataUrl": "s3://amzn-s3-demo-bucket/output/model.tar.gz",
       "Environment": {
           "AUTOML_SPARSE_ENCODE_RECORDIO_PROTOBUF": "1",
           "AUTOML_TRANSFORM_MODE": "feature-transform",
           "SAGEMAKER_DEFAULT_INVOCATIONS_ACCEPT": "application/x-recordio-protobuf",
           "SAGEMAKER_PROGRAM": "sagemaker_serve",
           "SAGEMAKER_SUBMIT_DIRECTORY": "/opt/ml/model/code"
       }
   }, {
       "Image": "348316444620.dkr.ecr.us-west-2.amazonaws.com/sagemaker-xgboost:1.3-1-cpu-py3",
       "ModelDataUrl": "s3://amzn-s3-demo-bucket/output/model.tar.gz",
       "Environment": {
           "MAX_CONTENT_LENGTH": "20971520",
           "SAGEMAKER_DEFAULT_INVOCATIONS_ACCEPT": "text/csv",
           "SAGEMAKER_INFERENCE_OUTPUT": "predicted_label", 
           "SAGEMAKER_INFERENCE_SUPPORTED": "predicted_label,probability,probabilities" 
       }
   }, {
       "Image": "348316444620.dkr.ecr.us-west-2.amazonaws.com/sagemaker-sklearn-automl:2.5-1-cpu-py3", aws-region
       "ModelDataUrl": "s3://amzn-s3-demo-bucket/output/model.tar.gz", 
       "Environment": { 
           "AUTOML_TRANSFORM_MODE": "inverse-label-transform", 
           "SAGEMAKER_DEFAULT_INVOCATIONS_ACCEPT": "text/csv", 
           "SAGEMAKER_INFERENCE_INPUT": "predicted_label", 
           "SAGEMAKER_INFERENCE_OUTPUT": "predicted_label", 
           "SAGEMAKER_INFERENCE_SUPPORTED": "predicted_label,probability,labels,probabilities", 
           "SAGEMAKER_PROGRAM": "sagemaker_serve", 
           "SAGEMAKER_SUBMIT_DIRECTORY": "/opt/ml/model/code"
       } 
   }]' \
   --execution-role-arn 'arn:aws:iam::1234567890:role/sagemaker-execution-role' \ 
   --region 'us-west-2'
   ```

   Pour plus de détails, consultez [Création d’un modèle](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sagemaker/create-model.html).

   La commande `create model` renvoie une réponse au format suivant.

   ```
   {
       "ModelArn": "arn:aws:sagemaker:us-west-2:1234567890:model/test-sagemaker-model"
   }
   ```

1. **Créez une configuration du point de terminaison** à l’aide de l’exemple de code suivant.

   ```
   aws sagemaker create-endpoint-config --endpoint-config-name 'test-endpoint-config' \
   --production-variants '[{"VariantName": "variant1", 
                           "ModelName": "test-sagemaker-model",
                           "InitialInstanceCount": 1,
                           "InstanceType": "ml.m5.2xlarge"
                          }]' \
   --region us-west-2
   ```

   La commande de configuration `create endpoint` renvoie une réponse au format suivant.

   ```
   {
       "EndpointConfigArn": "arn:aws:sagemaker:us-west-2:1234567890:endpoint-config/test-endpoint-config"
   }
   ```

1. **Créez un point de terminaison** à l’aide de l’exemple de code suivant.

   ```
   aws sagemaker create-endpoint --endpoint-name 'test-endpoint' \    
   --endpoint-config-name 'test-endpoint-config' \                 
   --region us-west-2
   ```

   La commande `create endpoint` renvoie une réponse au format suivant.

   ```
   {
       "EndpointArn": "arn:aws:sagemaker:us-west-2:1234567890:endpoint/test-endpoint"
   }
   ```

   Vérifiez la progression du déploiement du point de terminaison à l’aide de l’exemple de code CLI [describe-endpoint](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/describe-endpoint.html) suivant.

   ```
   aws sagemaker describe-endpoint --endpoint-name 'test-endpoint' --region us-west-2
   ```

   La précédente vérification de progression renvoie une réponse au format suivant.

   ```
   {
       "EndpointName": "test-endpoint",
       "EndpointArn": "arn:aws:sagemaker:us-west-2:1234567890:endpoint/test-endpoint",
       "EndpointConfigName": "test-endpoint-config",
       "EndpointStatus": "Creating",
       "CreationTime": 1660251167.595,
       "LastModifiedTime": 1660251167.595
   }
   ```

   Lorsque `EndpointStatus` devient `InService`, le point de terminaison est prêt à être utilisé dans l’inférence en temps réel.

1. **Appelez le point de terminaison** pour une inférence en temps réel en utilisant la structure de commande suivante.

   ```
   aws sagemaker-runtime invoke-endpoint --endpoint-name 'test-endpoint' \
   --region 'us-west-2' \
   --body '1,51,3.5,1.4,0.2' \
   --content-type 'text/csv' \
   '/tmp/inference_output'
   ```

   Pour plus d’options, consultez [Invocation d’un point de terminaison](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sagemaker-runtime/invoke-endpoint.html).

------

## Déployez des modèles à partir de différents comptes
<a name="autopilot-deploy-models-realtime-across-accounts"></a>

Vous pouvez déployer un modèle Autopilot à partir d’un compte différent du compte d’origine dans lequel le modèle a été généré. Pour implémenter le déploiement de modèles multicomptes, cette section explique comment procéder comme suit :   Accordez l’autorisation d’assumer le rôle au compte à partir duquel vous souhaitez effectuer le déploiement (le compte générateur).    Appelez `DescribeAutoMLJob` depuis le compte de déploiement pour obtenir des informations sur le modèle.    Accordez des droits d’accès aux artefacts du modèle à partir du compte générateur.    

1. **Accorder l’autorisation au compte de déploiement** 

   Pour assumer le rôle dans le compte générateur, vous devez accorder l’autorisation au compte à partir duquel vous souhaitez effectuer le déploiement. Cela permet au compte de déploiement de décrire les tâches Autopilot dans le compte générateur.

   L’exemple suivant utilise un compte générateur avec une entité `sagemaker-role` de confiance. L’exemple montre comment autoriser un compte de déploiement portant l’ID 111122223333 à assumer le rôle du compte générateur.

   ```
   "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": [
                       "sagemaker.amazonaws.com"
                   ],
                   "AWS": [ "111122223333"]
               },
               "Action": "sts:AssumeRole"
           }
   ```

   Le nouveau compte portant l’ID 111122223333 peut désormais assumer le rôle du compte générateur. 

   Appelez ensuite l’API `DescribeAutoMLJob` à partir du compte de déploiement pour obtenir une description de la tâche créée par le compte générateur. 

   L’exemple de code suivant décrit le modèle issu du compte de déploiement.

   ```
   import sagemaker 
   import boto3
   session = sagemaker.session.Session()
   
   sts_client = boto3.client('sts')
   sts_client.assume_role
   
   role = 'arn:aws:iam::111122223333:role/sagemaker-role'
   role_session_name = "role-session-name"
   _assumed_role = sts_client.assume_role(RoleArn=role, RoleSessionName=role_session_name)
   
   credentials = _assumed_role["Credentials"]
   access_key = credentials["AccessKeyId"]
   secret_key = credentials["SecretAccessKey"]
   session_token = credentials["SessionToken"]
   
   session = boto3.session.Session()
           
   sm_client = session.client('sagemaker', region_name='us-west-2', 
                              aws_access_key_id=access_key,
                               aws_secret_access_key=secret_key,
                               aws_session_token=session_token)
   
   # now you can call describe automl job created in account A 
   
   job_name = "test-job"
   response= sm_client.describe_auto_ml_job(AutoMLJobName=job_name)
   ```

1. **Accordez l’accès au compte de déploiement** aux artefacts du modèle du compte de génération.

   Le compte de déploiement a simplement besoin d’accéder aux artefacts du modèle dans le compte de génération pour le déployer. Ils se trouvent dans le [S3 OutputPath](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLOutputDataConfig.html#sagemaker-Type-AutoMLOutputDataConfig-S3OutputPath) qui a été spécifié dans l'appel d'`CreateAutoMLJob`API d'origine lors de la génération du modèle.

   Pour donner au compte de déploiement l’accès aux artefacts du modèle, choisissez l’une des options suivantes :

   1. [Donnez accès](https://aws.amazon.com/premiumsupport/knowledge-center/cross-account-access-s3/) au `ModelDataUrl` à partir du compte générateur vers le compte de déploiement.

      Ensuite, vous devez autoriser le compte de déploiement à assumer le rôle. Suivez les [étapes d’inférence en temps réel](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-deploy-models.html#autopilot-deploy-models-realtime) pour le déploiement. 

   1. [Copiez les artefacts du modèle](https://aws.amazon.com/premiumsupport/knowledge-center/copy-s3-objects-account/) depuis le [S3](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLOutputDataConfig.html#sagemaker-Type-AutoMLOutputDataConfig-S3OutputPath) d'origine du compte générateur OutputPath vers le compte générateur.

      Pour autoriser l’accès aux artefacts du modèle, vous devez définir un modèle `best_candidate` et réattribuer des conteneurs de modèle au nouveau compte. 

      L’exemple suivant illustre la façon de définir un modèle `best_candidate` et de réaffecter le `ModelDataUrl`.

      ```
      best_candidate = automl.describe_auto_ml_job()['BestCandidate']
      
      # reassigning ModelDataUrl for best_candidate containers below
      new_model_locations = ['new-container-1-ModelDataUrl', 'new-container-2-ModelDataUrl', 'new-container-3-ModelDataUrl']
      new_model_locations_index = 0
      for container in best_candidate['InferenceContainers']:
          container['ModelDataUrl'] = new_model_locations[new_model_locations_index++]
      ```

      Après cette attribution de conteneurs, suivez les étapes décrites dans [Déployez en utilisant SageMaker APIs](#autopilot-deploy-models-api) pour le déploiement.

Pour créer des données utiles dans l’inférence en temps réel, consultez l’exemple du bloc-notes pour [définir les données utiles de test](https://aws.amazon.com/getting-started/hands-on/machine-learning-tutorial-automatically-create-models). Pour créer les données utiles à partir d’un fichier CSV et invoquer un point de terminaison, consultez la section **Prédire avec votre modèle** dans [Créer automatiquement un modèle de machine learning](https://aws.amazon.com/getting-started/hands-on/create-machine-learning-model-automatically-sagemaker-autopilot/#autopilot-cr-room).

# Exécution des tâches d’inférence par lots
<a name="autopilot-deploy-models-batch"></a>

L’inférence par lots, également appelée inférence hors ligne, génère des prédictions modélisées sur un lot d’observations. L'inférence par lots est une bonne option pour les grands jeux de données, ou si vous n'avez pas besoin d'une réponse immédiate à une demande de prédiction de modèle. En revanche, l’inférence en ligne ([inférence en temps réel](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-deploy-models.html#autopilot-deploy-models-realtime)) génère des prédictions en temps réel. Vous pouvez effectuer des inférences par lots à partir d'un modèle de pilote automatique à l'aide du [SDK SageMaker Python](https://sagemaker.readthedocs.io/en/stable/), de l'interface utilisateur (UI) du pilote automatique, du SDK [AWS pour Python (boto3) ou du ()](https://aws.amazon.com/sdk-for-python/). AWS Command Line Interface [AWS CLI](https://docs.aws.amazon.com/cli/)

Les onglets suivants présentent trois options pour déployer votre modèle : Utilisation APIs, interface utilisateur du pilote automatique ou utilisation pour le déploiement APIs à partir de différents comptes. Ces instructions supposent que vous avez déjà créé un modèle dans Autopilot. Si vous ne disposez pas de modèle, consultez [Création de tâches de régression ou de classification pour les données tabulaires à l’aide de l’API AutoML](autopilot-automate-model-development-create-experiment.md). Pour voir des exemples de chaque option, ouvrez chaque onglet.

## Déployer un modèle à l’aide de l’interface utilisateur d’Autopilot
<a name="autopilot-deploy-models-batch-ui"></a>

L'interface utilisateur d'Autopilot contient des menus déroulants utiles, des boutons, des infobulles et bien plus encore, pour vous aider à parcours le déploiement du modèle.

Les étapes suivantes montrent comment déployer un modèle à partir d’une expérience Autopilot pour des prédictions par lots. 

1. Connectez-vous à [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)et sélectionnez **Studio** dans le volet de navigation.

1. Dans le panneau de navigation de gauche, choisissez **Studio**.

1. Sous **Commencer**, sélectionnez le domaine dans lequel vous souhaitez lancer l’application Studio. Si votre profil utilisateur n’appartient qu’à un seul domaine, l’option permettant de sélectionner un domaine ne s’affiche pas.

1. Sélectionnez le profil utilisateur pour lequel vous souhaitez lancer l’application Studio Classic. S’il n’existe aucun profil utilisateur dans le domaine, choisissez **Créer un profil utilisateur**. Pour plus d’informations, consultez [Ajout de profils utilisateur](https://docs.aws.amazon.com/sagemaker/latest/dg/domain-user-profile-add.html).

1. Choisissez **Launch Studio** (Lancer Studio). Si le profil utilisateur appartient à un espace partagé, choisissez **Open Spaces**. 

1. Lorsque la console SageMaker Studio Classic s'ouvre, cliquez sur le bouton **Launch SageMaker Studio**.

1. Sélectionnez **AutoML** dans le panneau de navigation de gauche.

1. Sous **Nom**, sélectionnez l’expérience Autopilot correspondant au modèle que vous souhaitez déployer. Ceci ouvre un nouvel onglet **AUTOPILOT JOB** (TÂCHE AUTOPILOT).

1. Dans la section **Model name** (Nom du modèle), sélectionnez le modèle que vous voulez déployer.

1. Choisissez **Deploy model (Déployer le modèle)**. Un nouvel onglet s'ouvre.

1. En haut de la page, choisissez **Make batch predictions** (Créer des prédictions par lots).

1. Pour **Configuration des tâches de transformation par lots**, renseignez **Type d’instance**, **Nombre d’instances** et d’autres informations facultatives.

1. Dans la section **Configuration des données d’entrée**, ouvrez le menu déroulant. 

   1. Pour le **type de données S3**, choisissez **ManifestFile**ou **S3Prefix**.

   1. **Pour le **type Split**, choisissez **Line**, **Recordio **TFRecord****ou None.**

   1. Pour **Compression**, choisissez **Gzip** ou **None** (Aucun). 

1. Pour **Emplacement S3**, entrez l’emplacement du compartiment Amazon S3 contenant les données d’entrée et d’autres informations facultatives.

1. Sous **Output data configuration** (Configuration des données de sortie), entrez le compartiment S3 pour les données de sortie et choisissez comment [assembler la sortie](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformOutput.html#sagemaker-Type-TransformOutput-AssembleWith) de votre tâche. 

   1. Pour **Additional configuration (optional)** (Configuration supplémentaire (facultative), vous pouvez saisir un type MIME et une clé de cryptage S3 (**S3 encryption key**).

1. Pour le **filtrage des entrées/sorties et les jointures de données (facultatif)**, vous entrez une JSONpath expression pour filtrer vos données d'entrée, vous joignez les données de la source d'entrée à vos données de sortie et vous entrez une JSONpath expression pour filtrer vos données de sortie. 

   1. Pour des exemples pour chaque type de filtre, consultez l'[DataProcessing API](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DataProcessing.html#sagemaker-Type-DataProcessing-InputFilter).

1. Pour effectuer des prédictions par lots sur votre jeu de données d’entrée, sélectionnez **Créer une tâche de transformation par lots**. Un nouvel onglet **Tâches de transformation par lots** s’affiche.

1. Dans l’onglet **Tâches de transformation par lots**, recherchez le nom de votre tâche dans la section **État**. Ensuite, vérifiez l’état d’avancement de la tâche. 

## Déployez en utilisant SageMaker APIs
<a name="autopilot-deploy-models-batch-steps"></a>

Pour utiliser le SageMaker APIs pour l'inférence par lots, il faut suivre trois étapes :

1. **Obtenir les définitions des candidats** 

   Les définitions des candidats provenant de [InferenceContainers](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLCandidate.html#sagemaker-Type-AutoMLCandidate-InferenceContainers)sont utilisées pour créer un modèle d' SageMaker IA. 

   L'exemple suivant montre comment utiliser l'[DescribeAutoMLJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJob.html)API pour obtenir des définitions de candidats pour le meilleur modèle candidat. Consultez la AWS CLI commande suivante à titre d'exemple.

   ```
   aws sagemaker describe-auto-ml-job --auto-ml-job-name <job-name> --region <region>
   ```

   Utilisez l'[ListCandidatesForAutoMLJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListCandidatesForAutoMLJob.html)API pour répertorier tous les candidats. La commande AWS CLI suivante constitue un exemple.

   ```
   aws sagemaker list-candidates-for-auto-ml-job --auto-ml-job-name <job-name> --region <region>
   ```

1. **Création d'un modèle d' SageMaker IA**

   Pour créer un modèle d' SageMaker IA à l'aide de l'[CreateModel](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html)API, utilisez les définitions de conteneur des étapes précédentes. La commande AWS CLI suivante constitue un exemple.

   ```
   aws sagemaker create-model --model-name '<your-custom-model-name>' \
                       --containers ['<container-definition1>, <container-definition2>, <container-definition3>]' \
                       --execution-role-arn '<execution-role-arn>' --region '<region>
   ```

1. **Créez une tâche de transformation SageMaker basée sur l'IA** 

   L'exemple suivant crée une tâche de transformation basée sur l' SageMaker IA avec l'[CreateTransformJob](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/create-transform-job.html)API. Consultez la AWS CLI commande suivante à titre d'exemple.

   ```
   aws sagemaker create-transform-job --transform-job-name '<your-custom-transform-job-name>' --model-name '<your-custom-model-name-from-last-step>'\
   --transform-input '{
           "DataSource": {
               "S3DataSource": {
                   "S3DataType": "S3Prefix", 
                   "S3Uri": "<your-input-data>" 
               }
           },
           "ContentType": "text/csv",
           "SplitType": "Line"
       }'\
   --transform-output '{
           "S3OutputPath": "<your-output-path>",
           "AssembleWith": "Line" 
       }'\
   --transform-resources '{
           "InstanceType": "<instance-type>", 
           "InstanceCount": 1
       }' --region '<region>'
   ```

Vérifiez la progression de votre travail de transformation à l'aide de l'[DescribeTransformJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeTransformJob.html)API. Consultez la AWS CLI commande suivante à titre d'exemple.

```
aws sagemaker describe-transform-job --transform-job-name '<your-custom-transform-job-name>' --region <region>
```

Une fois le travail terminé, le résultat prévu sera disponible dans `<your-output-path>`. 

Le nom du fichier de sortie possède le format suivant : `<input_data_file_name>.out`. Par exemple, si votre fichier d'entrée est `text_x.csv`, le nom de sortie sera `text_x.csv.out`.

Les onglets suivants présentent des exemples de code pour le SDK SageMaker Python, le AWS SDK pour Python (boto3) et le. AWS CLI

------
#### [ SageMaker Python SDK ]

L'exemple suivant utilise le **[SDK SageMaker Python](https://sagemaker.readthedocs.io/en/stable/overview.html)** pour effectuer des prédictions par lots.

```
from sagemaker import AutoML

sagemaker_session= sagemaker.session.Session()

job_name = 'test-auto-ml-job' # your autopilot job name
automl = AutoML.attach(auto_ml_job_name=job_name)
output_path = 's3://test-auto-ml-job/output'
input_data = 's3://test-auto-ml-job/test_X.csv'

# call DescribeAutoMLJob API to get the best candidate definition
best_candidate = automl.describe_auto_ml_job()['BestCandidate']
best_candidate_name = best_candidate['CandidateName']

# create model
model = automl.create_model(name=best_candidate_name, 
               candidate=best_candidate)

# create transformer
transformer = model.transformer(instance_count=1, 
    instance_type='ml.m5.2xlarge',
    assemble_with='Line',
    output_path=output_path)

# do batch transform
transformer.transform(data=input_data,
                      split_type='Line',
                       content_type='text/csv',
                       wait=True)
```

------
#### [ AWS SDK for Python (boto3) ]

 L'exemple suivant utilise le **kit AWS SDK pour Python (boto3)** pour effectuer des prédictions par lots.

```
import sagemaker 
import boto3

session = sagemaker.session.Session()

sm_client = boto3.client('sagemaker', region_name='us-west-2')
role = 'arn:aws:iam::1234567890:role/sagemaker-execution-role'
output_path = 's3://test-auto-ml-job/output'
input_data = 's3://test-auto-ml-job/test_X.csv'

best_candidate = sm_client.describe_auto_ml_job(AutoMLJobName=job_name)['BestCandidate']
best_candidate_containers = best_candidate['InferenceContainers']
best_candidate_name = best_candidate['CandidateName']

# create model
reponse = sm_client.create_model(
    ModelName = best_candidate_name,
    ExecutionRoleArn = role,
    Containers = best_candidate_containers 
)

# Lauch Transform Job
response = sm_client.create_transform_job(
    TransformJobName=f'{best_candidate_name}-transform-job',
    ModelName=model_name,
    TransformInput={
        'DataSource': {
            'S3DataSource': {
                'S3DataType': 'S3Prefix',
                'S3Uri': input_data
            }
        },
        'ContentType': "text/csv",
        'SplitType': 'Line'
    },
    TransformOutput={
        'S3OutputPath': output_path,
        'AssembleWith': 'Line',
    },
    TransformResources={
        'InstanceType': 'ml.m5.2xlarge',
        'InstanceCount': 1,
    },
)
```

La tâche d'inférence par lots renvoie une réponse au format suivant.

```
{'TransformJobArn': 'arn:aws:sagemaker:us-west-2:1234567890:transform-job/test-transform-job',
 'ResponseMetadata': {'RequestId': '659f97fc-28c4-440b-b957-a49733f7c2f2',
  'HTTPStatusCode': 200,
  'HTTPHeaders': {'x-amzn-requestid': '659f97fc-28c4-440b-b957-a49733f7c2f2',
   'content-type': 'application/x-amz-json-1.1',
   'content-length': '96',
   'date': 'Thu, 11 Aug 2022 22:23:49 GMT'},
  'RetryAttempts': 0}}
```

------
#### [ AWS Command Line Interface (AWS CLI) ]

1. **Obtenez les définitions des candidats** à l’aide de l’exemple de code suivant.

   ```
   aws sagemaker describe-auto-ml-job --auto-ml-job-name 'test-automl-job' --region us-west-2
   ```

1. **Créez le modèle** à l'aide de l'exemple de code suivant.

   ```
   aws sagemaker create-model --model-name 'test-sagemaker-model'
   --containers '[{
       "Image": "348316444620.dkr.ecr.us-west-2.amazonaws.com/sagemaker-sklearn-automl:2.5-1-cpu-py3",
       "ModelDataUrl": "s3://amzn-s3-demo-bucket/out/test-job1/data-processor-models/test-job1-dpp0-1-e569ff7ad77f4e55a7e549a/output/model.tar.gz",
       "Environment": {
           "AUTOML_SPARSE_ENCODE_RECORDIO_PROTOBUF": "1",
           "AUTOML_TRANSFORM_MODE": "feature-transform",
           "SAGEMAKER_DEFAULT_INVOCATIONS_ACCEPT": "application/x-recordio-protobuf",
           "SAGEMAKER_PROGRAM": "sagemaker_serve",
           "SAGEMAKER_SUBMIT_DIRECTORY": "/opt/ml/model/code"
       }
   }, {
       "Image": "348316444620.dkr.ecr.us-west-2.amazonaws.com/sagemaker-xgboost:1.3-1-cpu-py3",
       "ModelDataUrl": "s3://amzn-s3-demo-bucket/out/test-job1/tuning/flicdf10v2-dpp0-xgb/test-job1E9-244-7490a1c0/output/model.tar.gz",
       "Environment": {
           "MAX_CONTENT_LENGTH": "20971520",
           "SAGEMAKER_DEFAULT_INVOCATIONS_ACCEPT": "text/csv",
           "SAGEMAKER_INFERENCE_OUTPUT": "predicted_label", 
           "SAGEMAKER_INFERENCE_SUPPORTED": "predicted_label,probability,probabilities" 
       }
   }, {
       "Image": "348316444620.dkr.ecr.us-west-2.amazonaws.com/sagemaker-sklearn-automl:2.5-1-cpu-py3", 
       "ModelDataUrl": "s3://amzn-s3-demo-bucket/out/test-job1/data-processor-models/test-job1-dpp0-1-e569ff7ad77f4e55a7e549a/output/model.tar.gz", 
       "Environment": { 
           "AUTOML_TRANSFORM_MODE": "inverse-label-transform", 
           "SAGEMAKER_DEFAULT_INVOCATIONS_ACCEPT": "text/csv", 
           "SAGEMAKER_INFERENCE_INPUT": "predicted_label", 
           "SAGEMAKER_INFERENCE_OUTPUT": "predicted_label", 
           "SAGEMAKER_INFERENCE_SUPPORTED": "predicted_label,probability,labels,probabilities", 
           "SAGEMAKER_PROGRAM": "sagemaker_serve", 
           "SAGEMAKER_SUBMIT_DIRECTORY": "/opt/ml/model/code" 
       } 
   }]' \
   --execution-role-arn 'arn:aws:iam::1234567890:role/sagemaker-execution-role' \
   --region 'us-west-2'
   ```

1. **Créez la tâche de transformation** à l’aide de l’exemple de code suivant.

   ```
   aws sagemaker create-transform-job --transform-job-name 'test-tranform-job'\
    --model-name 'test-sagemaker-model'\
   --transform-input '{
           "DataSource": {
               "S3DataSource": {
                   "S3DataType": "S3Prefix",
                   "S3Uri": "s3://amzn-s3-demo-bucket/data.csv"
               }
           },
           "ContentType": "text/csv",
           "SplitType": "Line"
       }'\
   --transform-output '{
           "S3OutputPath": "s3://amzn-s3-demo-bucket/output/",
           "AssembleWith": "Line"
       }'\
   --transform-resources '{
           "InstanceType": "ml.m5.2xlarge",
           "InstanceCount": 1
       }'\
   --region 'us-west-2'
   ```

1. **Vérifiez la progression de la tâche de transformation** à l’aide de l’exemple de code suivant. 

   ```
   aws sagemaker describe-transform-job --transform-job-name  'test-tranform-job' --region us-west-2
   ```

   Voici la réponse de la tâche de transformation.

   ```
   {
       "TransformJobName": "test-tranform-job",
       "TransformJobArn": "arn:aws:sagemaker:us-west-2:1234567890:transform-job/test-tranform-job",
       "TransformJobStatus": "InProgress",
       "ModelName": "test-model",
       "TransformInput": {
           "DataSource": {
               "S3DataSource": {
                   "S3DataType": "S3Prefix",
                   "S3Uri": "s3://amzn-s3-demo-bucket/data.csv"
               }
           },
           "ContentType": "text/csv",
           "CompressionType": "None",
           "SplitType": "Line"
       },
       "TransformOutput": {
           "S3OutputPath": "s3://amzn-s3-demo-bucket/output/",
           "AssembleWith": "Line",
           "KmsKeyId": ""
       },
       "TransformResources": {
           "InstanceType": "ml.m5.2xlarge",
           "InstanceCount": 1
       },
       "CreationTime": 1662495635.679,
       "TransformStartTime": 1662495847.496,
       "DataProcessing": {
           "InputFilter": "$",
           "OutputFilter": "$",
           "JoinSource": "None"
       }
   }
   ```

   Une fois les modifications `TransformJobStatus` apportées à `Completed`, vous pouvez vérifier le résultat de l'inférence dans le `S3OutputPath`.

------

## Déployez des modèles à partir de différents comptes
<a name="autopilot-deploy-models-batch-across-accounts"></a>

Pour créer une tâche d’inférence par lots dans un compte différent de celui dans lequel le modèle a été généré, suivez les instructions figurant dans [Déployez des modèles à partir de différents comptes](autopilot-deploy-models-realtime.md#autopilot-deploy-models-realtime-across-accounts). Vous pouvez ensuite créer des modèles et transformer des tâches en suivant les [Déployez en utilisant SageMaker APIs](#autopilot-deploy-models-batch-steps).