

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.

# Durchführen von Machine Learning-Inferenzen
<a name="perform-machine-learning-inference"></a>

Mit AWS IoT Greengrass können Sie mithilfe von Cloud-trainierten Modellen Inferenzen für maschinelles Lernen (ML) auf Ihren Edge-Geräten anhand lokal generierter Daten durchführen. Sie können von der niedrigen Latenz und Kosteneinsparungen der Ausführung von lokaler Inferenz profitieren und trotzdem die Cloud-Rechenleistung für Schulungsmodelle und komplexe Verarbeitung nutzen.

AWS IoT Greengrass macht die zur Durchführung von Inferenzen erforderlichen Schritte effizienter. Sie können Ihre Inferenzmodelle überall trainieren und sie lokal als Komponenten für *maschinelles Lernen* einsetzen. Sie können beispielsweise Deep-Learning-Modelle in [Amazon SageMaker ](https://console.aws.amazon.com/sagemaker) AI erstellen und trainieren. Anschließend können Sie diese Modelle in einem [Amazon S3 S3-Bucket](https://console.aws.amazon.com/s3) speichern, sodass Sie diese Modelle als Artefakte in Ihren Komponenten verwenden können, um Inferenzen auf Ihren Kerngeräten durchzuführen.

**Topics**
+ [Wie funktioniert AWS IoT Greengrass ML-Inferenz](#how-ml-inference-works)
+ [Was ist in AWS IoT Greengrass Version 2 anders?](#ml-differences)
+ [Voraussetzungen](#ml-requirements)
+ [Unterstützte Modellquellen](#ml-model-sources)
+ [Unterstützte Laufzeiten für maschinelles Lernen](#ml-runtime-libraries)
+ [AWS-bereitgestellte Komponenten für maschinelles Lernen](#ml-components)
+ [Verwenden Sie Amazon SageMaker AI Edge Manager auf Greengrass-Kerngeräten](use-sagemaker-edge-manager.md)
+ [Passen Sie Ihre Komponenten für maschinelles Lernen an](ml-customization.md)
+ [Fehlerbehebung bei Inferenz für maschinelles Lernen](ml-troubleshooting.md)

## Wie funktioniert AWS IoT Greengrass ML-Inferenz
<a name="how-ml-inference-works"></a>

AWS bietet [Komponenten für maschinelles Lernen](#ml-components), mit denen Sie Bereitstellungen in einem Schritt erstellen können, um Inferenzen für maschinelles Lernen auf Ihrem Gerät durchzuführen. Sie können diese Komponenten auch als Vorlagen verwenden, um benutzerdefinierte Komponenten zu erstellen, die Ihren spezifischen Anforderungen entsprechen.<a name="ml-component-types"></a>

AWS bietet die folgenden Kategorien von Komponenten für maschinelles Lernen:
+ **Modellkomponente** — Enthält Modelle für maschinelles Lernen als Greengrass-Artefakte.
+ **Runtime-Komponente** — Enthält das Skript, das das Machine Learning-Framework und seine Abhängigkeiten auf dem Greengrass-Core-Gerät installiert.
+ **Inferenzkomponente** — Enthält den Inferenzcode und enthält Komponentenabhängigkeiten zur Installation des Frameworks für maschinelles Lernen und zum Herunterladen vorab trainierter Modelle für maschinelles Lernen.

Jede Bereitstellung, die Sie für die Durchführung von Inferenzen für maschinelles Lernen erstellen, besteht aus mindestens einer Komponente, die Ihre Inferenzanwendung ausführt, das Framework für maschinelles Lernen installiert und Ihre Modelle für maschinelles Lernen herunterlädt. Um eine Beispielinferenz mit von AWS-bereitgestellten Komponenten durchzuführen, stellen Sie eine Inferenzkomponente auf Ihrem Kerngerät bereit, die automatisch das entsprechende Modell und die Laufzeitkomponenten als Abhängigkeiten enthält. Um Ihre Bereitstellungen anzupassen, können Sie die Beispielmodellkomponenten durch benutzerdefinierte Modellkomponenten ergänzen oder austauschen oder Sie können die Komponentenrezepte für die AWS bereitgestellten Komponenten als Vorlagen verwenden, um Ihre eigenen benutzerdefinierten Inferenz-, Modell- und Laufzeitkomponenten zu erstellen. 

So führen Sie mithilfe benutzerdefinierter Komponenten Inferenzen für maschinelles Lernen durch:

1. Erstellen Sie eine Modellkomponente. Diese Komponente enthält die Modelle für maschinelles Lernen, die Sie für die Durchführung von Inferenzen verwenden möchten. AWS enthält Beispiele für vortrainierte DLR- und TensorFlow Lite-Modelle. Um ein benutzerdefiniertes Modell zu verwenden, erstellen Sie Ihre eigene Modellkomponente.

1. Erstellen Sie eine Runtime-Komponente. Diese Komponente enthält die Skripts, die zur Installation der Laufzeit für maschinelles Lernen für Ihre Modelle erforderlich sind. AWS bietet Beispiel-Laufzeitkomponenten für [Deep Learning Runtime](https://github.com/neo-ai/neo-ai-dlr) (DLR) und [TensorFlow Lite](https://www.tensorflow.org/lite/guide/python). Um andere Laufzeiten mit Ihren benutzerdefinierten Modellen und Ihrem Inferenzcode zu verwenden, erstellen Sie Ihre eigenen Laufzeitkomponenten.

1. Erstellen Sie eine Inferenzkomponente. Diese Komponente enthält Ihren Inferenzcode sowie Ihre Modell- und Laufzeitkomponenten als Abhängigkeiten. AWS bietet Beispiele für Inferenzkomponenten für die Bildklassifizierung und Objekterkennung mit DLR und Lite. TensorFlow Um andere Arten von Inferenz durchzuführen oder benutzerdefinierte Modelle und Laufzeiten zu verwenden, erstellen Sie Ihre eigene Inferenzkomponente.

1. Stellen Sie die Inferenzkomponente bereit. Wenn Sie diese Komponente bereitstellen, stellt sie AWS IoT Greengrass auch automatisch die Modell- und Laufzeitkomponentenabhängigkeiten bereit.

Informationen zu den ersten Schritten mit den von AWS-bereitgestellten Komponenten finden Sie unter. [Tutorial: Führen Sie mit Lite eine Inferenz zur Klassifizierung von Beispielbildern durch TensorFlow](ml-tutorial-image-classification.md)

Informationen zum Erstellen benutzerdefinierter Komponenten für maschinelles Lernen finden Sie unter[Passen Sie Ihre Komponenten für maschinelles Lernen an](ml-customization.md).

## Was ist in AWS IoT Greengrass Version 2 anders?
<a name="ml-differences"></a>

AWS IoT Greengrass konsolidiert Funktionseinheiten für maschinelles Lernen — wie Modelle, Laufzeiten und Inferenzcode — in Komponenten, mit denen Sie in einem einzigen Schritt die Machine Learning-Runtime installieren, Ihre trainierten Modelle herunterladen und Inferenzen auf Ihrem Gerät durchführen können. 

Durch die Verwendung der AWS bereitgestellten Komponenten für maschinelles Lernen haben Sie die Flexibilität, mit der Durchführung von Inferenzen für maschinelles Lernen mit Beispiel-Inferenzcode und vortrainierten Modellen zu beginnen. Sie können benutzerdefinierte Modellkomponenten einbinden, um Ihre eigenen, speziell trainierten Modelle mit den Inferenz- und Laufzeitkomponenten zu verwenden, die das bietet. AWS Für eine vollständig angepasste Lösung für maschinelles Lernen können Sie die öffentlichen Komponenten als Vorlagen verwenden, um benutzerdefinierte Komponenten zu erstellen und jeden beliebigen Laufzeit-, Modell- oder Inferenztyp zu verwenden.

## Voraussetzungen
<a name="ml-requirements"></a>

Um Komponenten für maschinelles Lernen zu erstellen und zu verwenden, benötigen Sie Folgendes:
+ Ein Greengrass-Core-Gerät. Falls Sie noch keines haben, beachten Sie die Informationen unter [Tutorial: Erste Schritte mit AWS IoT Greengrass V2](getting-started.md).
+ Mindestens 500 MB lokaler Speicherplatz für die Verwendung der AWS bereitgestellten Beispielkomponenten für maschinelles Lernen.

## Unterstützte Modellquellen
<a name="ml-model-sources"></a>

AWS IoT Greengrass unterstützt die Verwendung von individuell trainierten Modellen für maschinelles Lernen, die in Amazon S3 gespeichert sind. Sie können Amazon SageMaker AI Edge Packaging Jobs auch verwenden, um direkt Modellkomponenten für Ihre mit SageMaker KI NEO kompilierten Modelle zu erstellen. Informationen zur Verwendung von SageMaker AI Edge Manager mit finden Sie AWS IoT Greengrass unter[Verwenden Sie Amazon SageMaker AI Edge Manager auf Greengrass-Kerngeräten](use-sagemaker-edge-manager.md).

Die S3-Buckets, die Ihre Modelle enthalten, müssen die folgenden Anforderungen erfüllen:
+ Sie dürfen nicht mit SSE-C verschlüsselt werden. Für Buckets, die serverseitige Verschlüsselung verwenden, unterstützt die Inferenz für AWS IoT Greengrass maschinelles Lernen derzeit nur die Verschlüsselungsoptionen SSE-S3 oder SSE-KMS. Weitere Informationen zu serverseitigen Verschlüsselungsoptionen finden Sie unter [Schützen von Daten mithilfe serverseitiger Verschlüsselung](https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html) im *Amazon Simple Storage Service-Benutzerhandbuch*.
+ Ihre Namen dürfen keine Punkte () `.` enthalten. Weitere Informationen finden Sie in der Regel zur Verwendung von Buckets im virtuellen Hosted-Stil mit SSL unter [Regeln für die Bucket-Benennung](https://docs.aws.amazon.com/AmazonS3/latest/dev/BucketRestrictions.html#bucketnamingrules) im *Amazon Simple Storage Service-Benutzerhandbuch*.
+ <a name="sr-artifacts-req"></a>Die S3-Buckets, in denen Ihre Modellquellen gespeichert sind, müssen sich im selben AWS-Konto und AWS-Region wie Ihre maschinellen Lernkomponenten befinden.
+ AWS IoT Greengrass muss über eine `read` Genehmigung für die Modellquelle verfügen. Um den Zugriff auf die S3-Buckets AWS IoT Greengrass zu ermöglichen, muss die [Greengrass-Geräterolle](device-service-role.md) die `s3:GetObject` Aktion zulassen. Weitere Informationen zur Geräterolle finden Sie unter. [Autorisieren Sie Kerngeräte für die Interaktion mit Diensten AWS](device-service-role.md)

## Unterstützte Laufzeiten für maschinelles Lernen
<a name="ml-runtime-libraries"></a>

AWS IoT Greengrass ermöglicht es Ihnen, benutzerdefinierte Komponenten zu erstellen, um eine beliebige Laufzeit für maschinelles Lernen Ihrer Wahl zu verwenden, um mit Ihren individuell trainierten Modellen Inferenzen für maschinelles Lernen durchzuführen. Informationen zum Erstellen benutzerdefinierter Komponenten für maschinelles Lernen finden Sie unter. [Passen Sie Ihre Komponenten für maschinelles Lernen an](ml-customization.md)

Um den Einstieg in maschinelles Lernen effizienter zu gestalten, AWS IoT Greengrass bietet dieser Artikel Beispiele für Inferenz-, Modell- und Laufzeitkomponenten, die die folgenden Laufzeiten für maschinelles Lernen verwenden: 
+  [Deep Learning Runtime](https://github.com/neo-ai/neo-ai-dlr) (DLR) v1.6.0 und v1.3.0
+  [TensorFlow Lite](https://www.tensorflow.org/lite/guide/python) v2.5.0 

## AWS-bereitgestellte Komponenten für maschinelles Lernen
<a name="ml-components"></a>

In der folgenden Tabelle sind die von AWS-bereitgestellten Komponenten aufgeführt, die für maschinelles Lernen verwendet werden. 

**Anmerkung**  <a name="component-nucleus-dependency-update-note"></a>
Einige der AWS bereitgestellten Komponenten hängen von bestimmten Nebenversionen des Greengrass-Kerns ab. Aufgrund dieser Abhängigkeit müssen Sie diese Komponenten aktualisieren, wenn Sie den Greengrass Nucleus auf eine neue Nebenversion aktualisieren. Informationen zu den spezifischen Versionen von Nucleus, von denen jede Komponente abhängt, finden Sie im entsprechenden Komponententhema. Weitere Informationen zur Aktualisierung des Nucleus finden Sie unter[Aktualisieren Sie die AWS IoT Greengrass Core-Software (OTA)](update-greengrass-core-v2.md).


| Komponente | Description | [Art der Komponente](develop-greengrass-components.md#component-types) | Unterstützes Betriebssystem | [Open-Source](open-source.md) | 
| --- | --- | --- | --- | --- | 
| [SageMaker KI-Edge-Manager](sagemaker-edge-manager-component.md) | Stellt den Amazon SageMaker AI Edge Manager-Agenten auf dem Greengrass-Core-Gerät bereit. | Generisch | Linux, Windows | Nein | 
| [DLR-Bildklassifizierung](dlr-image-classification-component.md) | Inferenzkomponente, die den DLR-Bildklassifizierungsmodellspeicher und die DLR-Laufzeitkomponente als Abhängigkeiten verwendet, um DLR zu installieren, Beispielmodelle für die Bildklassifizierung herunterzuladen und Inferenzen zur Bildklassifizierung auf unterstützten Geräten durchzuführen. | Generisch | Linux, Windows | Nein | 
| [DLR-Objekterkennung](dlr-object-detection-component.md) | Inferenzkomponente, die den DLR-Objekterkennungsmodellspeicher und die DLR-Laufzeitkomponente als Abhängigkeiten verwendet, um DLR zu installieren, Beispielmodelle zur Objekterkennung herunterzuladen und Objekterkennungsinferenzen auf unterstützten Geräten durchzuführen. | Generisch | Linux, Windows | Nein | 
| [Modellspeicher für die DLR-Bildklassifizierung](dlr-image-classification-model-store-component.md) | Modellkomponente, die Stichprobe ResNet -50 Bildklassifizierungsmodelle als Greengrass-Artefakte enthält. | Generisch | Linux, Windows | Nein | 
| [Modellspeicher für DLR-Objekterkennung](dlr-object-detection-model-store-component.md) | Modellkomponente, die Beispielmodelle zur YOLOv3 Objekterkennung als Greengrass-Artefakte enthält. | Generisch | Linux, Windows | Nein | 
| [DLR-Laufzeit](dlr-component.md) | Runtime-Komponente, die ein Installationsskript enthält, das zur Installation von DLR und seinen Abhängigkeiten auf dem Greengrass-Core-Gerät verwendet wird. | Generisch | Linux, Windows | Nein | 
| [TensorFlow Lite-Bildklassifizierung](tensorflow-lite-image-classification-component.md) | Inferenzkomponente, die den TensorFlow Lite-Bildklassifizierungsmodellspeicher und die TensorFlow Lite-Runtime-Komponente als Abhängigkeiten verwendet, um TensorFlow Lite zu installieren, Beispielmodelle für die Bildklassifizierung herunterzuladen und Inferenzen zur Bildklassifizierung auf unterstützten Geräten durchzuführen. | Generisch | Linux, Windows | Nein | 
| [TensorFlow Lite-Objekterkennung](tensorflow-lite-object-detection-component.md) | Inferenzkomponente, die den TensorFlow Lite-Objekterkennungsmodellspeicher und die TensorFlow Lite-Laufzeitkomponente als Abhängigkeiten verwendet, um TensorFlow Lite zu installieren, Beispielmodelle für die Objekterkennung herunterzuladen und Objekterkennungsinferenzen auf unterstützten Geräten durchzuführen. | Generisch | Linux, Windows | Nein | 
| [TensorFlow Modellspeicher für Lite-Bildklassifizierung](tensorflow-lite-image-classification-model-store-component.md) | Modellkomponente, die ein Beispiel für ein MobileNet v1-Modell als Greengrass-Artefakt enthält. | Generisch | Linux, Windows | Nein | 
| [TensorFlow Modellspeicher für Lite-Objekterkennung](tensorflow-lite-object-detection-model-store-component.md) | Modellkomponente, die ein SSD-Beispielmodell (Single Shot Detection) als MobileNet Greengrass-Artefakt enthält. | Generisch | Linux, Windows | Nein | 
| [TensorFlow Lite-Laufzeit](tensorflow-lite-component.md) | Runtime-Komponente, die ein Installationsskript enthält, das zur Installation von TensorFlow Lite und seinen Abhängigkeiten auf dem Greengrass-Core-Gerät verwendet wird. | Generisch | Linux, Windows | Nein | 

# Verwenden Sie Amazon SageMaker AI Edge Manager auf Greengrass-Kerngeräten
<a name="use-sagemaker-edge-manager"></a>

**Wichtig**  
SageMaker AI 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 AI Edge Manager](https://docs.aws.amazon.com/sagemaker/latest/dg/edge-eol.html).

Amazon SageMaker AI Edge Manager ist ein Softwareagent, der auf Edge-Geräten ausgeführt wird. SageMaker AI Edge Manager bietet Modellmanagement für Edge-Geräte, sodass Sie mit Amazon SageMaker AI Neo kompilierte Modelle direkt auf Greengrass-Core-Geräten verpacken und verwenden können. Mithilfe von SageMaker AI 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. Da SageMaker AI Edge Manager SageMaker AI Neo verwendet, um Ihre Modelle für Ihre Zielhardware zu optimieren, müssen Sie die DLR-Laufzeit nicht direkt auf Ihrem Gerät installieren. Auf Greengrass-Geräten lädt SageMaker AI Edge Manager keine lokalen AWS IoT Zertifikate und ruft den Endpunkt des AWS IoT Anmeldeinformationsanbieters nicht direkt auf. Stattdessen verwendet SageMaker AI Edge Manager den [Token-Austauschdienst](token-exchange-service-component.md), um temporäre Anmeldeinformationen von einem TES-Endpunkt abzurufen. 

In diesem Abschnitt wird beschrieben, wie SageMaker AI Edge Manager auf Greengrass-Kerngeräten funktioniert.



## So funktioniert SageMaker AI Edge Manager auf Greengrass-Geräten
<a name="how-to-use-sdge-manager-with-greengrass"></a>

Um den SageMaker AI Edge Manager-Agenten auf Ihren Kerngeräten bereitzustellen, erstellen Sie eine Bereitstellung, die die `aws.greengrass.SageMakerEdgeManager` Komponente enthält. AWS IoT Greengrass verwaltet die Installation und den Lebenszyklus des Edge Manager-Agenten auf Ihren Geräten. Wenn eine neue Version der Agent-Binärdatei verfügbar ist, stellen Sie die aktualisierte Version der `aws.greengrass.SageMakerEdgeManager` Komponente bereit, um die Version des Agenten zu aktualisieren, die auf Ihrem Gerät installiert ist. 

Wenn Sie SageMaker AI Edge Manager mit verwenden AWS IoT Greengrass, umfasst Ihr Workflow die folgenden allgemeinen Schritte:

1. Kompilieren Sie Modelle mit SageMaker AI Neo.

1. Verpacken Sie Ihre mit SageMaker KI Neo kompilierten Modelle mithilfe von SageMaker AI Edge-Paketierungsjobs. Wenn Sie einen Edge-Paketierungsauftrag für Ihr Modell ausführen, können Sie wählen, ob Sie eine Modellkomponente mit dem verpackten Modell als Artefakt erstellen möchten, das auf Ihrem Greengrass-Core-Gerät bereitgestellt werden kann. 

1. Erstellen Sie eine benutzerdefinierte Inferenzkomponente. Sie verwenden diese Inferenzkomponente, um mit dem Edge Manager-Agenten zu interagieren und Inferenzen auf dem Kerngerät durchzuführen. Zu diesen Vorgängen gehören das Laden von Modellen, das Aufrufen von Vorhersageanforderungen zur Ausführung von Inferenzen und das Entladen von Modellen, wenn die Komponente heruntergefahren wird. 

1. Stellen Sie die SageMaker AI Edge Manager-Komponente, die verpackte Modellkomponente und die Inferenzkomponente bereit, um Ihr Modell auf der SageMaker KI-Inferenz-Engine (Edge Manager-Agent) auf Ihrem Gerät auszuführen.

Weitere Informationen zum Erstellen von Edge-Packaging-Jobs und Inferenzkomponenten, die mit SageMaker AI Edge Manager funktionieren, finden Sie unter [Deploy Model Package und Edge Manager Agent with AWS IoT Greengrass](https://docs.aws.amazon.com/sagemaker/latest/dg/edge-greengrass.html) im *Amazon SageMaker AI Developer Guide*.

Das [Tutorial: Erste Schritte mit SageMaker AI Edge Manager](get-started-with-edge-manager-on-greengrass.md) Tutorial zeigt Ihnen, wie Sie den SageMaker AI Edge Manager-Agenten auf einem vorhandenen AWS Greengrass-Core-Gerät einrichten und verwenden. Dabei wird der bereitgestellte Beispielcode verwendet, mit dem Sie Beispielinferenz- und Modellkomponenten erstellen können. 

Wenn Sie SageMaker AI Edge Manager auf Greengrass-Core-Geräten verwenden, können Sie auch die Funktion zum Erfassen von Daten verwenden, um Beispieldaten auf den AWS Cloud hochzuladen. Capture Data ist eine SageMaker KI-Funktion, mit der Sie Inferenzeingaben, Inferenzergebnisse und zusätzliche Inferenzdaten für future Analysen in einen S3-Bucket oder ein lokales Verzeichnis hochladen. Weitere Informationen zur Verwendung von Erfassungsdaten mit SageMaker AI Edge Manager finden Sie unter [Modell verwalten](https://docs.aws.amazon.com/sagemaker/latest/dg/edge-manage-model.html#edge-manage-model-capturedata) im *Amazon SageMaker AI Developer Guide*.

## Voraussetzungen
<a name="greengrass-edge-manager-agent-requirements"></a>

Sie müssen die folgenden Anforderungen erfüllen, um den SageMaker AI Edge Manager-Agenten auf Greengrass-Kerngeräten verwenden zu können.<a name="sm-edge-manager-component-reqs"></a>
+ <a name="sm-req-core-device"></a>Ein Greengrass-Core-Gerät, das auf Amazon Linux 2, einer Debian-basierten Linux-Plattform (x86\$164 oder Armv8) oder Windows (x86\$164) läuft. Falls Sie noch keines haben, beachten Sie die Informationen unter [Tutorial: Erste Schritte mit AWS IoT Greengrass V2](getting-started.md).
+ <a name="sm-req-python"></a>[Python](https://www.python.org/downloads/) 3.6 oder höher, auch `pip` für Ihre Version von Python, die auf Ihrem Kerngerät installiert ist.
+ Die [Greengrass-Geräterolle](device-service-role.md) wurde wie folgt konfiguriert: 
  + <a name="sm-req-iam-trust-relationship"></a>Eine Vertrauensbeziehung, die es ermöglicht `credentials.iot.amazonaws.com` und `sagemaker.amazonaws.com` die Übernahme der Rolle ermöglicht, wie im folgenden Beispiel für eine IAM-Richtlinie 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" 
        } 
      ] 
    }
    ```
  + <a name="sm-req-iam-sagemanakeredgedevicefleetpolicy"></a>Die von [AmazonSageMakerEdgeDeviceFleetPolicy](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/service-role/AmazonSageMakerEdgeDeviceFleetPolicy)IAM verwaltete Richtlinie.
  + <a name="sm-req-iam-s3-putobject"></a>Die `s3:PutObject` Aktion, wie im folgenden Beispiel für eine IAM-Richtlinie dargestellt.

    ```
    {
      "Version": "2012-10-17",		 	 	 
      "Statement": [
        {
          "Action": [
            "s3:PutObject"
          ],
          "Resource": [
            "*"
          ],
          "Effect": "Allow"
        }
      ]
    }
    ```
+ <a name="sm-req-s3-bucket"></a>Ein Amazon S3 S3-Bucket, der im selben AWS-Konto und AWS-Region wie Ihr Greengrass-Core-Gerät erstellt wurde. SageMaker AI Edge Manager benötigt einen S3-Bucket, um eine Edge-Geräteflotte zu erstellen und Beispieldaten aus laufenden Inferenzen auf Ihrem Gerät zu speichern. Informationen zum Erstellen von S3-Buckets finden Sie unter [Erste Schritte mit Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/GetStartedWithS3.html).
+ <a name="sm-req-edge-device-fleet"></a>Eine SageMaker KI-Edge-Geräteflotte, die denselben AWS IoT Rollenalias wie Ihr Greengrass-Core-Gerät verwendet. Weitere Informationen finden Sie unter [Erstellen Sie eine Flotte von Edge-Geräten](get-started-with-edge-manager-on-greengrass.md#create-edge-device-fleet-for-greengrass).
+ <a name="sm-req-edge-device"></a>Ihr Greengrass-Core-Gerät ist als Edge-Gerät in Ihrer SageMaker AI Edge-Geräteflotte registriert. Der Name des Edge-Geräts muss mit dem AWS IoT Dingnamen für Ihr Kerngerät übereinstimmen. Weitere Informationen finden Sie unter [Registrieren Sie Ihr Greengrass Core-Gerät](get-started-with-edge-manager-on-greengrass.md#register-greengrass-core-device-in-sme).

## Beginnen Sie mit SageMaker AI Edge Manager
<a name="use-sm-edge-manager"></a>

Sie können ein Tutorial abschließen, um mit SageMaker AI Edge Manager zu beginnen. Das Tutorial zeigt Ihnen, wie Sie mit der Verwendung von SageMaker AI Edge Manager beginnen können, und AWS zwar anhand der bereitgestellten Beispielkomponenten auf einem vorhandenen Kerngerät. Diese Beispielkomponenten verwenden die SageMaker AI Edge Manager-Komponente als Abhängigkeit, um den Edge Manager-Agenten bereitzustellen und Inferenzen mithilfe vortrainierter Modelle durchzuführen, die mit AI Neo kompiliert wurden. SageMaker Weitere Informationen finden Sie unter [Tutorial: Erste Schritte mit SageMaker AI Edge Manager](get-started-with-edge-manager-on-greengrass.md).

# Passen Sie Ihre Komponenten für maschinelles Lernen an
<a name="ml-customization"></a>

In können Sie [Beispielkomponenten für maschinelles Lernen](perform-machine-learning-inference.md#ml-components) konfigurieren AWS IoT Greengrass, um die Art und Weise, wie Sie Inferenzen für maschinelles Lernen auf Ihren Geräten durchführen, mit den Komponenten Inferenz, Modell und Laufzeit als Bausteinen anzupassen. AWS IoT Greengrass bietet Ihnen außerdem die Flexibilität, die Beispielkomponenten als Vorlagen zu verwenden und nach Bedarf Ihre eigenen benutzerdefinierten Komponenten zu erstellen. Sie können diesen modularen Ansatz beliebig kombinieren, um Ihre Inferenzkomponenten für maschinelles Lernen auf folgende Weise individuell anzupassen:

**Verwenden von Beispiel-Inferenzkomponenten**  
+ Ändern Sie die Konfiguration der Inferenzkomponenten, wenn Sie sie bereitstellen.
+ Verwenden Sie ein benutzerdefiniertes Modell mit der Beispiel-Inferenzkomponente, indem Sie die Mustermodellspeicherkomponente 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 Komponenten des öffentlichen Modells 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 bereitgestellt wird. 

**Topics**
+ [Ändern Sie die Konfiguration einer öffentlichen Inferenzkomponente](#modify-ml-component-config)
+ [Verwenden Sie ein benutzerdefiniertes Modell mit der Beispiel-Inferenzkomponente](#override-public-model-store)
+ [Erstellen Sie benutzerdefinierte Komponenten für maschinelles Lernen](#create-private-ml-components)
+ [Erstellen Sie eine benutzerdefinierte Inferenzkomponente](#create-inference-component)

## Ändern Sie die Konfiguration einer öffentlichen Inferenzkomponente
<a name="modify-ml-component-config"></a>

In der [AWS IoT Greengrass Konsole](https://console.aws.amazon.com/greengrass) wird auf der Komponentenseite die Standardkonfiguration dieser Komponente angezeigt. Die Standardkonfiguration der TensorFlow Lite-Komponente zur Bildklassifizierung 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. [AWS-bereitgestellte Komponenten für maschinelles Lernen](perform-machine-learning-inference.md#ml-components)

In diesem Abschnitt wird beschrieben, wie Sie eine modifizierte Komponente von der AWS IoT Greengrass Konsole aus bereitstellen. Hinweise zur Bereitstellung von Komponenten mithilfe von finden Sie unter[Erstellen von Bereitstellungen](create-deployments.md). AWS CLI<a name="modify-ml-component-config-console"></a>

**So stellen Sie eine modifizierte öffentliche Inferenzkomponente (Konsole) bereit**

1. Melden Sie sich bei der [AWS IoT Greengrass -Konsole](https://console.aws.amazon.com/greengrass) an.

1. Wählen Sie im Navigationsmenü **Komponenten**.

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

1. Wählen Sie auf der Komponentenseite die Option **Bereitstellen** aus.

1. <a name="add-deployment"></a>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.

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

1. <a name="specify-deployment-target"></a>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.

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

1. Vergewissern Sie sich auf der Seite **Komponenten auswählen** unter **Öffentliche Komponenten**, dass die Inferenzkomponente mit Ihrer geänderten Konfiguration ausgewählt ist, und wählen Sie **Weiter** aus.

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

   1. Wählen Sie die Inferenzkomponente und anschließend **Komponente konfigurieren** aus.

   1. Geben Sie unter **Konfigurationsupdate** 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, nach dem `custom.jpg` `/custom-ml-inference/images/` im Ordner genannten Bild 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 `""` in das Feld **Pfade zurücksetzen** ein. 

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

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

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

## Verwenden Sie ein benutzerdefiniertes Modell mit der Beispiel-Inferenzkomponente
<a name="override-public-model-store"></a>

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 bereitgestellt wird, müssen Sie die Komponenten des öffentlichen Modells durch Komponenten überschreiben, die diese Modelle als Artefakte verwenden. Auf hoher Ebene führen Sie 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.

1. Ändern Sie den `ModelResourceKey` Konfigurationsparameter in der Inferenzkomponente, um das benutzerdefinierte Modell zu verwenden. Hinweise zur Aktualisierung der Konfiguration der Inferenzkomponente finden Sie unter [Ändern Sie die Konfiguration einer öffentlichen Inferenzkomponente](#modify-ml-component-config)

Sucht bei der Bereitstellung der Inferenzkomponente AWS IoT Greengrass 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 vorhanden ist. AWS-Region

### Erstellen Sie eine benutzerdefinierte Modellkomponente (Konsole)
<a name="create-model-store-component-console"></a>

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 S3-Buckets](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingBucket.html) im *Amazon Simple Storage Service-Benutzerhandbuch*.
**Anmerkung**  <a name="s3-artifacts-note"></a>
<a name="sr-artifacts-req"></a>Sie müssen Ihre Artefakte in S3-Buckets speichern, die sich im selben AWS-Konto und AWS-Region wie die Komponenten befinden. Um auf diese Artefakte zugreifen AWS IoT Greengrass zu können, muss die [Greengrass-Geräterolle](device-service-role.md) die `s3:GetObject` Aktion zulassen. Weitere Informationen zur Geräterolle finden Sie unter[Autorisieren Sie Kerngeräte für die Interaktion mit Diensten AWS](device-service-role.md).

1. Wählen Sie im Navigationsmenü der [AWS IoT Greengrass Konsole](https://console.aws.amazon.com/greengrass) die Option **Komponenten** aus.

1. Rufen Sie das Komponentenrezept für die Public Model Store-Komponente 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`.

   1. Wählen Sie auf der Komponentenseite die Option **Rezept anzeigen** aus und kopieren Sie das angezeigte JSON-Rezept.

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

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

1. Fügen Sie in das Feld **Rezept** das Komponentenrezept ein, das Sie zuvor kopiert haben.

1. <a name="override-model-recipe-config"></a>Aktualisieren Sie im Rezept die folgenden Werte:
   + `ComponentVersion`: Erhöhen Sie die Nebenversion der Komponente. 

     Wenn Sie eine benutzerdefinierte Komponente erstellen, um eine Komponente eines öffentlichen Modells zu überschreiben, müssen Sie nur die Nebenversion der vorhandenen Komponentenversion aktualisieren. Wenn es sich bei der öffentlichen Komponentenversion beispielsweise um eine Version handelt`2.1.0`, können Sie eine benutzerdefinierte Komponente mit Version erstellen`2.1.1`.
   + `Manifests.Artifacts.Uri`: Aktualisieren Sie jeden URI-Wert auf den Amazon S3 S3-URI des Modells, das Sie verwenden möchten.
**Anmerkung**  
Ändern Sie nicht den Namen der Komponente.

1. Wählen Sie **Komponente erstellen**.

### Erstellen Sie eine benutzerdefinierte Modellkomponente (AWS CLI)
<a name="create-model-store-component-cli"></a>

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 S3-Buckets](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingBucket.html) im *Amazon Simple Storage Service-Benutzerhandbuch*.
**Anmerkung**  <a name="s3-artifacts-note"></a>
<a name="sr-artifacts-req"></a>Sie müssen Ihre Artefakte in S3-Buckets speichern, die sich im selben AWS-Konto und AWS-Region wie die Komponenten befinden. Um auf diese Artefakte zugreifen AWS IoT Greengrass zu können, muss die [Greengrass-Geräterolle](device-service-role.md) die `s3:GetObject` Aktion zulassen. Weitere Informationen zur Geräterolle finden Sie unter[Autorisieren Sie Kerngeräte für die Interaktion mit Diensten AWS](device-service-role.md).

1. 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>
   ```

------

1. Ändern Sie den Namen der Rezeptdatei auf`<component-name>-<component-version>`, wobei Komponentenversion die Zielversion der neuen Komponente ist. Beispiel, `variant.DLR.ImageClassification.ModelStore-2.1.1.yaml`. 

1. <a name="override-model-recipe-config"></a>Aktualisieren Sie im Rezept die folgenden Werte:
   + `ComponentVersion`: Erhöhen Sie die Nebenversion der Komponente. 

     Wenn Sie eine benutzerdefinierte Komponente erstellen, um eine Komponente eines öffentlichen Modells zu überschreiben, müssen Sie nur die Nebenversion der vorhandenen Komponentenversion aktualisieren. Wenn es sich bei der öffentlichen Komponentenversion beispielsweise um eine Version handelt`2.1.0`, können Sie eine benutzerdefinierte Komponente mit Version erstellen`2.1.1`.
   + `Manifests.Artifacts.Uri`: Aktualisieren Sie jeden URI-Wert auf den Amazon S3 S3-URI des Modells, das Sie verwenden möchten.
**Anmerkung**  
Ändern Sie nicht den Namen der Komponente.

1. Führen Sie den folgenden Befehl aus, um mit dem abgerufenen und geänderten Rezept eine neue Komponente zu erstellen.

   ```
   aws greengrassv2 create-component-version \
       --inline-recipe fileb://path/to/component/recipe
   ```
**Anmerkung**  
In diesem Schritt wird die Komponente im AWS IoT Greengrass Dienst in der erstellt AWS 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 [AWS IoT Greengrass Komponenten entwickeln](develop-greengrass-components.md).

Weitere Informationen zum Erstellen von Komponenten finden Sie unter[AWS IoT Greengrass Komponenten entwickeln](develop-greengrass-components.md).

## Erstellen Sie benutzerdefinierte Komponenten für maschinelles Lernen
<a name="create-private-ml-components"></a>

Sie müssen benutzerdefinierte Komponenten erstellen, wenn Sie benutzerdefinierten Inferenzcode oder eine Runtime verwenden möchten, für die AWS IoT Greengrass keine Beispielkomponente bereitgestellt wird. Sie können Ihren benutzerdefinierten Inferenzcode mit den AWS bereitgestellten Beispielmodellen und Laufzeiten für maschinelles Lernen verwenden, oder Sie können eine vollständig angepasste Inferenzlösung für maschinelles Lernen mit Ihren eigenen Modellen und Ihrer eigenen Laufzeit entwickeln. Wenn Ihre Modelle eine Runtime verwenden, für die AWS IoT Greengrass eine Beispiel-Laufzeitkomponente bereitgestellt wird, 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. 

**Topics**
+ [Rufen Sie das Rezept für eine öffentliche Komponente ab](#get-ml-component-recipes)
+ [Rufen Sie Beispielartefakte von Komponenten ab](#get-ml-component-artifacts)
+ [Laden Sie Komponentenartefakte in einen S3-Bucket hoch](#upload-ml-component-artifacts)
+ [Erstellen Sie benutzerdefinierte Komponenten](#create-ml-components)

### Rufen Sie das Rezept für eine öffentliche Komponente ab
<a name="get-ml-component-recipes"></a>

Sie können das Rezept einer vorhandenen öffentlichen Komponente für maschinelles Lernen 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 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.

  1. Wählen Sie auf der Komponentenseite die Option **Rezept anzeigen** aus.
+ **Verwenden 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>`. 

### Rufen Sie Beispielartefakte von Komponenten ab
<a name="get-ml-component-artifacts"></a>

Sie können die von den öffentlichen Machine-Learning-Komponenten verwendeten Artefakte als Vorlagen verwenden, um Ihre benutzerdefinierten Komponentenartefakte wie Inferenzcode oder Runtime-Installationsskripten zu erstellen. 

Um die Beispielartefakte anzuzeigen, die in den öffentlichen Komponenten für maschinelles Lernen enthalten sind, stellen Sie die öffentliche Inferenzkomponente bereit und sehen Sie sich dann die Artefakte auf Ihrem Gerät im `/greengrass/v2/packages/artifacts-unarchived/component-name/component-version/` Ordner an. 

### Laden Sie Komponentenartefakte in einen S3-Bucket hoch
<a name="upload-ml-component-artifacts"></a>

Bevor Sie eine benutzerdefinierte Komponente erstellen können, müssen Sie die Komponentenartefakte in einen S3-Bucket hochladen und den S3 URIs in Ihrem Komponentenrezept verwenden. Um beispielsweise benutzerdefinierten Inferenzcode in Ihrer Inferenzkomponente zu verwenden, laden Sie den Code in einen S3-Bucket hoch. Sie können dann den Amazon S3 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 S3-Buckets](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingBucket.html) im *Amazon Simple Storage Service-Benutzerhandbuch*.

**Anmerkung**  <a name="s3-artifacts-note"></a>
<a name="sr-artifacts-req"></a>Sie müssen Ihre Artefakte in S3-Buckets speichern, die sich im selben AWS-Konto und AWS-Region wie die Komponenten befinden. Um auf diese Artefakte zugreifen AWS IoT Greengrass zu können, muss die [Greengrass-Geräterolle](device-service-role.md) die `s3:GetObject` Aktion zulassen. Weitere Informationen zur Geräterolle finden Sie unter[Autorisieren Sie Kerngeräte für die Interaktion mit Diensten AWS](device-service-role.md).

### Erstellen Sie benutzerdefinierte Komponenten
<a name="create-ml-components"></a>

Sie können die Artefakte und Rezepte, die Sie abgerufen haben, verwenden, um Ihre benutzerdefinierten Komponenten für maschinelles Lernen zu erstellen. Ein Beispiel finden Sie unter [Erstellen Sie eine benutzerdefinierte Inferenzkomponente](#create-inference-component).

Ausführliche Informationen zum Erstellen und Bereitstellen von Komponenten auf Greengrass-Geräten finden Sie unter [AWS IoT Greengrass Komponenten entwickeln](develop-greengrass-components.md) und[AWS IoT Greengrass Komponenten auf Geräten bereitstellen](manage-deployments.md).

## Erstellen Sie eine benutzerdefinierte Inferenzkomponente
<a name="create-inference-component"></a>

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

**Topics**
+ [Laden Sie Ihren Inferenzcode in einen Amazon S3 S3-Bucket hoch](#create-inference-code)
+ [Erstellen Sie ein Rezept für Ihre Inferenzkomponente](#create-inference-component-recipe)
+ [Erstellen Sie die Inferenzkomponente](#create-private-inference-component)

### Laden Sie Ihren Inferenzcode in einen Amazon S3 S3-Bucket hoch
<a name="create-inference-code"></a>

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 S3-Buckets](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingBucket.html) im *Amazon Simple Storage Service-Benutzerhandbuch*.

**Anmerkung**  <a name="s3-artifacts-note"></a>
<a name="sr-artifacts-req"></a>Sie müssen Ihre Artefakte in S3-Buckets speichern, die sich im selben AWS-Konto und AWS-Region wie die Komponenten befinden. Um auf diese Artefakte zugreifen AWS IoT Greengrass zu können, muss die [Greengrass-Geräterolle](device-service-role.md) die `s3:GetObject` Aktion zulassen. Weitere Informationen zur Geräterolle finden Sie unter[Autorisieren Sie Kerngeräte für die Interaktion mit Diensten AWS](device-service-role.md).

### Erstellen Sie ein Rezept für Ihre Inferenzkomponente
<a name="create-inference-component-recipe"></a>

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>
   ```

------

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

1. Führen Sie in dem `ComponentDependencies` Objekt in Ihrem Rezept je nach Modell und Laufzeitkomponenten, die Sie verwenden möchten, eine oder mehrere der folgenden Aktionen aus:
   + Behalten Sie die Abhängigkeit der DLR-Komponenten 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.

     **Runtime-Komponente**

------
#### [ JSON ]

     ```
     { 
         "<runtime-component>": {
             "VersionRequirement": "<version>",
             "DependencyType": "HARD"
         }
     }
     ```

------
#### [ YAML ]

     ```
     <runtime-component>:
         VersionRequirement: "<version>"
         DependencyType: HARD
     ```

------
   + Behalten Sie die Speicherabhängigkeit des DLR-Bildklassifizierungsmodells bei, um die bereitgestellten vortrainierten ResNet -50-Modelle zu verwenden, oder ändern Sie es, um eine benutzerdefinierte Modellkomponente zu verwenden. AWS Wenn Sie eine Abhängigkeit für eine Komponente eines öffentlichen Modells hinzufügen AWS-Konto und eine spätere benutzerdefinierte Version der Komponente in derselben Hand vorhanden ist AWS-Region, verwendet die Inferenzkomponente diese benutzerdefinierte Komponente. Geben Sie die Abhängigkeit von 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
     ```

------

     **Komponente für benutzerdefiniertes Modell**

------
#### [ JSON ]

     ```
     {
         "<custom-model-component>": {
             "VersionRequirement": "<version>",
             "DependencyType": "HARD"
         }
     }
     ```

------
#### [ YAML ]

     ```
     <custom-model-component>:
         VersionRequirement: "<version>"
         DependencyType: HARD
     ```

------

1. Fügen Sie im `ComponentConfiguration` Objekt 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 sie so, dass `ModelResourceKey` sie die Namen der Modelle angeben, 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"
   ```

------

1. Geben Sie im `Manifests` Objekt Informationen zu den Artefakten und der Konfiguration dieser Komponente an, die verwendet werden, wenn die Komponente auf verschiedenen Plattformen bereitgestellt wird, sowie alle anderen Informationen, die für die erfolgreiche Ausführung der Komponente erforderlich sind. Der folgende Auszug zeigt die Konfiguration des `Manifests` Objekts für die Linux-Plattform in der DLR-Komponente zur Bildklassifizierung.

------
#### [ 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](component-recipe-reference.md)

### Erstellen Sie die Inferenzkomponente
<a name="create-private-inference-component"></a>

Verwenden Sie die AWS IoT Greengrass Konsole oder die AWS CLI , um eine Komponente mit dem Rezept zu erstellen, das Sie gerade definiert haben. 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: Führen Sie mit Lite eine Inferenz zur Klassifizierung von Beispielbildern durch TensorFlow](ml-tutorial-image-classification.md)

#### Erstellen Sie eine benutzerdefinierte Inferenzkomponente (Konsole)
<a name="create-inference-component-console"></a>

1. Melden Sie sich bei der [AWS IoT Greengrass -Konsole](https://console.aws.amazon.com/greengrass) an.

1. Wählen Sie im Navigationsmenü **Komponenten**.

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

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

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

1. Klicken Sie auf **Komponente erstellen**.

#### Erstellen Sie eine benutzerdefinierte Inferenzkomponente ()AWS CLI
<a name="create-inference-component-cli"></a>

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 Dienst in der erstellt AWS 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 [AWS IoT Greengrass Komponenten entwickeln](develop-greengrass-components.md).

# Fehlerbehebung bei Inferenz für maschinelles Lernen
<a name="ml-troubleshooting"></a>

Verwenden Sie die Informationen und Lösungen zur Fehlerbehebung in diesem Abschnitt, um Probleme mit Ihren Komponenten für maschinelles Lernen zu lösen. Informationen zu den öffentlichen Inferenzkomponenten für maschinelles Lernen finden Sie in den Fehlermeldungen in den folgenden Komponentenprotokollen:

------
#### [ Linux or Unix ]
+ `/greengrass/v2/logs/aws.greengrass.DLRImageClassification.log`
+ `/greengrass/v2/logs/aws.greengrass.DLRObjectDetection.log`
+ `/greengrass/v2/logs/aws.greengrass.TensorFlowLiteImageClassification.log`
+ `/greengrass/v2/logs/aws.greengrass.TensorFlowLiteObjectDetection.log`

------
#### [ Windows ]
+ `C:\greengrass\v2\logs\aws.greengrass.DLRImageClassification.log`
+ `C:\greengrass\v2\logs\aws.greengrass.DLRObjectDetection.log`
+ `C:\greengrass\v2\logs\aws.greengrass.TensorFlowLiteImageClassification.log`
+ `C:\greengrass\v2\logs\aws.greengrass.TensorFlowLiteObjectDetection.log`

------

Wenn eine Komponente korrekt installiert ist, enthält das Komponentenprotokoll den Speicherort der Bibliothek, die für die Inferenz verwendet wird.

**Topics**
+ [Bibliothek konnte nicht abgerufen werden](#rpi-update-error)
+ [Cannot open shared object file](#rpi-import-cv-error)
+ [Error: ModuleNotFoundError: No module named '<library>'](#troubleshooting-venv-errors-not-found)
+ [Es wurde kein CUDA-fähiges Gerät erkannt](#troubleshooting-cuda-error)
+ [Keine solche Datei oder kein solches Verzeichnis](#troubleshooting-venv-errors-no-such-file)
+ [RuntimeError: module compiled against API version 0xf but this version of NumPy is <version>](#troubleshooting-rpi-numpy-version-error)
+ [picamera.exc.PiCameraError: Camera is not enabled](#troubleshooting-rpi-camera-stack-error)
+ [Speicherfehler](#troubleshooting-memory-errors)
+ [Speicherplatzfehler](#troubleshooting-disk-space-errors)
+ [Timeout-Fehler](#troubleshooting-timeout-errors)

## Bibliothek konnte nicht abgerufen werden
<a name="rpi-update-error"></a>

Der folgende Fehler tritt auf, wenn das Installationsskript während der Bereitstellung auf einem Raspberry Pi-Gerät eine erforderliche Bibliothek nicht herunterladen kann.

```
Err:2 http://raspbian.raspberrypi.org/raspbian buster/main armhf python3.7-dev armhf 3.7.3-2+deb10u1
404 Not Found [IP: 93.93.128.193 80] 
E: Failed to fetch http://raspbian.raspberrypi.org/raspbian/pool/main/p/python3.7/libpython3.7-dev_3.7.3-2+deb10u1_armhf.deb 404 Not Found [IP: 93.93.128.193 80]
```

Führen Sie Ihre Komponente erneut aus `sudo apt-get update` und stellen Sie sie bereit.

## Cannot open shared object file
<a name="rpi-import-cv-error"></a>

Möglicherweise werden Fehler ähnlich den folgenden angezeigt, wenn das Installationsskript `opencv-python` während der Bereitstellung auf einem Raspberry Pi-Gerät eine erforderliche Abhängigkeit für nicht herunterlädt.

```
ImportError: libopenjp2.so.7: cannot open shared object file: No such file or directory
```

Führen Sie den folgenden Befehl aus, um die Abhängigkeiten für manuell zu installieren`opencv-python`:

```
sudo apt-get install libopenjp2-7 libilmbase23 libopenexr-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libgtk-3-0 libwebp-dev
```

## Error: ModuleNotFoundError: No module named '<library>'
<a name="troubleshooting-venv-errors-not-found"></a>

Möglicherweise wird dieser Fehler in den Protokollen (`variant.DLR.log`oder`variant.TensorFlowLite.log`) der ML-Laufzeitkomponente angezeigt, wenn die ML-Laufzeitbibliothek oder ihre Abhängigkeiten nicht korrekt installiert sind. Dieser Fehler kann in den folgenden Fällen auftreten:
+ Wenn Sie die `UseInstaller` Option verwenden, die standardmäßig aktiviert ist, weist dieser Fehler darauf hin, dass die ML-Laufzeitkomponente die Laufzeit oder ihre Abhängigkeiten nicht installieren konnte. Gehen Sie wie folgt vor:

  1. Konfigurieren Sie die ML-Laufzeitkomponente, um die `UseInstaller` Option zu deaktivieren.

  1. Installieren Sie die ML-Laufzeit und ihre Abhängigkeiten und stellen Sie sie dem Systembenutzer zur Verfügung, der die ML-Komponenten ausführt. Weitere Informationen finden Sie hier:
     + [DLR-Laufzeitoption UseInstaller ](dlr-component.md#dlr-component-config-useinstaller-term)
     + [TensorFlowLite-Laufzeitoption UseInstaller ](tensorflow-lite-component.md#tensorflow-lite-component-config-useinstaller-term)
+ Wenn Sie die `UseInstaller` Option nicht verwenden, weist dieser Fehler darauf hin, dass die ML-Laufzeit oder ihre Abhängigkeiten für den Systembenutzer, der die ML-Komponenten ausführt, nicht installiert sind. Gehen Sie wie folgt vor:

  1. Stellen Sie sicher, dass die Bibliothek für den Systembenutzer installiert ist, der die ML-Komponenten ausführt. *ggc\$1user*Ersetzen Sie es durch den Namen des Systembenutzers und *tflite\$1runtime* durch den Namen der Bibliothek, die überprüft werden soll.

------
#### [ Linux or Unix ]

     ```
     sudo -H -u ggc_user bash -c "python3 -c 'import tflite_runtime'"
     ```

------
#### [ Windows ]

     ```
     runas /user:ggc_user "py -3 -c \"import tflite_runtime\""
     ```

------

  1. Wenn die Bibliothek nicht installiert ist, installieren Sie sie für diesen Benutzer. *ggc\$1user*Ersetzen Sie es durch den Namen des Systembenutzers und *tflite\$1runtime* ersetzen Sie es durch den Namen der Bibliothek.

------
#### [ Linux or Unix ]

     ```
     sudo -H -u ggc_user bash -c "python3 -m pip install --user tflite_runtime"
     ```

------
#### [ Windows ]

     ```
     runas /user:ggc_user "py -3 -m pip install --user tflite_runtime"
     ```

------

     Weitere Informationen zu den Abhängigkeiten der einzelnen ML-Runtime finden Sie im Folgenden:
     + [DLR-Laufzeitoption UseInstaller ](dlr-component.md#dlr-component-config-useinstaller-term)
     + [TensorFlowLite-Laufzeitoption UseInstaller ](tensorflow-lite-component.md#tensorflow-lite-component-config-useinstaller-term)

  1. Wenn das Problem weiterhin besteht, installieren Sie die Bibliothek für einen anderen Benutzer, um zu überprüfen, ob dieses Gerät die Bibliothek installieren kann. Bei dem Benutzer kann es sich beispielsweise um Ihren Benutzer, den Root-Benutzer oder einen Administratorbenutzer handeln. Wenn Sie die Bibliothek für keinen Benutzer erfolgreich installieren können, unterstützt Ihr Gerät die Bibliothek möglicherweise nicht. Lesen Sie in der Dokumentation der Bibliothek nach, um die Anforderungen zu überprüfen und Installationsprobleme zu beheben.

## Es wurde kein CUDA-fähiges Gerät erkannt
<a name="troubleshooting-cuda-error"></a>

Möglicherweise wird der folgende Fehler angezeigt, wenn Sie die GPU-Beschleunigung verwenden. Führen Sie den folgenden Befehl aus, um den GPU-Zugriff für den Greengrass-Benutzer zu aktivieren.

```
sudo usermod -a -G video ggc_user
```

## Keine solche Datei oder kein solches Verzeichnis
<a name="troubleshooting-venv-errors-no-such-file"></a>

Die folgenden Fehler deuten darauf hin, dass die Runtime-Komponente die virtuelle Umgebung nicht korrekt einrichten konnte:
+ `MLRootPath/greengrass_ml_dlr_conda/bin/conda: No such file or directory `
+ `MLRootPath/greengrass_ml_dlr_venv/bin/activate: No such file or directory ` 
+ `MLRootPath/greengrass_ml_tflite_conda/bin/conda: No such file or directory ` 
+ `MLRootPath/greengrass_ml_tflite_venv/bin/activate: No such file or directory `

Überprüfen Sie die Protokolle, um sicherzustellen, dass alle Laufzeitabhängigkeiten korrekt installiert wurden. Weitere Informationen zu den vom Installationsskript installierten Bibliotheken finden Sie in den folgenden Themen:
+ [DLR-Laufzeit](dlr-component.md)
+ [TensorFlow Lite-Laufzeit](tensorflow-lite-component.md)

Standardmäßig *MLRootPath* ist auf eingestellt`/greengrass/v2/work/component-name/greengrass_ml`. Um diesen Speicherort zu ändern, nehmen Sie die [DLR-Laufzeit](dlr-component.md) oder [TensorFlow Lite-Laufzeit](tensorflow-lite-component.md) Runtime-Komponente direkt in Ihre Bereitstellung auf und geben Sie in einem Update zur Zusammenführung der Konfiguration einen geänderten Wert für den `MLRootPath` Parameter an. Weitere Informationen zur Konfiguration der Komponente finden Sie unter[Komponentenkonfigurationen aktualisieren](update-component-configurations.md).

**Anmerkung**  
Für die DLR-Komponente v1.3.x legen Sie den `MLRootPath` Parameter in der Konfiguration der Inferenzkomponente fest. Der Standardwert ist. `$HOME/greengrass_ml`

## RuntimeError: module compiled against API version 0xf but this version of NumPy is <version>
<a name="troubleshooting-rpi-numpy-version-error"></a>

Möglicherweise werden die folgenden Fehler angezeigt, wenn Sie Inferenz für maschinelles Lernen auf einem Raspberry Pi ausführen, auf dem Raspberry Pi OS Bullseye ausgeführt wird.

```
RuntimeError: module compiled against API version 0xf but this version of numpy is 0xd
ImportError: numpy.core.multiarray failed to import
```

Dieser Fehler tritt auf, weil Raspberry Pi OS Bullseye eine frühere Version von enthält NumPy als die Version, die OpenCV benötigt. Um dieses Problem zu beheben, führen Sie den folgenden Befehl aus, um auf die neueste Version NumPy zu aktualisieren.

```
pip3 install --upgrade numpy
```

## picamera.exc.PiCameraError: Camera is not enabled
<a name="troubleshooting-rpi-camera-stack-error"></a>

Möglicherweise wird der folgende Fehler angezeigt, wenn Sie Machine Learning Inference auf einem Raspberry Pi mit Raspberry Pi OS Bullseye ausführen.

```
picamera.exc.PiCameraError: Camera is not enabled. Try running 'sudo raspi-config' and ensure that the camera has been enabled.
```

Dieser Fehler tritt auf, weil Raspberry Pi OS Bullseye einen neuen Kamerastack enthält, der nicht mit den ML-Komponenten kompatibel ist. Um dieses Problem zu beheben, aktivieren Sie den älteren Kamerastack.<a name="raspberry-pi-bullseye-enable-legacy-camera-stack"></a>

**Um den älteren Kamerastack zu aktivieren**

1. Führen Sie den folgenden Befehl aus, um das Raspberry Pi-Konfigurationstool zu öffnen.

   ```
   sudo raspi-config
   ```

1. Wählen Sie **Schnittstellenoptionen**.

1. Wählen Sie **Legacy-Kamera** aus, um den Legacy-Kamerastack zu aktivieren.

1. Starten Sie den Raspberry Pi neu.

## Speicherfehler
<a name="troubleshooting-memory-errors"></a>

Die folgenden Fehler treten in der Regel auf, wenn das Gerät nicht über genügend Speicher verfügt und der Komponentenprozess unterbrochen wird.
+ `stderr. Killed.`
+ `exitCode=137`

Wir empfehlen mindestens 500 MB Arbeitsspeicher für die Bereitstellung einer öffentlichen Inferenzkomponente für maschinelles Lernen.

## Speicherplatzfehler
<a name="troubleshooting-disk-space-errors"></a>

Der `no space left on device` Fehler tritt normalerweise auf, wenn ein Gerät nicht über genügend Speicherplatz verfügt. Stellen Sie sicher, dass auf Ihrem Gerät genügend Speicherplatz verfügbar ist, bevor Sie die Komponente erneut bereitstellen. Wir empfehlen mindestens 500 MB freien Festplattenspeicher, um eine öffentliche Inferenzkomponente für maschinelles Lernen bereitzustellen.

## Timeout-Fehler
<a name="troubleshooting-timeout-errors"></a>

Die öffentlichen Komponenten für maschinelles Lernen laden große Modelldateien für maschinelles Lernen herunter, die größer als 200 MB sind. Wenn beim Herunterladen während der Bereitstellung ein Timeout auftritt, überprüfen Sie die Geschwindigkeit Ihrer Internetverbindung und versuchen Sie es erneut.