Avis de fin de support : le 7 octobre 2026, AWS le support pour AWS IoT Greengrass Version 1. Après le 7 octobre 2026, vous ne pourrez plus accéder aux AWS IoT Greengrass V1 ressources. Pour plus d'informations, rendez-vous sur Migrer depuis AWS IoT Greengrass Version 1.
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.
Comment configurer l'inférence optimisée pour l'apprentissage automatique à l'aide du Console de gestion AWS
Pour suivre les étapes de ce didacticiel, vous devez utiliser AWS IoT Greengrass Core v1.10 ou une version ultérieure.
Vous pouvez utiliser le compilateur d'apprentissage profond SageMaker AI Neo pour optimiser l'efficacité de prédiction des modèles d'inférence d'apprentissage automatique natifs dans les frameworks Tensorflow, Apache MXNet PyTorch, ONNX et XGBoost pour un encombrement réduit et des performances plus rapides. Vous pouvez ensuite télécharger le modèle optimisé, installer le runtime d'apprentissage profond SageMaker AI Neo et le déployer sur vos AWS IoT Greengrass appareils pour une inférence plus rapide.
Ce didacticiel explique comment utiliser le Console de gestion AWS pour configurer un groupe Greengrass afin d'exécuter un exemple d'inférence Lambda qui reconnaît les images d'une caméra localement, sans envoyer de données vers le cloud. L'exemple d'inférence accède au module de caméra sur un Raspberry Pi. Dans ce didacticiel, vous téléchargez un modèle préconfiguré qui est entraîné Resnet-50 et optimisé par le compilateur Neo Deep Learning. Vous utilisez ensuite le modèle pour effectuer une classification locale des images sur votre AWS IoT Greengrass appareil.
Le didacticiel contient les étapes détaillées suivantes :
Conditions préalables
Pour suivre ce didacticiel, vous devez disposer des éléments suivants :
-
Raspberry Pi 4 modèle B, ou Raspberry Pi 3 modèle B/B +, configuré et configuré pour être utilisé avec AWS IoT Greengrass. Pour configurer votre Raspberry Pi avec AWS IoT Greengrass, exécutez le script de configuration de l'appareil Greengrass ou assurez-vous d'avoir terminé le Module 1 et le Module 2 de Démarrage avec AWS IoT Greengrass.
Note
Le Raspberry Pi peut nécessiter une alimentation de 2,5 A
pour exécuter les frameworks d'apprentissage en profondeur généralement utilisés pour la classification des images. Une alimentation d'une puissance nominale inférieure peut entraîner le redémarrage de l'appareil. -
Module caméra V2 du Raspberry Pi - 8 mégapixels, 1080p
. Pour savoir comment configurer la caméra, consultez la section Connexion de la caméra dans la documentation du Raspberry Pi. -
Un groupe Greengrass et un service principal Greengrass. Pour savoir comment créer un groupe ou un service principal Greengrass, consultez Démarrage avec AWS IoT Greengrass.
Note
Ce didacticiel utilise un Raspberry Pi, mais AWS IoT Greengrass prend en charge d'autres plateformes, telles qu'Intel Atom et NVIDIA Jetson TX2. Si vous utilisez l'exemple Intel Atom, vous devrez peut-être installer Python 3.6 au lieu de Python 3.7. Pour plus d'informations sur la configuration de votre appareil afin de pouvoir installer le logiciel AWS IoT Greengrass Core, consultezConfiguration d'autres appareils.
Pour les plateformes tierces qui AWS IoT Greengrass ne le prennent pas en charge, vous devez exécuter votre fonction Lambda en mode non conteneurisé. Pour fonctionner en mode non conteneurisé, vous devez exécuter votre fonction Lambda en tant qu'utilisateur root. Pour plus d’informations, consultez Considérations à prendre en compte lors du choix de la conteneurisation des fonctions Lambda et Définition de l'identité d'accès par défaut pour les fonctions Lambda dans un groupe.
Étape 1 : Configurer le Raspberry Pi
Au cours de cette étape, installez les mises à jour du système d'exploitation Raspbian, installez le logiciel du module caméra et les dépendances Python, et activez l'interface de la caméra.
Dans la fenêtre de terminal de votre Raspberry Pi, exécutez les commandes suivantes :
-
Installez les mises à jour sur Raspbian.
sudo apt-get update sudo apt-get dist-upgrade -
Installez l'interface
picamerapour le module caméra, ainsi que les autres bibliothèques Python requises pour ce didacticiel.sudo apt-get install -y python3-dev python3-setuptools python3-pip python3-picameraValider l'installation :
-
Assurez-vous que votre installation Python 3.7 inclut pip.
python3 -m pipSi pip n'est pas installé, téléchargez-le à partir du site web pip
, puis exécutez la commande suivante. python3 get-pip.py -
Assurez-vous que votre Python est en version 3.7 ou supérieure.
python3 --versionSi la sortie mentionne une version antérieure, exécutez la commande suivante.
sudo apt-get install -y python3.7-dev -
Assurez-vous que Setuptools et Picamera sont installés correctement.
sudo -u ggc_user bash -c 'python3 -c "import setuptools"' sudo -u ggc_user bash -c 'python3 -c "import picamera"'Si la sortie ne contient pas d'erreurs, la validation a abouti.
Note
Si l'exécutable Python installé sur votre appareil est
python3.7, utilisezpython3.7plutôt quepython3pour les commandes de ce didacticiel. Assurez-vous que votre installation pip correspond à la version correcte (python3.7oupython3) pour éviter les erreurs de dépendance. -
-
Redémarrez l'appareil Raspberry Pi.
sudo reboot -
Ouvrez l'outil de configuration du Raspberry Pi.
sudo raspi-config -
Utilisez les touches flèches pour ouvrir les Options d'interface et activer l'interface de la caméra. Si vous y êtes invité, autorisez le redémarrage de l'appareil.
-
Utilisez la commande suivante pour tester la configuration de la caméra.
raspistill -v -o test.jpgElle ouvre une fenêtre d'aperçu sur le Raspberry Pi, enregistre une image nommée
test.jpgdans votre répertoire actuel et affiche des informations sur la caméra dans la fenêtre de terminal du Raspberry Pi.
Étape 2 : installer le moteur d'exécution Amazon SageMaker Neo Deep Learning
Dans cette étape, installez le Neo Deep Learning Runtime (DLR) sur votre Raspberry Pi.
Note
Nous vous recommandons d'installer la version 1.1.0 pour ce tutoriel.
-
Connectez-vous à votre Raspberry Pi à distance.
ssh pi@your-device-ip-address -
Ouvrez la documentation DLR, ouvrez Installation du DLR
et recherchez l'URL du Wheel des appareils Raspberry Pi. Suivez ensuite les instructions d'installation du DLR sur votre appareil. Par exemple, vous pouvez utiliser pip : pip3 installrasp3b-wheel-url -
Après avoir installé le DLR, validez la configuration suivante :
-
Assurez-vous que le compte système
ggc_userpeut utiliser la bibliothèque DLR.sudo -u ggc_user bash -c 'python3 -c "import dlr"' -
Assurez-vous qu' NumPy il est installé.
sudo -u ggc_user bash -c 'python3 -c "import numpy"'
-
Étape 3 : Création d'une fonction Lambda d'inférence
Au cours de cette étape, créez un package de déploiement de fonctions Lambda et une fonction Lambda. Ensuite, publiez une version de fonction et créez un alias.
-
Sur votre ordinateur, téléchargez l'exemple DLR pour Raspberry Pi à partir de Exemples de machine learning.
-
Décompressez le fichier
dlr-py3-armv7l.tar.gztéléchargé.cdpath-to-downloaded-sampletar -xvzf dlr-py3-armv7l.tar.gzLe répertoire
examplesde l'exemple de package extrait contient le code de fonction et les dépendances.-
inference.pyest le code d'inférence utilisé dans ce didacticiel. Vous pouvez utiliser ce code comme modèle pour créer votre propre fonction d'inférence. -
greengrasssdkest la version 1.5.0 du SDK AWS IoT Greengrass Core pour Python.Note
Si une nouvelle version est disponible, vous pouvez la télécharger et mettre à niveau la version du kit SDK dans votre package de déploiement. Pour plus d'informations, consultez AWS IoT Greengrass Core SDK pour Python
sur GitHub.
-
-
Compressez le contenu du répertoire
examplesdans un fichier nomméoptimizedImageClassification.zip. Vous obtiendrez alors votre package de déploiement.cdpath-to-downloaded-sample/dlr-py3-armv7l/examples zip -r optimizedImageClassification.zip .Le package de déploiement contient votre code de fonction et vos dépendances. Cela inclut le code qui invoque les API Python de l'environnement d'exécution Neo Deep Learning pour effectuer une inférence avec les modèles de compilateur Neo Deep Learning.
Note
Assurez-vous que les fichiers
.pyet les dépendances se trouvent dans la racine du répertoire. -
Ajoutez maintenant la fonction Lambda à votre groupe Greengrass.
Sur la page de la console Lambda, choisissez Fonctions, puis sélectionnez Créer une fonction.
-
Choisissez Author à partir de zéro et utilisez les valeurs suivantes pour créer votre fonction :
-
Sous Nom de la fonction, saisissez
optimizedImageClassification. -
Pour Runtime, sélectionnez Python 3.7.
Pour les autorisations, conservez le paramètre par défaut. Cela crée un rôle d'exécution qui accorde des autorisations Lambda de base. Ce rôle n'est pas utilisé par AWS IoT Greengrass.
-
-
Choisissez Créer une fonction.
À présent, chargez votre package de déploiement de fonctions Lambda et enregistrez le gestionnaire.
-
Dans l'onglet Code, sous Source du code, choisissez Télécharger depuis. Dans la liste déroulante, choisissez le fichier .zip.
-
Choisissez votre package de
optimizedImageClassification.zipdéploiement, puis cliquez sur Enregistrer. -
Dans l'onglet Code de la fonction, sous Paramètres d'exécution, choisissez Modifier, puis entrez les valeurs suivantes.
-
Pour Runtime, sélectionnez Python 3.7.
-
Pour Handler (Gestionnaire), entrez
inference.handler.
Choisissez Enregistrer.
-
Publiez ensuite la première version de votre fonction Lambda. Puis, créez un alias pour la version.
Note
Les groupes Greengrass peuvent référencer une fonction Lambda par alias (recommandé) ou par version. L'utilisation d'un alias facilite la gestion des mises à jour de code, car vous n'avez pas à modifier votre table d'abonnement ou votre définition de groupe lorsque le code de fonction est mis à jour. Au lieu de cela, il vous suffit de pointer l'alias vers la nouvelle version de la fonction.
-
Dans le menu Actions, sélectionnez Publier une nouvelle version.
-
Dans Description de la version, saisissez
First version, puis choisissez Publish. -
Sur la page de configuration optimisée ImageClassification : 1, dans le menu Actions, choisissez Créer un alias.
-
Sur la page Create a new alias, utilisez les valeurs suivantes :
-
Pour Nom, saisissez
mlTestOpt. -
Pour Version, entrez
1.
Note
AWS IoT Greengrass ne prend pas en charge les alias Lambda pour les versions $LATEST.
-
-
Choisissez Créer.
Ajoutez maintenant la fonction Lambda à votre groupe Greengrass.
Étape 4 : ajouter la fonction Lambda au groupe Greengrass
Au cours de cette étape, ajoutez la fonction Lambda au groupe, puis configurez son cycle de vie.
Tout d'abord, ajoutez la fonction Lambda à votre groupe Greengrass.
Dans le volet de navigation de la AWS IoT console, sous Gérer, développez les appareils Greengrass, puis choisissez Groupes (V1).
-
Sur la page de configuration des groupes, choisissez l'onglet Fonctions Lambda, puis sélectionnez Ajouter.
-
Choisissez la fonction Lambda et sélectionnez optimisé ImageClassification.
-
Dans la version de la fonction Lambda, choisissez l'alias de la version que vous avez publiée.
Configurez ensuite le cycle de vie de la fonction Lambda.
-
Dans la section Configuration de la fonction Lambda, effectuez les mises à jour suivantes.
Note
Nous vous recommandons d'exécuter votre fonction Lambda sans conteneurisation, sauf si votre analyse de rentabilisation l'exige. Cela permet d'accéder au GPU et à la caméra de votre appareil sans configurer les ressources de l'appareil. Si vous exécutez sans conteneurisation, vous devez également accorder un accès root à vos fonctions AWS IoT Greengrass Lambda.
-
Pour fonctionner sans conteneurisation :
-
Pour Utilisateur et groupe du système, choisissez
Another user ID/group ID. Dans le champ ID utilisateur du système, entrez0. Dans le champ ID du groupe système, entrez0.Cela permet à votre fonction Lambda de s'exécuter en tant que root. Pour plus d'informations sur l'exécution en tant que root, consultezDéfinition de l'identité d'accès par défaut pour les fonctions Lambda dans un groupe.
Astuce
Vous devez également mettre à jour votre
config.jsonfichier pour accorder un accès root à votre fonction Lambda. Pour la procédure, voirExécution d'une fonction Lambda en tant que root. -
Pour la conteneurisation de la fonction Lambda, choisissez Aucun conteneur.
Pour plus d'informations sur l'exécution sans conteneurisation, consultez. Considérations à prendre en compte lors du choix de la conteneurisation des fonctions Lambda
-
Pour Expiration, entrez
10 seconds. -
Pour Pinned, choisissez True.
Pour de plus amples informations, veuillez consulter Configuration du cycle de vie pour les fonctions Greengrass Lambda.
-
Sous Paramètre supplémentaire, pour accéder en lecture au répertoire /sys, choisissez Activé.
-
-
Pour exécuter en mode conteneurisé à la place, procédez comme suit :
Note
Nous ne recommandons pas de fonctionner en mode conteneurisé, sauf si votre analyse de rentabilisation l'exige.
-
Pour Utilisateur et groupe du système, choisissez Utiliser le groupe par défaut.
-
Pour la conteneurisation des fonctions Lambda, choisissez Utiliser le groupe par défaut.
-
Pour Limite de mémoire, entrez
1024 MB. -
Pour Expiration, entrez
10 seconds. -
Pour Pinned, choisissez True.
Pour de plus amples informations, veuillez consulter Configuration du cycle de vie pour les fonctions Greengrass Lambda.
-
Sous Paramètres supplémentaires, pour accéder en lecture au répertoire /sys, choisissez Activé.
-
-
-
Choisissez Ajouter une fonction Lambda.
Étape 5 : Ajouter une ressource de Neo-optimized modèle d' SageMaker IA au groupe Greengrass
Au cours de cette étape, créez une ressource pour le modèle d'inférence ML optimisé et téléchargez-la dans un compartiment Amazon S3. Ensuite, localisez le modèle téléchargé par Amazon S3 dans la AWS IoT Greengrass console et associez la ressource nouvellement créée à la fonction Lambda. Cela permet à la fonction d'accéder à ses ressources sur l'appareil principal.
-
Sur votre ordinateur, accédez au répertoire
resnet50de l'exemple de package que vous avez décompressé dans Étape 3 : Création d'une fonction Lambda d'inférence.Note
Si vous utilisez l'exemple NVIDIA Jetson, vous devez plutôt utiliser le répertoire
resnet18dans l'exemple de package. Pour de plus amples informations, veuillez consulter Configuration d'un NVIDIA Jetson TX2.cdpath-to-downloaded-sample/dlr-py3-armv7l/models/resnet50Ce répertoire contient des artefacts de modèle précompilés pour un modèle de classification d'images avec Resnet-50 lequel vous avez été entraîné.
-
Compressez les fichiers du répertoire
resnet50dans un fichier nomméresnet50.zip.zip -r resnet50.zip . -
Sur la page de configuration de votre AWS IoT Greengrass groupe, choisissez l'onglet Ressources. Accédez à la section Machine Learning, choisissez Ajouter une ressource de Machine Learning. Sur la page Créer une ressource de Machine Learning, pour Nom de la ressource, entrez
resnet50_model. -
Pour Source du modèle, choisissez Utiliser un modèle stocké dans S3, tel qu'un modèle optimisé via Deep Learning Compiler.
-
Sous S3 URI, choisissez Browse S3.
Note
Actuellement, les modèles d' SageMaker IA optimisés sont stockés automatiquement dans Amazon S3. Vous pouvez trouver votre modèle optimisé dans votre compartiment Amazon S3 à l'aide de cette option. Pour plus d'informations sur l'optimisation des modèles dans l' SageMaker IA, consultez la documentation SageMaker AI Neo.
-
Choisissez Charger un modèle.
-
Dans l'onglet de la console Amazon S3, chargez votre fichier zip dans un compartiment Amazon S3. Pour plus d'informations, voir Comment charger des fichiers et des dossiers vers un compartiment S3 ? dans le guide de l'utilisateur d'Amazon Simple Storage Service.
Note
Le nom de votre compartiment doit contenir la chaîne
greengrass. Choisissez un nom unique (commegreengrass-dlr-bucket-). N'utilisez pas de point (user-id-epoch-time.) dans le nom du compartiment. -
Dans l'onglet de la AWS IoT Greengrass console, localisez et choisissez votre compartiment Amazon S3. Localisez votre fichier chargé
resnet50.zip, puis choisissez Sélectionner. Vous devrez peut-être actualiser la page pour mettre à jour la liste des compartiments et des fichiers disponibles. -
Dans Chemin de destination, entrez
/ml_model.
Il s'agit de la destination du modèle local dans l'espace de noms d'exécution Lambda. Lorsque vous déployez le groupe, il AWS IoT Greengrass récupère le package du modèle source, puis en extrait le contenu dans le répertoire spécifié.
Note
Nous vous recommandons vivement d'utiliser le chemin d'accès local exact. L'utilisation d'un autre chemin de destination de modèle local dans cette étape entraîne l'inexactitude de certaines commandes de dépannage fournies dans ce didacticiel. Si vous utilisez un autre chemin, vous devez configurer une variable d'environnement
MODEL_PATHqui utilise le chemin d'accès exact que vous fournissez ici. Pour de plus amples informations sur les variables d'environnement, veuillez consulter Variables d'environnement AWS Lambda. -
En cas d'exécution en mode conteneurisé :
-
Sous Propriétaire du groupe système et autorisations d'accès aux fichiers, choisissez Spécifier le groupe système et les autorisations.
-
Choisissez Read-only Accès, puis sélectionnez Ajouter une ressource.
-
Étape 6 : Ajouter la ressource d'appareil de votre caméra au groupe Greengrass
Dans cette étape, créez une ressource pour le module caméra et associez-la à la fonction Lambda. Cela permet à la fonction Lambda d'accéder à la ressource sur le périphérique principal.
Note
Si vous utilisez le mode non conteneurisé, vous AWS IoT Greengrass pouvez accéder au GPU et à la caméra de votre appareil sans configurer cette ressource d'appareil.
-
Sur la page de configuration du groupe, choisissez l'onglet Ressources.
-
Dans l'onglet Ressources locales, choisissez Ajouter une ressource locale.
-
Sur la page Ajouter une ressource locale, utilisez les valeurs suivantes :
-
Sous Resource Name (Nom de la ressource), entrez
videoCoreSharedMemory. -
Pour Type de ressource, choisissez Appareil.
-
Dans le champ Local device path, entrez
/dev/vcsm.Le chemin de l'appareil est le chemin absolu local de la ressource d'appareil. Ce chemin ne peut faire référence qu'à un périphérique de caractères ou un périphérique de stockage en mode bloc sous
/dev. -
Pour le propriétaire du groupe de systèmes et les autorisations d'accès aux fichiers, choisissez Ajouter automatiquement les autorisations de système de fichiers du groupe système propriétaire de la ressource.
L'option Autorisation d'accès fichier pour le propriétaire du groupe vous permet d'accorder des autorisations supplémentaires d'accès aux fichiers au processus Lambda. Pour de plus amples informations, veuillez consulter Autorisation d'accès fichier pour le propriétaire du groupe.
-
-
Au bas de la page, choisissez Ajouter une ressource.
-
Dans l'onglet Ressources, créez une autre ressource locale en choisissant Ajouter et utilisez les valeurs suivantes :
-
Sous Resource Name (Nom de la ressource), entrez
videoCoreInterface. -
Pour Type de ressource, choisissez Appareil.
-
Dans le champ Local device path, entrez
/dev/vchiq. -
Pour le propriétaire du groupe de systèmes et les autorisations d'accès aux fichiers, choisissez Ajouter automatiquement les autorisations de système de fichiers du groupe système propriétaire de la ressource.
-
-
Choisissez Add resource (Ajouter ressource).
Étape 7 : Ajouter des abonnements au groupe Greengrass
Au cours de cette étape, ajoutez des abonnements au groupe. Ces abonnements permettent à la fonction Lambda d'envoyer des résultats de prédiction AWS IoT en les publiant dans une rubrique MQTT.
-
Sur la page de configuration du groupe, choisissez l'onglet Abonnements, puis choisissez Ajouter un abonnement.
-
Sur la page Créer un abonnement, configurez la source et la cible comme suit :
-
Dans Type de source, choisissez Fonction Lambda, puis choisissez optimisé ImageClassification.
-
Dans Type de cible, choisissez Service, puis IoT Cloud.
-
Dans le filtre thématique, saisissez
/resnet-50/predictions, puis choisissez Créer un abonnement.
-
-
Ajoutez un second abonnement. Choisissez l'onglet Abonnements, choisissez Ajouter un abonnement et configurez la source et la cible comme suit :
-
Dans Type de source, choisissez Services, puis IoT Cloud.
-
Dans Type de cible, choisissez Fonction Lambda, puis choisissez optimisé ImageClassification.
-
Dans le filtre thématique, saisissez
/resnet-50/test, puis choisissez Créer un abonnement.
-
Étape 8 : Déployer le groupe Greengrass
Au cours de cette étape, déployez la version actuelle de la définition de groupe sur l'appareil Greengrass principal (noyau). La définition contient la fonction Lambda, les ressources et les configurations d'abonnement que vous avez ajoutées.
-
Assurez-vous que le AWS IoT Greengrass noyau fonctionne. Dans la fenêtre de terminal de votre Raspberry Pi, exécutez les commandes suivantes, si nécessaire.
-
Pour vérifier si le démon est en cours d'exécution :
ps aux | grep -E 'greengrass.*daemon'Si la sortie contient une entrée
rootpour/greengrass/ggc/packages/, le démon est en cours d'exécution.latest-core-version/bin/daemon Pour démarrer le démon :
cd /greengrass/ggc/core/ sudo ./greengrassd start
-
-
Sur la page de configuration du groupe, choisissez Déployer.
-
Dans l'onglet Fonctions Lambda, sélectionnez Détecteur IP, puis sélectionnez Modifier.
-
Dans la boîte de dialogue Modifier les paramètres du détecteur IP, sélectionnez Détecter et remplacer automatiquement les points de terminaison du courtier MQTT et choisissez Enregistrer.
Les appareils peuvent ainsi acquérir automatiquement des informations de connectivité pour le noyau, telles que l'adresse IP, le DNS et le numéro de port. La détection automatique est recommandée, mais elle prend AWS IoT Greengrass également en charge les points de terminaison spécifiés manuellement. Vous êtes uniquement invité à indiquer la méthode de découverte lors du déploiement initial du groupe.
Note
Si vous y êtes invité, accordez l'autorisation de créer le rôle de service Greengrass et associez-le Compte AWS à votre rôle actuel Région AWS. Ce rôle permet d'accéder AWS IoT Greengrass à vos ressources dans les AWS services.
La page Déploiements indique l'horodatage, l'ID de version et l'état du déploiement. Une fois terminé, le statut affiché pour le déploiement doit être Terminé.
Pour de plus amples informations sur les déploiements, veuillez consulter Déploiement AWS IoT Greengrass groupes vers un AWS IoT Greengrass principal. Pour bénéficier d'une aide à la résolution des problèmes, consultez Résolution des problèmes AWS IoT Greengrass.
Tester l'exemple d'inférence
À présent, vous pouvez vérifier si le déploiement est correctement configuré. Pour effectuer le test, abonnez-vous à la rubrique /resnet-50/predictions et publiez n'importe quel message dans la rubrique /resnet-50/test. Cela déclenche la fonction Lambda pour prendre une photo avec votre Raspberry Pi et effectuer une inférence sur l'image capturée.
Note
Si vous utilisez l'exemple NVIDIA Jetson, veillez à utiliser plutôt les rubriques resnet-18/predictions et resnet-18/test.
Note
Si un écran est attaché au Raspberry Pi, le flux de la caméra est diffusé en direct dans une fenêtre d'aperçu.
-
Sur la page d'accueil de la AWS IoT console, sous Test, choisissez le client de test MQTT.
-
Pour les abonnements, choisissez S'abonner à une rubrique. Utilisez les valeurs suivantes. Conservez les valeurs par défaut des autres options.
-
Pour Rubrique d'abonnement, entrez
/resnet-50/predictions. -
Dans Configuration supplémentaire, pour l'affichage de la charge utile MQTT, choisissez Afficher les charges utiles sous forme de chaînes.
-
-
Choisissez Abonner.
-
Choisissez Publier dans une rubrique, entrez le
/resnet-50/testnom de la rubrique, puis choisissez Publier. -
Si le test réussit, le message publié provoque la capture d'une image par la caméra Raspberry Pi. Un message provenant de la fonction Lambda apparaît en bas de la page. Ce message contient le résultat des prédictions de l'image en utilisant le format suivant : nom de classe prédite, probabilité et utilisation de la mémoire.
Configuration d'un processeur Intel Atom
Pour exécuter ce didacticiel sur un périphérique Intel Atom, vous devez fournir des images sources, configurer la fonction Lambda et ajouter une autre ressource de périphérique locale. Pour utiliser le processeur graphique à des fins d'inférence, assurez-vous que les logiciels suivants sont installés sur votre appareil :
-
OpenCL version 1.0 ou ultérieure
-
Python 3.7 et pip
-
Téléchargez des images statiques PNG ou JPG pour la fonction Lambda à utiliser pour la classification des images. L'exemple fonctionne mieux avec des fichiers image de petite taille.
Enregistrez vos fichiers image dans le répertoire qui contient le fichier
inference.py(ou dans un sous-répertoire de ce répertoire). Cela se trouve dans le package de déploiement de la fonction Lambda que vous chargez. Étape 3 : Création d'une fonction Lambda d'inférenceNote
Si vous l'utilisez AWS DeepLens, vous pouvez utiliser la caméra intégrée ou monter votre propre caméra pour effectuer des inférences sur des images capturées plutôt que sur des images statiques. Cependant, nous vous recommandons vivement de commencer par les images statiques.
Si vous utilisez une caméra, assurez-vous que le package APT
awscamest installé et à jour. Pour plus d'informations, consultez la section Mettre à jour votre AWS DeepLens appareil dans le Guide du AWS DeepLens développeur. -
Modifiez la configuration de la fonction Lambda. Suivez la procédure décrite dans Étape 4 : ajouter la fonction Lambda au groupe Greengrass.
Note
Nous vous recommandons d'exécuter votre fonction Lambda sans conteneurisation, sauf si votre analyse de rentabilisation l'exige. Cela permet d'accéder au GPU et à la caméra de votre appareil sans configurer les ressources de l'appareil. Si vous exécutez sans conteneurisation, vous devez également accorder un accès root à vos fonctions AWS IoT Greengrass Lambda.
-
Pour fonctionner sans conteneurisation :
-
Pour Utilisateur et groupe du système, choisissez
Another user ID/group ID. Dans le champ ID utilisateur du système, entrez0. Dans le champ ID du groupe système, entrez0.Cela permet à votre fonction Lambda de s'exécuter en tant que root. Pour plus d'informations sur l'exécution en tant que root, consultezDéfinition de l'identité d'accès par défaut pour les fonctions Lambda dans un groupe.
Astuce
Vous devez également mettre à jour votre
config.jsonfichier pour accorder un accès root à votre fonction Lambda. Pour la procédure, voirExécution d'une fonction Lambda en tant que root. -
Pour la conteneurisation de la fonction Lambda, choisissez Aucun conteneur.
Pour plus d'informations sur l'exécution sans conteneurisation, consultez. Considérations à prendre en compte lors du choix de la conteneurisation des fonctions Lambda
-
Augmentez la valeur Expiration en la faisant passer à 2 minutes. Cela permet de s'assurer que la demande n'expire pas trop tôt. L'exécution de l'inférence nécessite quelques minutes après la configuration.
-
Pour Pinned, choisissez True.
-
Sous Paramètres supplémentaires, pour accéder en lecture au répertoire /sys, choisissez Activé.
-
-
Pour exécuter en mode conteneurisé à la place, procédez comme suit :
Note
Nous ne recommandons pas de fonctionner en mode conteneurisé, sauf si votre analyse de rentabilisation l'exige.
-
Augmentez la valeur Limite de mémoire en la faisant passer à 3 000 Mo.
-
Augmentez la valeur Expiration en la faisant passer à 2 minutes. Cela permet de s'assurer que la demande n'expire pas trop tôt. L'exécution de l'inférence nécessite quelques minutes après la configuration.
-
Pour Pinned, choisissez True.
-
Sous Paramètres supplémentaires, pour accéder en lecture au répertoire /sys, choisissez Activé.
-
-
-
Ajoutez votre ressource Neo-optimized modèle au groupe. Téléchargez les ressources du modèle dans le répertoire
resnet50de l'exemple de package que vous avez décompressé dans Étape 3 : Création d'une fonction Lambda d'inférence. Ce répertoire contient des artefacts de modèle précompilés pour un modèle de classification d'images avec Resnet-50 lequel vous avez été entraîné. Exécutez la procédure décrite dans Étape 5 : Ajouter une ressource de Neo-optimized modèle d' SageMaker IA au groupe Greengrass en appliquant les mises à jour qui suivent :-
Compressez les fichiers du répertoire
resnet50dans un fichier nomméresnet50.zip. -
Sur la page Créer une ressource de Machine Learning, pour Nom de la ressource, entrez
resnet50_model. -
Chargez le fichier
resnet50.zip.
-
-
Si vous utilisez le mode conteneurisé, ajoutez la ressource d'appareil locale requise pour autoriser l'accès au GPU de votre appareil.
Note
Si vous utilisez le mode non conteneurisé, vous AWS IoT Greengrass pouvez accéder au GPU de votre appareil sans configurer les ressources de l'appareil.
-
Sur la page de configuration du groupe, choisissez l'onglet Ressources.
-
Dans la section Ressources locales, choisissez Ajouter une ressource locale.
-
Définissez la ressource :
-
Sous Resource Name (Nom de la ressource), entrez
renderD128. -
Pour Type de ressource, choisissez Appareil.
-
Dans le champ Local device path, entrez
/dev/dri/renderD128. -
Pour le propriétaire du groupe de systèmes et les autorisations d'accès aux fichiers, choisissez Ajouter automatiquement les autorisations de système de fichiers du groupe système propriétaire de la ressource.
-
-
Configuration d'un NVIDIA Jetson TX2
Pour exécuter ce didacticiel sur un NVIDIA Jetson TX2, fournissez des images sources, configurez la fonction Lambda et ajoutez des ressources de périphérique locales supplémentaires.
-
Assurez-vous que votre appareil Jetson est configuré pour pouvoir installer le logiciel AWS IoT Greengrass Core et utiliser le GPU à des fins d'inférence. Pour de plus amples informations sur la configuration de votre appareil, veuillez consulter Configuration d'autres appareils. Pour utiliser le GPU à des fins d'inférence sur une NVIDIA Jetson TX2, vous devez installer CUDA 10.0 et cuDNN 7.0 sur votre appareil lorsque vous créez une image de votre carte avec Jetpack 4.3.
-
Téléchargez des images statiques PNG ou JPG pour la fonction Lambda à utiliser pour la classification des images. L'exemple fonctionne mieux avec des fichiers image de petite taille.
Enregistrez vos fichiers image dans le répertoire contenant le fichier
inference.py. Vous pouvez également les enregistrer dans un sous-répertoire de ce répertoire. Ce répertoire se trouve dans le package de déploiement de la fonction Lambda que vous chargez. Étape 3 : Création d'une fonction Lambda d'inférenceNote
À la place, vous pouvez choisir d'instrumenter une caméra sur la carte Jetson pour capturer les images source. Cependant, nous vous recommandons vivement de commencer par les images statiques.
-
Modifiez la configuration de la fonction Lambda. Suivez la procédure décrite dans Étape 4 : ajouter la fonction Lambda au groupe Greengrass.
Note
Nous vous recommandons d'exécuter votre fonction Lambda sans conteneurisation, sauf si votre analyse de rentabilisation l'exige. Cela permet d'accéder au GPU et à la caméra de votre appareil sans configurer les ressources de l'appareil. Si vous exécutez sans conteneurisation, vous devez également accorder un accès root à vos fonctions AWS IoT Greengrass Lambda.
-
Pour fonctionner sans conteneurisation :
-
Pour Exécuter en tant que, choisissez
Another user ID/group ID. Dans le champ UID, entrez0. Dans le champ GUID, entrez0.Cela permet à votre fonction Lambda de s'exécuter en tant que root. Pour plus d'informations sur l'exécution en tant que root, consultezDéfinition de l'identité d'accès par défaut pour les fonctions Lambda dans un groupe.
Astuce
Vous devez également mettre à jour votre
config.jsonfichier pour accorder un accès root à votre fonction Lambda. Pour la procédure, voirExécution d'une fonction Lambda en tant que root. -
Pour la conteneurisation de la fonction Lambda, choisissez Aucun conteneur.
Pour plus d'informations sur l'exécution sans conteneurisation, consultez. Considérations à prendre en compte lors du choix de la conteneurisation des fonctions Lambda
-
Augmentez la valeur Expiration en la faisant passer à 5 minutes. Cela permet de s'assurer que la demande n'expire pas trop tôt. L'exécution de l'inférence nécessite quelques minutes après la configuration.
-
Pour Pinned, choisissez True.
-
Sous Paramètres supplémentaires, pour accéder en lecture au répertoire /sys, choisissez Activé.
-
-
Pour exécuter en mode conteneurisé à la place, procédez comme suit :
Note
Nous ne recommandons pas de fonctionner en mode conteneurisé, sauf si votre analyse de rentabilisation l'exige.
-
Augmentez la valeur Limite de mémoire. Pour utiliser le modèle fourni en mode GPU (processeur graphique), utilisez au moins 2000 Mo.
-
Augmentez la valeur Expiration en la faisant passer à 5 minutes. Cela permet de s'assurer que la demande n'expire pas trop tôt. L'exécution de l'inférence nécessite quelques minutes après la configuration.
-
Pour Pinned, choisissez True.
-
Sous Paramètres supplémentaires, pour accéder en lecture au répertoire /sys, choisissez Activé.
-
-
-
Ajoutez votre ressource Neo-optimized modèle au groupe. Téléchargez les ressources du modèle dans le répertoire
resnet18de l'exemple de package que vous avez décompressé dans Étape 3 : Création d'une fonction Lambda d'inférence. Ce répertoire contient des artefacts de modèle précompilés pour un modèle de classification d'images avec Resnet-18 lequel vous avez été entraîné. Exécutez la procédure décrite dans Étape 5 : Ajouter une ressource de Neo-optimized modèle d' SageMaker IA au groupe Greengrass en appliquant les mises à jour qui suivent :-
Compressez les fichiers du répertoire
resnet18dans un fichier nomméresnet18.zip. -
Sur la page Créer une ressource de Machine Learning, pour Nom de la ressource, entrez
resnet18_model. -
Chargez le fichier
resnet18.zip.
-
-
Si vous utilisez le mode conteneurisé, ajoutez les ressources locales requises pour autoriser l'accès au GPU de votre appareil.
Note
Si vous utilisez le mode non conteneurisé, vous AWS IoT Greengrass pouvez accéder au GPU de votre appareil sans configurer les ressources de l'appareil.
-
Sur la page de configuration du groupe, choisissez l'onglet Ressources.
-
Dans la section Ressources locales, choisissez Ajouter une ressource locale.
-
Définissez chaque ressource :
-
Pour Resource name (Nom de la ressource ) et Device path, (Chemin de l'appareil), utilisez les valeurs du tableau suivant. Créez une ressource de périphérique pour chaque ligne de la table.
-
Pour Type de ressource, choisissez Appareil.
-
Pour le propriétaire du groupe de systèmes et les autorisations d'accès aux fichiers, choisissez Ajouter automatiquement les autorisations de système de fichiers du groupe système propriétaire de la ressource.
Nom
Chemin de l'appareil
nvhost-ctrl
/dev/nvhost-ctrl
nvhost-gpu
/dev/nvhost-processeur graphique
nvhost-ctrl-gpu
/dev/nvhost-ctrl-gpu
nvhost-dbg-gpu
/dev/nvhost-dbg-gpu
nvhost-prof-gpu
/dev/nvhost-prof-gpu
nvmap
/dev/nvmap
nvhost-vic
/dev/nvhost-victime
tegra_dc_ctrl
/dev/tegra_dc_ctrl
-
-
-
Si vous utilisez le mode conteneurisé, ajoutez la ressource de volume locale suivante pour autoriser l'accès à la caméra de votre appareil. Suivez la procédure décrite dans Étape 5 : Ajouter une ressource de Neo-optimized modèle d' SageMaker IA au groupe Greengrass.
Note
Si vous utilisez le mode non conteneurisé, vous AWS IoT Greengrass pouvez accéder à la caméra de votre appareil sans configurer les ressources de l'appareil.
-
Pour Type de ressource, choisissez Volume.
-
Pour le propriétaire du groupe de systèmes et les autorisations d'accès aux fichiers, choisissez Ajouter automatiquement les autorisations de système de fichiers du groupe système propriétaire de la ressource.
Nom
Chemin source
Chemin de destination
shm
/dev/shm
/dev/shm
tmp
/tmp
/tmp
-
-
Mettez à jour vos abonnements de groupe pour utiliser le répertoire correct. Exécutez la procédure décrite dans Étape 7 : Ajouter des abonnements au groupe Greengrass en appliquant les mises à jour qui suivent :
-
Pour votre premier filtre de rubrique, entrez
/resnet-18/predictions. -
Pour votre deuxième filtre de rubrique, entrez
/resnet-18/test.
-
-
Mettez à jour vos abonnements de test pour utiliser le répertoire correct. Exécutez la procédure décrite dans Tester l'exemple d'inférence en appliquant les mises à jour qui suivent :
-
Pour les abonnements, choisissez S'abonner à une rubrique. Pour Rubrique d'abonnement, entrez
/resnet-18/predictions. -
Dans la page
/resnet-18/predictions, spécifiez la rubrique/resnet-18/testsur laquelle publier.
-
Résolution des problèmes AWS IoT Greengrass Inférence ML
Si le test n'est pas réussi, vous pouvez essayer les étapes de dépannage suivantes. Exécutez les commandes dans la fenêtre de terminal de votre Raspberry Pi.
Consultez les journaux des erreurs
-
Connectez-vous en tant qu'utilisateur racine et accédez au répertoire
log. L'accès aux AWS IoT Greengrass journaux nécessite des autorisations root.sudo su cd /greengrass/ggc/var/log -
Vérifiez s'il
runtime.logy a des erreurs.cat system/runtime.log | grep 'ERROR'Vous pouvez également rechercher d'éventuelles erreurs dans le journal de la fonction Lambda défini par l'utilisateur :
cat user/your-region/your-account-id/lambda-function-name.log | grep 'ERROR'Pour de plus amples informations, veuillez consulter Résolution des problèmes liés aux journaux.
Vérifiez que la fonction Lambda est correctement déployée
-
Répertoriez le contenu du Lambda déployé dans le
/lambdarépertoire. Remplacez les valeurs d'espace réservé avant d'exécuter la commande.cd /greengrass/ggc/deployment/lambda/arn:aws:lambda:region:account:function:function-name:function-versionls -la -
Vérifiez que le répertoire contient le même contenu que le package de déploiement
optimizedImageClassification.zipque vous avez chargé dans Étape 3 : Création d'une fonction Lambda d'inférence.Assurez-vous que les fichiers
.pyet les dépendances se trouvent dans la racine du répertoire.
Vérifiez que le modèle d'inférence a été déployé avec succès
-
Trouvez le numéro d'identification du processus (PID) du processus d'exécution Lambda :
ps aux | greplambda-function-nameDans la sortie, le PID apparaît dans la deuxième colonne de la ligne du processus d'exécution Lambda.
-
Entrez l'espace de noms d'exécution Lambda. Veillez à remplacer la
pidvaleur de l'espace réservé avant d'exécuter la commande.Note
Ce répertoire et son contenu se trouvent dans l'espace de noms d'exécution Lambda, ils ne sont donc pas visibles dans un espace de noms Linux normal.
sudo nsenter -tpid-m /bin/bash -
Affichez le contenu du répertoire local que vous avez spécifié comme ressource de ML.
Note
Si votre chemin de ressource ML est différent de
ml_model, vous devez le remplacer ici.cd /ml_model ls -lsVous devriez voir les fichiers suivants :
56 -rw-r--r-- 1 ggc_user ggc_group 56703 Oct 29 20:07 model.json 196152 -rw-r--r-- 1 ggc_user ggc_group 200855043 Oct 29 20:08 model.params 256 -rw-r--r-- 1 ggc_user ggc_group 261848 Oct 29 20:07 model.so 32 -rw-r--r-- 1 ggc_user ggc_group 30564 Oct 29 20:08 synset.txt
La fonction Lambda ne peut pas être trouvée /dev/dri/RenderD128
Cela peut se produire si OpenCL ne parvient pas à se connecter aux appareils GPU dont il a besoin. Vous devez créer des ressources pour les appareils nécessaires à votre fonction Lambda.
Étapes suivantes
Ensuite, explorez d'autres modèles optimisés. Pour plus d'informations, consultez la documentation d'SageMaker AI Neo.