使用 Python Toolbox PlatoBlockchain Data Intelligence 构建、训练和部署 Amazon Lookout for Equipment 模型。 垂直搜索。 哎。

使用 Python 工具箱构建、训练和部署 Amazon Lookout for Equipment 模型

预测性维护可以有效地预防工业机械故障和昂贵的停机时间,方法是主动监控设备的状况,这样您就可以在设备故障发生之前收到有关任何异常情况的警报。安装传感器和数据连接、存储、分析和警报所需的基础设施是实现预测性维护解决方案的基本要素。然而,即使在安装临时基础设施之后,许多公司仍然使用基本的数据分析和简单的建模方法,这些方法通常无法有效地及早发现问题以避免停机。此外,为您的设备实施机器学习 (ML) 解决方案可能既困难又耗时。

亚马逊对设备的监视,您可以自动分析工业设备的传感器数据,以检测机器的异常行为——无需机器学习经验。这意味着您可以快速、准确地检测设备异常,快速诊断问题,并采取措施减少昂贵的停机时间。

Lookout for Equipment 分析来自传感器和系统的数据,例如压力、流量、转速、温度和功率,以根据您的数据自动训练特定于您的设备的模型。它使用您独特的机器学习模型来实时分析传入的传感器数据,并识别可能导致机器故障的早期预警信号。对于检测到的每个警报,Lookout for Equipment 会查明哪些特定传感器指示问题,以及对检测到的事件的影响程度。

我们的使命是将 ML 交到每个开发人员手中,我们希望推出 Lookout for Equipment 的另一个附加组件: 开源Python工具箱 允许开发人员和数据科学家像您习惯的那样构建、训练和部署 Lookout for Equipment 模型 亚马逊SageMaker。该库是 Lookout for Equipment boto3 python API 之上的包装器,旨在帮助您开始使用此服务的旅程。如果您有任何改进建议或要报告的错误,请针对工具箱提出问题 GitHub存储库.

在这篇文章中,我们提供了在 SageMaker Notebook 中使用 Lookout for Equipment 开源 Python 工具箱的分步指南。

环境设置

要从 SageMaker 笔记本使用开源 Lookout for Equipment 工具箱,我们需要向 SageMaker 笔记本授予调用 Lookout for Equipment API 所需的权限。对于本文,我们假设您已经创建了一个 SageMaker 笔记本实例。有关说明,请参阅 开始使用 Amazon SageMaker 笔记本实例。笔记本实例自动与执行角色关联。

  1. 要查找附加到实例的角色,请在 SageMaker 控制台上选择该实例。
    使用 Python Toolbox PlatoBlockchain Data Intelligence 构建、训练和部署 Amazon Lookout for Equipment 模型。 垂直搜索。 哎。
  2. 在下一个屏幕上,向下滚动以找到 AWS身份和访问管理 (IAM) 角色附加到实例中 权限和加密 部分。
  3. 选择角色以打开 IAM 控制台。
    使用 Python Toolbox PlatoBlockchain Data Intelligence 构建、训练和部署 Amazon Lookout for Equipment 模型。 垂直搜索。 哎。

接下来,我们将内联策略附加到 SageMaker IAM 角色。

  1. 点击 权限 您打开的角色选项卡,选择 添加内联政策.
    使用 Python Toolbox PlatoBlockchain Data Intelligence 构建、训练和部署 Amazon Lookout for Equipment 模型。 垂直搜索。 哎。
  2. 点击 JSON 选项卡,输入以下代码。我们使用通配符操作(lookoutequipment:*) 用于演示目的的服务。对于实际用例,仅提供运行适当的 SDK API 调用所需的权限。
     { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lookoutequipment:*" ], "Resource": "*" } ] }

  3. 审核政策.
  4. 为策略提供名称并创建策略。

除了上述内联策略外,在同一个 IAM 角色上,我们还需要建立信任关系,以允许 Lookout for Equipment 承担该角色。 SageMaker 角色已具有适当的数据访问权限 亚马逊简单存储服务 (亚马逊 S3);允许 Lookout for Equipment 承担此角色可确保它与笔记本电脑具有相同的数据访问权限。在您的环境中,您可能已经拥有特定角色,确保 Lookout for Equipment 可以访问您的数据,在这种情况下,您无需调整此通用角色的信任关系。

  1. 在我们的 SageMaker IAM 角色中 信任关系 标签,选择 编辑信任关系.
  2. 在策略文档下,将整个策略替换为以下代码:
     { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lookoutequipment.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

  3. 更新信任策略.

现在我们已准备好在 SageMaker 笔记本环境中使用 Lookout for Equipment 工具箱。 Lookout for Equipment 工具箱是一个开源 Python 包,数据科学家和软件开发人员可以使用 Lookout for Equipment 轻松构建和部署时间序列异常检测模型。让我们看看借助该工具箱您可以更轻松地实现哪些目标!

依赖

在撰写本文时,工具箱需要安装以下内容:

满足这些依赖关系后,您可以从 Jupyter 终端使用以下命令安装并启动 Lookout for Equipment 工具箱:

pip install lookoutequipment

该工具箱现在可以使用了。在这篇文章中,我们演示如何通过训练和部署异常检测模型来使用该工具箱。典型的机器学习开发生命周期包括构建训练数据集、训练模型、部署模型以及对模型进行推理。该工具箱提供的功能相当全面,但在本文中,我们重点关注以下功能:

  • 准备数据集
  • 使用 Lookout for Equipment 训练异常检测模型
  • 为模型评估构建可视化
  • 配置并启动推理调度程序
  • 可视化调度程序推理结果

让我们了解如何使用工具箱来实现这些功能。

准备数据集

Lookout for Equipment 需要创建和摄取数据集。要准备数据集,请完成以下步骤:

  1. 在创建数据集之前,我们需要加载示例数据集并将其上传到 亚马逊简单存储服务 (亚马逊 S3)存储桶。在这篇文章中,我们使用 expander 数据集:
    from lookoutequipment import dataset data = dataset.load_dataset(dataset_name='expander', target_dir='expander-data')
    dataset.upload_dataset('expander-data', bucket, prefix)

返回的 data object 表示包含以下内容的字典:

    • 训练数据DataFrame
    • 标签数据框
    • 训练开始和结束日期时间
    • 评估开始和结束日期时间
    • A标签描述DataFrame

训练和标签数据从目标目录上传到 Amazon S3 的存储桶/前缀位置。

  1. 将数据集上传到S3后,我们创建一个对象 LookoutEquipmentDataset 管理数据集的类:
    lookout_dataset = dataset.LookoutEquipmentDataset( dataset_name='my_dataset', access_role_arn=role_arn, component_root_dir=f's3://{bucket}/{prefix}training-data'
    ) # creates the dataset
    lookout_dataset.create()

access_role_arn 提供的必须有权访问数据所在的 S3 存储桶。您可以从之前的实例中检索 SageMaker 笔记本实例的角色 ARN 环境设置 部分并添加 IAM 策略以授予对 S3 存储桶的访问权限。有关更多信息,请参阅 编写IAM策略:如何授予对Amazon S3存储桶的访问权限.

component_root_dir 参数应指示 Amazon S3 中存储训练数据的位置。

启动上述 API 后,我们的数据集就已创建。

  1. 将数据提取到数据集中:
    response = lookout_dataset.ingest_data(bucket, prefix + 'training-data/')

现在您的数据已在 Amazon S3 上可用,创建数据集并提取其中的数据只需三行代码即可。您不需要手动构建冗长的 JSON 模式;该工具箱会检测您的文件结构并为您构建它。摄取数据后,就可以开始训练了!

训练异常检测模型

将数据摄入数据集中后,我们就可以开始模型训练过程。请看下面的代码:

from lookoutequipment import model lookout_model = model.LookoutEquipmentModel(model_name='my_model', dataset_name='my_dataset') lookout_model.set_time_periods(data['evaluation_start'],data['evaluation_end'],data['training_start'],data['training_end'])
lookout_model.set_label_data(bucket=bucket,prefix=prefix + 'label-data/',access_role_arn=role_arn)
lookout_model.set_target_sampling_rate(sampling_rate='PT5M') #trigger training job
response = lookout_model.train() #poll every 5 minutes to check the status of the training job
lookout_model.poll_model_training(sleep_time=300)

在启动训练之前,我们需要在数据集中指定训练和评估周期。我们还设置了 Amazon S3 中存储标记数据的位置,并将采样率设置为 5 分钟。当我们启动培训后, poll_model_training 每5分钟轮询一次训练作业状态,直到训练成功。

Lookout for Equipment 工具箱的训练模块允许您用少于 10 行代码训练模型。它代表您构建低级 API 所需的所有长度创建请求字符串,从而使您无需构建又长又容易出错的 JSON 文档。

模型训练完成后,我们可以检查评估期间的结果,也可以使用工具箱配置推理调度程序。

评估经过训练的模型

模型训练完成后, 描述模型 Lookout for Equipment 的 API 记录与训练相关的指标。此 API 返回一个 JSON 文档,其中包含两个感兴趣的字段来绘制评估结果: labeled_rangespredicted_ranges,分别包含评估范围内的已知异常和预测异常。该工具箱提供了实用程序来将它们加载到 Pandas DataFrame 中:

from lookoutequipment import evaluation LookoutDiagnostics = evaluation.LookoutEquipmentAnalysis(model_name='my_model', tags_df=data['data']) predicted_ranges = LookoutDiagnostics.get_predictions()
labels_fname = os.path.join('expander-data', 'labels.csv')
labeled_range = LookoutDiagnostics.get_labels(labels_fname)

在 DataFrame 中加载范围的优点是,我们可以通过绘制原始时间序列信号之一来创建良好的可视化效果,并使用以下方法添加标记和预测的异常事件的叠加: TimeSeriesVisualization 工具箱的类:

from lookoutequipment import plot TSViz = plot.TimeSeriesVisualization(timeseries_df=data['data'], data_format='tabular')
TSViz.add_signal(['signal-001'])
TSViz.add_labels(labeled_range)
TSViz.add_predictions([predicted_ranges])
TSViz.add_train_test_split(data['evaluation_start'])
TSViz.add_rolling_average(60*24)
TSViz.legend_format = {'loc': 'upper left', 'framealpha': 0.4, 'ncol': 3}
fig, axis = TSViz.plot()

这几行代码生成具有以下功能的绘图:

  • 所选信号的线图;用于训练模型的部分显示为蓝色,而评估部分显示为灰色
  • 滚动平均值显示为覆盖时间序列的细红线
  • 标签显示在标有“已知异常”的绿色丝带中(默认情况下)
  • 预测的事件显示在标有“检测到的事件”的红丝带中

使用 Python Toolbox PlatoBlockchain Data Intelligence 构建、训练和部署 Amazon Lookout for Equipment 模型。 垂直搜索。 哎。

该工具箱执行定位、加载和解析 JSON 文件的所有繁重工作,同时提供随时可用的可视化效果,进一步减少从异常检测模型中获取见解的时间。在此阶段,该工具箱可让您专注于解释结果并采取行动,为最终用户提供直接的业务价值。除了这些时间序列可视化之外,SDK 还提供其他绘图,例如正常时间和异常时间之间信号值的直方图比较。要了解有关可以立即使用的其他可视化功能的更多信息,请参阅 查找设备工具箱文档.

调度推理

让我们看看如何使用工具箱安排推理:

from lookout import scheduler #prepare dummy inference data
dataset.prepare_inference_data( root_dir='expander-data', sample_data_dict=data, bucket=bucket, prefix=prefix
) #setup the scheduler
lookout_scheduler = scheduler.LookoutEquipmentScheduler(scheduler_name='my_scheduler',model_name='my_model')
scheduler_params = { 'input_bucket': bucket, 'input_prefix': prefix + 'inference-data/input/', 'output_bucket': bucket, 'output_prefix': prefix + 'inference-data/output/', 'role_arn': role_arn, 'upload_frequency': 'PT5M', 'delay_offset': None, 'timezone_offset': '+00:00', 'component_delimiter': '_', 'timestamp_format': 'yyyyMMddHHmmss' } lookout_scheduler.set_parameters(**scheduler_params)
response = lookout_scheduler.create()

此代码创建一个调度程序,每 5 分钟处理一个文件(与配置调度程序时设置的上传频率匹配)。大约 15 分钟后,我们应该会得到一些结果。要从 Pandas DataFrame 中的调度程序获取这些结果,我们只需运行以下命令:

results_df = lookout_scheduler.get_predictions()

从这里,我们还可以使用工具箱的可视化 API 绘制预测的特征重要性:

event_details = pd.DataFrame(results_df.iloc[0, 1:]).reset_index()
fig, ax = plot.plot_event_barh(event_details)

它在样本数据上生成以下特征重要性可视化。

使用 Python Toolbox PlatoBlockchain Data Intelligence 构建、训练和部署 Amazon Lookout for Equipment 模型。 垂直搜索。 哎。

该工具箱还提供了一个 API 来停止调度程序。请参阅以下代码片段:

scheduler.stop()

清理

要删除之前创建的所有工件,我们可以调用 delete_dataset API 与我们的数据集名称:

dataset.delete_dataset(dataset_name='my_dataset', delete_children=True, verbose=True)

结论

在与工业和制造业客户交谈时,我们听到的关于利用人工智能和机器学习的一个常见挑战是,获得可靠且可操作的结果所需的大量定制以及特定的开发和数据科学工作。训练异常检测模型并为许多不同的工业机械获取可行的预警是减少维护工作、减少返工或浪费、提高产品质量以及提高整体设备效率 (OEE) 或产品线的先决条件。到目前为止,这需要大量的特定开发工作,并且随着时间的推移很难扩展和维护。

Lookout for Equipment 等 Amazon Applied AI 服务使制造商能够构建 AI 模型,而无需聘请由数据科学家、数据工程师和流程工程师组成的多功能团队。现在,借助 Lookout for Equipment 工具箱,您的开发人员可以进一步减少探索时间序列数据中的见解并采取行动所需的时间。该工具箱提供了易于使用、开发人员友好的界面,可使用 Lookout for Equipment 快速构建异常检测模型。该工具箱是开源的,所有的SDK代码都可以在 亚马逊-lookout-for-equipment-python-sdk GitHub 存储库。它也可以作为 PyPi 包.

这篇文章仅涵盖几个最重要的 API。有兴趣的读者可以看看 工具箱文档 查看工具箱的更高级功能。尝试一下,并在评论中告诉我们您的想法!


作者简介

使用 Python Toolbox PlatoBlockchain Data Intelligence 构建、训练和部署 Amazon Lookout for Equipment 模型。 垂直搜索。 哎。维克什·潘迪 是 AWS 的机器学习专家解决方案架构师,帮助英国和更广泛的 EMEA 地区的客户设计和构建 ML 解决方案。工作之余,Vikesh 喜欢尝试不同的美食和进行户外运动。

使用 Python Toolbox PlatoBlockchain Data Intelligence 构建、训练和部署 Amazon Lookout for Equipment 模型。 垂直搜索。 哎。伊万卡塔纳 是 AWS 的人工智能和机器学习专家解决方案架构师。 他帮助客户在 AWS 云中开发和扩展他们的 ML 解决方案。 Ioan 拥有超过 20 年的经验,主要从事软件架构设计和云工程。

使用 Python Toolbox PlatoBlockchain Data Intelligence 构建、训练和部署 Amazon Lookout for Equipment 模型。 垂直搜索。 哎。米歇尔·霍劳(MichaëlHoarau) 是 AWS 的 AI/ML 专家解决方案架构师,根据具体情况轮流担任数据科学家和机器学习架构师。他热衷于将人工智能/机器学习的力量带入工业客户的车间,并致力于广泛的机器学习用例,从异常检测到预测产品质量或制造优化。当不帮助客户开发次佳机器学习体验时,他喜欢观察星星、旅行或弹钢琴。

时间戳记:

更多来自 AWS机器学习