你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

在 Azure Stack Edge Pro GPU 设备上部署支持 GPU 的 IoT 模块

适用范围:适用于 Pro - GPU SKUAzure Stack Edge Pro - GPU对于 Pro 2 SKU 是必需的Azure Stack Edge Pro 2对于 Pro R SKU 是必需的Azure Stack Edge Pro R

注意

强烈建议在 Linux VM 中部署最新的 IoT Edge 版本。 Azure Stack Edge 上的托管 IoT Edge 使用的是没有最新功能和修补程序的 IoT Edge 较低版本。 相关说明请参阅如何部署 Ubuntu VM。 有关可以运行 IoT Edge 的其他受支持 Linux 分发版的详细信息,请参阅 Azure IoT Edge 支持系统 - 容器引擎

本文介绍如何在 Azure Stack Edge Pro GPU 设备上部署支持 GPU 的 IoT Edge 模块。

在本文中,学习如何:

  • 准备 Azure Stack Edge Pro 以运行 GPU 模块。
  • 从 Git 存储库下载并安装示例代码。
  • 构建解决方案并生成部署清单。
  • 将解决方案部署到 Azure Stack Edge Pro 设备。
  • 监视模块输出。

关于示例模块

本文中的 GPU 示例模块包括 PyTorch 和 TensorFlow 基准测试示例代码,用于比较 CPU 与 GPU。

先决条件

在开始之前,请确保:

获取示例代码

  1. 转到 Azure 中的 Azure 智能边缘模式示例。 克隆或下载代码的 zip 文件。

    下载 zip 文件

    从 zip 文件中提取文件。 也可以克隆示例。

    git clone https://github.com/Azure-Samples/azure-intelligent-edge-patterns.git
    

构建和部署模块

  1. 在 Visual Studio Code 中打开 GpuReferenceModules 文件夹。

    在 VS Code 中打开 GPUReferenceModules

  2. 打开 deployment.template.json,并标识它为容器注册表引用的参数。 在以下文件中,将使用 ONTAINER_REGISTRY_USERNAME、CONTAINER_REGISTRY_PASSWORD 和 CONTAINER_REGISTRY_NAME。

        {
      "$schema-template": "2.0.0",
      "modulesContent": {
        "$edgeAgent": {
          "properties.desired": {
            "schemaVersion": "1.0",
            "runtime": {
              "type": "docker",
              "settings": {
                "minDockerVersion": "v1.25",
                "loggingOptions": "",
                "registryCredentials": {
                  "${CONTAINER_REGISTRY_NAME}":{
                  "username": "$CONTAINER_REGISTRY_USERNAME",
                  "password": "$CONTAINER_REGISTRY_PASSWORD",
                  "address": "${CONTAINER_REGISTRY_NAME}.azurecr.io"
                  }
                }
              }
            },
    
  3. 创建一个新文件。 填写容器注册表参数的值,(使用之前步骤中标识的参数),如下所示:

    CONTAINER_REGISTRY_NAME=<YourContainerRegistryName>
    CONTAINER_REGISTRY_USERNAME=<YourContainerRegistryUserName>
    CONTAINER_REGISTRY_PASSWORD=<YourContainerRegistryPassword>
    

    以下显示了一个示例 .env 文件:

    创建并保存 .env 文件

  4. 将文件另存为 .env,并保存在 SampleSolution 文件夹中。

  5. 要登录到 Docker,在 Visual Studio Code 集成终端输入以下命令。

    docker login -u <CONTAINER_REGISTRY_USERNAME> -p <CONTAINER_REGISTRY_PASSWORD> <CONTAINER_REGISTRY_NAME>
    

    在 Azure 门户中,转到容器注册表的“访问密钥”部分。 复制并使用注册表名称、密码和登录服务器。

    容器注册表中的访问密钥

    提供凭据后,登录即成功。

    成功登录

  6. 向 Azure 容器注册表推送映像。 在 VS Code 资源管理器中,选择并右键单击“deployment.template.json”文件,然后选择“生成并推送 IoT Edge 解决方案”。

    生成并推送 IoT Edge 解决方案

    如果未安装 Python 和 Python 扩展,则将在你构建并推送解决方案时进行安装。 但这会导致生成时间较长。

    完成此步骤后,你会在容器注册表中看到该模块。

    容器注册表中的模块

  7. 若要创建部署清单,右键单击“deployment.template.json”,然后选择“生成 IoT Edge 部署清单”。

    生成 IoT Edge 部署清单

    通知会告知你生成部署清单的路径。 清单是在 config 文件夹中生成的 deployment.amd64.json 文件。

  8. 在 config 文件夹中选择 deployment.amd64.json 文件,然后选择“为单个设备创建部署”。 请勿使用 deployment.template.json 文件。

    为单个设备创建部署

    在“输出”窗口中,应会看到部署成功的消息。

    “输出”中的“部署成功”

监视模块

  1. 在 VS Code 命令面板中,运行“Azure IoT 中心: 选择 IoT 中心”。

  2. 选择包含要配置的 IoT Edge 设备的订阅和 IoT 中心。 在这种情况下,请选择用于部署 Azure Stack Edge Pro 设备的订阅,并选择为 Azure Stack Edge Pro 设备创建的 IoT Edge 设备。 在前面的步骤中通过 Azure 门户配置计算时,会发生这种情况。

  3. 在 VS Code 资源管理器中,展开“Azure IoT 中心”部分。 在“设备”下,应会看到与 Azure Stack Edge Pro 设备对应的 IoT Edge 设备。

    1. 选择该设备,右键单击,然后选择“开始监视内置事件终结点”

      开始监视

    2. 转到“设备”>“模块”,然后你应会看到 GPU 模块正在运行

      IoT 中心中的模块

    3. VS Code 终端还应显示 IoT 中心事件,这些事件显示为 Azure Stack Edge Pro 设备的监视输出。

      监视输出

      你可看到 GPU 执行同一组操作(5000 次形状转换迭代)所用时间比 CPU 所用时间要少得多。

后续步骤