适用于: IoT Edge 1.1
重要
IoT Edge 1.1 终止支持日期为 2022 年 12 月 13 日。 请查看 Microsoft 产品生命周期,了解此产品、服务、技术或 API 的受支持情况。 有关更新到最新版本的 IoT Edge 的详细信息,请参阅 更新 IoT Edge。
在本文中,我们执行以下任务:
- 使用 Azure 机器学习工作室训练机器学习模型。
- 将训练的模型打包为容器映像。
- 将容器映像部署为 Azure IoT Edge 模块。
机器学习工作室是用于试验、训练和部署机器学习模型的基础块。
本文中的步骤通常由数据科学家执行。
在本教程的此部分中,你将了解如何:
- 在 Azure 机器学习工作区中创建 Jupyter 笔记本来训练机器学习模型。
- 容器化已训练的机器学习模型。
- 从容器化机器学习模型创建 IoT Edge 模块。
先决条件
本文是有关在 IoT Edge 上使用机器学习的教程的系列教程的一部分。 本系列中的每个文章都基于上一篇文章中的工作。 如果已直接到达本文,请参阅该系列中的 第一篇文章 。
设置 Azure 机器学习
我们使用机器学习工作室托管两个 Jupyter 笔记本和支持文件。 在这里,我们将创建和配置机器学习项目。 如果尚未使用 Jupyter 或机器学习工作室,下面是两个介绍性文档:
- Jupyter Notebook: 在 Visual Studio Code 中使用 Jupyter 笔记本
- Azure 机器学习: 在 Jupyter 笔记本中开始使用 Azure 机器学习
注释
设置服务后,可以从任何计算机访问机器学习。 在安装过程中,应使用开发 VM,其中包含所需的所有文件。
安装 Azure 机器学习 Visual Studio Code 扩展
开发 VM 上的 Visual Studio Code 应安装此扩展。 如果在不同的实例上运行,请重新安装该扩展,如 设置 Visual Studio Code 扩展中所述。
创建 Azure 机器学习帐户
若要在 Azure 上预配资源和运行工作负荷,请使用 Azure 帐户凭据登录。
在 Visual Studio Code 中,通过从菜单栏中选择 “查看>命令面板 ”打开命令面板。
在命令面板中输入命令
Azure: Sign In
以启动登录过程。 按照说明完成登录。创建用于运行工作负荷的机器学习计算实例。 在命令面板上,输入命令
Azure ML: Create Compute
。选择 Azure 订阅。
选择 “+ 创建新的 Azure ML 工作区”,然后输入名称 turbofandemo。
选择已用于此演示的资源组。
应在 Visual Studio Code 窗口右下角看到工作区创建进度 :创建工作区:turobofandemo。 此步骤可能需要一两分钟。
等待工作区成功创建。 它应该说 Azure ML 工作区 turbofandemo 已创建。
上传 Jupyter Notebook 文件
我们将示例笔记本文件上传到新的机器学习工作区。
转到 ml.azure.com 并登录。
选择Microsoft目录、Azure 订阅和新建的机器学习工作区。
登录到机器学习工作区后,使用左侧的菜单转到 “笔记本 ”部分。
选择“ 我的文件 ”选项卡。
选择“ 上传 ”(向上箭头图标)。
转到 C:\source\IoTEdgeAndMlSample\AzureNotebooks。 选择列表中的所有文件,然后选择“ 打开”。
选中 “我信任这些文件的内容 ”复选框。
选择 “上传 ”以开始上传。 然后在完成该过程后选择“ 完成 ”。
Jupyter Notebook 文件
让我们查看上传到机器学习工作区的文件。 该教程的这一部分活动涉及两个笔记本文件,并且这两个文件都使用了一些辅助文件。
01-turbofan_regression.ipynb:此笔记本使用机器学习工作区来创建和运行机器学习试验。 大致而言,笔记本执行以下步骤:
- 从 Azure 存储帐户下载由设备工具生成的数据。
- 浏览并准备数据,然后使用数据来训练分类器模型。
- 使用测试数据集(Test_FD003.txt)从试验中评估模型。
- 将最佳分类器模型发布到机器学习工作区。
02-turbofan_deploy_model.ipynb:此笔记本采用在上一个笔记本中创建的模型,并使用它创建准备部署到 IoT Edge 设备的容器映像。 笔记本执行以下步骤:
- 为模型创建评分脚本。
- 使用机器学习工作区中保存的分类器模型生成容器映像。
- 将映像部署为 Azure 容器实例上的 Web 服务。
- 使用 Web 服务验证模型,映像按预期工作。 验证的映像将在本教程的 “创建和部署自定义 IoT Edge 模块”部分 部署到我们的 IoT Edge 设备。
Test_FD003.txt:此文件包含在验证已训练分类器时用作测试集的数据。 我们选择使用为原始竞赛提供的测试数据,作为我们的测试集,以简化测试。
RUL_FD003.txt:此文件包含 Test_FD003.txt 文件中每个设备的最后一个周期的剩余使用寿命(RUL)。 有关数据的详细说明,请参阅 C:\source\IoTEdgeAndMlSample\data\Turbofan 中的 readme.txt 和损坏传播 Modeling.pdf 文件。
Utils.py:此文件包含一组用于处理数据的 Python 实用工具函数。 第一个笔记本包含函数的详细说明。
README.md:此自述文件描述笔记本的使用。
运行 Jupyter 笔记本
创建工作区后,可以运行笔记本。
在 “我的文件 ”页中,选择 01-turbofan_regression.ipynb。
如果笔记本被标记为“不受信任”,请选择笔记本右上角的不受信任小组件。 出现对话框时,选择“ 信任”。
为获得最佳结果,请阅读每个单元的文档并单独运行。 选择工具栏上的 “运行 ”。 稍后,你会发现运行多个单元格是方便的。 可以忽略升级和弃用警告。
单元格运行时,它显示方括号([*])之间的星号。 当单元格操作完成时,星号将被替换为数字,相关输出可能会出现。 笔记本中的单元格按顺序生成,一次只能运行一个单元格。
还可以使用“单元格”菜单中的运行选项。 选择 Ctrl+Enter 以运行单元格,然后选择 Shift+Enter 以运行单元格并前进到下一个单元格。
小窍门
对于一致的单元格操作,请避免从浏览器中的多个标签页运行同一个笔记本。
在“ 设置全局属性 ”说明后面的单元格中,输入 Azure 订阅、设置和资源的值。 然后运行单元格。
在 工作区详细信息之前的单元格中,运行工作区详细信息后,查找指示你登录进行身份验证的链接。
打开链接,并输入指定的代码。 此登录过程使用 Microsoft Azure 跨平台命令行接口对 Jupyter 笔记本进行身份验证,以访问 Azure 资源。
在“浏览结果”之前的单元格中,复制运行 ID 中的值,并将其粘贴到运行 ID 后面的单元中。
在笔记本中运行剩余单元格。
保存笔记本并返回到项目页面。
打开 02-turbofan_deploy_model.ipynb,并运行每个单元格。 您需要登录以在配置工作区后面的单元格中进行身份验证。
保存笔记本并返回到项目页面。
验证是否成功
若要验证笔记本是否已成功运行,请确认已创建了一些项目。
在机器学习笔记本的“ 我的文件 ”选项卡上,选择 “刷新”。
验证是否已创建以下文件。
文件 DESCRIPTION ./aml_config/.azureml/config.json 用于创建机器学习工作区的配置文件。 ./aml_config/model_config.json 我们需要在 Azure 的 turbofanDemo 机器学习工作区中部署模型的配置文件。 myenv.yml 提供有关已部署机器学习模型的依赖项的信息。 验证是否已创建以下 Azure 资源。 某些资源名称追加有随机字符。
Azure 资源 名字 Azure 机器学习工作区 turborfanDemo Azure 容器注册表 turbofandemoxxxxxxxx Application Insights turbofaninsightxxxxxxxx Azure Key Vault turbofankeyvaultbxxxxxxxx Azure 存储 turbofanstoragexxxxxxxxx
调试
可以将 Python 语句插入笔记本进行调试,例如 print()
用于显示值的命令。 如果看到未定义的变量或对象,请运行首次声明或实例化的单元格。
如果需要重做笔记本,可能需要删除以前创建的文件和 Azure 资源。
清理资源
本教程是一组的一部分,其中每篇文章都基于上一篇文章中完成的工作。 等待清理所有资源,直到完成最终教程。
后续步骤
在本文中,我们在机器学习工作室中运行了两个 Jupyter 笔记本,以使用来自涡扇设备的数据来:
- 训练 RUL 分类器。
- 将分类器另存为模型。
- 创建容器映像。
- 将映像部署并测试为 Web 服务。
继续阅读下一篇文章,创建 IoT Edge 设备。