Peter Webb和Lucio Cetto, MathWorks
我们将介绍端到端工作流,特别强调将流数据集成到开发环境中,以及模拟生产环境对数据科学家的好处。我们将展示物理模型如何加速引导系统。我们在MLOps的背景下讨论该系统。最后,我们总结了在操作系统中这种架构折衷的影响,因为它们通知了系统的发展
谢谢你今天来的谈话。我是彼得韦伯。我在MathWorks的工作侧重于Matlab部署和远程执行。我今天加入了Lucio Cetto,他们更加了解机器学习和数学比我更重要。
我们在这里与您分享一个用例故事。我们使用联合机器学习为工业冷却风扇开发了预测的维护应用。我们培训了一种模型来检测来自风扇和触发服务警报的传感器数据中的异常。我们在30天内准备好生产。
我们如何快速地放置一个大系统?没有大秘密。我们使用了一个盒子 - 你知道,那盒一切都出现了。开箱即用,从机架上 - 我们可以获得和使用的软件。我们需要一种物理准确的模拟器来生成培训数据,流媒体服务,以将传感器数据传输到分析引擎以及度量标准可视化平台。我们不得不配置将所有碎片粘合在一起的连接器。
但随后我们可以专注于重要的工作。Lucio必须编写机器学习分析。而且我必须创建该指标仪表板。但在我们到达那之前,有点关于项目本身。
这就是大意。扫描风扇从工厂产生的数据,生成服务警报。但我们不止有一家工厂。他们每个人都知道其他人不知道的事。
如果我们结合从所有的工厂中的所有数据,我们将有更好的模型,但是这需要额外的基础设施,中央服务器火车和更新模型,以及一些大型管道将数据推送到服务器。然后,一旦模型更新,本地分类必须暂停,以获取新的模式。该体系结构的工作原理,但我们认为我们可以做的更好。
我们要的是所谓的联合学习。我们更换了中央计算服务器以更简单,更便宜的数据存储。然后,我们需要来回发送的唯一信息是模型和参数,不需要那些昂贵的数据管道。并在每个工厂的本地分类仍然受益于他们的同龄人积累起来的知识。
这给我们留下了一个问题。联合学习能够建立一个像教练一样精确的模型,并且能够访问所有的数据吗?稍后,您将看到Lucio的一些分析,帮助我们理解权衡。
我们使用联合学习,以简化我们的基础设施。而另一个重要的使用情况是数据隐私。由于数据永远不会离开它所属的网站,它包含任何秘密保持地方。虽然这可能不是太大的关系了风扇传感器的数据,它可能是用于医疗或其他类型的调节或受保护的数据非常重要。
和数据上,我们的训练算法要很多很多的它。但是,它不只是一个量的问题。如果是这样,我们可能只是模型连接到来自风扇的数据,我们的数据科学家将是一个差事。因此,相反,我们把到能为我们提供两种信号,并选取标签物理精确,多域仿真模型的来源。
关于标签的那部分值得强调。由于模型生成数据流以来,它知道风扇无法正常工作并标记培训师的那部分信号。没有模型,我们有很多手动分类。
我们需要模拟这些粉丝的三种特征 - 电气,机械,热量 - 以及扫描每个域中的异常。例如,负载异常表示外部温度很快地升起,或许响应风扇冷却的装置上的负荷增加。它不足以独立模拟域,因为在真正的粉丝中,他们互动。
例如,当温度升高时,风扇控制器提高了电源电压。电机运行得更快,冷却速度增加。这为我们提供了足够的准确性,在第一天准备生产。
这是第一天。粉丝们正在将数据传送到分类器。仪表盘为操作人员提供了系统的近实时视图。
但现在我们有另一个标记数据的来源。分类器正在标记现场风扇数据。我们如何利用它来改进算法?现在我们需要一个人的循环。
操作员可以定期确定分类器遗漏了一个真正的异常或发出了一个错误警报。这种情况不应该经常发生。但当它出现时,操作员可以将错误的分类信号和正确的标签发送给训练者。
当足够累计保证刷新时,教练员更新模型并将其发送回分级器。手动分类才变得可行,因为偶尔需要。机器学习算法处理大部分工作。
与此同时,我希望我已经给你了解下一节的背景。Lucio将告诉您我们的建模技术以及我们如何评估其有效性。卢西奥。
所以今天,我将参加数据科学家的角色。对我来说,没有比具有物理模型开始的更好的场景。这将有助于我们更好地了解我们在手头的问题,从而提出一个增量和联合的学习方法,可以让我们检测和分类粉丝的异常。
让我们先来了解数据我们可以观察到开始。我们从每个系统传感器观察三个不同的变量。或者,如果你愿意,我们可以把它们也迷。我们观察到施加到电动机,所述风扇的速度angulary,和温度的电压。
出于可视化的目的,在这些示例中,我们引入了更多通常预期的异常。异常情况在第一个图的顶部作了注解。异常有三种类型。
当系统正在处理过载的条件时,检测到负载异常。也就是说,我们要求更多地对系统设计的工作。当电动机或风扇的机械子系统发生不良时,检测到风扇异常。最后,电源异常是一种缺乏,其在电压下降。
现在让我放大到一个小区域。这个面积约2米。在我们的例子中,异常表现为上,持续10秒和100秒之间的事情的痕迹小脉冲。请注意,不同类型的异常有不同的配置文件。中所含的唯一这些迹线中的一个的信息通常是不足以完成不同类型的异常的完美分类,一个异常或另一个异常可以以几种的信号来体现。
这里有一些复杂性。例如,定义速度的第二异常的脉冲是 - 让我向您展示在这里 - 是在噪声幅度内。而且,温度迹线朝向末端存在两个表观脉冲。但他们不代表任何异常。
这些是我们可以在这个问题中发现的数据分析挑战。不同位置的系统条件不同。例如,负荷刻度——你可以在右边的第二条曲线中看到,温度在一天中不断变化。
各个系统是不同的。这意味着每个粉丝的年龄可能是不同的。因此,特征可能是不同的,我们衡量的东西。
此外,观测到的异常在几个地点是不同的。在某些情况下,在某些工厂,我们只能观察到一种异常。最后,异常检测延迟应该以秒为顺序。所以我们不能用大窗口来校正这些信号。
谈到联合学习之前,让我们做一些假设。正如我们看到的上一张幻灯片,也有本地系统条件或者是依赖于工厂,工厂,或单个风扇本身的。例如,一个给定的工厂可能具有受控温度环境内的风扇阵列。或者,他们可能在减少的时间量来工作24/7。
此外,每个粉丝可能在其生命周期中的不同点。因此,我们假设这些可变条件主要由信号趋势线的小变化表示。对于这样,我们将使用剩余的使用寿命和趋势的一些强大的机制。
我就不细说了。我们在一年前的演讲中已经讨论过这个问题了。但是,我将向您展示应用这些修正后的数据效果。
在这里,我仅通过观察两个变量来绘制数据点。我们可以看到,在去除局部影响后,我们可以清楚地将负载异常与正常数据分开。顺便说一下,当我们看模型电压时,电源异常也很容易区分,这些图中没有标出。
最重要的是,让我强调有关当地条件的任何信息 - 这意味着强大的转发和剩余的使用寿命 - 不传达给其他系统,也不是联邦。它将保持每个模型的本地。
现在让我们去建模技术。为了模拟异常,我们使用一组二进制分类器来模拟给定类型的异常与正常行为。我们尝试了增量线性支持向量机和增量天真贝叶斯分类器。金宝app
支持向量机使用随机梯度下降算法更新,从一个随机的超平面开始模型。朴素贝叶斯分类器更新夏日统计代表一个独立的正态分布。朴素贝叶斯分类器的优势在于他们可以提供一个概率框架内的得分。然而,在我们的实验中,我们发现支持向量机是这种类型的问题更准确。金宝app
现在,回想一下,并非所有的异常都可以在每个节点上充分地代表。因此,我们只培训那些我们有足够证据的风扇的那些二元学习者。让我们制作一个关于标签的小括号。
我们假设这些由以下两种方式提供。在第一种情况下,给定工厂的操作员可以在遇到它们之后标记异常,将信息改装为极端。在第二种情况下,我们可以考虑在给定工厂的某些条件下启动系统操作的工程团队,他们创建了一个生理计算机模型,它在标签中生成数据。
好的,让我们看看联邦是如何运作的。假设有5个节点。采用增量学习算法对每个节点进行局部数据训练。模型参数和模型权重被发送到联邦。
权重是一个值,其中包含我们在每个本地节点的每个异常所观察到的证据量。在联合会上,我们还保持全球模型参数和全球体重,由Waught和Theta Naught。我们可以简单地使用加权和计算模型参数。在支持向量机的情况下,我们计算新的水镀金宝app系数和偏置。在幼稚贝叶斯的情况下,分类器我们为标准偏差和每个变量的平均值计算重量本身。
这种计算可能是同步或异步的。也就是说,我们可以尽快收到一个模型更新更新全局模型。或者,我们可以分批更新时,我们收到的所有型号的更新。后来,彼得是要告诉你,我们也可以计算全局更新在每一个节点上。
有三个重要方面需要记住。联邦利用每种异常类型的证据量对模型参数进行加权。该联盟还负责协调节点报告的新型异常。这意味着,当新的异常出现时,联邦将更新已知异常的清单。
正如我已经说过的,全球联盟权重上限是一个任意值。因此,我们继续考虑节点引入的新颖性。然后将新的更新发送回联邦。我们更新了每一个,每一个粉丝的模型。
让我们看看分类模型的准确性。回想一下,在这里,我们展示的是两种不同范式的结合——增量学习和联合学习。为了更好地理解准确性是如何影响准确性的,我们将按照以下步骤探索准确性。首先让我们看看这个简单的线性支持向量机的准确性。这是一个离线的线性支持向量机。我们得到所有的数据,然后用SVM进行训练。
让我们来看看离线线性SVM模型的比较图表。这里的准确性通过在超过24小时内运行的10个风扇系统的所有数据上查看五倍的交叉验证来计算。第一行和列代表正常数据,您可以看到它显然是最常见的条件。
接下来我们有三种类型的异常。最后一行和列是最不常见的条件。对于我们来说,当我们同时观察两个或更多异常时,它代表了这是一种非常罕见的条件。您可以注意到我们;只缺少在非重叠案件上标记七个真正的正常异常。
让我们比较一下增量支持向量机学习器。金宝app在这里,我们通过观察一个24小时后的预测来衡量准确性。请注意,我们也忽略了很少的异常。然而,该模型会产生更多的假警报。
值得突出的东西是我们不会错误分类异常。这是由于建模的性质。也就是说,因为我们在正常数据和异常类型之间使用二进制模型,因此在错误分类将暗示在两个二进制学习者中有错误,这可能要小得多。总之,这两个方案都具有非常低的假负率和假发现率,这很好。
好了,现在我们来比较一下增量式联合学习方法。在这种情况下,每个本地模型只使用一种异常类型。然后将模型发送给联邦,我们使用联邦模型上预测的预测来度量准确性。我们仍然忽略了一些真正的异常。
但在这些条件下,错误发现率增加到大约每200个标记异常就有一个错误。让我在这里强调一下,虽然左边的增量模型需要访问所有数据,但是右边的联邦模型不需要共享或通信任何数据。相反,我们只分享个人模式,也就是联合学习模式。
让我给你们看一些我们正在做的典型错误。最常见的错误是两个异常同时发生。我们实际上预料到会出现这种类型的错误,因为信息的数量不足以调整模型。
系统暂态过程中出现另一个错误。这也是意料之中的。对于这个问题,有两种可能的变通方法,我们在概念验证中没有完全实现。首先,我们可以考虑一些小的滞后。我们还可以将系统分数或后验概率纳入系统中,以便给操作员提供任何检测到的异常的重要性的概念。
要关闭此演示文稿的数据分析部分,请让我向您展示我如何将我们刚才描述的算法打包。有三个流函数。其中两个在每个节点处在本地运行。和两个更新联合模型。异常预测器接收具有观察的流,并馈送到具有异常类型和分数的输出流。
分类模型以及本地条件有其他输入。虽然第一个不需要更新,但需要更新每个模型或风扇的本地条件。回想一下,我们将当地条件保留为每个风扇或系统。
递增学习异常分类器的函数具有类似的签名,不同之处在于它也在输入流中接收异常级别。并用更新后的参数对分类模型进行更新。最后,更新联邦模型的函数不接收任何数据、标签或本地条件。输入和输出只是分类模型和被证明的权重。
就是这样。所以现在让我回到彼得,谁会告诉我们他如何通过一些实现细节来推断整个系统并驱动我们。谢谢。
感谢Lucio,用于解释异常检测器如何将模拟信号转变为方波,离散状态变化,我们需要计算。这是我们开始的任务,毕竟扫描了一组实时信号,为冷却系统运营商创建预测性维护解决方案。所以让我们来看看那个系统以及我们如何快速将它放在一起放在一起。
该系统基本上由三个组件组成 - 数据源,分析引擎和度量标准仪表板。连接器链接或与流服务交互以通过该管道管理消息流。所以这是整个系统的高级抽象视图。但在我们填写这些抽象之前,它不会做任何事情。
现在我们返回盒子并拔出所有复杂的软件。Simscape的多域模型生成我们的培训数据。MATLAB生产服务器运行培训和分类算法。Redis保留模型参数和其他状态。和涌入和Grafana提供仪表板。
为了帮助你理解构建这样一个系统的权衡,我认为我们应该跟踪信号在管道中的旅程。我们将在这三个部分中每一个停下。或者我会强调我们面临的挑战和我们做出的选择。让我们来看看数据生成。
这个模型允许我改变在给定时期内发生的异常的类型和数量。这种变化增加了我可以扔给训练者的场景的多样性,并提高了模型的最终准确性。您看到的颜色表示不同的模拟域。
这是在工作中的模拟器,产生大约一个小时标记的合成数据。这里有四个图表 - 三个风扇信号和负载异常。并且在它运行时,您会看到异常标签的意思。
负载异常是那些你在上面的图表中看到的方形。在本节中,您将看到几个注入的负载异常。外壳温度升高,风扇转速加快,吸收更多功率并进行补偿。
在顶部图表中,您可以看到标签,它是逻辑值,在发生异常发生的时间内真实,并且在一切正常时都是假的。这就是为什么异常信号是方波。这是一个电压异常。看到底部图表中的大电压下降和风扇速度的相应放缓。温度稍微上升,但不足以触发异常标签。
另一件事要注意的是,这些红色区域中的每一个宽约90秒,因此包含大约900条消息。那些方波标签被切成大量的小块。这将在后来很重要。我们的旅行信号的下一个停止是分类器,我们将看到如何为高吞吐量设计联合。
这是我们一个知识共享工厂的异常检测管道。让我们看一下这个信号分类器的内部。每个工厂都有许多异常探测器,每个探测器都使用型号缓存在本地数据存储中。联合所需的参数存储在所有工厂都可以访问的共享数据存储中。异常探测器同时运行,每个处理信号来自一组独特的风扇。
当它是时候将来自其他工厂的参数集成到本地模型时,我们想尽可能短的时间暂停每个本地检测器。事实证明,如果我们将联合纳入每个探测器,我们的数据存储器的原子读取右保证使得每个探测器可以完全独立地操作。一旦任何给定的检测器确定它已经看到足够的数据以可衡量的方式更改参数,它会从共享商店中提取新参数并更新其模型。
请注意,与此同时,绿色工厂向共享商店发送了一个更新。联邦检测器得到更新了吗?这并不重要。如果没有,它将在下一个周期得到它。重要的是其他探测器没有停止,参数数据也没有损坏。
然后联合检测器更新工厂的模型和本地商店。同时,不同的探测器加载模型。再次,我们不知道它是否有更新的版本或更新版本,它并不重要。由于每个探测器都可以自己联合,因此不需要同步阶段,这将使其中一些等待。这使我们的吞吐量很高。
我们的信号一直变成了方波,现在,它向仪表板旅行。我将使用我们的信号的旅程的最后阶段,突出了几个关于时间序列数据微妙的点。你需要至少考虑这些问题,当你设计自己的数据模型。虽然这两个信号看起来像原子不可分割单元,采样率将其划分为段。这就是他们是如何通过系统 - 为多个消息传送。
现在你可能已经看到了这个问题。高吞吐量所需的数据并行性可以与网络延迟结合以扰乱信号。大多数消息传递服务将为您的数据提供摄取或抵达时间戳。这就是系统接受消息的时间。
但是为了将这些消息重新组合在一起,我们需要事件时间戳,它记录了信号生成的时间。因此,如果您正在生成时间序列数据,请确保您的数据模型包含事件时间。现在我们的信号在外面,通过网络传输。我们将在其中一个连接点遇到它。
我们可怜的小方波被分成了四块,而这四块已经不整齐了。但是连接器使用消息时间戳重新组装它,将其放入称为窗口的小缓冲区中。然后它将每个窗口作为单个更大的消息发出。在我们的示例中,窗口指向inflxdb。
我希望你能明白为什么使用时间戳是这里重要的事件。这里注意,在窗口边界异常信号分裂。这就是为什么信号装饰着那些小方块。那些代表数据库查询使用加入窗口重新走到一起的单一,独特的信号标识。
所以最后,仪表板的绑定数据的时间一致的数据窗口。让我们来看看它到达那里会发生什么。您已经看到了风扇传感器数据的视频,所以我以为我会从分类器开始,然后向您展示仪表板。
这是在开发期间的分类器。我正在使用Matlab会话作为Airside服务器,生产的生产率太慢,但对调试非常方便。现在我们停在一个休息点。我们可以看一下风扇输入数据,该数据被存储为时间表。
有一些传感器信号的值。通过生产功能通过此数据后,我们可以检查结果。如果我是一个更好的数据科学家,我会更好地判断这些是否正确。但我相信Lucio的数学,所以我相信他们是。
现在同样的分类器在我的八个工人本地服务器上运行。主要是,我想突出显示此处的吞吐量,因为每个请求包含大约1,000条消息。您可以看到我们每秒在6,000到8,000条消息之间处理。
这是仪表盘。这是冷却系统的概述——顶部的异常数,柱状图;在它下面,是异常的扇形分解图。在右边,是所有异常的时间轴,显示了它们发生的时间。
我们还可以深入了解每个粉丝的详细信息。这是粉丝六。您可以看到触发它们的异常计数和信号值。
现在我们已经走得更远了,你可以看到又有一些粉丝上线了。让我们看看第九扇。目前只报告了一种异常。在右边,你可以看到风扇速度图中有更多向下的峰值。
现在我会回到主屏幕。你可以看到我们积累了几百个异常。这是我们开发的Grafana仪表板的概述。
所以这就是我们所学到的。物理模型提供的培训数据给您一个头部开始。并使用现成的组件让您确实将系统迅速放在一起。
Federation使您的模型更加智能。对关注点和界面设计的谨慎分离使得在必要时更容易进行扩展。物理模型为鲁棒预测性维护分类器的快速发展提供了种子。非常感谢。
您还可以从以下列表中选择一个网站:
选择中国网站(以中文或英文)以获取最佳网站性能。其他MathWorks国家网站未优化您的位置。