:可选。配置ML限定条件设备 - AWS IoT Greengrass
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

:可选。配置ML限定条件设备

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

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

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

安装 ML 框架依赖项

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

注意

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

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

 

安装 Apache MXNet 依赖项

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

  • Python 3.6 或 Python 3.7。

    注意

    如果您使用的是 Python 3.6,则必须创建从 Python 3.7 二进制文件到 Python 3.6 二进制文件的符号链接。这会将设备配置为满足 AWS 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 二进制文件的符号链接。这会将设备配置为满足 AWS 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文件中的说明安装TensorFlow1.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 结果。

 

安装 Amazon SageMaker Neo Deep Learning Runtime (DLR) 依赖项

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

  • Python 3.6 或 Python 3.7。

    注意

    如果您使用的是 Python 3.6,则必须创建从 Python 3.7 二进制文件到 Python 3.6 二进制文件的符号链接。这会将设备配置为满足 AWS 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文件中的说明进行操作 安装NEODLR.

注意

如果设备上同时安装了 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. 有关详细信息,请参阅 目标设备选项 TheThethe Amazon SageMaker API参考. 如果您的设备类型当前不支持 SageMaker,遵循步骤 选项 2:使用TVM编译DLR模型.

    注意

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

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

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

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

  5. 压缩 resnet18 目录的内容。

    tar cvfz model.tar.gz resnet18v1-symbol.json resnet18v1-0000.params
  6. 将压缩文件上传到 Amazon S3 在您的 AWS 然后按照中的步骤 编译模型(控制台) 创建编译作业。

    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. 下载包含未编译、预训练的tarball文件 MXNet DLR型号:

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

    
          resnet18 目录中包含三个文件。
  3. 按照TVM文件中的说明进行操作 为平台创建并安装TVM来源.

  4. 构建 TVM 后,为 resnet18 模型运行 TVM 编译。以下步骤基于 编译深入学习模式的快速入门教程 在TVM文件中。

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

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

      • 选项 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 模型目录中包含四个文件。

下一步, 配置AWS凭据和 device.json 文件.