

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.

# Préparation de votre modèle pour le déploiement
<a name="edge-getting-started-step2"></a>

Dans cette section, vous allez créer des objets AWS IoT clients et SageMaker IA, télécharger un modèle d'apprentissage automatique préentraîné, télécharger votre modèle dans votre compartiment Amazon S3, compiler votre modèle pour votre appareil cible avec SageMaker Neo et empaqueter votre modèle afin qu'il puisse être déployé avec l'agent Edge Manager.

1. **Importez des bibliothèques et créez des objets clients.**

   Ce didacticiel utilise le AWS SDK pour Python (Boto3) pour créer des clients afin d'interagir avec l' SageMaker IA, Amazon S3 et AWS IoT.

   Importez Boto3, spécifiez votre région et initialisez les objets clients dont vous avez besoin, comme illustré dans l'exemple suivant :

   ```
   import boto3
   import json
   import time
   
   AWS_REGION = 'us-west-2'# Specify your Region
   bucket = {{'bucket-name'}}
   
   sagemaker_client = boto3.client('sagemaker', region_name=AWS_REGION)
   iot_client = boto3.client('iot', region_name=AWS_REGION)
   ```

   Définissez les variables et attribuez-leur le rôle ARN que vous avez créé pour l' SageMaker IA et AWS IoT sous forme de chaînes :

   ```
   # Replace with the role ARN you created for SageMaker
   sagemaker_role_arn = "arn:aws:iam::{{<account>:role/*}}"
   
   # Replace with the role ARN you created for AWS IoT. 
   # Note: The name must start with 'SageMaker'
   iot_role_arn = "arn:aws:iam::{{<account>:role/SageMaker*}}"
   ```

1. **Entraînez un modèle de machine learning.**

   Consultez [Train a Model with Amazon SageMaker](https://docs.aws.amazon.com/sagemaker/latest/dg/how-it-works-training.html) pour plus d'informations sur la façon de former un modèle d'apprentissage automatique à l'aide de l' SageMaker IA. En variante, vous pouvez télécharger le modèle que vous avez entraîné localement, directement dans un compartiment d'URI Amazon S3.

   Si vous n'avez pas encore de modèle, vous pouvez utiliser un modèle pré-entraîné pour les étapes suivantes de ce didacticiel. Par exemple, vous pouvez enregistrer les modèles MobileNet V2 depuis le TensorFlow framework. MobileNet V2 est un modèle de classification d'images optimisé pour les applications mobiles. Pour plus d'informations sur la MobileNet V2, consultez le [MobileNet GitHub fichier README.](https://github.com/tensorflow/models/tree/master/research/slim/nets/mobilenet)

   Tapez ce qui suit dans votre bloc-notes Jupyter pour enregistrer le modèle V2 pré-entraîné MobileNet  :

   ```
   # Save the MobileNet V2 model to local storage
      import tensorflow as tf
      model = tf.keras.applications.MobileNetV2()
      model.save(“mobilenet_v2.h5”)
   ```
**Note**  
Si vous ne l'avez pas TensorFlow installé, vous pouvez le faire en exécutant `pip install tensorflow=2.4`
Utilisez TensorFlow la version 2.4 ou inférieure pour ce didacticiel.

   Le modèle sera enregistré dans le fichier `mobilenet_v2.h5`. Avant d'empaqueter le modèle, vous devez d'abord le compiler à l'aide de SageMaker Neo. Vérifiez si votre version de TensorFlow (ou un autre framework de votre choix) est actuellement prise en charge par SageMaker Neo. [Cadres, périphériques, systèmes et architectures pris en charge](neo-supported-devices-edge.md)

   SageMaker Neo nécessite que les modèles soient stockés sous forme de fichier TAR compressé. Ré-empaquetez-le en tant que fichier TAR compressé (\*.tar.gz) :

   ```
   # Package MobileNet V2 model into a TAR file 
      import tarfile
      
      tarfile_name='mobilenet-v2.tar.gz'
      
      with tarfile.open(tarfile_name, mode='w:gz') as archive:
          archive.add('mobilenet-v2.h5')
   ```

1. **Chargez votre modèle sur Amazon S3.**

   Une fois que vous avez un modèle de machine learning, stockez-le dans un compartiment Amazon S3. L'exemple suivant utilise une AWS CLI commande pour télécharger le modèle dans le compartiment Amazon S3 que vous avez créé précédemment dans un répertoire appelé *models*. Saisissez ce qui suit dans votre bloc-notes Jupyter :

   ```
   !aws s3 cp mobilenet-v2.tar.gz s3://{bucket}/models/
   ```

1. **Compilez votre modèle avec SageMaker Neo.**

   Compilez votre modèle d'apprentissage automatique avec SageMaker Neo pour un appareil de pointe. Vous devez connaître l'URI du compartiment Amazon S3 où vous avez stocké le modèle entraîné, le cadre de machine learning que vous avez utilisé pour entraîner votre modèle, la forme de l'entrée de votre modèle et votre dispositif cible.

   Pour le modèle MobileNet V2, utilisez ce qui suit :

   ```
   framework = 'tensorflow'
   target_device = 'jetson_nano'
   data_shape = '{"data":[1,3,224,224]}'
   ```

   SageMaker Neo nécessite une forme de saisie de modèle et un format de modèle spécifiques basés sur le cadre d'apprentissage profond que vous utilisez. Pour plus d’informations sur l’enregistrement de votre modèle, consultez [Quelles sont les formes de données d'entrée attendues par SageMaker Neo ?](neo-compilation-preparing-model.md#neo-job-compilation-expected-inputs). Pour plus d’informations sur les périphériques et les cadres pris en charge par Neo, consultez [Cadres, périphériques, systèmes et architectures pris en charge](neo-supported-devices-edge.md).

   Utilisez l'`CreateCompilationJob`API pour créer une tâche de compilation avec SageMaker Neo. Donnez un nom à la tâche de compilation, à l'ARN du rôle SageMaker AI, à l'URI Amazon S3 où votre modèle est stocké, à la forme d'entrée du modèle, au nom du framework, à l'URI Amazon S3 où vous souhaitez que SageMaker AI stocke votre modèle compilé et à votre périphérique périphérique cible.

   ```
   # Specify the path where your model is stored
   model_directory = 'models'
   s3_model_uri = 's3://{}/{}/{}'.format(bucket, model_directory, tarfile_name)
   
   # Store compiled model in S3 within the 'compiled-models' directory
   compilation_output_dir = 'compiled-models'
   s3_output_location = 's3://{}/{}/'.format(bucket, compilation_output_dir)
   
   # Give your compilation job a name
   compilation_job_name = 'getting-started-demo'
   
   sagemaker_client.create_compilation_job(CompilationJobName=compilation_job_name,
                                           RoleArn=sagemaker_role_arn,
                                           InputConfig={
                                               'S3Uri': s3_model_uri,
                                               'DataInputConfig': data_shape,
                                               'Framework' : framework.upper()},
                                           OutputConfig={
                                               'S3OutputLocation': s3_output_location,
                                               'TargetDevice': target_device},
                                           StoppingCondition={'MaxRuntimeInSeconds': 900})
   ```

1. **Empaquetez votre modèle compilé.**

   Les tâches d'empaquetage SageMaker utilisent des modèles compilés par Neo et apportent les modifications nécessaires pour déployer le modèle à l'aide du moteur d'inférence, l'agent Edge Manager. Pour empaqueter votre modèle, créez une tâche d'empaquetage Edge à l'aide de l'`create_edge_packaging`API ou de la console SageMaker AI.

   Vous devez fournir le nom que vous avez utilisé pour votre tâche de compilation Neo, un nom pour la tâche d'empaquetage, un ARN de rôle (voir la section [Configuration](edge-getting-started-step1.md)), un nom pour le modèle, une version de modèle et l'URI du compartiment Amazon S3 pour la sortie de la tâche d'empaquetage. Veuillez noter que les noms des tâches d’empaquetage Edge Manager sont sensibles à la casse. Voici un exemple de création d'une tâche d'empaquetage à l'aide de l'API.

   ```
   edge_packaging_name='edge-packaging-demo'
   model_name="sample-model"
   model_version="1.1"
   ```

   Définissez l'URI Amazon S3 où vous voulez stocker le modèle empaqueté.

   ```
   # Output directory where you want to store the output of the packaging job
   packaging_output_dir = 'packaged_models'
   packaging_s3_output = 's3://{}/{}'.format(bucket, packaging_output_dir)
   ```

   Utilisez `CreateEdgePackagingJob` pour empaqueter votre modèle néo-compilé. Indiquez un nom pour votre tâche d'empaquetage Edge et le nom que vous avez fourni pour votre tâche de compilation (dans cet exemple, il a été stocké dans la variable `compilation_job_name`). Fournissez également un nom pour votre modèle, une version pour votre modèle (ceci est utilisé pour vous aider à savoir quelle version du modèle vous utilisez) et l'URI S3 dans lequel vous souhaitez que SageMaker AI stocke le modèle packagé.

   ```
   sagemaker_client.create_edge_packaging_job(
                       EdgePackagingJobName=edge_packaging_name,
                       CompilationJobName=compilation_job_name,
                       RoleArn=sagemaker_role_arn,
                       ModelName=model_name,
                       ModelVersion=model_version,
                       OutputConfig={
                           "S3OutputLocation": packaging_s3_output
                           }
                       )
   ```