构建一个实时、低代码的时间序列数据异常检测管道,使用 Amazon Aurora、Amazon Re
构建实时低代码异常检测管道
关键要点
本文提供了一种使用 Amazon Aurora、Amazon Redshift ML 和 Amazon SageMaker 构建实时低代码异常检测解决方案的方法。该方案可有效监测资产,识别设备异常,支持工业物联网IIoT中的数据分析需求。
工业物联网IIOT革命改变了制造业和汽车等多个行业的运作方式。工业40也称为第四次工业革命或4IR是制造业数字化的下一个阶段,受到数据和连接性、分析、人机交互及机器人技术等颠覆性趋势的推动。为了适应工业40,资产的主动监控成为关键要求,因此,识别和报告设备异常变得至关重要。传统的异常检测解决方案通常需要深厚的技术领域知识,如 ETL提取、转换和加载、数据科学和商业智能BI,这非常耗时且容易出错,任何偏差或错误都可能造成经济损失。
在本文中,我们提供了一种低代码的优化方法,利用 Amazon Aurora 的零 ETL 集成、Amazon Redshift ML自带模型和 Amazon SageMaker 来构建异常检测方案。
解决方案概述
Amazon Redshift 是一个完全托管的、PB 级别的云数据仓库服务。您可以通过 Amazon Redshift 快速构建数据模型、测量商业流程,并获得有价值的见解。它提供了内置功能,加速模型、编排和维度模型报表的过程。
Amazon 关系数据库服务Amazon RDS使得在 AWS Cloud 中设置、运行和扩展关系数据库变得简单。它为行业标准的关系数据库提供了经济高效、可调整的容量,并管理常见的数据库管理任务。您可以选择七种流行的数据库引擎: Amazon Aurora MySQL 兼容版、Amazon Aurora PostgreSQL 兼容版、Amazon RDS for MySQL、Amazon RDS for MariaDB、Amazon RDS for PostgreSQL、Amazon RDS for Oracle 和 Amazon RDS for SQL Server。
Amazon Aurora MySQL 的零 ETL 集成 使存储在 Aurora MySQL 数据库中的 PB 级事务数据可进行近实时分析。写入 Aurora 数据库的数据在几秒内就可以在 Amazon Redshift 中可用,这使得用户可以快速对数据进行操作,而无需管理复杂的数据管道。此外,截至本文撰写之时,零 ETL 集成现已预览还支持 Amazon Aurora PostgreSQL、Amazon DynamoDB 和 Amazon RDS for MySQL 作为数据源,Amazon Redshift 作为目标。
零 ETL 允许您从多个 Aurora 数据库分析数据,并利用 Amazon Redshift 提供的丰富分析能力如高性能 SQL、内置机器学习ML和 Spark 集成、物化视图、数据共享 和对多个数据存储及数据湖的直接访问。
下图展示了我们的解决方案架构。
前提条件
开始之前,您需要一个 Aurora 实例和启用 Redshift ML 功能的 Redshift 数据仓库。
有关零 ETL 集成的介绍及设置说明,请参阅 开始使用 Amazon Aurora 的零 ETL 集成与 Amazon Redshift。
有关 Redshift ML 的介绍及设置说明,请参阅 使用 Amazon Redshift ML 通过 SQL 创建、训练和部署机器学习模型。
查看 Amazon Aurora MySQL 兼容版、Amazon Redshift 和 Amazon SageMaker 定价页面,以了解该解决方案的成本。
源数据概述
此用例使用的数据是与涡扇发动机单元相关的模拟数据。该数据集是由 NASA 使用 商业模块航空推进系统仿真 (CMAPSS) 生成的,广泛用于预测和资产健康测量研究。
该数据集包含与多个循环中不同的涡扇发动机单元相关的测量数据。每个循环都有三个操作参数和 21 个在不同条件下工作的测量值。测量值包括区域温度、区域压力、风扇速度、燃油流量、冷却剂流量等特征。您可以在 Kaggle 网站 获取更多关于该数据集的详细信息。我们使用这些数据作为训练模型的历史数据。
我们分析了这些数据,并获得了关于单位随时间恶化、传感器测量的统计分布、不同传感器测量之间的相关性等有趣的见解,具体见下图。
创建 Aurora 源数据库并填充源数据
要准备您的数据,请完成以下步骤:
在 Aurora 中创建所需的源表:
sqlDROP TABLE assetreadingshistoryDROP TABLE assetreadingsincdemoDROP TABLE assetmaster
CREATE TABLE assetreadingshistory(unit INT cycles BIGINTos1 FLOAT os2 FLOAT os3 FLOATsm1 FLOAT sm2 FLOAT sm3 FLOAT sm4 FLOAT sm5 FLOAT sm6 FLOAT sm7 FLOAT sm8 FLOATsm9 FLOAT sm10 FLOAT sm11 FLOAT sm12 FLOAT sm13 FLOAT sm14 FLOATsm15 FLOAT sm16 FLOAT sm17 FLOAT sm18 FLOAT sm19 FLOAT sm20 FLOAT sm21 FLOATPRIMARY KEY (unit cycles))
CREATE TABLE assetreadingsincdemo(unit INT cycles BIGINTos1 FLOAT os2 FLOAT os3 FLOATsm1 FLOAT sm2 FLOAT sm3 FLOAT sm4 FLOAT sm5 FLOAT sm6 FLOAT sm7 FLOAT sm8 FLOATsm9 FLOAT sm10 FLOAT sm11 FLOAT sm12 FLOAT sm13 FLOAT sm14 FLOATsm15 FLOAT sm16 FLOAT sm17 FLOAT sm18 FLOAT sm19 FLOAT sm20 FLOAT sm21 FLOATPRIMARY KEY (unit cycles))
CREATE TABLE assetmaster(unit INT unitname varchar(50)description varchar(100)PRIMARY KEY (unit))
INSERT INTO assetmaster VALUES (1 Device 1 This is dummy device 1)INSERT INTO assetmaster VALUES (2 Device 2 This is dummy device 2)
使用 LOAD DATA FROM S3 或根据您的用例使用其他方法将历史事务数据加载到 Aurora 表assetreadingshistory中。
使用 LOAD DATA FROM S3 或根据您的用例使用其他方法,将主要数据加载到 Aurora 表assetmaster中。
创建零 ETL 集成
在创建与 Amazon Redshift 的零 ETL 集成之前,您需要配置 Aurora 数据库集群和 Redshift 数据仓库,并设置所需的参数和权限。高层步骤如下:
配置 Aurora MySQL 数据库集群参数。创建源数据库集群。创建目标 Redshift 数据仓库。创建 Aurora MySQL 数据库与 Amazon Redshift 之间的零 ETL 集成。有关详细步骤,请参考 开始使用 Amazon Aurora 的零 ETL 集成与 Amazon Redshift。如果源和目标在同一账户内,Amazon RDS 控制台可以自动配置源和目标。
在 Amazon Redshift 中创建物化视图
零 ETL 集成是一种完全托管的解决方案,使得事务性或操作性数据能够在 Amazon Redshift 中近实时可用。零 ETL 将复制您创建的资产表及数据到 Amazon Redshift 中。
连接到 Amazon Redshift,并使用以下 SQL 语句在复制的资产表上创建一个物化视图:
sqlDROP MATERIALIZED VIEW mvassethealth
CREATE MATERIALIZED VIEW mvassethealth ASSELECT aunit as unit aunitname as unitname os1 os2 os3 sm1 sm2 sm3 sm4 sm5 sm6 sm7 sm8 sm9 sm10 sm11 sm12 sm13 sm14 sm15 sm16 sm17 sm18 sm19 sm20 sm21FROM assetmaster a assetreadingsincdemo bWHERE aunit = bunit
异常检测
SageMaker 随机切割森林RCF是一种无监督学习算法,旨在检测数据集中的异常数据点。例如,当网站活动异常增加,或当股票价格超出正常趋势波动时,这些都很重要。有关此算法的更多细节,请参考 RCF 的工作原理。
使用 SageMaker 构建、训练和测试 RCF 模型
完成以下步骤以构建、训练和测试您的模型:
卸载 从 Redshift 表assetreadingshistory中读取的历史数据,使用 Redshift COPY 命令将其存储到 Amazon Simple Storage Service (Amazon S3) 存储桶中。我们使用这些数据作为训练数据来构建模型。
创建一个 SageMaker 笔记本实例,以便准备和处理数据,并从运行 Jupyter Notebook 应用程序的计算实例上训练和部署 ML 模型。我们使用该笔记本实例来准备和处理数据,以及训练和部署 ML 模型。有关更多详细信息,请参阅 使用笔记本实例建立模型。
读取并加载历史源数据到 pandas 数据帧中。
使用您的源数据和 RCF 算法构建和训练模型:
pythonfrom sagemaker import RandomCutForest
session = sagemakerSession()
指定通用训练作业信息
rcf = RandomCutForest( role=executionrole instancecount=1 instancetype=mlm4xlarge datalocation=fs3//{bucket}/ outputpath=fs3//{bucket}/output numsamplespertree=512 numtrees=50)
自动上传训练数据到 S3 并运行训练作业
rcffit(rcfrecordset(ltgtltgttonumpy()reshape(1 1)))
使用 SageMaker Python SDK 的 deploy() 函数创建一个推理终端点。指定推理计算的实例类型以及初始实例的数量:
pythonrcfinference = rcfdeploy(initialinstancecount=1 instancetype=mlm4xlarge)

将模型与 Amazon Redshift 集成
我们在 Redshift ML 中创建一个模型,使用前面的 SageMaker 推理终端点。使用默认的 AWS 身份与访问管理 (IAM) 角色与您的 CREATE MODEL 命令,如下所示:
连接到 Amazon Redshift,并运行以下命令:
sqlCREATE MODEL remoteassetrcfFUNCTION remotefnassetrcf(real)RETURNS decimal(106)SAGEMAKER randomcutforestxxxxxxxxx IAMROLE default
使用以下命令检查模型状态:
sqlSHOW MODEL publicremoteassetrcf
该命令将显示您的 ML 模型的相关信息,包括其状态、创建所用的参数,以及预测函数及其输入参数类型。
使用实时数据预测异常
插入样本增量资产读取数据到 assetreadingsincdemo 中。当模型准备就绪时,使用创建模型语句中的函数名运行推理查询:
sqlSELECT unit SM2 AS MeasureValue remotefnassetrcf(SM2) AS AnomalyFactorFROM mvassethealth LIMIT 10
以下表格展示了我们的结果。
单位测量值异常因子12547258188819451543708112552636324524960318850224951344753219464122439324050249565194578298961240626296595使用 Amazon Redshift 查询编辑器 v2,在您运行查询并显示结果后,您可以生成图表以可视化当前页面的结果。我们使用之前的结果绘制以下异常评分的直方图。
大象加速器该直方图显示了不同异常评分下单位数量的分布。较低的区间表示正常设备的聚集,而右侧的尾部则显示异常设备。然而,确定合适的阈值取决于您的业务场景和数据特性。
清理
为避免产生费用,如果您在环境中测试此解决方案,请清理 Aurora MySQL 实例、Redshift 数据库和 SageMaker 笔记本。您还可以删除零 ETL 集成。
删除 Aurora 数据库集群
完成以下步骤:
在 Amazon RDS 控制台的导航窗格中,选择 Databases。选择要删除的数据库集群。在 Actions 菜单中,选择 Delete。如果要为数据库集群创建最终快照,请选择 Create final snapshot。这是默认设置。如果您选择创建最终快照,请输入快照名称。如果要保留自动备份,请选择 Retain automated backups。这不是默认设置。输入删除确认词以确认。选择 Delete。删除 Redshift 集群
完成以下步骤:
在 Amazon Redshift 控制台的导航窗格中,选择 Clusters。选择要删除的集群。在 Actions 菜单中,选择 Delete。选择 Delete cluster。删除 SageMaker 笔记本
完成以下步骤以删除 SageMaker 笔记本及相关资源:
在 SageMaker 控制台的导航窗格中,选择 Endpoints。选择您创建的终端点,然后在 Actions 菜单中,选择 Delete。在导航窗格中选择 Endpoint configurations。选择您创建的终端点配置,然后在 Actions 菜单中,选择 Delete。在导航窗格中选择 Models。选择您创建的模型,然后在 Actions 菜单中,选择 Delete
通过先进的路由技术增强对话式AI,借助Amazon Bedrock 机器学习博客
利用先进的路由技术增强对话AI的能力关键要点在本篇文章中,我们探讨了如何利用AWS的Amazon Bedrock和LangChain来构建对话AI助手,论述了这两种方法的优缺点,以及在物联网设备管理中的应用。通过有效的路由技术,可以实现更加智能、灵活的用户交互体验。对话式人工智能AI助手旨在通过智能...
创建一个数据标注项目,使用 Amazon SageMaker Ground Truth Plus 机
使用 Amazon SageMaker Ground Truth Plus 创建数据标注项目由 Joydeep Saha 和 Ami Dani 发布于 2024年10月15日 Amazon SageMaker,Amazon SageMaker Ground Truth,人工智能,中级 (200) 永...