Fehlerbehebung bei Machine Learning-Inferenzen - 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.

Fehlerbehebung bei Machine Learning-Inferenzen

Verwenden Sie die Informationen und Lösungen zur Fehlerbehebung in diesem Abschnitt, um Probleme mit Ihren Machine-Learning-Komponenten zu beheben. Informationen zu den öffentlichen Inferenzkomponenten für Machine Learning 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 es für die Inferenz verwendet.

Bibliothek konnte nicht abgerufen werden

Der folgende Fehler tritt auf, wenn das Installationsskript während der Bereitstellung auf einem Raspberry Pi-Gerät keine erforderliche Bibliothek 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 erneut bereit.

Cannot open shared object file

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

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 installierenopencv-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>'

Dieser Fehler wird möglicherweise in den ML-Laufzeitkomponentenprotokollen (variant.DLR.log oder variant.TensorFlowLite.log) 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 Option verwendenUseInstaller, 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.

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

  • Wenn Sie die UseInstaller Option nicht verwenden, weist dieser Fehler darauf hin, dass die ML-Laufzeit oder ihre Abhängigkeiten nicht für den Systembenutzer installiert sind, der die ML-Komponenten ausführt. Gehen Sie wie folgt vor:

    1. Überprüfen Sie, ob die Bibliothek für den Systembenutzer installiert ist, der die ML-Komponenten ausführt. Ersetzen Sie ggc_user durch den Namen des Systembenutzers und tf_runtime durch den Namen der zu überprüfenden Bibliothek.

      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\""
    2. Wenn die Bibliothek nicht installiert ist, installieren Sie sie für diesen Benutzer. Ersetzen Sie ggc_user durch den Namen des Systembenutzers und tf_runtime 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 für jede ML-Laufzeit finden Sie im Folgenden:

    3. Wenn das Problem weiterhin besteht, installieren Sie die Bibliothek für einen anderen Benutzer, um zu bestätigen, ob dieses Gerät die Bibliothek installieren kann. Der Benutzer könnte beispielsweise Ihr Benutzer, der Root-Benutzer oder ein Administratorbenutzer sein. Wenn Sie die Bibliothek für keinen Benutzer erfolgreich installieren können, unterstützt Ihr Gerät die Bibliothek möglicherweise nicht. Lesen Sie die Dokumentation der Bibliothek, um die Anforderungen zu überprüfen und Installationsprobleme zu beheben.

Es wird kein CUDA-fähiges Gerät erkannt

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

Die folgenden Fehler weisen darauf hin, dass die Laufzeitkomponente 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:

Standardmäßig ist MLRootPath auf festgelegt/greengrass/v2/work/component-name/greengrass_ml. Um diesen Speicherort zu ändern, schließen Sie die - DLR-Laufzeit oder -TensorFlow Lite-LaufzeitLaufzeitkomponente direkt in Ihre Bereitstellung ein und geben Sie einen geänderten Wert für den -MLRootPathParameter in einer Konfigurationszusammenführungsaktualisierung an. Weitere Informationen zum Konfigurieren von Komponenten finden Sie unter Komponentenkonfigurationen aktualisieren.

Anmerkung

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

RuntimeError: module compiled against API version 0xf but this version of NumPy is <version>

Möglicherweise werden die folgenden Fehler angezeigt, wenn Sie Machine Learning-Inferenzen 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 NumPy als die Version enthält, die OpenCV benötigt. Um dieses Problem zu beheben, führen Sie den folgenden Befehl aus, um NumPy auf die neueste Version zu aktualisieren.

pip3 install --upgrade numpy

picamera.exc.PiCameraError: Camera is not enabled

Möglicherweise wird der folgende Fehler angezeigt, wenn Sie Machine Learning-Inferenz auf einem Raspberry Pi ausführen, auf dem Raspberry Pi OS Bullseye ausgeführt wird.

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 Kamera-Stack enthält, der nicht mit den ML-Komponenten kompatibel ist. Um dieses Problem zu beheben, aktivieren Sie den Legacy-Kamera-Stack.

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

    sudo raspi-config
  2. Wählen Sie Schnittstellenoptionen aus.

  3. Wählen Sie Legacy-Kamera aus, um den Legacy-Kamera-Stack zu aktivieren.

  4. Starten Sie den Raspberry Pi neu.

Speicherfehler

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 Machine Learning.

Festplattenspeicherfehler

Der no space left on device Fehler tritt in der Regel 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 Speicherplatz für die Bereitstellung einer öffentlichen Inferenzkomponente für Machine Learning.

Timeout-Fehler

Die öffentlichen Machine-Learning-Komponenten laden große Machine-Learning-Modelldateien herunter, die größer als 200 MB sind. Wenn der Download während der Bereitstellung abläuft, überprüfen Sie die Geschwindigkeit Ihrer Internetverbindung und versuchen Sie die Bereitstellung erneut.