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.
Connecteur de classification d'images ML
Ce connecteur est passé à la phase de durée de vie prolongée et AWS IoT Greengrass ne publiera pas de mises à jour fournissant des fonctionnalités, des améliorations aux fonctionnalités existantes, des correctifs de sécurité ou des corrections de bogues. Pour plus d'informations, veuillez consulter AWS IoT Greengrass Version 1politique de maintenance.
Les connecteurs ML Image Classification fournissent un service d'inférence d'apprentissage automatique (ML) qui s'exécute sur le AWS IoT Greengrass cœur. Ce service d'inférence local effectue la classification des images à l'aide d'un modèle entraîné par l'algorithme de classification des SageMaker images.
Les fonctions Lambda définies par l'utilisateur utilisent le SDK Machine AWS IoT Greengrass Learning pour envoyer des demandes d'inférence au service d'inférence local. Le service exécute l'inférence localement et renvoie les probabilités que l'image d'entrée appartient à certaines catégories.
AWS IoT Greengrass fournit les versions suivantes de ce connecteur, qui est disponible pour plusieurs plateformes.
- Version 2
-
Connecteur |
Description et ARN |
Classification d'images XML Aarch64 JTX2 |
Service d'inférence de classification d'images pour NVIDIA Jetson TX2. Prend en charge l'accélération GPU.
ARN : arn:aws:greengrass:region ::/connectors/ImageClassificationAarch64JTX2/versions/2 |
Classification d'images ML x86_64 |
Service d'inférence de classification d'images pour les plateformes x86_64.
ARN : arn:aws:greengrass:region ::/connectors/ImageClassificationx86-64/versions/2 |
Classification d'images ML ARMv7 |
Service d'inférence de classification d'images pour les plateformes ARMv7.
ARN : arn:aws:greengrass:region ::/connectors/ImageClassificationARMv7/versions/2 |
- Version 1
-
Connecteur |
Description et ARN |
Classification d'images XML Aarch64 JTX2 |
Service d'inférence de classification d'images pour NVIDIA Jetson TX2. Prend en charge l'accélération GPU.
ARN : arn:aws:greengrass:region ::/connectors/ImageClassificationAarch64JTX2/versions/1 |
Classification d'images ML x86_64 |
Service d'inférence de classification d'images pour les plateformes x86_64.
ARN : arn:aws:greengrass:region ::/connectors/ImageClassificationx86-64/versions/1 |
Classification d'images ML Armv7 |
Service d'inférence de classification d'images pour les plateformes Armv7.
ARN : arn:aws:greengrass:region ::/connectors/ImageClassificationARMv7/versions/1 |
Pour obtenir des informations sur les changements apportés aux versions, veuillez consulter le Journal des modifications.
Prérequis
Ces connecteurs possèdent les exigences suivantes :
- Version 2
-
-
AWS IoT GreengrassCore Software v1.9.3 ou version ultérieure.
-
Python version 3.7 ou 3.8 installé sur le périphérique principal et ajouté à la variable d'environnement PATH.
Pour utiliser Python 3.8, exécutez la commande suivante pour créer un lien symbolique entre le dossier d'installation par défaut de Python 3.7 et les fichiers binaires Python 3.8 installés.
sudo ln -s path-to-python-3.8
/python3.8 /usr/bin/python3.7
Ceci configure votre appareil de sorte qu'il réponde aux exigence de Python pour AWS IoT Greengrass.
-
Dépendances pour l'infrastructure Apache MXNet installée sur l'appareil principal. Pour plus d'informations, veuillez consulter Installation des dépendances MXNet sur AWS IoT Greengrass Core.
-
Une ressource ML du groupe Greengrass qui fait référence à une source de SageMaker modèle. Ce modèle doit être entraîné par l'algorithme de classification des SageMaker images. Pour plus d'informations, consultez la section Algorithme de classification des images dans le manuel Amazon SageMaker Developer Guide.
-
Le connecteur ML Feedback a été ajouté au groupe Greengrass et configuré. Cette opération est obligatoire uniquement si vous souhaitez utiliser le connecteur pour charger les données d'entrée de modèle et publier les prédictions dans une rubrique MQTT.
-
Le rôle de groupe Greengrass est configuré pour autoriser l'sagemaker:DescribeTrainingJob
action sur la tâche de formation cible, comme illustré dans l'exemple de politique IAM suivant.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"sagemaker:DescribeTrainingJob"
],
"Resource": "arn:aws:sagemaker:region
:account-id
:training-job:training-job-name
"
}
]
}
Pour l'exigence de rôle de groupe, vous devez configurer le rôle de manière à accorder les autorisations requises et à vous assurer que le rôle a été ajouté au groupe. Pour plus d'informations, consultez Gestion du rôle de groupe Greengrass (console) ou Gestion du rôle de groupe Greengrass (interface de ligne de commande).
Vous pouvez octroyer un accès précis ou conditionnel aux ressources (par exemple, en utilisant un schéma d'attribution de nom avec caractère générique *). Si vous modifiez le poste de formation cible à l'avenir, veillez à mettre à jour le rôle du groupe.
-
AWS IoT GreengrassLe SDK Machine Learning v1.1.0 est requis pour interagir avec ce connecteur.
- Version 1
-
-
AWS IoT GreengrassCore Software v1.7 ou version ultérieure.
-
Python version 2.7 installé sur le périphérique principal et ajouté à la variable d'environnement PATH.
-
Dépendances pour l'infrastructure Apache MXNet installée sur l'appareil principal. Pour plus d'informations, veuillez consulter Installation des dépendances MXNet sur AWS IoT Greengrass Core.
-
Une ressource ML du groupe Greengrass qui fait référence à une source de SageMaker modèle. Ce modèle doit être entraîné par l'algorithme de classification des SageMaker images. Pour plus d'informations, consultez la section Algorithme de classification des images dans le manuel Amazon SageMaker Developer Guide.
-
Le rôle de groupe Greengrass est configuré pour autoriser l'sagemaker:DescribeTrainingJob
action sur la tâche de formation cible, comme illustré dans l'exemple de politique IAM suivant.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"sagemaker:DescribeTrainingJob"
],
"Resource": "arn:aws:sagemaker:region
:account-id
:training-job:training-job-name
"
}
]
}
Pour l'exigence de rôle de groupe, vous devez configurer le rôle de manière à accorder les autorisations requises et à vous assurer que le rôle a été ajouté au groupe. Pour plus d'informations, consultez Gestion du rôle de groupe Greengrass (console) ou Gestion du rôle de groupe Greengrass (interface de ligne de commande).
Vous pouvez octroyer un accès précis ou conditionnel aux ressources (par exemple, en utilisant un schéma d'attribution de nom avec caractère générique *). Si vous modifiez le poste de formation cible à l'avenir, veillez à mettre à jour le rôle du groupe.
-
AWS IoT GreengrassLe SDK Machine Learning v1.0.0 ou version ultérieure est requis pour interagir avec ce connecteur.
Paramètres du connecteur
Ces connecteurs fournissent les paramètres suivants.
- Version 2
-
MLModelDestinationPath
-
Le chemin local absolu de la ressource ML dans l'environnement Lambda. Il s'agit du chemin de destination spécifié pour la ressource de ML.
Si vous avez créé la ressource de ML dans la console, il s'agit du chemin d'accès local.
Nom d'affichage dans la AWS IoT console : chemin de destination du modèle
Nécessaire : true
Type: string
Schéma valide : .+
MLModelResourceId
-
ID de la ressource de ML qui référence le modèle de source.
Nom affiché dans la AWS IoT console : ressource ARN du SageMaker job
Nécessaire : true
Type: string
Schéma valide : [a-zA-Z0-9:_-]+
MLModelSageMakerJobArn
-
L'ARN de la tâche de SageMaker formation qui représente la source du SageMaker modèle. Le modèle doit être entraîné par l'algorithme de classification des SageMaker images.
Nom affiché dans la AWS IoT console : SageMaker job ARN
Nécessaire : true
Type: string
Schéma valide : ^arn:aws:sagemaker:[a-zA-Z0-9-]+:[0-9]+:training-job/[a-zA-Z0-9][a-zA-Z0-9-]+$
LocalInferenceServiceName
-
Nom du service d'inférence local. Les fonctions Lambda définies par l'utilisateur appellent le service en transmettant le nom à invoke_inference_service
la fonction du SDK Machine AWS IoT Greengrass Learning. Pour voir un exemple, consultez Exemple d'utilisation.
Nom affiché dans la AWS IoT console : nom du service d'inférence local
Nécessaire : true
Type: string
Schéma valide : [a-zA-Z0-9][a-zA-Z0-9-]{1,62}
LocalInferenceServiceTimeoutSeconds
-
Durée (en secondes) avant laquelle la demande d'inférence est interrompue. La valeur minimale est de 1.
Nom affiché dans la AWS IoT console : Timeout (seconde)
Nécessaire : true
Type: string
Schéma valide : [1-9][0-9]*
LocalInferenceServiceMemoryLimitKB
-
Quantité de mémoire (en Ko) à laquelle le service a accès. La valeur minimale est de 1.
Nom affiché dans la AWS IoT console : Limite de mémoire (Ko)
Nécessaire : true
Type: string
Schéma valide : [1-9][0-9]*
GPUAcceleration
-
Contexte de calcul de l'UC ou du GPU (accéléré). Cette propriété s'applique uniquement au connecteur ML Image Classification Aarch64 JTX2.
Nom affiché dans la AWS IoT console : accélération du processeur graphique
Nécessaire : true
Type: string
Valeurs valides : CPU
ou GPU
MLFeedbackConnectorConfigId
-
ID de la configuration de commentaire à utiliser pour charger les données d'entrée du modèle. Cela doit correspondre à l'ID d'une configuration de commentaire définie pour le connecteur ML Feedback.
Ce paramètre est obligatoire uniquement si vous souhaitez utiliser le connecteur ML Feedback pour charger les données d'entrée du modèle et publier des prédictions dans une rubrique MQTT.
Nom affiché dans la AWS IoT console : ID de configuration du connecteur ML Feedback
Nécessaire : false
Type: string
Schéma valide : ^$|^[a-zA-Z0-9][a-zA-Z0-9-]{1,62}$
- Version 1
-
MLModelDestinationPath
-
Le chemin local absolu de la ressource ML dans l'environnement Lambda. Il s'agit du chemin de destination spécifié pour la ressource de ML.
Si vous avez créé la ressource de ML dans la console, il s'agit du chemin d'accès local.
Nom d'affichage dans la AWS IoT console : chemin de destination du modèle
Nécessaire : true
Type: string
Schéma valide : .+
MLModelResourceId
-
ID de la ressource de ML qui référence le modèle de source.
Nom affiché dans la AWS IoT console : ressource ARN du SageMaker job
Nécessaire : true
Type: string
Schéma valide : [a-zA-Z0-9:_-]+
MLModelSageMakerJobArn
-
L'ARN de la tâche de SageMaker formation qui représente la source du SageMaker modèle. Le modèle doit être entraîné par l'algorithme de classification des SageMaker images.
Nom affiché dans la AWS IoT console : SageMaker job ARN
Nécessaire : true
Type: string
Schéma valide : ^arn:aws:sagemaker:[a-zA-Z0-9-]+:[0-9]+:training-job/[a-zA-Z0-9][a-zA-Z0-9-]+$
LocalInferenceServiceName
-
Nom du service d'inférence local. Les fonctions Lambda définies par l'utilisateur appellent le service en transmettant le nom à invoke_inference_service
la fonction du SDK Machine AWS IoT Greengrass Learning. Pour voir un exemple, consultez Exemple d'utilisation.
Nom affiché dans la AWS IoT console : nom du service d'inférence local
Nécessaire : true
Type: string
Schéma valide : [a-zA-Z0-9][a-zA-Z0-9-]{1,62}
LocalInferenceServiceTimeoutSeconds
-
Durée (en secondes) avant laquelle la demande d'inférence est interrompue. La valeur minimale est de 1.
Nom affiché dans la AWS IoT console : Timeout (seconde)
Nécessaire : true
Type: string
Schéma valide : [1-9][0-9]*
LocalInferenceServiceMemoryLimitKB
-
Quantité de mémoire (en Ko) à laquelle le service a accès. La valeur minimale est de 1.
Nom affiché dans la AWS IoT console : Limite de mémoire (Ko)
Nécessaire : true
Type: string
Schéma valide : [1-9][0-9]*
GPUAcceleration
-
Contexte de calcul de l'UC ou du GPU (accéléré). Cette propriété s'applique uniquement au connecteur ML Image Classification Aarch64 JTX2.
Nom affiché dans la AWS IoT console : accélération du processeur graphique
Nécessaire : true
Type: string
Valeurs valides : CPU
ou GPU
Exemple de création de connecteur (AWS CLI)
Les commandes CLI suivantes créent un ConnectorDefinition
avec une version initiale contenant un connecteur de classification d'images ML.
- Exemple : instance d'UC
-
Cet exemple crée une instance du connecteur ARMv7L ML Image Classification.
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{
"Connectors": [
{
"Id": "MyImageClassificationConnector",
"ConnectorArn": "arn:aws:greengrass:region
::/connectors/ImageClassificationARMv7/versions/2",
"Parameters": {
"MLModelDestinationPath": "/path-to-model",
"MLModelResourceId": "my-ml-resource",
"MLModelSageMakerJobArn": "arn:aws:sagemaker:us-west-2:123456789012:training-job:MyImageClassifier",
"LocalInferenceServiceName": "imageClassification",
"LocalInferenceServiceTimeoutSeconds": "10",
"LocalInferenceServiceMemoryLimitKB": "500000",
"MLFeedbackConnectorConfigId": "MyConfig0"
}
}
]
}'
- Exemple : instance de GPU
-
Cet exemple crée une instance du connecteur ML Image Classification Aarch64 JTX2, qui prend en charge l'accélération du GPU sur une carte NVIDIA Jetson TX2.
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{
"Connectors": [
{
"Id": "MyImageClassificationConnector",
"ConnectorArn": "arn:aws:greengrass:region
::/connectors/ImageClassificationAarch64JTX2/versions/2",
"Parameters": {
"MLModelDestinationPath": "/path-to-model",
"MLModelResourceId": "my-ml-resource",
"MLModelSageMakerJobArn": "arn:aws:sagemaker:us-west-2:123456789012:training-job:MyImageClassifier",
"LocalInferenceServiceName": "imageClassification",
"LocalInferenceServiceTimeoutSeconds": "10",
"LocalInferenceServiceMemoryLimitKB": "500000",
"GPUAcceleration": "GPU",
"MLFeedbackConnectorConfigId": "MyConfig0"
}
}
]
}'
La fonction Lambda de ces connecteurs a une longue durée de vie.
Dans la AWS IoT Greengrass console, vous pouvez ajouter un connecteur depuis la page Connecteurs du groupe. Pour plus d'informations, veuillez consulter Mise en route avec les connecteurs Greengrass (console).
Ces connecteurs acceptent un fichier image comme entrée. Les fichiers image d'entrée doivent être au format jpeg
ou png
. Pour plus d'informations, veuillez consulter Exemple d'utilisation.
Ces connecteurs n'acceptent pas les messages MQTT comme données d'entrée.
Données de sortie
Ces connecteurs renvoient une prédiction formatée pour l'objet identifié dans l'image d'entrée :
[0.3,0.1,0.04,...]
La prédiction contient une liste de valeurs qui correspondent aux catégories utilisées dans l'ensemble de données de formation pendant la formation du modèle. Chaque valeur représente la probabilité que l'image relève de la catégorie correspondante. La catégorie avec la plus haute probabilité est la prédiction dominante.
Ces connecteurs ne publient pas les messages MQTT sous forme de données de sortie.
Exemple d'utilisation
L'exemple de fonction Lambda suivant utilise le SDK AWS IoT Greengrass Machine Learning pour interagir avec un connecteur ML Image Classification.
L'exemple initialise un client de kit de développement logiciel et appelle de façon synchrone la fonction invoke_inference_service
du SDK pour appeler le service d'inférence local. Il transmet le type d'algorithme, le nom de service, le type d'image et le contenu de l'image. Ensuite, l'exemple analyse la réponse du service pour obtenir les résultats probables (prédictions).
- Python 3.7
-
import logging
from threading import Timer
import numpy as np
import greengrass_machine_learning_sdk as ml
# We assume the inference input image is provided as a local file
# to this inference client Lambda function.
with open('/test_img/test.jpg', 'rb') as f:
content = bytearray(f.read())
client = ml.client('inference')
def infer():
logging.info('invoking Greengrass ML Inference service')
try:
resp = client.invoke_inference_service(
AlgoType='image-classification',
ServiceName='imageClassification',
ContentType='image/jpeg',
Body=content
)
except ml.GreengrassInferenceException as e:
logging.info('inference exception {}("{}")'.format(e.__class__.__name__, e))
return
except ml.GreengrassDependencyException as e:
logging.info('dependency exception {}("{}")'.format(e.__class__.__name__, e))
return
logging.info('resp: {}'.format(resp))
predictions = resp['Body'].read().decode("utf-8")
logging.info('predictions: {}'.format(predictions))
# The connector output is in the format: [0.3,0.1,0.04,...]
# Remove the '[' and ']' at the beginning and end.
predictions = predictions[1:-1]
count = len(predictions.split(','))
predictions_arr = np.fromstring(predictions, count=count, sep=',')
# Perform business logic that relies on the predictions_arr, which is an array
# of probabilities.
# Schedule the infer() function to run again in one second.
Timer(1, infer).start()
return
infer()
def function_handler(event, context):
return
- Python 2.7
-
import logging
from threading import Timer
import numpy
import greengrass_machine_learning_sdk as gg_ml
# The inference input image.
with open("/test_img/test.jpg", "rb") as f:
content = f.read()
client = gg_ml.client("inference")
def infer():
logging.info("Invoking Greengrass ML Inference service")
try:
resp = client.invoke_inference_service(
AlgoType="image-classification",
ServiceName="imageClassification",
ContentType="image/jpeg",
Body=content,
)
except gg_ml.GreengrassInferenceException as e:
logging.info('Inference exception %s("%s")', e.__class__.__name__, e)
return
except gg_ml.GreengrassDependencyException as e:
logging.info('Dependency exception %s("%s")', e.__class__.__name__, e)
return
logging.info("Response: %s", resp)
predictions = resp["Body"].read()
logging.info("Predictions: %s", predictions)
# The connector output is in the format: [0.3,0.1,0.04,...]
# Remove the '[' and ']' at the beginning and end.
predictions = predictions[1:-1]
predictions_arr = numpy.fromstring(predictions, sep=",")
logging.info("Split into %s predictions.", len(predictions_arr))
# Perform business logic that relies on predictions_arr, which is an array
# of probabilities.
# Schedule the infer() function to run again in one second.
Timer(1, infer).start()
infer()
# In this example, the required AWS Lambda handler is never called.
def function_handler(event, context):
return
La invoke_inference_service
fonction du SDK AWS IoT Greengrass Machine Learning accepte les arguments suivants.
Argument |
Description |
AlgoType
|
Nom du type d'algorithme à utiliser pour l'inférence. Actuellement, seul image-classification est pris en charge.
Nécessaire : true
Type: string
Valeurs valides : image-classification |
ServiceName
|
Nom du service d'inférence local. Utilisez le nom que vous avez spécifié pour le paramètre LocalInferenceServiceName lorsque vous avez configuré le connecteur.
Nécessaire : true
Type: string |
ContentType
|
Nom du type mime de l'image d'entrée.
Nécessaire : true
Type: string
Valeurs valides : image/jpeg, image/png |
Body
|
Contenu du type mime de l'image d'entrée.
Nécessaire : true
Type: binary |
Installation des dépendances MXNet sur AWS IoT Greengrass Core
Pour utiliser un connecteur de classification d'images ML, vous devez installer les dépendances du framework Apache MXnet sur le périphérique principal. Le connecteur utilise l'infrastructure pour servir le modèle ML.
Ces connecteurs sont fournis avec une bibliothèque MXNet précompilée, de sorte que vous n'êtes pas obligé d'installer l'infrastructure MXNet elle-même sur l'appareil principal.
AWS IoT Greengrass fournit des scripts pour installer les dépendances pour les plateformes et les appareils courants suivants (ou à utiliser comme référence pour leur installation). Si vous utilisez une autre plateforme ou un autre appareil, consultez la documentation MXNet correspondant à votre configuration.
Avant d'installer les dépendances MXNet, assurez-vous que les bibliothèques système requises (avec les versions minimales spécifiées) sont présentes sur l'appareil.
- NVIDIA Jetson TX2
-
-
Installer CUDA Toolkit 9.0 et cuDNN 7.0. Vous pouvez suivre les instructions de Configuration d'autres appareils dans le didacticiel Démarrez.
-
Activez les référentiels univers de sorte que le connecteur peut installer les logiciels open source maintenus par la communauté. Pour plus d'informations, consultez Repositories/Ubuntu dans la documentation Ubuntu.
-
Ouvrez le fichier /etc/apt/sources.list
.
-
Vérifiez que les lignes suivantes ne sont pas commentées :
deb http://ports.ubuntu.com/ubuntu-ports/ xenial universe
deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial universe
deb http://ports.ubuntu.com/ubuntu-ports/ xenial-updates universe
deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-updates universe
-
Enregistrez une copie du script d'installation suivant dans un fichier nommé nvidiajtx2.sh
sur l'appareil principal.
Python 3.7Python 2.7
- Python 3.7
#!/bin/bash
set -e
echo "Installing dependencies on the system..."
echo 'Assuming that universe repos are enabled and checking dependencies...'
apt-get -y update
apt-get -y dist-upgrade
apt-get install -y liblapack3 libopenblas-dev liblapack-dev libatlas-base-dev
apt-get install -y python3.7 python3.7-dev
python3.7 -m pip install --upgrade pip
python3.7 -m pip install numpy==1.15.0
python3.7 -m pip install opencv-python || echo 'Error: Unable to install OpenCV with pip on this platform. Try building the latest OpenCV from source (https://github.com/opencv/opencv).'
echo 'Dependency installation/upgrade complete.'
Si OpenCV ne s'installe pas correctement à l'aide de ce script, vous pouvez essayer de générer à partir de la source. Pour plus d'informations, consultez Installation sous Linux dans la documentation OpenCV ou consultez d'autres ressources en ligne pour votre plateforme.
- Python 2.7
#!/bin/bash
set -e
echo "Installing dependencies on the system..."
echo 'Assuming that universe repos are enabled and checking dependencies...'
apt-get -y update
apt-get -y dist-upgrade
apt-get install -y liblapack3 libopenblas-dev liblapack-dev libatlas-base-dev python-dev
echo 'Install latest pip...'
wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py
rm get-pip.py
pip install numpy==1.15.0 scipy
echo 'Dependency installation/upgrade complete.'
-
Dans le répertoire où vous avez enregistré le fichier, exécutez la commande suivante :
sudo nvidiajtx2.sh
- x86_64 (Ubuntu or Amazon Linux)
-
-
Enregistrez une copie du script d'installation suivant dans un fichier nommé x86_64.sh
sur l'appareil principal.
Python 3.7Python 2.7
- Python 3.7
#!/bin/bash
set -e
echo "Installing dependencies on the system..."
release=$(awk -F= '/^NAME/{print $2}' /etc/os-release)
if [ "$release" == '"Ubuntu"' ]; then
# Ubuntu. Supports EC2 and DeepLens. DeepLens has all the dependencies installed, so
# this is mostly to prepare dependencies on Ubuntu EC2 instance.
apt-get -y update
apt-get -y dist-upgrade
apt-get install -y libgfortran3 libsm6 libxext6 libxrender1
apt-get install -y python3.7 python3.7-dev
elif [ "$release" == '"Amazon Linux"' ]; then
# Amazon Linux. Expect python to be installed already
yum -y update
yum -y upgrade
yum install -y compat-gcc-48-libgfortran libSM libXrender libXext
else
echo "OS Release not supported: $release"
exit 1
fi
python3.7 -m pip install --upgrade pip
python3.7 -m pip install numpy==1.15.0
python3.7 -m pip install opencv-python || echo 'Error: Unable to install OpenCV with pip on this platform. Try building the latest OpenCV from source (https://github.com/opencv/opencv).'
echo 'Dependency installation/upgrade complete.'
Si OpenCV ne s'installe pas correctement à l'aide de ce script, vous pouvez essayer de générer à partir de la source. Pour plus d'informations, consultez Installation sous Linux dans la documentation OpenCV ou consultez d'autres ressources en ligne pour votre plateforme.
- Python 2.7
#!/bin/bash
set -e
echo "Installing dependencies on the system..."
release=$(awk -F= '/^NAME/{print $2}' /etc/os-release)
if [ "$release" == '"Ubuntu"' ]; then
# Ubuntu. Supports EC2 and DeepLens. DeepLens has all the dependencies installed, so
# this is mostly to prepare dependencies on Ubuntu EC2 instance.
apt-get -y update
apt-get -y dist-upgrade
apt-get install -y libgfortran3 libsm6 libxext6 libxrender1 python-dev python-pip
elif [ "$release" == '"Amazon Linux"' ]; then
# Amazon Linux. Expect python to be installed already
yum -y update
yum -y upgrade
yum install -y compat-gcc-48-libgfortran libSM libXrender libXext python-pip
else
echo "OS Release not supported: $release"
exit 1
fi
pip install numpy==1.15.0 scipy opencv-python
echo 'Dependency installation/upgrade complete.'
-
Dans le répertoire où vous avez enregistré le fichier, exécutez la commande suivante :
sudo x86_64.sh
- Armv7 (Raspberry Pi)
-
-
Enregistrez une copie du script d'installation suivant dans un fichier nommé armv7l.sh
sur l'appareil principal.
Python 3.7Python 2.7
- Python 3.7
#!/bin/bash
set -e
echo "Installing dependencies on the system..."
apt-get update
apt-get -y upgrade
apt-get install -y liblapack3 libopenblas-dev liblapack-dev
apt-get install -y python3.7 python3.7-dev
python3.7 -m pip install --upgrade pip
python3.7 -m pip install numpy==1.15.0
python3.7 -m pip install opencv-python || echo 'Error: Unable to install OpenCV with pip on this platform. Try building the latest OpenCV from source (https://github.com/opencv/opencv).'
echo 'Dependency installation/upgrade complete.'
Si OpenCV ne s'installe pas correctement à l'aide de ce script, vous pouvez essayer de générer à partir de la source. Pour plus d'informations, consultez Installation sous Linux dans la documentation OpenCV ou consultez d'autres ressources en ligne pour votre plateforme.
- Python 2.7
#!/bin/bash
set -e
echo "Installing dependencies on the system..."
apt-get update
apt-get -y upgrade
apt-get install -y liblapack3 libopenblas-dev liblapack-dev python-dev
# python-opencv depends on python-numpy. The latest version in the APT repository is python-numpy-1.8.2
# This script installs python-numpy first so that python-opencv can be installed, and then install the latest
# numpy-1.15.x with pip
apt-get install -y python-numpy python-opencv
dpkg --remove --force-depends python-numpy
echo 'Install latest pip...'
wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py
rm get-pip.py
pip install --upgrade numpy==1.15.0 picamera scipy
echo 'Dependency installation/upgrade complete.'
-
Dans le répertoire où vous avez enregistré le fichier, exécutez la commande suivante :
sudo bash armv7l.sh
Sur un Raspberry Pi, l'utilisation de pip
pour installer des dépendances d'apprentissage automatique est une opération gourmande en mémoire qui peut entraîner un dépassement de la capacité mémoire de l'appareil et une absence de réponse. Pour contourner ce problème, vous pouvez augmenter temporairement l'espace d'échange :
Dans /etc/dphys-swapfile
, augmentez la valeur de la variable CONF_SWAPSIZE
, puis exécutez la commande suivante pour redémarrer dphys-swapfile
.
/etc/init.d/dphys-swapfile restart
Journalisation et résolution des problèmes
Selon les paramètres de votre groupe, les journaux d'événements et d'erreurs sont écrits dans CloudWatch Logs, dans le système de fichiers local, ou dans les deux. Les journaux de ce connecteur utilisent le préfixe LocalInferenceServiceName
. Si le connecteur se comporte de manière inattendue, vérifiez les journaux du connecteur. Ces derniers contiennent généralement des informations de débogage utiles, telles que les dépendances de bibliothèque ML manquantes ou la cause d'une panne de démarrage d'un connecteur.
Si le AWS IoT Greengrass groupe est configuré pour écrire des journaux locaux, le connecteur écrit des fichiers journaux dansgreengrass-root
/ggc/var/log/user/region
/aws/
. Pour plus d'informations sur la journalisation de Greengrass, consultez. Surveillance avec les journaux AWS IoT Greengrass
Utilisez les informations suivantes pour résoudre les problèmes liés aux connecteurs ML Image Classification.
Bibliothèques système requises
Les onglets suivants répertorient les bibliothèques système requises pour chaque connecteur de classification d'images ML.
- ML Image Classification Aarch64 JTX2
-
d'outils |
Version minimale |
ld-linux-aarch64. so.1 | GLIBC_2.17 |
libc.so.6 | GLIBC_2.17 |
libcublas.so.9.0 | non applicable |
libcudart.so.9.0 | non applicable |
libcudnn.so.7 | non applicable |
libcufft.so.9.0 | non applicable |
libcurand.so.9.0 | non applicable |
libcusolver.so.9.0 | non applicable |
libgcc_s.so.1 | GCC_4.2.0 |
libgomp.so.1 | GOMP_4.0, OMP_1.0 |
libm.so.6 | GLIBC_2.23 |
libpthread.so.0 | GLIBC_2.17 |
librt.so.1 | GLIBC_2.17 |
libstdc++.so.6 | GLIBCXX_3.4.21, CXXABI_1.3.8 |
- ML Image Classification x86_64
-
d'outils |
Version minimale |
ld-linux-x86-64. so.2 | GCC_4.0.0 |
libc.so.6 | GLIBC_2.4 |
libgfortran.so.3 | GFORTRAN_1.0 |
libm.so.6 | GLIBC_2.23 |
libpthread.so.0 | GLIBC_2.2.5 |
librt.so.1 | GLIBC_2.2.5 |
libstdc++.so.6 | CXXABI_1.3.8, GLIBCXX_3.4.21 |
- ML Image Classification Armv7
-
d'outils |
Version minimale |
ld-linux-armhf.so.3 | GLIBC_2.4 |
libc.so.6 | GLIBC_2.7 |
libgcc_s.so.1 | GCC_4.0.0 |
libgfortran.so.3 | GFORTRAN_1.0 |
libm.so.6 | GLIBC_2.4 |
libpthread.so.0 | GLIBC_2.4 |
librt.so.1 | GLIBC_2.4 |
libstdc++.so.6 | CXXABI_1.3.8, CXXABI_ARM_1.3.3, GLIBCXX_3.4.20 |
Problèmes
Symptôme |
Solution |
Sur un appareil Raspberry Pi, le message d'erreur suivant est consigné, et vous n'utilisez pas la caméra : Failed to initialize libdc1394
|
Exécutez la commande suivante pour désactiver le pilote :
sudo ln /dev/null /dev/raw1394
Cette opération est éphémère et le lien symbolique disparaîtra après le redémarrage. Consultez le manuel de distribution de votre système d'exploitation pour savoir comment créer automatiquement le lien au redémarrage.
|
Licences
Les connecteurs ML Image Classification incluent les logiciels/licences tiers suivants :
Intel OpenMP Runtime Library licensing. Le moteur d'exécution Intel® OpenMP* est doté de deux licences, une licence commerciale (COM) faisant partie des produits de la suite Intel® Parallel Studio XE et une licence open source (OSS) BSD.
Ce connecteur est publié dans le cadre du contrat de licence logicielle Greengrass Core.
Journal des modifications
Le tableau suivant décrit les modifications apportées à chaque version du connecteur.
Version |
Modifications |
2 |
Ajout du MLFeedbackConnectorConfigId paramètre pour prendre en charge l'utilisation du connecteur ML Feedback pour télécharger les données d'entrée du modèle, publier des prédictions sur un sujet MQTT et publier des métriques sur Amazon CloudWatch.
|
1 |
Première version.
|
Un groupe Greengrass ne peut contenir qu'une seule version du connecteur à la fois. Pour de plus amples informations sur la mise à niveau d'une version de connecteur, veuillez consulter Mise à niveau des versions du connecteur.
Consulter aussi