Tutorial: Erste Schritte mit SageMaker Edge Manager - AWS IoT Greengrass

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.

Tutorial: Erste Schritte mit SageMaker Edge Manager

Wichtig

SageMaker Edge Manager wurde am 26. April 2024 eingestellt. Weitere Informationen zur weiteren Bereitstellung Ihrer Modelle auf Edge-Geräten finden Sie unter Ende der Nutzungsdauer von SageMaker Edge Manager.

Amazon SageMaker Edge Manager ist ein Softwareagent, der auf Edge-Geräten ausgeführt wird. SageMaker Edge Manager bietet Modellverwaltung für Edge-Geräte, sodass Sie mit Amazon SageMaker Neo kompilierte Modelle direkt auf Greengrass-Core-Geräten verpacken und verwenden können. Mithilfe von SageMaker Edge Manager können Sie auch Modelleingabe- und -ausgabedaten von Ihren Kerngeräten abfragen und diese Daten AWS Cloud zur Überwachung und Analyse an die senden. Weitere Informationen zur Funktionsweise von SageMaker Edge Manager auf Greengrass-Core-Geräten finden Sie unterVerwenden Sie Amazon SageMaker Edge Manager auf Greengrass-Kerngeräten.

In diesem Tutorial erfahren Sie, wie Sie mit der Verwendung von SageMaker Edge Manager beginnen können. Die AWS bereitgestellten Beispielkomponenten werden auf einem vorhandenen Core-Gerät verwendet. Diese Beispielkomponenten verwenden die SageMaker Edge Manager-Komponente als Abhängigkeit, um den Edge Manager-Agenten bereitzustellen und Inferenzen mithilfe vortrainierter Modelle durchzuführen, die mit Neo kompiliert wurden. SageMaker Weitere Informationen zum SageMaker Edge Manager-Agenten finden Sie unter SageMaker Edge Manager im Amazon SageMaker Developer Guide.

Um den SageMaker Edge Manager-Agenten auf einem vorhandenen Greengrass-Core-Gerät einzurichten und zu verwenden, AWS enthält Beispielcode, mit dem Sie die folgenden Beispiel-Inferenz- und Modellkomponenten erstellen können.

  • Klassifizierung von Bildern

    • com.greengrass.SageMakerEdgeManager.ImageClassification

    • com.greengrass.SageMakerEdgeManager.ImageClassification.Model

  • Objekterkennung

    • com.greengrass.SageMakerEdgeManager.ObjectDetection

    • com.greengrass.SageMakerEdgeManager.ObjectDetection.Model

In diesem Tutorial erfahren Sie, wie Sie die Beispielkomponenten und den SageMaker Edge Manager-Agenten bereitstellen.

Voraussetzungen

Um dieses Tutorial abschließen zu können, müssen Sie die folgenden Voraussetzungen erfüllen:

  • Ein Greengrass-Core-Gerät, das auf Amazon Linux 2, einer Debian-basierten Linux-Plattform (x86_64 oder Armv8) oder Windows (x86_64) läuft. Falls Sie noch keines haben, beachten Sie die Informationen unter Tutorial: Erste Schritte mit AWS IoT Greengrass V2.

  • Python 3.6 oder höher, auch pip für Ihre Version von Python, die auf Ihrem Kerngerät installiert ist.

  • Die auf Ihrem Kerngerät installierte API GLX OpenGL-Runtime (libgl1-mesa-glx).

  • Ein AWS Identity and Access Management (IAM) Benutzer mit Administratorrechten.

  • Ein internetfähiger Windows-, Mac- oder UNIX-ähnlicher Entwicklungscomputer, der die folgenden Anforderungen erfüllt:

  • Die folgenden S3-Buckets wurden in demselben AWS-Konto und AWS-Region wie Ihr Greengrass-Core-Gerät erstellt:

    • Ein S3-Bucket zum Speichern der Artefakte, die in den Inferenz- und Modellkomponenten der Stichprobe enthalten sind. In diesem Tutorial wird amzn-s3-demo-bucket1 verwendet, um auf diesen Bucket zu verweisen.

    • Ein S3-Bucket, den Sie Ihrer Edge-Geräteflotte zuordnen. SageMaker SageMaker Edge Manager benötigt einen S3-Bucket, um die Edge-Geräteflotte zu erstellen und Beispieldaten aus laufenden Inferenzen auf Ihrem Gerät zu speichern. In diesem Tutorial wird amzn-s3-demo-bucket2 verwendet, um auf diesen Bucket zu verweisen.

    Informationen zum Erstellen von S3-Buckets finden Sie unter Erste Schritte mit Amazon S3.

  • Die Greengrass-Geräterolle wurde wie folgt konfiguriert:

    • Eine Vertrauensbeziehung, die es sagemaker.amazonaws.com ermöglicht credentials.iot.amazonaws.com und die Übernahme der Rolle ermöglicht, wie im folgenden IAM Richtlinienbeispiel dargestellt.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "credentials.iot.amazonaws.com" }, "Action": "sts:AssumeRole" }, { "Effect": "Allow", "Principal": { "Service": "sagemaker.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
    • Die AmazonSageMakerEdgeDeviceFleetPolicyIAMverwaltete Richtlinie.

    • Die AmazonSageMakerFullAccessIAMverwaltete Richtlinie.

    • Die s3:GetObject Aktion für den S3-Bucket, der Ihre Komponentenartefakte enthält, wie im folgenden IAM Richtlinienbeispiel dargestellt.

      { "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket1/*" ], "Effect": "Allow" } ] }

Richten Sie Ihr Greengrass Core-Gerät in SageMaker Edge Manager ein

Edge-Geräteflotten in SageMaker Edge Manager sind Sammlungen logisch gruppierter Geräte. Um SageMaker Edge Manager mit zu verwenden AWS IoT Greengrass, müssen Sie eine Edge-Geräteflotte erstellen, die denselben AWS IoT Rollenalias wie das Greengrass-Core-Gerät verwendet, auf dem Sie den SageMaker Edge Manager-Agent bereitstellen. Anschließend müssen Sie das Kerngerät als Teil dieser Flotte registrieren.

Erstellen Sie eine Flotte von Edge-Geräten

Um eine Edge-Geräteflotte (Konsole) zu erstellen
  1. Wählen Sie in der SageMaker Amazon-Konsole Edge Manager und dann Edge-Geräteflotten aus.

  2. Wählen Sie auf der Seite Geräteflotten die Option Geräteflotte erstellen aus.

  3. Gehen Sie unter Eigenschaften der Geräteflotte wie folgt vor:

    • Geben Sie unter Name der Geräteflotte einen Namen für Ihre Geräteflotte ein.

    • Geben Sie für IAMRolle den Amazon-Ressourcennamen (ARN) des AWS IoT Rollenalias ein, den Sie bei der Einrichtung Ihres Greengrass-Core-Geräts angegeben haben.

    • Deaktivieren Sie den Schalter IAMRollenalias erstellen.

  4. Wählen Sie Weiter.

  5. Geben Sie unter Ausgabekonfiguration für S3-Bucket URI den URI des S3-Buckets ein, den Sie der Geräteflotte zuordnen möchten.

  6. Wählen Sie Absenden aus.

Registrieren Sie Ihr Greengrass Core-Gerät

Um Ihr Greengrass Core-Gerät als Edge-Gerät (Konsole) zu registrieren
  1. Wählen Sie in der SageMaker Amazon-Konsole Edge Manager und dann Edge-Geräte aus.

  2. Wählen Sie auf der Seite Geräte die Option Geräte registrieren aus.

  3. Geben Sie unter Geräteeigenschaften für Name der Geräteflotte den Namen der Geräteflotte ein, die Sie erstellt haben, und wählen Sie dann Weiter aus.

  4. Wählen Sie Weiter.

  5. Geben Sie unter Gerätequelle für Gerätename den AWS IoT Dingnamen Ihres Greengrass-Core-Geräts ein.

  6. Wählen Sie Absenden aus.

Erstellen Sie die Beispielkomponenten

Um Ihnen den Einstieg in die Verwendung der SageMaker Edge Manager-Komponente zu erleichtern, AWS stellt es ein Python-Skript bereit GitHub , das die Beispielinferenz- und Modellkomponenten erstellt und sie AWS Cloud für Sie in die hochlädt. Führen Sie die folgenden Schritte auf einem Entwicklungscomputer aus.

Um die Beispielkomponenten zu erstellen
  1. Laden Sie das Repository mit den AWS IoT Greengrass Komponentenbeispielen GitHub auf Ihren Entwicklungscomputer herunter.

  2. Navigieren Sie zum heruntergeladenen /machine-learning/sagemaker-edge-manager Ordner.

    cd download-directory/machine-learning/sagemaker-edge-manager
  3. Führen Sie den folgenden Befehl aus, um die Beispielkomponenten zu erstellen und in den hochzuladen AWS Cloud.

    python3 create_components.py -r region -b amzn-s3-demo-bucket

    Ersetzen region mit dem AWS-Region Ort, an dem Sie Ihr Greengrass-Core-Gerät erstellt haben, und ersetzen Sie amzn-s3-demo-bucket1 durch den Namen des S3-Buckets, in dem Sie Ihre Komponentenartefakte speichern möchten.

    Anmerkung

    Standardmäßig erstellt das Skript Beispielkomponenten sowohl für die Bildklassifizierung als auch für die Inferenz zur Objekterkennung. Um Komponenten nur für einen bestimmten Inferenztyp zu erstellen, geben Sie das -i ImageClassification | ObjectDetection Argument an.

Beispielinferenz- und Modellkomponenten für die Verwendung mit SageMaker Edge Manager werden jetzt in Ihrem erstellt. AWS-Konto Um die Beispielkomponenten in der AWS IoT Greengrass Konsole anzuzeigen, wählen Sie Komponenten und suchen Sie dann unter Meine Komponenten nach den folgenden Komponenten:

  • com.greengrass.SageMakerEdgeManager.ImageClassification

  • com.greengrass.SageMakerEdgeManager.ImageClassification.Model

  • com.greengrass.SageMakerEdgeManager.ObjectDetection

  • com.greengrass.SageMakerEdgeManager.ObjectDetection.Model

Führen Sie ein Beispiel für die Inferenz zur Bildklassifizierung aus

Um die Inferenz zur Bildklassifizierung mithilfe der AWS bereitgestellten Beispielkomponenten und des SageMaker Edge Manager-Agenten auszuführen, müssen Sie diese Komponenten auf Ihrem Kerngerät bereitstellen. Durch die Bereitstellung dieser Komponenten wird ein SageMaker NEO-kompiliertes, vortrainiertes Resnet-50-Modell heruntergeladen und der SageMaker Edge Manager-Agent auf Ihrem Gerät installiert. Der SageMaker Edge Manager-Agent lädt das Modell und veröffentlicht Inferenzergebnisse zu diesem Thema. gg/sageMakerEdgeManager/image-classification Verwenden Sie zum Anzeigen dieser Inferenzergebnisse den AWS IoT MQTT Client in der AWS IoT Konsole, um dieses Thema zu abonnieren.

Abonnieren Sie das Thema Benachrichtigungen

In diesem Schritt konfigurieren Sie den AWS IoT MQTT Client in der AWS IoT Konsole so, dass er MQTT Nachrichten überwacht, die von der Beispiel-Inferenzkomponente veröffentlicht wurden. Standardmäßig veröffentlicht die Komponente Inferenzergebnisse zu diesem Thema. gg/sageMakerEdgeManager/image-classification Abonnieren Sie dieses Thema, bevor Sie die Komponente auf Ihrem Greengrass-Core-Gerät bereitstellen, um die Inferenzergebnisse zu sehen, wenn die Komponente zum ersten Mal ausgeführt wird.

Um das Thema Standardbenachrichtigungen zu abonnieren
  1. Wählen Sie im Navigationsmenü der AWS IoT Konsole Test, MQTT Test Client aus.

  2. Geben Sie unter Thema abonnieren in das Feld Themenname den Text eingg/sageMakerEdgeManager/image-classification.

  3. Wählen Sie Subscribe (Abonnieren) aus.

Stellen Sie die Beispielkomponenten bereit

In diesem Schritt konfigurieren und implementieren Sie die folgenden Komponenten auf Ihrem Kerngerät:

  • aws.greengrass.SageMakerEdgeManager

  • com.greengrass.SageMakerEdgeManager.ImageClassification

  • com.greengrass.SageMakerEdgeManager.ImageClassification.Model

  1. Wählen Sie im Navigationsmenü der AWS IoT Greengrass Konsole Bereitstellungen und dann die Bereitstellung für Ihr Zielgerät aus, die Sie überarbeiten möchten.

  2. Wählen Sie auf der Bereitstellungsseite die Option Überarbeiten und anschließend Bereitstellung überarbeiten aus.

  3. Wählen Sie auf der Seite „Ziel angeben“ die Option Weiter aus.

  4. Gehen Sie auf der Seite „Komponenten auswählen“ wie folgt vor:

    1. Wählen Sie unter Meine Komponenten die folgenden Komponenten aus:

      • com.greengrass.SageMakerEdgeManager.ImageClassification

      • com.greengrass.SageMakerEdgeManager.ImageClassification.Model

    2. Deaktivieren Sie unter Öffentliche Komponenten die Option Nur ausgewählte Komponenten anzeigen und wählen Sie dann die aws.greengrass.SageMakerEdgeManager Komponente aus.

    3. Wählen Sie Weiter.

  5. Wählen Sie auf der Seite Komponenten konfigurieren die aws.greengrass.SageMakerEdgeManager Komponente aus und gehen Sie wie folgt vor.

    1. Wählen Sie Komponente konfigurieren aus.

    2. Geben Sie unter Konfigurationsupdate unter Zusammenzuführende Konfiguration die folgende Konfiguration ein.

      { "DeviceFleetName": "device-fleet-name", "BucketName": "amzn-s3-demo-bucket" }

      Ersetzen device-fleet-name mit dem Namen der Edge-Geräteflotte, die Sie erstellt und ersetzt haben amzn-s3-demo-bucket mit dem Namen des S3-Buckets, der Ihrer Geräteflotte zugeordnet ist.

    3. Wählen Sie Bestätigen aus, und wählen Sie dann Weiter.

  6. Behalten Sie auf der Seite Erweiterte Einstellungen konfigurieren die Standardkonfigurationseinstellungen bei und wählen Sie Weiter.

  7. Wählen Sie auf der Seite „Überprüfen“ die Option Bereitstellen

  1. Erstellen Sie auf Ihrem Entwicklungscomputer eine deployment.json Datei, um die Bereitstellungskonfiguration für Ihre SageMaker Edge Manager-Komponenten zu definieren. Diese Datei sollte wie im folgenden Beispiel aussehen.

    { "targetArn":"targetArn", "components": { "aws.greengrass.SageMakerEdgeManager": { "componentVersion": "1.0.x", "configurationUpdate": { "merge": "{\"DeviceFleetName\":\"device-fleet-name\",\"BucketName\":\"amzn-s3-demo-bucket2\"}" } }, "com.greengrass.SageMakerEdgeManager.ImageClassification": { "componentVersion": "1.0.x", "configurationUpdate": { } }, "com.greengrass.SageMakerEdgeManager.ImageClassification.Model": { "componentVersion": "1.0.x", "configurationUpdate": { } }, } }
    • targetArnErsetzen Sie das targetArn Feld durch den Amazon-Ressourcennamen (ARN) der Sache oder der Dinggruppe, auf die die Bereitstellung ausgerichtet werden soll, und zwar im folgenden Format:

      • Objekt: arn:aws:iot:region:account-id:thing/thingName

      • Objektgruppe: arn:aws:iot:region:account-id:thinggroup/thingGroupName

    • Ersetzen Sie im merge Feld device-fleet-name durch den Namen der Edge-Geräteflotte, die Sie erstellt haben. Ersetzen Sie dann amzn-s3-demo-bucket2 mit dem Namen des S3-Buckets, der Ihrer Geräteflotte zugeordnet ist.

    • Ersetzen Sie die Versionen aller Komponenten durch die neueste verfügbare Version.

  2. Führen Sie den folgenden Befehl aus, um die Komponenten auf dem Gerät bereitzustellen:

    aws greengrassv2 create-deployment \ --cli-input-json file://path/to/deployment.json

Es kann einige Minuten dauern, bis die Bereitstellung abgeschlossen ist. Überprüfen Sie im nächsten Schritt im Komponentenprotokoll, ob die Bereitstellung erfolgreich abgeschlossen wurde, und schauen Sie sich die Inference-Ergebnisse an.

Inferenzergebnisse anzeigen

Nachdem Sie die Komponenten bereitgestellt haben, können Sie die Inferenzergebnisse im Komponentenprotokoll auf Ihrem Greengrass-Core-Gerät und im AWS IoT MQTT Client in der AWS IoT Konsole einsehen. Informationen zum Abonnieren des Themas, zu dem die Komponente Inferenzergebnisse veröffentlicht, finden Sie unter. Abonnieren Sie das Thema Benachrichtigungen

  • AWS IoT MQTTclient — Gehen Sie wie folgt vor, um die Ergebnisse anzuzeigen, die die Inferenzkomponente zum Thema Standardbenachrichtigungen veröffentlicht:

    1. Wählen Sie im Navigationsmenü der AWS IoT Konsole die Optionen Test, MQTT Client testen aus.

    2. Wählen Sie unter Abonnements die Optiongg/sageMakerEdgeManager/image-classification.

     

  • Komponentenprotokoll — Um die Inferenzergebnisse im Komponentenprotokoll anzuzeigen, führen Sie den folgenden Befehl auf Ihrem Greengrass-Core-Gerät aus.

    sudo tail -f /greengrass/v2/logs/com.greengrass.SageMakerEdgeManager.ImageClassification.log

Wenn Sie keine Inferenzergebnisse im Komponentenprotokoll oder im MQTT Client sehen können, ist die Bereitstellung fehlgeschlagen oder hat das Kerngerät nicht erreicht. Dies kann der Fall sein, wenn Ihr Kerngerät nicht mit dem Internet verbunden ist oder nicht über die erforderlichen Berechtigungen zum Ausführen der Komponente verfügt. Führen Sie den folgenden Befehl auf Ihrem Core-Gerät aus, um die AWS IoT Greengrass Core-Software-Protokolldatei anzuzeigen. Diese Datei enthält Protokolle vom Bereitstellungsdienst des Greengrass-Core-Geräts.

sudo tail -f /greengrass/v2/logs/greengrass.log

Weitere Informationen finden Sie unter Fehlerbehebung bei Machine Learning-Inferenzen.