Troubleshooting machine learning inference - Amazon IoT Greengrass
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Troubleshooting machine learning inference

使用本节中的故障排除信息和解决方案来帮助解决机器学习组件的问题。有关公共机器学习推理组件,请参阅以下组件日志中的错误消息:

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

如果组件安装正确,则组件日志将包含其用于推理的库的位置。

无法获取库

在 Raspberry Pi 设备上部署期间,如果安装程序脚本无法下载所需的库,则会出现以下错误。

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]

再次运行sudo apt-get update并部署您的组件。

Cannot open shared object file

在 Raspberry Pi 设备上部署opencv-python期间,安装程序脚本无法下载所需的依赖项时,您可能会看到类似以下内容的错误。

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

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

您可能会在 ML 运行时组件日志(variant.DLR.logvariant.TensorFlowLite.log)未正确安装 ML 运行时库或其依赖项时看到此错误。在以下情况下可能会出现此错误:

  • 如果您使用默认情况下处于启用状态的UseInstaller选项,则此错误表示 ML 运行时组件未能安装运行时或其依赖项。执行以下操作:

    1. 配置 ML 运行时组件以禁用该UseInstaller选项。

    2. 安装 ML 运行时及其依赖关系,并将其提供给运行 ML 组件的系统用户。有关更多信息,请参阅下列内容:

  • 如果您不使用该UseInstaller选项,则此错误表示未为运行 ML 组件的系统用户安装 ML 运行时或其依赖项。执行以下操作:

    1. 检查库是否已为运行 ML 组件的系统用户安装。将 ggc_user 替换为系统用户的名称,将 tflite_runtime 替换为要检查的库的名称。

      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. 如果未安装该库,请为该用户安装该库。将 ggc_user 替换为系统用户的名称,将 tflite_runtime 替换为库的名称。

      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"

      ,:

    3. 如果问题仍然存在,请为其他用户安装该库,以确认此设备是否可以安装该库。例如,该用户可以是您的用户、root 用户或管理员用户。如果您无法为任何用户成功安装该库,则您的设备可能不支持该库。查阅库的文档以查看要求并解决安装问题。

未检测到支持 CUDA 的设备

GPU Acelersion,:Greengrass,Greengrass。

sudo usermod -a -G video ggc_user

以下错误表明运行时组件无法正确设置虚拟环境:

  • 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

检查日志,确保所有运行时依赖项均已正确安装。,:

默认情况下RootPath,ML 设置为/greengrass/v2/work/component-name/greengrass_ml。要更改此位置,请直接在部署中包含DLRTensorFlow 精简版运行时间运行时组件,并在配置合并更新中为MLRootPath参数指定修改后的值。,Update component configurations

注意

对于 DLR 组件 v1.3.x,您在推理组件的配置中设置MLRootPath参数,默认值为$HOME/greengrass_ml

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

在运行 Raspberry Pi OS Bullseye 的 Raspberry Pi 上运行机器学习推理时,你可能会看到以下错误。

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

之所以出现此错误,是因为 Raspberry Pi OS Bullseye 包含的版本 NumPy比 OpenCV 要求的版本更早。 NumPy ,。

pip3 install --upgrade numpy

picamera.exc.PiCameraError: Camera is not enabled

在运行 Raspberry Pi OS Bullseye 的 Raspberry Pi 上运行机器学习推理时,你可能会看到以下错误。

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

之所以出现此错误,是因为 Raspberry Pi OS Bullseye 包含了与 ML 组件不兼容的新相机堆栈。要修复此问题,请启用旧相机堆栈。

启用旧版摄像机堆栈

  1. Raspberry Pi。

    sudo raspi-config
  2. 选择接口选项

  3. 选择 “传统相机” 以启用旧版摄像机堆栈。

  4. 重启 Raspberry Pi。

内存错误

以下错误通常发生在设备内存不足且组件进程中断时。

  • stderr. Killed.

  • exitCode=137

我们建议至少使用 500 MB 的内存来部署公共机器学习推理组件。

Disk Space A

no space left on device在再次部署组件之前,请确保设备上有足够的可用磁盘空间。我们建议至少有 500 MB 的可用磁盘空间来部署公共机器学习推理组件。

超时错误

公共机器学习组件下载大于 200 MB 的大型机器学习模型文件。如果在部署期间下载超时,请检查您的互联网连接速度并重试部署。