AWS IoT Greengrass Version 1 trat am 30. Juni 2023 in die erweiterte Lebensphase ein. Weitere Informationen finden Sie in der AWS IoT Greengrass V1 Wartungsrichtlinie. Nach diesem Datum AWS IoT Greengrass V1 werden keine Updates mehr veröffentlicht, die Funktionen, Verbesserungen, Bugfixes oder Sicherheitspatches bieten. Geräte, die auf laufen, werden AWS IoT Greengrass V1 nicht gestört und funktionieren weiterhin und stellen eine Verbindung zur Cloud her. Wir empfehlen Ihnen dringend, zu migrieren AWS IoT Greengrass Version 2, da dies wichtige neue Funktionen und Unterstützung für zusätzliche Plattformen bietet.
Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Anschluss zur ML-Bildklassifizierung
Dieser Connector befindet sich in der Phase mit verlängerter Lebensdauer und veröffentlicht AWS IoT Greengrass keine Updates, die Funktionen, Verbesserungen vorhandener Funktionen, Sicherheitspatches oder Bugfixes bieten. Weitere Informationen finden Sie unter AWS IoT Greengrass Version 1Wartungspolitik.
Die ML Image Classification-Konnektoren bieten einen Inferenzdienst für maschinelles Lernen (ML), der auf dem AWS IoT Greengrass Kern ausgeführt wird. Dieser lokale Inferenzdienst führt die Bildklassifizierung mithilfe eines Modells durch, das vom SageMaker Bildklassifizierungsalgorithmus trainiert wurde.
Benutzerdefinierte Lambda-Funktionen verwenden das AWS IoT Greengrass Machine Learning SDK, um Inferenzanfragen an den lokalen Inferenzdienst zu senden. Der Dienst führt die Inferenz lokal aus und gibt die Wahrscheinlichkeit zurück, dass das Eingabebild zu bestimmten Kategorien gehört.
AWS IoT Greengrass stellt die folgenden Versionen dieses Konnektors bereit, der für mehrere Plattformen verfügbar ist.
- Version 2
-
Konnektor |
Beschreibung und ARN |
ML-Bildklassifizierung: Aarch64, JTX2 |
Bildklassifikation Inferenzdienst für NVIDIA Jetson TX2. Unterstützt die GPU-Beschleunigung.
ARN: arn:aws:greengrass:region ::/connectors/ImageClassificationAarch64JTX2/versions/2 |
ML-Bildklassifizierung x86_64 |
Bildklassifikation Inferenzdienst für x86_64 Plattformen.
ARN: arn:aws:greengrass:region ::/connectors/ImageClassificationx86-64/versions/2 |
ML-Bildklassifizierung ARMv7 |
Bildklassifikation Inferenzdienst für ARMv7-Plattformen.
ARN: arn:aws:greengrass:region ::/connectors/ImageClassificationARMv7/versions/2 |
- Version 1
-
Konnektor |
Beschreibung und ARN |
ML-Bildklassifizierung Aarch64 JTX2 |
Bildklassifikation Inferenzdienst für NVIDIA Jetson TX2. Unterstützt die GPU-Beschleunigung.
ARN: arn:aws:greengrass:region ::/connectors/ImageClassificationAarch64JTX2/versions/1 |
ML-Bildklassifizierung x86_64 |
Bildklassifikation Inferenzdienst für x86_64 Plattformen.
ARN: arn:aws:greengrass:region ::/connectors/ImageClassificationx86-64/versions/1 |
ML-Bildklassifizierung Armv7 |
Inferenzdienst zur Bildklassifizierung für ARMv7-Plattformen.
ARN: arn:aws:greengrass:region ::/connectors/ImageClassificationARMv7/versions/1 |
Informationen über Versionsänderungen finden Sie im Änderungsprotokoll.
Voraussetzungen
Für diese Konnektoren gelten die folgenden Anforderungen:
- Version 2
-
-
AWS IoT GreengrassKernsoftware v1.9.3 oder höher.
-
Python-Version 3.7 oder 3.8 wurde auf dem Core-Gerät installiert und zur Umgebungsvariablen PATH hinzugefügt.
Um Python 3.8 zu verwenden, führen Sie den folgenden Befehl aus, um einen symbolischen Link vom standardmäßigen Python 3.7-Installationsordner zu den installierten Python 3.8-Binärdateien zu erstellen.
sudo ln -s path-to-python-3.8
/python3.8 /usr/bin/python3.7
Dadurch wird Ihr Gerät so konfiguriert, dass es die Python-Anforderung für AWS IoT Greengrass erfüllt.
-
Abhängigkeiten für das auf dem Core-Gerät installierte Apache MXNet-Framework. Weitere Informationen finden Sie unter Installieren von MXNet-Abhängigkeiten auf dem AWS IoT Greengrass Core.
-
Eine ML-Ressource in der Greengrass-Gruppe, die auf eine SageMaker Modellquelle verweist. Dieses Modell muss mit dem SageMaker Bildklassifizierungsalgorithmus trainiert werden. Weitere Informationen finden Sie unter Algorithmus zur Bildklassifizierung im Amazon SageMaker Developer Guide.
-
Der ML Feedback-Connector wurde der Greengrass-Gruppe hinzugefügt und konfiguriert. Nur erforderlich, wenn Sie den Konnektor verwenden möchten, um Modelleingabedaten hochzuladen und Prognosen in einem MQTT-Thema zu veröffentlichen.
-
Die Greengrass-Gruppenrolle ist so konfiguriert, dass sie die sagemaker:DescribeTrainingJob
Aktion für den Ziel-Trainingsjob zulässt, wie im folgenden Beispiel für eine IAM-Richtlinie gezeigt.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"sagemaker:DescribeTrainingJob"
],
"Resource": "arn:aws:sagemaker:region
:account-id
:training-job:training-job-name
"
}
]
}
Für die Gruppenrollenanforderung müssen Sie die Rolle so konfigurieren, dass die erforderlichen Berechtigungen erteilt werden, und sicherstellen, dass die Rolle der Gruppe hinzugefügt wurde. Weitere Informationen finden Sie unter Verwalten der Greengrass-Gruppenrolle (Konsole) oder Verwalten der Greengrass-Gruppenrolle (CLI).
Sie können granularen oder bedingten Zugriff auf Ressourcen gewähren (etwa mit einem Benennungsschema mit Platzhaltern *). Wenn Sie den Zielausbildungsjob in future ändern, stellen Sie sicher, dass Sie die Gruppenrolle aktualisieren.
-
AWS IoT GreengrassFür die Interaktion mit diesem Connector ist das Machine Learning SDK v1.1.0 erforderlich.
- Version 1
-
-
AWS IoT GreengrassCore Software v1.7 oder höher.
-
Python-Version 2.7 wurde auf dem Core-Gerät installiert und zur Umgebungsvariablen PATH hinzugefügt.
-
Abhängigkeiten für das auf dem Core-Gerät installierte Apache MXNet-Framework. Weitere Informationen finden Sie unter Installieren von MXNet-Abhängigkeiten auf dem AWS IoT Greengrass Core.
-
Eine ML-Ressource in der Greengrass-Gruppe, die auf eine SageMaker Modellquelle verweist. Dieses Modell muss mit dem SageMaker Bildklassifizierungsalgorithmus trainiert werden. Weitere Informationen finden Sie unter Algorithmus zur Bildklassifizierung im Amazon SageMaker Developer Guide.
-
Die Greengrass-Gruppenrolle ist so konfiguriert, dass sie die sagemaker:DescribeTrainingJob
Aktion für den Ziel-Trainingsjob zulässt, wie im folgenden Beispiel für eine IAM-Richtlinie gezeigt.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"sagemaker:DescribeTrainingJob"
],
"Resource": "arn:aws:sagemaker:region
:account-id
:training-job:training-job-name
"
}
]
}
Für die Gruppenrollenanforderung müssen Sie die Rolle so konfigurieren, dass die erforderlichen Berechtigungen erteilt werden, und sicherstellen, dass die Rolle der Gruppe hinzugefügt wurde. Weitere Informationen finden Sie unter Verwalten der Greengrass-Gruppenrolle (Konsole) oder Verwalten der Greengrass-Gruppenrolle (CLI).
Sie können granularen oder bedingten Zugriff auf Ressourcen gewähren (etwa mit einem Benennungsschema mit Platzhaltern *). Wenn Sie den Zielausbildungsjob in future ändern, stellen Sie sicher, dass Sie die Gruppenrolle aktualisieren.
-
AWS IoT GreengrassFür die Interaktion mit diesem Connector ist Machine Learning SDK v1.0.0 oder höher erforderlich.
Konnektor-Parameter
Diese Konnektoren stellen die folgenden Parameter bereit.
- Version 2
-
MLModelDestinationPath
-
Der absolute lokale Pfad der ML-Ressource innerhalb der Lambda-Umgebung. Dies ist der Zielpfad, der für die ML-Ressource angegeben ist.
Wenn Sie die ML-Ressource in der Konsole angelegt haben, ist dies der lokale Pfad.
Anzeigename in der AWS IoT Konsole: Zielpfad des Modells
Erforderlich: true
Typ: string
Gültiges Muster: .+
MLModelResourceId
-
Die ID der ML-Ressource, die auf das Quellmodell verweist.
Anzeigename in der AWS IoT Konsole: SageMaker Job-ARN-Ressource
Erforderlich: true
Typ: string
Gültiges Muster: [a-zA-Z0-9:_-]+
MLModelSageMakerJobArn
-
Der ARN des SageMaker Trainingsjobs, der die SageMaker Modellquelle darstellt. Das Modell muss mit dem SageMaker Bildklassifizierungsalgorithmus trainiert werden.
Anzeigename in der AWS IoT Konsole: SageMaker Job ARN
Erforderlich: true
Typ: string
Gültiges Muster: ^arn:aws:sagemaker:[a-zA-Z0-9-]+:[0-9]+:training-job/[a-zA-Z0-9][a-zA-Z0-9-]+$
LocalInferenceServiceName
-
Der Name für den lokalen Inferenzdienst. Benutzerdefinierte Lambda-Funktionen rufen den Dienst auf, indem sie den Namen an die invoke_inference_service
Funktion des AWS IoT Greengrass Machine Learning SDK übergeben. Ein Beispiel finden Sie unter Beispiel für eine Verwendung.
Anzeigename in der AWS IoT Konsole: Name des lokalen Inferenzdienstes
Erforderlich: true
Typ: string
Gültiges Muster: [a-zA-Z0-9][a-zA-Z0-9-]{1,62}
LocalInferenceServiceTimeoutSeconds
-
Die Zeitspanne (in Sekunden), nach der die Inferenzanforderung beendet wird. Der minimale Wert beträgt 1.
Anzeigename in der AWS IoT Konsole: Timeout (Sekunde)
Erforderlich: true
Typ: string
Gültiges Muster: [1-9][0-9]*
LocalInferenceServiceMemoryLimitKB
-
Die Speichergröße (in KB), auf die der Service Zugriff hat. Der minimale Wert beträgt 1.
Anzeigename in der AWS IoT Konsole: Speicherlimit (KB)
Erforderlich: true
Typ: string
Gültiges Muster: [1-9][0-9]*
GPUAcceleration
-
Der CPU- oder GPU-(beschleunigte) Berechnungskontext. Diese Eigenschaft gilt nur für den ML Image Classification Aarch64 JTX2-Konnektor.
Anzeigename in der Konsole: AWS IoT GPU-Beschleunigung
Erforderlich: true
Typ: string
Gültige Werte: CPU
oder GPU
.
MLFeedbackConnectorConfigId
-
Die ID der Feedback-Konfiguration, die zum Hochladen von Modelleingabedaten verwendet werden soll. Diese muss mit der ID einer Feedback-Konfiguration übereinstimmen, die für den ML-Feedback-Konnektordefiniert ist.
Dieser Parameter ist nur erforderlich, wenn Sie den ML-Feedback-Konnektor verwenden möchten, um Modelleingabedaten hochzuladen und Prognosen in einem MQTT-Thema zu veröffentlichen.
Anzeigename in der AWS IoT Konsole: Konfigurations-ID des ML Feedback-Connectors
Erforderlich: false
Typ: string
Gültiges Muster: ^$|^[a-zA-Z0-9][a-zA-Z0-9-]{1,62}$
- Version 1
-
MLModelDestinationPath
-
Der absolute lokale Pfad der ML-Ressource innerhalb der Lambda-Umgebung. Dies ist der Zielpfad, der für die ML-Ressource angegeben ist.
Wenn Sie die ML-Ressource in der Konsole angelegt haben, ist dies der lokale Pfad.
Anzeigename in der AWS IoT Konsole: Zielpfad des Modells
Erforderlich: true
Typ: string
Gültiges Muster: .+
MLModelResourceId
-
Die ID der ML-Ressource, die auf das Quellmodell verweist.
Anzeigename in der AWS IoT Konsole: SageMaker Job-ARN-Ressource
Erforderlich: true
Typ: string
Gültiges Muster: [a-zA-Z0-9:_-]+
MLModelSageMakerJobArn
-
Der ARN des SageMaker Trainingsjobs, der die SageMaker Modellquelle darstellt. Das Modell muss mit dem SageMaker Bildklassifizierungsalgorithmus trainiert werden.
Anzeigename in der AWS IoT Konsole: SageMaker Job ARN
Erforderlich: true
Typ: string
Gültiges Muster: ^arn:aws:sagemaker:[a-zA-Z0-9-]+:[0-9]+:training-job/[a-zA-Z0-9][a-zA-Z0-9-]+$
LocalInferenceServiceName
-
Der Name für den lokalen Inferenzdienst. Benutzerdefinierte Lambda-Funktionen rufen den Dienst auf, indem sie den Namen an die invoke_inference_service
Funktion des AWS IoT Greengrass Machine Learning SDK übergeben. Ein Beispiel finden Sie unter Beispiel für eine Verwendung.
Anzeigename in der AWS IoT Konsole: Name des lokalen Inferenzdienstes
Erforderlich: true
Typ: string
Gültiges Muster: [a-zA-Z0-9][a-zA-Z0-9-]{1,62}
LocalInferenceServiceTimeoutSeconds
-
Die Zeitspanne (in Sekunden), nach der die Inferenzanforderung beendet wird. Der minimale Wert beträgt 1.
Anzeigename in der AWS IoT Konsole: Timeout (Sekunde)
Erforderlich: true
Typ: string
Gültiges Muster: [1-9][0-9]*
LocalInferenceServiceMemoryLimitKB
-
Die Speichergröße (in KB), auf die der Service Zugriff hat. Der minimale Wert beträgt 1.
Anzeigename in der AWS IoT Konsole: Speicherlimit (KB)
Erforderlich: true
Typ: string
Gültiges Muster: [1-9][0-9]*
GPUAcceleration
-
Der CPU- oder GPU-(beschleunigte) Berechnungskontext. Diese Eigenschaft gilt nur für den ML Image Classification Aarch64 JTX2-Konnektor.
Anzeigename in der Konsole: AWS IoT GPU-Beschleunigung
Erforderlich: true
Typ: string
Gültige Werte: CPU
oder GPU
.
Beispiel für das Erstellen eines Konnektors (AWS CLI)
Die folgenden CLI-Befehle erstellen eine ConnectorDefinition
mit einer ersten Version, die einen ML Image Classification Connector enthält.
- Example: CPU Instance (Beispiel: CPU-Instance)
-
In diesem Beispiel wird eine Instanz des ML Image Classification ARMv7L-Connectors erstellt.
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"
}
}
]
}'
- Example: GPU Instance (Beispiel: GPU-Instance)
-
In diesem Beispiel wird eine Instanz des ML Image Classification Aarch64 JTX2-Connectors erstellt, der die GPU-Beschleunigung auf einer NVIDIA Jetson TX2-Karte unterstützt.
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"
}
}
]
}'
In der AWS IoT Greengrass Konsole können Sie über die Connectors-Seite der Gruppe einen Connector hinzufügen. Weitere Informationen finden Sie unter Erste Schritte mit Greengrass-Konnektoren (Konsole).
Diese Konnektoren akzeptieren eine Bilddatei als Eingabe. Eingabebilddateien müssen im jpeg
- oder png
-Format vorliegen. Weitere Informationen finden Sie unter Beispiel für eine Verwendung.
Diese Konnektoren akzeptieren keine MQTT-Nachrichten als Eingabedaten.
Ausgabedaten
Diese Konnektoren geben eine formatierte Prognose für das im Eingabebild identifizierte Objekt zurück:
[0.3,0.1,0.04,...]
Die Prognose enthält eine Liste von Werten, die den Kategorien entsprechen, die während der Modellschulung im Schulungs-Dataset verwendet werden. Jeder Wert stellt die Wahrscheinlichkeit dar, dass das Bild unter die entsprechende Kategorie fällt. Die Kategorie mit der höchsten Wahrscheinlichkeit ist die dominante Prognose.
Diese Konnektoren veröffentlichen keine MQTT-Nachrichten als Ausgabedaten.
Beispiel für eine Verwendung
Die folgende Lambda-Beispielfunktion verwendet das AWS IoT GreengrassMachine Learning SDK, um mit einem ML Image Classification Connector zu interagieren.
Das Beispiel initialisiert einen SDK-Client und ruft synchron die Funktion invoke_inference_service
des SDK auf, um den lokalen Inferenzdienst aufzurufen. Es wird der Algorithmustyp, der Servicename, der Bildtyp und der Bildinhalt übergeben. Anschließend analysiert das Beispiel die Service-Antwort, um die Wahrscheinlichkeitsergebnisse (Vorhersagen) zu erhalten.
- 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
Die invoke_inference_service
Funktion im AWS IoT Greengrass Machine Learning SDK akzeptiert die folgenden Argumente.
Argument |
Beschreibung |
AlgoType
|
Der Name des Algorithmentyps, der für die Inferenz verwendet werden soll. Derzeit wird nur image-classification unterstützt.
Erforderlich: true
Typ: string
Zulässige Werte: image-classification |
ServiceName
|
Der Name des lokalen Inferenzdienstes. Verwenden Sie den Namen, den Sie für den Parameter LocalInferenceServiceName bei der Konfiguration des Konnektors angegeben haben.
Erforderlich: true
Typ: string |
ContentType
|
Der Mime-Typ des Eingangsbildes.
Erforderlich: true
Typ: string
Zulässige Werte: image/jpeg, image/png |
Body
|
Der Inhalt der Eingabebilddatei.
Erforderlich: true
Typ: binary |
Installieren von MXNet-Abhängigkeiten auf dem AWS IoT Greengrass Core
Um einen ML Image Classification Connector zu verwenden, müssen Sie die Abhängigkeiten für das Apache MXNet-Framework auf dem Kerngerät installieren. Die Konnektoren verwenden das Framework für die Bereitstellung des ML-Modells.
Diese Konnektoren sind mit einer vorkompilierten MXNet-Bibliothek gebündelt, sodass Sie das MXNet-Framework nicht auf dem Core-Gerät installieren müssen.
AWS IoT Greengrass bietet Skripts zum Installieren der Abhängigkeiten für die folgenden gängigen Plattformen und Geräte (oder zur Verwendung als Referenz für die Installation). Wenn Sie eine andere Plattform oder ein anderes Gerät verwenden, lesen Sie die MXNet-Dokumentation für Ihre Konfiguration.
Stellen Sie vor der Installation der MXNet-Abhängigkeiten sicher, dass die erforderlichen Systembibliotheken (mit den angegebenen Mindestversionen) auf dem Gerät vorhanden sind.
- NVIDIA Jetson TX2
-
-
Installieren Sie CUDA Toolkit 9.0 und cuDNN 7.0. Befolgen Sie die Anweisungen unter Einrichten anderer Geräte im Tutorial "Erste Schritte".
-
Aktivieren Sie Universum-Repositorys, damit der Konnektor offene, von der Community verwaltete Software installieren kann. Weitere Informationen finden Sie unter Repositories/Ubuntu in der Ubuntu-Dokumentation.
-
Öffnen Sie die /etc/apt/sources.list
Datei.
-
Achten Sie darauf, dass die folgenden Zeilen nicht kommentiert sind.
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
-
Speichern Sie eine Kopie des folgenden Installationsskripts in einer Datei namens nvidiajtx2.sh
auf dem Core-Gerät.
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.'
Wenn OpenCV mit diesem Skript nicht erfolgreich installiert wird, können Sie versuchen, es aus der Quelle zu erstellen. Weitere Informationen finden Sie unter Installation in Linux in der OpenCV-Dokumentation oder in anderen Online-Ressourcen für Ihre Plattform.
- 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.'
-
Führen Sie in dem Verzeichnis, in dem Sie die Datei gespeichert haben, den folgenden Befehl aus:
sudo nvidiajtx2.sh
- x86_64 (Ubuntu or Amazon Linux)
-
-
Speichern Sie eine Kopie des folgenden Installationsskripts in einer Datei namens x86_64.sh
auf dem Core-Gerät.
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.'
Wenn OpenCV mit diesem Skript nicht erfolgreich installiert wird, können Sie versuchen, es aus der Quelle zu erstellen. Weitere Informationen finden Sie unter Installation in Linux in der OpenCV-Dokumentation oder in anderen Online-Ressourcen für Ihre Plattform.
- 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.'
-
Führen Sie in dem Verzeichnis, in dem Sie die Datei gespeichert haben, den folgenden Befehl aus:
sudo x86_64.sh
- Armv7 (Raspberry Pi)
-
-
Speichern Sie eine Kopie des folgenden Installationsskripts in einer Datei namens armv7l.sh
auf dem Core-Gerät.
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.'
Wenn OpenCV mit diesem Skript nicht erfolgreich installiert wird, können Sie versuchen, es aus der Quelle zu erstellen. Weitere Informationen finden Sie unter Installation in Linux in der OpenCV-Dokumentation oder in anderen Online-Ressourcen für Ihre Plattform.
- 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.'
-
Führen Sie in dem Verzeichnis, in dem Sie die Datei gespeichert haben, den folgenden Befehl aus:
sudo bash armv7l.sh
Auf einem Raspberry Pi ist die Installation von Machine Learning-Abhängigkeiten mithilfe von pip
eine speicherintensive Operation, die dazu führen kann, dass das Gerät nicht mehr genügend Arbeitsspeicher hat und nicht mehr reagiert. Um dieses Problem zu umgehen, können Sie die Auslagerungsgröße vorübergehend erhöhen:
Erhöhen Sie in /etc/dphys-swapfile
den Wert der CONF_SWAPSIZE
-Variable und führen Sie dann den folgenden Befehl aus, um dphys-swapfile
neu zu starten.
/etc/init.d/dphys-swapfile restart
Protokollierung und Problembehandlung
Abhängig von Ihren Gruppeneinstellungen werden Ereignis- und Fehlerprotokolle in CloudWatch Logs, in das lokale Dateisystem oder in beide geschrieben. Protokolle von diesem Konnektor verwenden das Präfix LocalInferenceServiceName
. Wenn sich der Konnektor nicht wie erwartet verhält, überprüfen Sie die Protokolle des Konnektors. Diese enthalten in der Regel nützliche Debugging-Informationen, wie z. B. eine fehlende ML-Bibliothek-Abhängigkeit oder die Ursache eines Fehlers beim Starten des Konnektors.
Wenn die AWS IoT Greengrass Gruppe so konfiguriert ist, dass sie lokale Protokolle schreibt, schreibt der Connector Protokolldateien ingreengrass-root
/ggc/var/log/user/region
/aws/
. Weitere Hinweise zur Greengrass-Protokollierung finden Sie unterÜberwachen mit AWS IoT Greengrass-Protokollen.
Verwenden Sie die folgenden Informationen, um Probleme mit den ML Image Classification-Konnektoren zu beheben.
Erforderliche Systembibliotheken
Auf den folgenden Registerkarten sind die Systembibliotheken aufgeführt, die für jeden ML Image Classification-Konnektor erforderlich sind.
- ML Image Classification Aarch64 JTX2
-
Bibliothek |
Mindestversion |
ld-linux-aarch64.so.1 | GLIBC_2.17 |
libc.so.6 | GLIBC_2.17 |
libcublas.so.9.0 | nicht zutreffend |
libcudart.so.9.0 | nicht zutreffend |
libcudnn.so.7 | nicht zutreffend |
libcufft.so.9.0 | nicht zutreffend |
libcurand.so.9.0 | nicht zutreffend |
libcusolver.so.9.0 | nicht zutreffend |
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
-
Bibliothek |
Mindestversion |
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
-
Bibliothek |
Mindestversion |
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 |
Problembereiche
Symptom |
Lösung |
Auf einem Raspberry Pi wird die folgende Fehlermeldung protokolliert, und Sie verwenden nicht die Kamera: Failed to initialize libdc1394
|
Führen Sie den folgenden Befehl aus, um den Treiber zu deaktivieren:
sudo ln /dev/null /dev/raw1394
Diese Operation ist flüchtig, und der symbolische Link wird nach dem Neustart verschwinden. Schlagen Sie im Handbuch Ihrer Betriebssystemverteilung nach, wie der Link beim Neustart automatisch erstellt wird.
|
Lizenzen
Die ML Image Classification Connectors beinhalten die folgende Software/Lizenzierung von Drittanbietern:
Lizenzierung der Intel OpenMP Runtime Library. Die Intel® OpenMP* Runtime ist zweifach lizenziert, mit einer kommerziellen (COM) -Lizenz als Teil der Intel® Parallel Studio XE Suite-Produkte und einer BSD-Open-Source-Lizenz (OSS).
Dieser Connector ist im Rahmen der Greengrass Core Software-Lizenzvereinbarung veröffentlicht.
Änderungsprotokoll
In der folgenden Tabelle werden die Änderungen in den einzelnen Versionen des Connectors beschrieben.
Version |
Änderungen |
2 |
Der MLFeedbackConnectorConfigId Parameter wurde hinzugefügt, um die Verwendung des ML-Feedback-Konnektors zum Hochladen von Modelleingabedaten, zum Veröffentlichen von Vorhersagen zu einem MQTT-Thema und zum Veröffentlichen von Metriken auf Amazon CloudWatch zu unterstützen.
|
1 |
Erstversion.
|
Eine Greengrass-Gruppe kann jeweils nur eine Version des Connectors enthalten. Weitere Informationen zum Aktualisieren einer Konnektorversion finden Sie unter Aktualisieren von Konnektorversionen.
Weitere Informationen finden Sie auch unter