Anschluss zur ML-Bildklassifizierung - AWS IoT Greengrass

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

Warnung

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.

    Anmerkung

    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.

Anmerkung

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.

Anmerkung

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" } } ] }'
Anmerkung

Die Lambda-Funktion in diesen Steckverbindern hat einen langlebigen Lebenszyklus.

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).

Eingabedaten

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.

Anmerkung

Sie können das SDK von der Downloadseite des AWS IoT GreengrassMachine Learning SDK herunterladen.

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.

Anmerkung

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
  1. Installieren Sie CUDA Toolkit 9.0 und cuDNN 7.0. Befolgen Sie die Anweisungen unter Einrichten anderer Geräte im Tutorial "Erste Schritte".

  2. 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.

    1. Öffnen Sie die /etc/apt/sources.list Datei.

    2. 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
  3. 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.'
    Anmerkung

    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.'
  4. 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)
  1. 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.'
    Anmerkung

    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.'
  2. Führen Sie in dem Verzeichnis, in dem Sie die Datei gespeichert haben, den folgenden Befehl aus:

    sudo x86_64.sh
Armv7 (Raspberry Pi)
  1. 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.'
    Anmerkung

    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.'
  2. Führen Sie in dem Verzeichnis, in dem Sie die Datei gespeichert haben, den folgenden Befehl aus:

    sudo bash armv7l.sh
    Anmerkung

    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.1GLIBC_2.17
libc.so.6GLIBC_2.17
libcublas.so.9.0nicht zutreffend
libcudart.so.9.0nicht zutreffend
libcudnn.so.7nicht zutreffend
libcufft.so.9.0nicht zutreffend
libcurand.so.9.0nicht zutreffend
libcusolver.so.9.0nicht zutreffend
libgcc_s.so.1GCC_4.2.0
libgomp.so.1GOMP_4.0, OMP_1.0
libm.so.6GLIBC_2.23
libpthread.so.0GLIBC_2.17
librt.so.1GLIBC_2.17
libstdc++.so.6GLIBCXX_3.4.21, CXXABI_1.3.8
ML Image Classification x86_64
Bibliothek Mindestversion
ld-linux-x86-64.so.2GCC_4.0.0
libc.so.6GLIBC_2.4
libgfortran.so.3GFORTRAN_1.0
libm.so.6GLIBC_2.23
libpthread.so.0GLIBC_2.2.5
librt.so.1GLIBC_2.2.5
libstdc++.so.6CXXABI_1.3.8, GLIBCXX_3.4.21
ML Image Classification Armv7
Bibliothek Mindestversion
ld-linux-armhf.so.3GLIBC_2.4
libc.so.6GLIBC_2.7
libgcc_s.so.1GCC_4.0.0
libgfortran.so.3GFORTRAN_1.0
libm.so.6GLIBC_2.4
libpthread.so.0GLIBC_2.4
librt.so.1GLIBC_2.4
libstdc++.so.6CXXABI_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