对机器学习推理进行故障排除 - Amazon IoT Greengrass
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

对机器学习推理进行故障排除

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

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.log或其依赖项未正确安装时,您可能会在 ML 运行时组件日志(或variant.TensorFlowLite.log)中看到此错误。在以下情况下可能会发生此错误:

  • 如果您使用默认处于启用状态的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"

      有关每个 ML 运行时的依赖关系的更多信息,请参阅以下内容:

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

未检测到支持 CUDA 的设备

使用 GPU 加速时,您可能会看到以下错误。运行以下命令为 Greengrass 用户启用 GPU 访问权限。

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。要更改此位置,请直接在部署中加入DLR 运行时TensorFlow 精简版运行时 runtime 组件,并在配置合并更新中为MLRootPath参数指定修改后的值。有关配置组件的更多信息,请参阅更新组件配置

注意

对于 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 的内存来部署公共机器学习推理组件。

磁盘空间错误

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

超时错误

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