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

您正在查看Amazon IoT Greengrass Version 1.Amazon IoT Greengrass Version 2是最新的主要版本Amazon IoT Greengrass. 有关使用Amazon IoT Greengrass V2,请参阅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 权限。资格认证测试不支持虚拟环境。

注意

如果您正在测试使用容器化(在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 文档中的说明,使用 pip从源代码安装 TensorFlow 1.x。

注意

如果设备上同时安装了 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 结果。

 

安装 Amazon SageMaker Neo 深度学习运行时 (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 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 是否支持您的设备类型。有关更多信息,请参阅 。目标设备选项Amazon SageMaker API 参考. 如果 SageMaker 当前不支持您的设备类型,请按选项 2:使用 TVM 编译 DLR 模型.

    注意

    使用 SageMaker 编译的模型运行 DLR 测试可能需要 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 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获取 Relay 模块和参数:

        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.jsonfile.