机器学习 - 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. 如果问题仍然存在,请为其他用户安装该库,以确认此设备是否可以安装该库。例如,用户可以是您的用户、根用户或管理员用户。如果您无法为任何用户成功安装该库,则您的设备可能不支持该库。查阅库的文档以查看要求并解决安装问题。

未检测到支持 CUDA 的设备

使用 GPU 加速时,可能会看到以下错误。运行以下命令,为 GGreengrass rail 用户启用 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 精简版运行时间运行时组件直接包含在部署中,并在配置合并更新中为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 的大型机器学习模型文件。如果在部署期间下载超时,请检查您的互联网连接速度并重试部署。