教程:在 IoT Edge 上设置机器学习环境

适用于:确认图标 IoT Edge 1.1

重要

IoT Edge 1.1 终止支持日期为 2022 年 12 月 13 日。 请查看 Microsoft 产品生命周期,了解此产品、服务、技术或 API 的受支持情况。 有关更新到最新版本的 IoT Edge 的详细信息,请参阅 更新 IoT Edge

本文可帮助你准备用于开发和部署的环境。 首先,设置一台具有你所需的所有工具的开发机器。 然后,在 Azure 中创建必要的云资源。

本教程此部分,您将学习如何:

  • 设置用于开发的虚拟机。
  • 为开发环境设置 IoT 中心和云存储以供使用。

先决条件

本文是有关在 IoT Edge 上使用 Azure 机器学习的教程的系列教程的一部分。 本系列中的每个文章都基于上一篇文章中的工作。 如果已直接访问本文,请先查看本系列的 第一篇文章。

设置开发 VM

此步骤通常由云开发人员执行。 某些软件也可能对数据科学家有所帮助。

我们创建了一个 PowerShell 脚本,用于创建已配置许多先决条件的 Azure 虚拟机。 创建的 VM 需要能够处理 嵌套虚拟化,这就是为什么我们选择了 Standard_D8s_v3 计算机大小的原因。

将把开发 VM 配置为以下设置:

开发人员 VM 并非严格必要 - 所有开发工具都可以在本地计算机上运行。 但是,我们强烈建议使用 VM 来确保一个公平的竞争环境。

创建和配置虚拟机大约需要 30 分钟。

  1. 机器学习和 IoT Edge 示例存储库克隆或下载到本地计算机。

  2. 以管理员身份打开 PowerShell,并导航到下载代码的根目录下的 \IoTEdgeAndMlSample\DevVM 目录。 我们将把您的源代码的根目录称为srcdir

    cd c:\srcdir\IoTEdgeAndMlSample\DevVM
    

    DevVM 目录包含创建适合完成本教程的 Azure 虚拟机所需的文件。

  3. 运行以下命令以允许执行脚本。 出现提示时,选择全部选是

    Set-ExecutionPolicy Bypass -Scope Process
    
  4. 运行 Create-AzureDevVM.ps1。

    .\Create-AzureDevVm.ps1
    

    出现提示时,请提供以下信息:

    • Azure 订阅 ID:可在门户中的 Azure 订阅 中找到订阅 ID。
    • 资源组名称:Azure 中新资源组或现有资源组的名称。
    • 位置:选择要在其中创建虚拟机的 Azure 位置。 例如,“美国西部 2”或“北欧”。 有关详细信息,请参阅 Azure 位置
    • 用户名:为 VM 的管理员帐户提供一个难忘的名称。
    • 密码:为 VM 的管理员帐户设置密码。

    脚本在执行以下步骤时运行几分钟:

    1. 安装 Azure PowerShell Az 模块
    2. 提示你登录到 Azure。
    3. 确认用于创建您的 VM 的信息。 按 yEnter 继续。
    4. 如果资源组不存在,则创建资源组。
    5. 部署虚拟机。
    6. 在 VM 上启用 Hyper-V。
    7. 安装开发和克隆示例存储库所需的软件。
    8. 重启 VM。
    9. 在桌面上创建用于连接到 VM 的 RDP 文件。

    如果系统提示您输入要重启的 VM 的名称,可以从脚本输出中复制其名称。 输出还显示用于连接到 VM 的 RDP 文件的路径。

设置自动关闭计划

为了帮助你降低成本,已使用设置为 1900 PST 的自动关闭计划创建了开发 VM。 可能需要根据位置和计划更新此设置。 更新关机计划:

  1. 在 Azure 门户中,导航到脚本创建的 VM。

  2. 在左窗格菜单中的 “作”下,选择 “自动关闭”。

  3. 根据需要调整 计划的关闭时区 ,然后选择“ 保存”。

连接到开发 VM

创建 VM 后,需要完成安装完成本教程所需的软件。

  1. 双击脚本在桌面上创建的 RDP 文件。

  2. 你将看到一个对话框,指出远程连接的发布者未知。 这是可接受的,因此请选择 “连接”。

  3. 提供为创建 VM 而提供的管理员密码,然后单击“ 确定”。

  4. 系统会提示你接受 VM 的证书。 选择

安装 Visual Studio Code 扩展

连接到开发计算机后,请向 Visual Studio Code 添加一些有用的扩展,使开发体验更加轻松。

  1. 连接到开发 VM,打开 PowerShell 窗口,并导航到 C:\source\IoTEdgeAndMlSample\DevVM 目录。 此目录由创建 VM 的脚本创建。

    cd C:\source\IoTEdgeAndMlSample\DevVM
    
  2. 运行以下命令以允许执行脚本。 出现提示时,选择全部选是

    Set-ExecutionPolicy Bypass -Scope Process
    
  3. 运行 Visual Studio Code 扩展脚本。

    .\Enable-CodeExtensions.ps1
    
  4. 该脚本将运行几分钟来安装 VS 代码扩展:

    • Azure IoT Edge
    • Azure IoT 中心
    • Python语言
    • C#(编程语言)
    • Docker
    • PowerShell

设置 IoT 中心和存储

这些步骤通常由云开发人员执行。

Azure IoT 中心是任何 IoT 应用程序的核心,因为它处理 IoT 设备和云之间的安全通信。 它是 IoT Edge 机器学习解决方案运营的主要协调点。

  • IoT 中心使用路由将传入数据从 IoT 设备定向到其他下游服务。 我们将利用 IoT 中心路由将设备数据发送到 Azure 存储。 在 Azure 存储中,Azure 机器学习使用设备数据来训练剩余的使用寿命(RUL)分类器。

  • 在本教程的后面部分,我们将使用 IoT 中心配置和管理 Azure IoT Edge 设备。

在本部分中,将使用脚本创建 Azure IoT 中心和 Azure 存储帐户。 然后在 Azure 门户中,配置一个路由,用于将中心收到的数据转发到 Azure 存储容器。 这些步骤需要大约 10 分钟才能完成。

  1. 连接到开发 VM,打开 PowerShell 窗口,并导航到 IoTHub 目录。

    cd C:\source\IoTEdgeAndMlSample\IoTHub
    
  2. 运行创建脚本。 与创建开发 VM 时一样,对订阅 ID、位置和资源组使用相同的值。

    .\New-HubAndStorage.ps1 -SubscriptionId <subscription id> -Location <___location> -ResourceGroupName <resource group>
    
    • 系统会提示你登录到 Azure。
    • 该脚本确认了创建 Hub 和存储帐户所需的信息。 按 yEnter 继续。

该脚本需要大约两分钟才能运行。 完成后,脚本将输出 IoT 中心和存储帐户的名称。

查看 IoT 中心通往存储的路由

作为创建 IoT 中心的一部分,我们在上一部分中运行的脚本也创建了自定义终结点和路由。 IoT 中心路由由查询表达式和终结点组成。 如果消息与表达式匹配,则会沿路由将数据发送到关联的终结点。 终结点可以是事件中心、服务总线队列和主题。 在这种情况下,终结点是存储帐户中的 Blob 容器。 让我们使用 Azure 门户查看脚本创建的路由。

  1. 打开 Azure 门户 ,转到本教程使用的资源组。

  2. 在资源列表中,选择脚本创建的 IoT 中心。 它将具有以随机字符结尾的名称,例如 IotEdgeAndMlHub-jrujej6de6i7w

  3. 在左窗格菜单中的 “中心设置”下,选择“ 消息路由”。

  4. “消息路由 ”页上,选择“ 自定义终结点 ”选项卡。

  5. 展开 “存储 ”部分:

    I o T Hub 门户中自定义终结点列表中名为 turbofanDeviceStorage 的存储的屏幕截图。

    我们看到 turbofanDeviceStorage 位于自定义终结点列表中。 请注意此终结点的以下特征:

    • 它指向创建的 devicedata Blob 存储容器,该容器名称由 容器名称指示。
    • 文件名格式 中包含“partition”一词。 在本教程的后面部分,我们发现使用这种格式对于将在 Azure Notebooks 上进行的文件操作更加方便。
    • 状态 应正常。
  6. 选择“ 路由 ”选项卡。

  7. 选择名为 turbofanDeviceDataToStorage 的路由。

  8. 在“ 路由详细信息 ”页上,请注意,路由的终结点是 turbofanDeviceStorage 终结点。

    显示 turbofanDeviceDataToStorage 路由的详细信息的屏幕截图。

  9. 请查看路由查询,该查询已设置为true。 此设置意味着所有设备遥测消息都将与此路由匹配;因此,所有消息都将发送到 turbofanDeviceStorage 终结点。

  10. 由于未进行编辑,只需关闭此页面即可。

清理资源

本教程是一组的一部分,其中每篇文章都基于上一篇文章中完成的工作。 请等待清理所有资源,直到完成最终教程。

后续步骤

在本文中,我们创建了一个 IoT 中心,并配置了到 Azure 存储帐户的路由。 接下来,我们将通过 IoT 中心将数据从一组模拟设备发送到存储帐户。 在本教程的后面部分,配置 IoT Edge 设备和模块后,我们将重新访问路由并查看路由查询。

继续阅读下一篇文章,创建要监视的模拟设备。