可选:配置设备进行 ML 资格认证 - Amazon IoT Greengrass
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

Amazon IoT Greengrass Version 1在 2023 年 6 月 30 日之前,不再接收功能更新,只会收到安全补丁和错误修复。有关更多信息,请参阅 。Amazon IoT Greengrass V1维护政策. 强烈建议您迁移到Amazon IoT Greengrass Version 2,它补充说重要新功能对其他平台的支持.

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

可选:配置设备进行 ML 资格认证

适用于 Amazon IoT Greengrass 的 IDT 提供机器学习 (ML) 资格认证测试,以验证设备是否可以使用经过云训练的模型在本地执行 ML 推理。

要运行 ML 资格认证测试,必须先按照配置设备来运行 IDT 测试中的说明配置设备。然后,按照本主题中的步骤安装要运行的 ML 框架的依赖项。

需要有 IDT v3.1.0 或更高版本才能运行 ML 资格认证测试。

安装 ML 框架依赖项

所有 ML 框架依赖项都必须安装在 /usr/local/lib/python3.x/site-packages 目录下。为确保将这些依赖项安装在正确的目录下,建议您在安装时使用 sudo root 权限。资格认证测试不支持虚拟环境。

注意

如果您正在测试使用运行的 Lambda 函数容器化(在Greengrass 容器模式),为 Python 库创建符号链接/usr/local/lib/python3.x不支持 。为避免错误,必须在正确的目录下安装依赖项。

按照以下步骤安装目标框架的依赖项:

 

安装 Apache MXNet 依赖项

此框架的 IDT 资格认证测试具有以下依赖项:

  • Python 3.6 或 Python 3.7。

    注意

    如果您使用的是 Python 3.6,则必须创建从 Python 3.7 二进制文件到 Python 3.6 二进制文件的符号链接。这会将设备配置为满足 Amazon IoT Greengrass 的 Python 要求。例如:

    sudo ln -s path-to-python-3.6/python3.6 path-to-python-3.7/python3.7
  • Apache MXNet v1.2.1 或更高版本。

  • NumPy。该版本必须与您的 MXNet 版本兼容。

安装 MXNet

按照 MXNet 文档中的说明安装 MXNet

注意

如果设备上同时安装了 Python 2.x 和 Python 3.x,请在运行来安装依赖项的命令中使用 Python 3.x。

验证 MXNet 安装

选择以下一种方式来验证 MXNet 安装。

选项 1:通过 SSH 接入设备并运行脚本

  1. 通过 SSH 接入设备。

  2. 运行以下脚本,验证是否正确安装了依赖项。

    sudo python3.7 -c "import mxnet; print(mxnet.__version__)"
    sudo python3.7 -c "import numpy; print(numpy.__version__)"

    结果将输出版本号,而脚本应该顺利退出。

选项 2:运行 IDT 依赖项测试

  1. 确保已配置 device.json 用于执行 ML 资格认证。有关更多信息,请参阅 为 ML 资格认证配置 device.json

  2. 运行框架的依赖项测试。

    devicetester_[linux | mac | win_x86-64] run-suite --group-id mldependencies --test-id mxnet_dependency_check

    测试摘要会为 mldependencies 显示 PASSED 结果。

 

安装 TensorFlow 依赖

此框架的 IDT 资格认证测试具有以下依赖项:

  • Python 3.6 或 Python 3.7。

    注意

    如果您使用的是 Python 3.6,则必须创建从 Python 3.7 二进制文件到 Python 3.6 二进制文件的符号链接。这会将设备配置为满足 Amazon IoT Greengrass 的 Python 要求。例如:

    sudo ln -s path-to-python-3.6/python3.6 path-to-python-3.7/python3.7
  • TensorFlow 1.x.

安装 TensorFlow

按照中的说明进行操作 TensorFlow 要安装的文档 TensorFlow 1.x使用 pip要么来自源.

注意

如果设备上同时安装了 Python 2.x 和 Python 3.x,请在运行来安装依赖项的命令中使用 Python 3.x。

验证 TensorFlow 安装

选择以下一种方式来验证 TensorFlow 安装。

选项 1:通过 SSH 接入设备并运行脚本

  1. 通过 SSH 接入设备。

  2. 运行以下脚本,验证是否正确安装了依赖项。

    sudo python3.7 -c "import tensorflow; print(tensorflow.__version__)"

    结果将输出版本号,而脚本应该顺利退出。

选项 2:运行 IDT 依赖项测试

  1. 确保已配置 device.json 用于执行 ML 资格认证。有关更多信息,请参阅 为 ML 资格认证配置 device.json

  2. 运行框架的依赖项测试。

    devicetester_[linux | mac | win_x86-64] run-suite --group-id mldependencies --test-id tensorflow_dependency_check

    测试摘要会为 mldependencies 显示 PASSED 结果。

 

安装亚马逊 SageMaker Neo Deep Learning Runtime (DLR) 依赖项

此框架的 IDT 资格认证测试具有以下依赖项:

  • Python 3.6 或 Python 3.7。

    注意

    如果您使用的是 Python 3.6,则必须创建从 Python 3.7 二进制文件到 Python 3.6 二进制文件的符号链接。这会将设备配置为满足 Amazon IoT Greengrass 的 Python 要求。例如:

    sudo ln -s path-to-python-3.6/python3.6 path-to-python-3.7/python3.7
  • SageMaker Neo DLR。

  • numpy。

安装 DLR 测试依赖项后,必须编译模型

安装 DLR

按照 DLR 文档中的说明安装 Neo DLR

注意

如果设备上同时安装了 Python 2.x 和 Python 3.x,请在运行来安装依赖项的命令中使用 Python 3.x。

验证 DLR 安装

选择以下一种选项来验证 DLR 安装。

选项 1:通过 SSH 接入设备并运行脚本

  1. 通过 SSH 接入设备。

  2. 运行以下脚本,验证是否正确安装了依赖项。

    sudo python3.7 -c "import dlr; print(dlr.__version__)"
    sudo python3.7 -c "import numpy; print(numpy.__version__)"

    结果将输出版本号,而脚本应该顺利退出。

选项 2:运行 IDT 依赖项测试

  1. 确保已配置 device.json 用于执行 ML 资格认证。有关更多信息,请参阅 为 ML 资格认证配置 device.json

  2. 运行框架的依赖项测试。

    devicetester_[linux | mac | win_x86-64] run-suite --group-id mldependencies --test-id dlr_dependency_check

    测试摘要会为 mldependencies 显示 PASSED 结果。

编译 DLR 模型

必须先编译 DLR 模型,然后才能将其用于 ML 资格认证测试。有关具体步骤,请选择以下一种选项:

选项 1:使用 Amazon SageMaker 编译模型

按照以下步骤使用 SageMaker 编译 IDT 提供的 ML 模型。该模型已预先使用 Apache MXNet 进行训练。

  1. 确认 SageMaker 是否支持您的设备类型。有关更多信息,请参阅 。目标设备选项亚马逊 SageMaker API 参考. 如果 SageMaker 当前不支持您的设备类型,请按中的步骤操作选项 2:使用 TVM 编译 DLR 模型.

    注意

    使用经编译的模型运行 DLR 测试 SageMaker 可能需要 4 到 5 分钟。在此过程中请勿停止 IDT。

  2. 下载包含 DLR 的未编译、预训练 MXNet 模型的 tarball 文件:

  3. 解压缩该 tarball 文件。此命令会生成以下目录结构。

    
          resnet18 目录中包含三个文件。
  4. synset.txt 移出 resnet18 目录。记下新位置。稍后,您需要将此文件复制到已编译的模型目录中。

  5. 压缩 resnet18 目录的内容。

    tar cvfz model.tar.gz resnet18v1-symbol.json resnet18v1-0000.params
  6. 将压缩文件上载到您的 Amazon S3 存储桶Amazon Web Services 账户,然后按中的步骤操作编译模型(控制台)创建编译作业。

    1. 对于输入配置,请使用以下值:

      • 对于数据输入配置,请输入 {"data": [1, 3, 224, 224]}

      • 对于机器学习框架,请选择 MXNet

    2. 对于输出配置,请使用以下值:

      • 适用于S3 输出位置,输入您希望存储已编译模型的 Amazon S3 存储桶或文件夹的路径。

      • 对于目标设备,请选择您的设备类型。

  7. 从指定的输出位置下载已编译的模型,然后解压缩该文件。

  8. synset.txt 复制到已编译的模型目录中。

  9. 将已编译的模型目录的名称更改为 resnet18

    已编译的模型目录必须具有以下目录结构。

    
                            已编译的 resnet18 模型目录中包含四个文件。

选项 2:使用 TVM 编译 DLR 模型

按照以下步骤使用 TVM 编译 IDT 提供的 ML 模型。此模型已预先使用 Apache MXNet 进行训练,因此您必须在编译模型的计算机或设备上安装 MXNet。要安装 MXNet,请按照 MXNet 文档中的说明进行操作。

注意

我们建议您在目标设备上编译模型。此做法是可选的,但它可以帮助确保兼容性并减少潜在问题。

 

  1. 下载包含 DLR 的未编译、预训练 MXNet 模型的 tarball 文件:

  2. 解压缩该 tarball 文件。此命令会生成以下目录结构。

    
          resnet18 目录中包含三个文件。
  3. 按照 TVM 文档中的说明,从源代码为平台构建和安装 TVM

  4. 构建 TVM 后,为 resnet18 模型运行 TVM 编译。以下步骤根据 TVM 文档中的编译深度学习模型快速入门教程的内容设计而成。

    1. 从克隆的 TVM 存储库中打开 relay_quick_start.py 文件。

    2. 更新在 Relay 中定义神经网络的代码。可以使用以下选项之一:

      • 选项 1:使用mxnet.gluon.model_zoo.vision.get_model获取继电器模块和参数:

        from mxnet.gluon.model_zoo.vision import get_model block = get_model('resnet18_v1', pretrained=True) mod, params = relay.frontend.from_mxnet(block, {"data": data_shape})
      • 选项 2:将您在步骤 1 中下载的未编译模型中的以下文件复制到与relay_quick_start.py文件。这些文件中包含了 Relay 模块和参数。

        • resnet18v1-symbol.json

        • resnet18v1-0000.params

    3. 保存和加载已编译模块的代码更新为以下代码。

      from tvm.contrib import util path_lib = "deploy_lib.so" # Export the model library based on your device architecture lib.export_library("deploy_lib.so", cc="aarch64-linux-gnu-g++") with open("deploy_graph.json", "w") as fo: fo.write(graph) with open("deploy_param.params", "wb") as fo: fo.write(relay.save_param_dict(params))
    4. 构建模型:

      python3 tutorials/relay_quick_start.py --build-dir ./model

      此命令会生成以下文件。

      • deploy_graph.json

      • deploy_lib.so

      • deploy_param.params

  5. 将生成的模型文件复制到名为 resnet18 的目录中。这是已编译的模型目录。

  6. 将已编译的模型目录复制到主机计算机。然后,将您在步骤 1 中下载的未编译模型中的 synset.txt 复制到已编译的模型目录中。

    已编译的模型目录必须具有以下目录结构。

    
                            已编译的 resnet18 模型目录中包含四个文件。

下一步:配置Amazon凭证和device.json文件.