适用于: IoT Edge 1.1
重要
IoT Edge 1.1 终止支持日期为 2022 年 12 月 13 日。 有关此产品、服务、技术或 API 支持方式的信息,请查看 Microsoft产品生命周期 。 有关更新到最新版本的 IoT Edge 的详细信息,请参阅 更新 IoT Edge。
通常,IoT 应用程序希望利用智能云和智能边缘。 在本教程中,我们将指导你使用从云中的 IoT 设备收集的数据训练机器学习模型,将模型部署到 IoT Edge,并定期维护和优化模型。
注释
这组教程中的概念适用于所有版本的 IoT Edge,但你创建的示例设备将运行 IoT Edge 版本 1.1。
本教程的主要目标是介绍使用机器学习(特别是在边缘)处理 IoT 数据。 虽然我们接触了一般机器学习工作流的许多方面,但本教程并不旨在深入介绍机器学习。 就这一点而言,我们不尝试为用例创建高度优化的模型 -- 我们只需做足够的工作来说明创建和使用可行模型进行 IoT 数据处理的过程。
本教程的这一部分讨论:
- 完成本教程后续部分的先决条件。
- 本教程的目标受众。
- 本教程模拟的用例。
- 为了实现用例,本教程遵循的整体过程是这样的。
如果没有 Azure 订阅,请在开始之前创建 一个 Azure 免费帐户 。
先决条件
若要完成本教程,需要有权在其中创建资源的 Azure 订阅。 本教程中使用的几个服务会产生 Azure 费用。 如果还没有 Azure 订阅,则可以开始使用 Azure 免费帐户。
还需要一台安装了 PowerShell 的计算机,可以在其中运行脚本,将 Azure 虚拟机设置为开发计算机。
本文档使用以下一组工具:
用于数据捕获的 Azure IoT 中心
Azure Notebooks 作为数据准备和机器学习试验的主要前端。 在笔记本上针对示例数据的子集运行 Python 代码,是在数据准备过程中进行快速迭代和交互的好方法。 Jupyter 笔记本还可用于准备脚本,以在计算后端大规模运行。
Azure 机器学习是支持可扩展机器学习和机器学习图像生成的后端。 我们使用在 Jupyter 笔记本中准备和测试的脚本来驱动 Azure 机器学习后端。
用于机器学习模型非云端应用的 Azure IoT Edge
显然,还有其他可用选项。 例如,在某些情况下,IoT Central 可用作从 IoT 设备捕获初始训练数据的无代码替代方法。
目标受众和角色
这组文章适用于没有 IoT 开发或机器学习经验的开发人员。 在边缘部署机器学习需要了解如何连接各种技术。 因此,本教程介绍整个端到端方案,以演示一种将这些技术联接在一起的 IoT 解决方案的方法。 在实际环境中,这些任务可能分布在具有不同专业化的几个人之间。 例如,开发人员将专注于设备或云代码,而数据科学家则设计分析模型。 为了使单个开发人员能够成功完成本教程,我们提供了补充指南,其中包含见解和详细信息的链接,希望能帮助他们理解正在做什么以及为什么这样做。
或者,你可以与不同角色的同事合作,共同学习本教程,将你的全部专业知识汇集在一起,并作为团队学习如何组合在一起。
无论哪种情况,为了帮助引导读者,本教程中的每篇文章都会标明用户的身份。 这些角色包括:
- 云开发(包括在 DevOps 职能中工作的云开发人员)
- 数据分析
用例:预测性维护
我们基于 2008 年在预后和健康管理(PHM08)会议上介绍的用例。 目标是预测一组涡轮风扇飞机发动机的剩余使用寿命(RUL)。 此数据是使用 C-MAPSS 生成的,这是 MAPSS(模块化 Aero-Propulsion 系统模拟)软件的商业版本。 此软件提供灵活的涡轮风扇引擎模拟环境,方便模拟运行状况、控制和引擎参数。
本教程中使用的数据取自 Turbofan 引擎降级模拟数据集。
来自README文件:
实验方案
数据集由多个多变量时序组成。 每个数据集进一步划分为训练和测试子集。 每个时序都来自不同的引擎,即数据可以被视为来自同一类型的引擎群。 每个发动机都以不同程度的初始磨损和制造变化开始,这是用户未知的。 这种磨损和变化被认为是正常的,即它不被视为故障条件。 有三种作设置对引擎性能有重大影响。 这些设置也包含在数据中。 数据受到传感器噪音的污染。
引擎在每个时间序列开始时正常运行,并在序列中的某个时间点出现故障。 在训练集中,故障的严重程度不断增加,直至系统出现故障。 在测试集中,时序在系统故障之前的一段时间结束。 竞争的目的是预测测试集中发生故障之前剩余的作周期数,即引擎将继续运行的最后一个周期后的运行周期数。 还为测试数据提供了真实剩余使用寿命(RUL)值的向量。
由于数据是针对竞争发布的,因此已独立发布几种派生机器学习模型的方法。 我们发现,学习示例有助于了解创建特定机器学习模型所涉及的过程和推理。 请参阅示例:
GitHub 用户 jancervenka 提供的飞机引擎故障预测模型。
GitHub 用户 hankroark 的涡扇发动机性能下降。
过程
下图演示了本教程中我们遵循的大致步骤:
收集训练数据:该过程首先收集训练数据。 在某些情况下,已收集数据并在数据库中可用,或者以数据文件的形式提供。 在其他情况下,尤其是对于 IoT 方案,需要从 IoT 设备和传感器收集数据,并将其存储在云中。
我们假设你没有涡轮风扇引擎的集合,因此项目文件包括一个简单的设备模拟器,用于将 NASA 设备数据发送到云。
准备数据。 在大多数情况下,从设备和传感器收集的原始数据需要准备机器学习。 此步骤可能涉及数据清理、数据重新格式化或预处理,以引入机器学习可以利用的附加信息。
对于飞机引擎计算机数据,数据准备涉及根据数据的实际观察计算样本中每个数据点的显式故障时间。 此信息允许机器学习算法查找实际传感器数据模式与引擎的预期剩余生存时间之间的关联。 此步骤具有很强的领域特定性。
生成机器学习模型。 根据准备好的数据,我们现在可以试验不同的机器学习算法和参数化来训练模型,并将结果相互比较。
在这种情况下,为了进行测试,我们将模型计算的预测结果与在一组引擎上观察到的实际结果进行比较。 在 Azure 机器学习中,我们可以管理我们在模型注册表中创建的模型的不同迭代。
部署模型。 一旦我们有了满足成功条件的模型,就可以迁移到部署。 这涉及到将模型包装到 Web 服务应用中,该应用可以使用 REST 调用将数据馈送并返回分析结果。 然后,Web 服务应用打包到 Docker 容器中,后者又可以在云中部署,也可以部署为 IoT Edge 模块。 在此示例中,我们专注于将 IoT Edge 设备进行部署。
维护和优化模型。 部署模型后,我们的工作不会完成。 在许多情况下,我们希望继续收集数据,并定期将数据上传到云。 然后,我们可以使用此数据重新训练和优化模型,然后可以重新部署到 IoT Edge。
清理资源
本教程是一组的一部分,其中每篇文章都基于上一篇文章中完成的工作。 请等待清理所有资源,直到完成最终教程。
后续步骤
本教程分为以下部分:
- 准备您的开发计算机和 Azure 服务。
- 为机器学习模块生成训练数据。
- 训练和部署机器学习模块。
- 将 IoT Edge 设备配置为充当透明网关。
- 创建和部署 IoT Edge 模块。
- 将数据发送到 IoT Edge 设备。
继续阅读下一篇文章,设置开发计算机并预配 Azure 资源。