Anpassen Ihrer Machine-Learning-Komponenten - 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.

Anpassen Ihrer Machine-Learning-Komponenten

In können Sie Machine-Learning-Beispielkomponenten konfigurierenAWS IoT Greengrass, um anzupassen, wie Sie Machine-Learning-Inferenzen auf Ihren Geräten mit den Inferenz-, Modell- und Laufzeitkomponenten als Bausteine durchführen. bietet Ihnen AWS IoT Greengrass auch die Flexibilität, die Beispielkomponenten als Vorlagen zu verwenden und bei Bedarf eigene benutzerdefinierte Komponenten zu erstellen. Sie können diesen modularen Ansatz kombinieren und anpassen, um Ihre Machine-Learning-Inferenzkomponenten auf folgende Weise anzupassen:

Verwenden von Inferenzkomponenten
  • Ändern Sie die Konfiguration von Inferenzkomponenten, wenn Sie sie bereitstellen.

  • Verwenden Sie ein benutzerdefiniertes Modell mit der Beispiel-Inferenzkomponente, indem Sie die Beispiel-Modellspeicherkomponente durch eine benutzerdefinierte Modellkomponente ersetzen. Ihr benutzerdefiniertes Modell muss mit derselben Laufzeit wie das Beispielmodell trainiert werden.

Verwenden von benutzerdefinierten Inferenzkomponenten
  • Verwenden Sie benutzerdefinierten Inferenzcode mit den Beispielmodellen und Laufzeiten, indem Sie öffentliche Modellkomponenten und Laufzeitkomponenten als Abhängigkeiten von benutzerdefinierten Inferenzkomponenten hinzufügen.

  • Erstellen und fügen Sie benutzerdefinierte Modellkomponenten oder Laufzeitkomponenten als Abhängigkeiten von benutzerdefinierten Inferenzkomponenten hinzu. Sie müssen benutzerdefinierte Komponenten verwenden, wenn Sie benutzerdefinierten Inferenzcode oder eine Laufzeit verwenden möchten, für die AWS IoT Greengrass keine Beispielkomponente bereitstellt.

Ändern der Konfiguration einer öffentlichen Inferenzkomponente

In der AWS IoT Greengrass Konsole zeigt die Komponentenseite die Standardkonfiguration dieser Komponente an. Die Standardkonfiguration der TensorFlow Lite-Bildklassifizierungskomponente sieht beispielsweise wie folgt aus:

{ "accessControl": { "aws.greengrass.ipc.mqttproxy": { "aws.greengrass.TensorFlowLiteImageClassification:mqttproxy:1": { "policyDescription": "Allows access to publish via topic ml/tflite/image-classification.", "operations": [ "aws.greengrass#PublishToIoTCore" ], "resources": [ "ml/tflite/image-classification" ] } } }, "PublishResultsOnTopic": "ml/tflite/image-classification", "ImageName": "cat.jpeg", "InferenceInterval": 3600, "ModelResourceKey": { "model": "TensorFlowLite-Mobilenet" } }

Wenn Sie eine öffentliche Inferenzkomponente bereitstellen, können Sie die Standardkonfiguration ändern, um Ihre Bereitstellung anzupassen. Informationen zu den verfügbaren Konfigurationsparametern für jede öffentliche Inferenzkomponente finden Sie im Komponententhema unter AWSVon bereitgestellte Machine-Learning-Komponenten.

In diesem Abschnitt wird beschrieben, wie Sie eine geänderte Komponente über die AWS IoT Greengrass Konsole bereitstellen. Informationen zum Bereitstellen von Komponenten mit der finden Sie AWS CLIunter Erstellen von Bereitstellungen.

So stellen Sie eine geänderte öffentliche Inferenzkomponente bereit (Konsole)
  1. Melden Sie sich an der AWS IoT Greengrass-Konsole an.

  2. Wählen Sie im Navigationsmenü Komponenten aus.

  3. Wählen Sie auf der Seite Komponenten auf der Registerkarte Öffentliche Komponenten die Komponente aus, die Sie bereitstellen möchten.

  4. Wählen Sie auf der Komponentenseite Bereitstellen aus.

  5. Wählen Sie unter Zur Bereitstellung hinzufügen eine der folgenden Optionen aus:

    1. Um diese Komponente mit einer auf Ihrem Zielgerät vorhandenen Bereitstellung zusammenzuführen, wählen Sie Zu vorhandener Bereitstellung hinzufügen und wählen Sie dann die Bereitstellung aus, die Sie überarbeiten möchten.

    2. Um auf Ihrem Zielgerät eine neue Bereitstellung zu erstellen, wählen Sie Neue Bereitstellung erstellen aus. Wenn auf Ihrem Gerät bereits eine Bereitstellung vorhanden ist, ersetzt die Auswahl in diesem Schritt die vorhandene Bereitstellung.

  6. Gehen Sie auf der Seite Ziel angeben wie folgt vor:

    1. Geben Sie unter Bereitstellungsinformationen den Anzeigenamen für Ihre Bereitstellung ein oder ändern Sie ihn.

    2. Wählen Sie unter Bereitstellungsziele ein Ziel für Ihre Bereitstellung aus und klicken Sie auf Weiter. Wenn Sie eine vorhandene Bereitstellung überarbeiten, können Sie das Bereitstellungsziel nicht ändern.

  7. Überprüfen Sie auf der Seite Komponenten auswählen unter Öffentliche Komponenten, ob die Inferenzkomponente mit Ihrer geänderten Konfiguration ausgewählt ist, und wählen Sie Weiter aus.

  8. Gehen Sie auf der Seite Komponenten konfigurieren wie folgt vor:

    1. Wählen Sie die Inferenzkomponente und dann Komponente konfigurieren aus.

    2. Geben Sie unter Konfigurationsaktualisierung die Konfigurationswerte ein, die Sie aktualisieren möchten. Geben Sie beispielsweise das folgende Konfigurationsupdate in das Feld Konfiguration zum Zusammenführen ein, um das Inferenzintervall auf 15 Sekunden zu ändern, und weisen Sie die Komponente an, custom.jpg nach dem Image im /custom-ml-inference/images/ Ordner zu suchen.

      { "InferenceInterval": "15", "ImageName": "custom.jpg", "ImageDirectory": "/custom-ml-inference/images/" }

      Um die gesamte Konfiguration einer Komponente auf ihre Standardwerte zurückzusetzen, geben Sie eine einzelne leere Zeichenfolge "" im Feld Pfade zurücksetzen an.

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

  9. Behalten Sie auf der Seite Konfigurieren erweiterter Einstellungen die Standardkonfigurationseinstellungen bei und wählen Sie Weiter aus.

  10. Wählen Sie auf der Seite Review die Option Deploy aus.

Verwenden eines benutzerdefinierten Modells mit der Beispiel-Inferenzkomponente

Wenn Sie die Beispiel-Inferenzkomponente mit Ihren eigenen Machine-Learning-Modellen für eine Laufzeit verwenden möchten, für die eine Beispiel-Laufzeitkomponente AWS IoT Greengrass bereitstellt, müssen Sie die öffentlichen Modellkomponenten mit Komponenten überschreiben, die diese Modelle als Artefakte verwenden. Führen Sie auf hoher Ebene die folgenden Schritte aus, um ein benutzerdefiniertes Modell mit der Beispiel-Inferenzkomponente zu verwenden:

  1. Erstellen Sie eine Modellkomponente, die ein benutzerdefiniertes Modell in einem S3-Bucket als Artefakt verwendet. Ihr benutzerdefiniertes Modell muss mit derselben Laufzeit trainiert werden wie das Modell, das Sie ersetzen möchten.

  2. Ändern Sie den ModelResourceKey Konfigurationsparameter in der Inferenzkomponente, um das benutzerdefinierte Modell zu verwenden. Informationen zum Aktualisieren der Konfiguration der Inferenzkomponente finden Sie unter . Ändern der Konfiguration einer öffentlichen Inferenzkomponente

Wenn Sie die Inferenzkomponente bereitstellen, AWS IoT Greengrasssucht nach der neuesten Version ihrer Komponentenabhängigkeiten. Sie überschreibt die abhängige öffentliche Modellkomponente, wenn eine spätere benutzerdefinierte Version der Komponente im selben AWS-Konto und in derselben vorhanden istAWS-Region.

  1. Laden Sie Ihr Modell in einen S3-Bucket hoch. Informationen zum Hochladen Ihrer Modelle in einen S3-Bucket finden Sie unter Arbeiten mit Amazon S3-Buckets im Benutzerhandbuch für Amazon Simple Storage Service.

    Anmerkung

    Sie müssen Ihre Artefakte in S3-Buckets speichern, die sich im selben AWS-Konto und in derselben AWS-Region wie die Komponenten befinden. Damit AWS IoT Greengrass auf diese Artefakte zugreifen kann, muss die Greengrass-Geräterolle die s3:GetObject Aktion zulassen. Weitere Informationen zur Geräterolle finden Sie unter Autorisieren Sie Kerngeräte für die Interaktion mit Diensten AWS.

  2. Wählen Sie im Navigationsmenü der AWS IoT GreengrassKonsole Komponenten aus.

  3. Rufen Sie das Komponentenrezept für die Komponente des öffentlichen Modellspeichers ab.

    1. Suchen Sie auf der Seite Komponenten auf der Registerkarte Öffentliche Komponenten nach der öffentlichen Modellkomponente, für die Sie eine neue Version erstellen möchten, und wählen Sie sie aus. Beispiel: variant.DLR.ImageClassification.ModelStore

    2. Wählen Sie auf der Komponentenseite Rezept anzeigen und kopieren Sie das angezeigte JSON-Rezept.

  4. Wählen Sie auf der Seite Komponenten auf der Registerkarte Meine Komponenten die Option Komponente erstellen aus.

  5. Wählen Sie auf der Seite Komponente erstellen unter Komponenteninformationen die Option Rezept als JSON als Komponentenquelle eingeben aus.

  6. Fügen Sie im Feld Rezept das zuvor kopierte Komponentenrezept ein.

  7. Aktualisieren Sie im Rezept die folgenden Werte:

    • ComponentVersion: Erhöhen Sie die Nebenversion der Komponente.

      Wenn Sie eine benutzerdefinierte Komponente erstellen, um eine öffentliche Modellkomponente zu überschreiben, dürfen Sie nur die Nebenversion der vorhandenen Komponentenversion aktualisieren. Wenn die öffentliche Komponentenversion beispielsweise ist2.1.0, können Sie eine benutzerdefinierte Komponente mit Version erstellen2.1.1.

    • Manifests.Artifacts.Uri: Aktualisieren Sie jeden URI-Wert auf den Amazon S3-URI des Modells, das Sie verwenden möchten.

    Anmerkung

    Ändern Sie nicht den Namen der Komponente.

  8. Wählen Sie Komponente erstellen aus.

  1. Laden Sie Ihr Modell in einen S3-Bucket hoch. Informationen zum Hochladen Ihrer Modelle in einen S3-Bucket finden Sie unter Arbeiten mit Amazon S3-Buckets im Benutzerhandbuch für Amazon Simple Storage Service.

    Anmerkung

    Sie müssen Ihre Artefakte in S3-Buckets speichern, die sich im selben AWS-Konto und in derselben AWS-Region wie die Komponenten befinden. Damit AWS IoT Greengrass auf diese Artefakte zugreifen kann, muss die Greengrass-Geräterolle die s3:GetObject Aktion zulassen. Weitere Informationen zur Geräterolle finden Sie unter Autorisieren Sie Kerngeräte für die Interaktion mit Diensten AWS.

  2. Führen Sie den folgenden Befehl aus, um das Komponentenrezept der öffentlichen Komponente abzurufen. Dieser Befehl schreibt das Komponentenrezept in die Ausgabedatei, die Sie in Ihrem Befehl angeben. Konvertieren Sie die abgerufene base64-kodierte Zeichenfolge nach Bedarf in JSON oder YAML.

    Linux, macOS, or Unix
    aws greengrassv2 get-component \ --arn <arn> \ --recipe-output-format <recipe-format> \ --query recipe \ --output text | base64 --decode > <recipe-file>
    Windows Command Prompt (CMD)
    aws greengrassv2 get-component ^ --arn <arn> ^ --recipe-output-format <recipe-format> ^ --query recipe ^ --output text > <recipe-file>.base64 certutil -decode <recipe-file>.base64 <recipe-file>
    PowerShell
    aws greengrassv2 get-component ` --arn <arn> ` --recipe-output-format <recipe-format> ` --query recipe ` --output text > <recipe-file>.base64 certutil -decode <recipe-file>.base64 <recipe-file>
  3. Aktualisieren Sie den Namen der Rezeptdatei auf <component-name>-<component-version>, wobei die Komponentenversion die Zielversion der neuen Komponente ist. Beispiel: variant.DLR.ImageClassification.ModelStore-2.1.1.yaml

  4. Aktualisieren Sie im Rezept die folgenden Werte:

    • ComponentVersion: Erhöhen Sie die Nebenversion der Komponente.

      Wenn Sie eine benutzerdefinierte Komponente erstellen, um eine öffentliche Modellkomponente zu überschreiben, dürfen Sie nur die Nebenversion der vorhandenen Komponentenversion aktualisieren. Wenn die öffentliche Komponentenversion beispielsweise ist2.1.0, können Sie eine benutzerdefinierte Komponente mit Version erstellen2.1.1.

    • Manifests.Artifacts.Uri: Aktualisieren Sie jeden URI-Wert auf den Amazon S3-URI des Modells, das Sie verwenden möchten.

    Anmerkung

    Ändern Sie nicht den Namen der Komponente.

  5. Führen Sie den folgenden Befehl aus, um eine neue Komponente mit dem Rezept zu erstellen, das Sie abgerufen und geändert haben.

    aws greengrassv2 create-component-version \ --inline-recipe fileb://path/to/component/recipe
    Anmerkung

    In diesem Schritt wird die Komponente im AWS IoT Greengrass Service in der erstelltAWS Cloud. Sie können die Greengrass-CLI verwenden, um Ihre Komponente lokal zu entwickeln, zu testen und bereitzustellen, bevor Sie sie in die Cloud hochladen. Weitere Informationen finden Sie unter Entwickeln von AWS IoT Greengrass Komponenten.

Weitere Informationen zum Erstellen von Komponenten finden Sie unter Entwickeln von AWS IoT Greengrass Komponenten.

Erstellen von benutzerdefinierten Machine-Learning-Komponenten

Sie müssen benutzerdefinierte Komponenten erstellen, wenn Sie benutzerdefinierten Inferenzcode oder eine Laufzeit verwenden möchten, für die AWS IoT Greengrass keine Beispielkomponente bereitstellt. Sie können Ihren benutzerdefinierten Inferenzcode mit den von bereitgestellten Machine-LearningAWS-Beispielmodellen und Laufzeiten verwenden oder eine vollständig angepasste Machine-Learning-Inferenzlösung mit Ihren eigenen Modellen und Laufzeit entwickeln. Wenn Ihre Modelle eine Laufzeit verwenden, für die eine Beispiel-Laufzeitkomponente AWS IoT Greengrass bereitstellt, können Sie diese Laufzeitkomponente verwenden, und Sie müssen benutzerdefinierte Komponenten nur für Ihren Inferenzcode und die Modelle erstellen, die Sie verwenden möchten.

Abrufen des Rezepts für eine öffentliche Komponente

Sie können das Rezept einer vorhandenen Komponente für öffentliches Machine Learning als Vorlage verwenden, um eine benutzerdefinierte Komponente zu erstellen. Um das Komponentenrezept für die neueste Version einer öffentlichen Komponente anzuzeigen, verwenden Sie die -Konsole oder die AWS CLI wie folgt:

  • Verwenden der Konsole

    1. Suchen Sie auf der Seite Komponenten auf der Registerkarte Öffentliche Komponenten nach der öffentlichen Komponente und wählen Sie sie aus.

    2. Wählen Sie auf der Komponentenseite Rezept anzeigen aus.

  • Verwenden von AWS CLI

    Führen Sie den folgenden Befehl aus, um das Komponentenrezept der öffentlichen Variantenkomponente abzurufen. Dieser Befehl schreibt das Komponentenrezept in die JSON- oder YAML-Rezeptdatei, die Sie in Ihrem Befehl angeben.

    Linux, macOS, or Unix
    aws greengrassv2 get-component \ --arn <arn> \ --recipe-output-format <recipe-format> \ --query recipe \ --output text | base64 --decode > <recipe-file>
    Windows Command Prompt (CMD)
    aws greengrassv2 get-component ^ --arn <arn> ^ --recipe-output-format <recipe-format> ^ --query recipe ^ --output text > <recipe-file>.base64 certutil -decode <recipe-file>.base64 <recipe-file>
    PowerShell
    aws greengrassv2 get-component ` --arn <arn> ` --recipe-output-format <recipe-format> ` --query recipe ` --output text > <recipe-file>.base64 certutil -decode <recipe-file>.base64 <recipe-file>

    Ersetzen Sie die Werte in Ihrem Befehl wie folgt:

    • <arn>. Der Amazon-Ressourcenname (ARN) der öffentlichen Komponente.

    • <recipe-format>. Das Format, in dem Sie die Rezeptdatei erstellen möchten. Unterstützte Werte sind JSON und YAML.

    • <recipe-file>. Der Name des Rezepts im Format <component-name>-<component-version>.

Abrufen von Beispielkomponentenartefakten

Sie können die Artefakte, die von den öffentlichen Machine-Learning-Komponenten verwendet werden, als Vorlagen verwenden, um Ihre benutzerdefinierten Komponentenartefakte zu erstellen, z. B. Inferenzcode oder Laufzeitinstallationsskripts.

Um die Beispielartefakte anzuzeigen, die in den öffentlichen Machine-Learning-Komponenten enthalten sind, stellen Sie die öffentliche Inferenzkomponente bereit und zeigen Sie dann die Artefakte auf Ihrem Gerät im /greengrass/v2/packages/artifacts-unarchived/component-name/component-version/ Ordner an.

Hochladen von Komponentenartefakten in einen S3-Bucket

Bevor Sie eine benutzerdefinierte Komponente erstellen können, müssen Sie die Komponentenartefakte in einen S3-Bucket hochladen und die S3-URIs in Ihrem Komponentenrezept verwenden. Um beispielsweise benutzerdefinierten Inferenzcode in Ihrer Inferenzkomponente zu verwenden, laden Sie den Code in einen S3-Bucket hoch. Anschließend können Sie den Amazon S3-URI Ihres Inferenzcodes als Artefakt in Ihrer Komponente verwenden.

Informationen zum Hochladen von Inhalten in einen S3-Bucket finden Sie unter Arbeiten mit Amazon S3-Buckets im Benutzerhandbuch für Amazon Simple Storage Service.

Anmerkung

Sie müssen Ihre Artefakte in S3-Buckets speichern, die sich im selben AWS-Konto und in derselben AWS-Region wie die Komponenten befinden. Damit AWS IoT Greengrass auf diese Artefakte zugreifen kann, muss die Greengrass-Geräterolle die s3:GetObject Aktion zulassen. Weitere Informationen zur Geräterolle finden Sie unter Autorisieren Sie Kerngeräte für die Interaktion mit Diensten AWS.

Erstellen von benutzerdefinierten Komponenten

Sie können die Artefakte und Rezepte verwenden, die Sie abgerufen haben, um Ihre benutzerdefinierten Machine-Learning-Komponenten zu erstellen. Ein Beispiel finden Sie unter Erstellen einer benutzerdefinierten Inferenzkomponente.

Ausführliche Informationen zum Erstellen und Bereitstellen von Komponenten auf Greengrass-Geräten finden Sie unter Entwickeln von AWS IoT Greengrass Komponenten und Bereitstellen von AWS IoT Greengrass Komponenten auf Geräten.

Erstellen einer benutzerdefinierten Inferenzkomponente

In diesem Abschnitt erfahren Sie, wie Sie eine benutzerdefinierte Inferenzkomponente mit der DLR-Bildklassifizierungskomponente als Vorlage erstellen.

Laden Sie Ihren Inferenzcode in einen Amazon S3-Bucket hoch

Erstellen Sie Ihren Inferenzcode und laden Sie ihn dann in einen S3-Bucket hoch. Informationen zum Hochladen von Inhalten in einen S3-Bucket finden Sie unter Arbeiten mit Amazon S3-Buckets im Benutzerhandbuch für Amazon Simple Storage Service.

Anmerkung

Sie müssen Ihre Artefakte in S3-Buckets speichern, die sich im selben AWS-Konto und in derselben AWS-Region wie die Komponenten befinden. Damit AWS IoT Greengrass auf diese Artefakte zugreifen kann, muss die Greengrass-Geräterolle die s3:GetObject Aktion zulassen. Weitere Informationen zur Geräterolle finden Sie unter Autorisieren Sie Kerngeräte für die Interaktion mit Diensten AWS.

Erstellen eines Rezepts für Ihre Inferenzkomponente

  1. Führen Sie den folgenden Befehl aus, um das Komponentenrezept der DLR-Bildklassifizierungskomponente abzurufen. Dieser Befehl schreibt das Komponentenrezept in die JSON- oder YAML-Rezeptdatei, die Sie in Ihrem Befehl angeben.

    Linux, macOS, or Unix
    aws greengrassv2 get-component \ --arn arn:aws:greengrass:region:aws:components:aws.greengrass.DLRImageClassification:versions:version \ --recipe-output-format JSON | YAML \ --query recipe \ --output text | base64 --decode > <recipe-file>
    Windows Command Prompt (CMD)
    aws greengrassv2 get-component ^ --arn arn:aws:greengrass:region:aws:components:aws.greengrass.DLRImageClassification:versions:version ^ --recipe-output-format JSON | YAML ^ --query recipe ^ --output text > <recipe-file>.base64 certutil -decode <recipe-file>.base64 <recipe-file>
    PowerShell
    aws greengrassv2 get-component ` --arn arn:aws:greengrass:region:aws:components:aws.greengrass.DLRImageClassification:versions:version ` --recipe-output-format JSON | YAML ` --query recipe ` --output text > <recipe-file>.base64 certutil -decode <recipe-file>.base64 <recipe-file>

    Ersetzen Sie <recipe-file> durch den Namen des Rezepts im Format <component-name>-<component-version>.

  2. Führen Sie im -ComponentDependenciesObjekt in Ihrem Rezept je nach Modell und Laufzeitkomponenten, die Sie verwenden möchten, einen oder mehrere der folgenden Schritte aus:

    • Behalten Sie die Abhängigkeit der DLR-Komponente bei, wenn Sie DLR-kompilierte Modelle verwenden möchten. Sie können sie auch durch eine Abhängigkeit von einer benutzerdefinierten Laufzeitkomponente ersetzen, wie im folgenden Beispiel gezeigt.

      Laufzeitkomponente

      JSON
      { "<runtime-component>": { "VersionRequirement": "<version>", "DependencyType": "HARD" } }
      YAML
      <runtime-component>: VersionRequirement: "<version>" DependencyType: HARD
    • Behalten Sie die Abhängigkeit des DLR-Bildklassifizierungsmodellspeichers bei, um die von AWSbereitgestellten vortrainierten ResNet-50-Modelle zu verwenden, oder ändern Sie sie, um eine benutzerdefinierte Modellkomponente zu verwenden. Wenn Sie eine Abhängigkeit für eine öffentliche Modellkomponente einschließen und eine spätere benutzerdefinierte Version der Komponente in demselben AWS-Konto und vorhanden istAWS-Region, verwendet die Inferenzkomponente diese benutzerdefinierte Komponente. Geben Sie die Abhängigkeit der Modellkomponente an, wie in den folgenden Beispielen gezeigt.

      Öffentliche Modellkomponente

      JSON
      { "variant.DLR.ImageClassification.ModelStore": { "VersionRequirement": "<version>", "DependencyType": "HARD" } }
      YAML
      variant.DLR.ImageClassification.ModelStore: VersionRequirement: "<version>" DependencyType: HARD

      Benutzerdefinierte Modellkomponente

      JSON
      { "<custom-model-component>": { "VersionRequirement": "<version>", "DependencyType": "HARD" } }
      YAML
      <custom-model-component>: VersionRequirement: "<version>" DependencyType: HARD
  3. Fügen Sie dem -ComponentConfigurationObjekt die Standardkonfiguration für diese Komponente hinzu. Sie können diese Konfiguration später ändern, wenn Sie die Komponente bereitstellen. Der folgende Auszug zeigt die Komponentenkonfiguration für die DLR-Bildklassifizierungskomponente.

    Wenn Sie beispielsweise eine benutzerdefinierte Modellkomponente als Abhängigkeit für Ihre benutzerdefinierte Inferenzkomponente verwenden, ändern Sie , ModelResourceKey um die Namen der Modelle anzugeben, die Sie verwenden.

    JSON
    { "accessControl": { "aws.greengrass.ipc.mqttproxy": { "aws.greengrass.ImageClassification:mqttproxy:1": { "policyDescription": "Allows access to publish via topic ml/dlr/image-classification.", "operations": [ "aws.greengrass#PublishToIoTCore" ], "resources": [ "ml/dlr/image-classification" ] } } }, "PublishResultsOnTopic": "ml/dlr/image-classification", "ImageName": "cat.jpeg", "InferenceInterval": 3600, "ModelResourceKey": { "armv7l": "DLR-resnet50-armv7l-cpu-ImageClassification", "x86_64": "DLR-resnet50-x86_64-cpu-ImageClassification", "aarch64": "DLR-resnet50-aarch64-cpu-ImageClassification" } }
    YAML
    accessControl: aws.greengrass.ipc.mqttproxy: 'aws.greengrass.ImageClassification:mqttproxy:1': policyDescription: 'Allows access to publish via topic ml/dlr/image-classification.' operations: - 'aws.greengrass#PublishToIoTCore' resources: - ml/dlr/image-classification PublishResultsOnTopic: ml/dlr/image-classification ImageName: cat.jpeg InferenceInterval: 3600 ModelResourceKey: armv7l: "DLR-resnet50-armv7l-cpu-ImageClassification" x86_64: "DLR-resnet50-x86_64-cpu-ImageClassification" aarch64: "DLR-resnet50-aarch64-cpu-ImageClassification"
  4. Geben Sie im -ManifestsObjekt Informationen über die Artefakte und die Konfiguration dieser Komponente an, die verwendet werden, wenn die Komponente auf verschiedenen Plattformen bereitgestellt wird, sowie alle anderen Informationen, die zum erfolgreichen Ausführen der Komponente erforderlich sind. Der folgende Auszug zeigt die Konfiguration des -ManifestsObjekts für die Linux-Plattform in der DLR-Image-Klassifizierungskomponente.

    JSON
    { "Manifests": [ { "Platform": { "os": "linux", "architecture": "arm" }, "Name": "32-bit armv7l - Linux (raspberry pi)", "Artifacts": [ { "URI": "s3://SAMPLE-BUCKET/sample-artifacts-directory/image_classification.zip", "Unarchive": "ZIP" } ], "Lifecycle": { "Setenv": { "DLR_IC_MODEL_DIR": "{variant.DLR.ImageClassification.ModelStore:artifacts:decompressedPath}/{configuration:/ModelResourceKey/armv7l}", "DEFAULT_DLR_IC_IMAGE_DIR": "{artifacts:decompressedPath}/image_classification/sample_images/" }, "run": { "RequiresPrivilege": true, "script": ". {variant.DLR:configuration:/MLRootPath}/greengrass_ml_dlr_venv/bin/activate\npython3 {artifacts:decompressedPath}/image_classification/inference.py" } } } ] }
    YAML
    Manifests: - Platform: os: linux architecture: arm Name: 32-bit armv7l - Linux (raspberry pi) Artifacts: - URI: s3://SAMPLE-BUCKET/sample-artifacts-directory/image_classification.zip Unarchive: ZIP Lifecycle: Setenv: DLR_IC_MODEL_DIR: "{variant.DLR.ImageClassification.ModelStore:artifacts:decompressedPath}/{configuration:/ModelResourceKey/armv7l}" DEFAULT_DLR_IC_IMAGE_DIR: "{artifacts:decompressedPath}/image_classification/sample_images/" run: RequiresPrivilege: true script: |- . {variant.DLR:configuration:/MLRootPath}/greengrass_ml_dlr_venv/bin/activate python3 {artifacts:decompressedPath}/image_classification/inference.py

Ausführliche Informationen zum Erstellen von Komponentenrezepten finden Sie unter AWS IoT Greengrass Referenz zum Komponenten-Rezept.

Erstellen der Inferenzkomponente

Verwenden Sie die -AWS IoT GreengrassKonsole oder die AWS CLI, um eine Komponente mit dem soeben definierten Rezept zu erstellen. Nachdem Sie die Komponente erstellt haben, können Sie sie bereitstellen, um Inferenzen auf Ihrem Gerät durchzuführen. Ein Beispiel für die Bereitstellung einer Inferenzkomponente finden Sie unter Tutorial: Durchführen einer Inferenz bei der Bildklassifizierung mit TensorFlow Lite.

  1. Melden Sie sich an der AWS IoT Greengrass-Konsole an.

  2. Wählen Sie im Navigationsmenü Komponenten aus.

  3. Wählen Sie auf der Seite Komponenten auf der Registerkarte Meine Komponenten die Option Komponente erstellen aus.

  4. Wählen Sie auf der Seite Komponente erstellen unter Komponenteninformationen entweder Rezept als JSON eingeben oder Rezept als YAML als Komponentenquelle eingeben aus.

  5. Geben Sie im Feld Rezept das benutzerdefinierte Rezept ein, das Sie erstellt haben.

  6. Klicken Sie auf Komponente erstellen.

Führen Sie den folgenden Befehl aus, um eine neue benutzerdefinierte Komponente mit dem von Ihnen erstellten Rezept zu erstellen.

aws greengrassv2 create-component-version \ --inline-recipe fileb://path/to/recipe/file
Anmerkung

In diesem Schritt wird die Komponente im AWS IoT Greengrass Service in der erstelltAWS Cloud. Sie können die Greengrass-CLI verwenden, um Ihre Komponente lokal zu entwickeln, zu testen und bereitzustellen, bevor Sie sie in die Cloud hochladen. Weitere Informationen finden Sie unter Entwickeln von AWS IoT Greengrass Komponenten.