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éparez votre modèle pour le déploiement
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.
-
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*
" -
Entraînez un modèle de machine learning.
Consultez Train a Model with Amazon SageMaker 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.
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 chargeSageMaker 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')
-
-
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/
-
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 de plus amples informations sur l'enregistrement de votre modèle, veuillez consulter Quelles sont les formes de données d'entrée attendues par SageMaker Neo ?. Pour de plus amples informations sur les périphériques et les cadres pris en charge par Neo, veuillez consulter Cadres, périphériques, systèmes et architectures pris en charge.
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})
-
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 avec le 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), 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 variablecompilation_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 } )