Exécuter l'inférence de Machine Learning - AWS IoT Greengrass

AWS IoT Greengrass Version 1 est entré dans la phase de durée de vie prolongée le 30 juin 2023. Pour plus d'informations, consultez la politique de AWS IoT Greengrass V1 maintenance. Après cette date, AWS IoT Greengrass V1 ne publiera pas de mises à jour fournissant des fonctionnalités, des améliorations, des corrections de bogues ou des correctifs de sécurité. Les appareils qui fonctionnent AWS IoT Greengrass V1 sous tension ne seront pas perturbés et continueront à fonctionner et à se connecter au cloud. Nous vous recommandons vivement de migrer vers AWS IoT Greengrass Version 2, qui ajoute de nouvelles fonctionnalités importantes et prend en charge des plateformes supplémentaires.

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.

Exécuter l'inférence de Machine Learning

Cette fonction est disponible pourAWS IoT GreengrassCore v1.6 ou une version ultérieure.

AWS IoT Greengrass vous permet d'exécuter l'inférence de Machine Learning en périphérie sur des données générées localement à l'aide de modèles formés dans le cloud. Vous bénéficiez d'une faible latence et de coûts d'inférence locale réduits, tout en profitant des avantages de la puissance du cloud computing pour les modèles de formation et les traitements complexes.

Pour commencer à exécuter l'inférence locale, consultez Configuration de l'inférence Machine Learning à l'aide d'AWS Management Console.

Fonctionnement de l'inférence de Machine Learning AWS IoT Greengrass

Vous pouvez former vos modèles d'inférence n'importe où, les déployer localement commeressources de Machine Learningdans un groupe Greengrass, puis y accéder à partir des fonctions Lambda Greengrass. Vous pouvez par exemple créer et former des modèles d'apprentissage profond dansSageMakeret déployez-les sur votre noyau Greengrass. Vos fonctions Lambda peuvent ensuite utiliser les modèles locaux pour exécuter l'inférence sur des appareils connectés et renvoyer de nouvelles données d'entraînement vers le cloud.

Le schéma suivant illustre le flux de travail de l'inférence de Machine Learning AWS IoT Greengrass.

Composants du flux de travail de Machine Learning et du flux d'informations entre le périphérique principal,AWS IoT Greengrassmodèles formés dans le cloud et.

L'inférence de Machine Learning AWS IoT Greengrass simplifie chaque étape du flux de travail de Machine Learning, y compris :

  • La création et le déploiement de prototypes d'infrastructure de Machine Learning.

  • L'accès aux modèles formés dans le cloud et leur déploiement dans les appareils Greengrass principaux.

  • La création d'applications d'inférence pouvant accéder à des accélérateurs matériels (tels que des GPU et des FPGA) en tant que ressources locales.

Ressource de Machine Learning

Les ressources de Machine Learning représentent des modèles d'inférence formés dans le cloud et déployés dans unAWS IoT Greengrassnoyau. Pour déployer des ressources de Machine Learning, commencez par ajouter les ressources à un groupe Greengrass, puis définissez la méthode d'accès des fonctions Lambda à ces ressources. Pendant le déploiement de groupe,AWS IoT Greengrassrécupère les packages de modèles source à partir du cloud et les extrait dans des répertoires à l'intérieur de l'espace de noms d'exécution Lambda. Les fonctions Lambda Greengrass utilisent ensuite les modèles déployés localement pour exécuter l'inférence.

Pour mettre à jour un modèle déployé localement, commencez par mettre à jour le modèle source (dans le cloud) qui correspond à la ressource de Machine Learning, puis déployez le groupe. Pendant le déploiement, AWS IoT Greengrass vérifie si la source a fait l'objet de modifications. Si des modifications sont détectées, AWS IoT Greengrass met à jour le modèle local.

Sources de modèles prises en charge

AWS IoT Greengrassappuis SageMaker et des sources de modèles Amazon S3 pour les ressources de Machine Learning.

Les exigences suivantes s'appliquent aux sources de modèles :

  • Godets S3 qui stockent votre SageMaker et les sources du modèle Amazon S3 ne doivent pas être chiffrées à l'aide de SSE-C. Pour les compartiments qui utilisent le chiffrement côté serveur,AWS IoT GreengrassL'inférence de Machine Learning prend actuellement en charge les options de chiffrement SSE-S3 ou SSE-KMS uniquement. Pour de plus amples informations sur les options de chiffrement côté serveur, veuillez consulter.Protection des données à l'aide d'un chiffrement côté serveurdans leManuel de l'utilisateur Amazon Simple Storage Service.

  • Les noms des compartiments S3 qui stockent votre SageMaker et les sources du modèle Amazon S3 ne doivent pas contenir de points (.). Pour de plus amples informations, veuillez consulter la règle d'utilisation des compartiments d'hébergement virtuel avec SSL dansRègles relatives à l'attribution des noms de compartimentsdans leManuel de l'utilisateur Amazon Simple Storage Service.

  • Niveau de serviceRégion AWSl'assistance doit être disponible pour les deuxAWS IoT GreengrassetSageMaker. Actuellement,AWS IoT Greengrassappuis SageMaker modèles dans les régions suivantes :

    • US East (Ohio)

    • USA Est (Virginie du Nord)

    • USA Ouest (Oregon)

    • Asie-Pacifique (Mumbai)

    • Asie-Pacifique (Séoul)

    • Asie-Pacifique (Singapour)

    • Asie-Pacifique (Sydney)

    • Asie-Pacifique (Tokyo)

    • Europe (Francfort)

    • Europe (Irlande)

    • Europe (Londres)

  • AWS IoT Greengrass doit disposer de l'autorisation read pour la source de modèle, comme décrit dans les sections suivantes.

SageMaker

AWS IoT Greengrassprend en charge les modèles enregistrés sous SageMaker tâches d'entraînement. SageMaker est un service de Machine Learning entièrement géré qui vous permet de créer et de former des modèles à l'aide d'algorithmes intégrés ou personnalisés. Pour de plus amples informations, veuillez consulterQu'est-ce que SageMaker ?dans leManuel du développeur SageMaker.

Si vous avez configuré votre SageMaker Environment bycréer un compartimentdont le nom contientsagemaker, puisAWS IoT Greengrassdispose d'une autorisation suffisante pour accéder à votre SageMaker tâches d'entraînement. La stratégie gérée AWSGreengrassResourceAccessRolePolicy autorise l'accès aux compartiments dont le nom contient la chaîne sagemaker. Cette stratégie est attachée au rôle de service Greengrass.

Dans le cas contraire, vous devez accorder à AWS IoT Greengrass l'autorisation read pour le compartiment dans lequel votre tâche de formation est stockée. Pour ce faire, intégrez la stratégie en ligne suivante dans le rôle de service. Vous pouvez répertorier plusieurs ARN de compartiment.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::my-bucket-name" ] } ] }
Amazon S3

AWS IoT Greengrassprend en charge les modèles stockés dans Amazon S3 soustar.gzou.zipfichiers suivants.

Pour activerAWS IoT GreengrassPour accéder aux modèles stockés dans des compartiments Amazon S3, vous devez accorderAWS IoT Greengrass readautorisation d'accès aux compartiments en effectuantundes éléments suivants :

  • Stockez votre modèle dans un compartiment dont le nom contient greengrass.

    La stratégie gérée AWSGreengrassResourceAccessRolePolicy autorise l'accès aux compartiments dont le nom contient la chaîne greengrass. Cette stratégie est attachée au rôle de service Greengrass.

     

  • Intégrez une stratégie en ligne dans le rôle de service Greengrass.

    Si le nom de votre compartiment ne contient pas greengrass, ajoutez la stratégie en ligne suivante au rôle de service. Vous pouvez répertorier plusieurs ARN de compartiment.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::my-bucket-name" ] } ] }

    Pour de plus amples informations, veuillez consulterIntégrer des stratégies en lignedans leIAM User Guide.

Prérequis

Les exigences suivantes s'appliquent pour la création et l'utilisation des ressources de Machine Learning :

  • Vous devez utiliserAWS IoT GreengrassCore v1.6 ou une version ultérieure.

  • Les fonctions Lambda définies par l'utilisateur peuvent exécuterreadouread and writeopérations sur la ressource. Les autorisations pour d'autres opérations ne sont pas disponibles. Le mode conteneurisation des fonctions Lambda affiliées détermine la façon dont vous définissez les autorisations d'accès. Pour plus d'informations, consultez Accédez aux ressources d'apprentissage automatique à partir des fonctions Lambda.

  • Vous devez fournir le chemin d'accès complet de la ressource sur le système d'exploitation de l'appareil principal.

  • Un ID ou un nom de ressource doit comporter 128 caractères au maximum et utiliser le modèle [a-zA-Z0-9:_-]+.

Environnements d'exécution et bibliothèques pour l'inférence ML

Vous pouvez utiliser les environnement d'exécution et bibliothèques ML suivants avec AWS IoT Greengrass.

Ces environnements d’exécution et ces bibliothèques peuvent être installés sur les plateformes NVIDIA Jetson TX2, Intel Atom et Raspberry Pi. Pour obtenir des informations sur le téléchargement, consultez Bibliothèques et environnements d'exécution de machine learning pris en charge. Vous pouvez les installer directement sur votre appareil principal (noyau).

Assurez-vous de lire les informations de compatibilités et les limitations suivantes.

Exécution SageMaker Neo Deep Learning

Vous pouvez utiliser le plugin SageMaker Exécution Neo deep learning pour exécuter des inférences avec des modèles de machine learning optimisés sur votreAWS IoT Greengrassappareils. Ces modèles sont optimisés à l'aide du SageMaker Compilateur Neo Deep Learning pour améliorer les vitesses de prédiction des inférences de Machine Learning. Pour de plus amples informations sur l'optimisation des modèles dans SageMaker, consultez leDocumentation SageMaker Neo.

Note

Actuellement, vous pouvez optimiser des modèles de Machine Learning à l'aide du compilateur Neo Deep Learning dans des régions Amazon Web Services spécifiques uniquement. Cependant, vous pouvez utiliser le moteur d'exécution Neo Deep Learning avec des modèles optimisés dans chaqueRégion AWSoùAWS IoT Greengrasscore est pris en charge. Pour plus d'informations, consultez Configuration de l'inférence Machine Learning optimisée.

Gestion des versions MXNet

Apache MXNet ne garantit actuellement pas une compatibilité ascendante. Par conséquent, les modèles que vous formez à l'aide de versions ultérieures de l'infrastructure peuvent ne pas fonctionner correctement dans des versions antérieures de l'infrastructure. Pour éviter les conflits entre les étapes de formation des modèles et de service des modèles, et fournir une cohérence end-to-end , utilisez la même version du framework MXNet dans les deux étapes.

MXNet sur Raspberry Pi

Les fonctions Lambda Greengrass qui accèdent aux modèles MXNet locaux doivent définir la variable d'environnement suivante :

MXNET_ENGINE_TYPE=NativeEngine

Vous pouvez définir la variable d'environnement dans le code de la fonction ou l'ajouter à la configuration spécifique au groupe de la fonction. Cette étape présente un exemple qui ajoute la variable d'environnement en tant que paramètre de configuration.

Note

Pour une utilisation générale de l'infrastructure MXNet, telle que l'exécution d'un exemple de code tiers, la variable d'environnement doit être configurée sur le Raspberry Pi.

Limitations d'utilisation des modèles TensorFlow sur Raspberry Pi

Les recommandations suivantes visent à améliorer les résultats d'inférence et sont basées sur les tests réalisés avec le TensorFlow bibliothèques Arm 32 bits sur la plateforme Raspberry Pi. Ces recommandations sont destinées aux utilisateurs avancés pour référence uniquement, sans garantie d'aucune sorte.

  • Les modèles formés à l'aide du format Checkpoint doivent être « bloqués » dans le format tampon du protocole avant d'être utilisés. Pour obtenir un exemple, consultez la bibliothèque du modèle de classification d'images TensorFlow-Slim.

  • N'utilisez pas les bibliothèques TF-Estimator et TF-Slim dans le code de formation ou d'inférence. À la place, utilisez le modèle de chargement de fichier .pb indiqué dans l'exemple suivant.

    graph = tf.Graph() graph_def = tf.GraphDef() graph_def.ParseFromString(pb_file.read()) with graph.as_default(): tf.import_graph_def(graph_def)
Note

Pour de plus amples informations sur les plateformes prises en charge pour TensorFlow, veuillez consulter.Installation de TensorFlowdans le TensorFlow .