解决机器学习推理 - Amazon IoT Greengrass
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

解决机器学习推理

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

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然后再次部署你的组件。

无法打开共享对象文件

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

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: MODULENotFounderRror:没有名为 “<library>” 的模块

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

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

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

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

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

    1. 检查是否为运行 ML 组件的系统用户安装了库。Replaceggc_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. 如果没有安装库,请为该用户安装它。Replaceggc_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

检查日志以确保所有运行时依赖项都已正确安装。有关安装程序脚本安装的库的更多信息,请参阅以下主题:

默认情况下mlrootPath设置为/greengrass/v2/work/component-name/greengrass_ml. 要更改此位置,请包括运行时 DLR要么TensorFlow Lite 运行直接在您的部署中运行时组件,并为MLRootPath配置合并更新中的参数。有关配置组件的更多信息,请参阅更新组件配置.

注意

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

runtimeError:模块根据 API 版本 0xf 编译但是这个版本 NumPy 是 <version>

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

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

出现此错误的原因是树莓派 OS Bullseye 包含比 OpenCV 所需的版本更早的 NumPy 版本。要修复此问题,请运行以下命令进行升级: NumPy 到最新版本。

pip3 install --upgrade numpy

内存错误

当设备没有足够的内存并且组件进程中断时,通常会出现以下错误。

  • stderr. Killed.

  • exitCode=137

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

磁盘空间错误

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

超时错误

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