有效地构建机器学习模型预测维护石油天然气行业的砖

下载幻灯片

对于每个钻井现场,有成千上万的不同的设备操作同时24/7。石油天然气行业,停机时间可以每天花费数百万美元。作为当前的标准实践,大部分的设备与备用计划维修单位,以减少停机时间。定期维护将每个设备同样简单的指标,比如日历时间或操作时间。使用机器学习模型准确地预测设备故障时间可以帮助业务进度预测维护相应减少停机时间和维护成本。我们有巨大的时间序列数据集和维护记录在系统中,但他们与低质量不一致。我们有一个特定的挑战是数据不是连续的,我们需要经过整个数据集找到数据是连续在一些指定的窗口。转换的数据不同的时间窗口也提供了一个挑战:如何快速选择优化窗口大小的选择和执行并行转换?数据转换如傅里叶变换或小波变换费时,我们必须并行化操作。我们采用火花dataframes砖为我们计算。

下面是我们的两个主要步骤进行高效的分布式计算我们的数据转换:

  1. 确定哪些部分有连续的数据通过一个业者进行扫描数据集。
  2. 窗口中选择不同的窗口和转换数据。
  3. 每个窗口列转换成一个细胞作为一个列表。
  4. 保存的顺序在每个单元格的数据收集时间戳作为字典的列表和相应的参数,然后根据时间戳排序列表元素字典。

看更多的火花+人工智能会话

免费试着砖

视频记录

——嗨,每个人,感谢参加这次会议,我叫Varun Tyagi,我和我的队友在一起呆立。我们在哈里伯顿数据科学家,这是一个石油和天然气服务公司,位于休斯顿,德克萨斯州。

有效地构建机器学习模型预测维护与砖在石油天然气行业

今天我们要谈谈我们如何有效地利用砖帮助建立机器学习模型预测维护。在我们进入主题之前,我们首先想介绍一下我们的团队。

我们一个部门叫哈里伯顿数码解决方案的一部分。ATS的主要功能是支持和巩固数字转换所有产品服务线,我们称之为psl。所以在哈里伯顿公司,我们有大约14 psl,不同钻井固井,健康和安全,并完成。和我们的数字解决方案集团为数据仓库提供公共平台和架构和治理分析发展,商业智能报告。bob体育客户端下载我们简化和整合各种流程,所有产品服务线。我们还提供和建立一个强大的人才管道或软件和数字在每个PSL发展。

达利和我,都在在HPS数据科学团队。所以我们的角色发展分析和机器学习模型来提高运作效率,增加生产正常运行时间,降低运营成本,并提供见解在正确的时间正确的人来帮助他们做出业务级别的决定。

在哈里伯顿分析生命周期

所以在哈里伯顿,我们遵循的基本分析开发生命周期与特定于我们的用例的一些变化。我们有成千上万的世界各地的钻井平台,每个平台都包含很多的工具,放弃与各种传感器实时收集信息。我们也有大量的数据存储在SAP和其他SQL数据库。,多年来,我们收集了pb的数据在不同的文件格式,比如pdf, csp,然后拼花格式。对于每个项目,我们首次发现不同数据源,然后收集和数据集成到同一平台。bob体育客户端下载一旦我们吞下数据,我们花大部分时间清洁,聚合和转换数据。然后,我们工程在领域专家的帮助下执行功能。然后我们训练和测试模型和基于不同指标选择模型。但是大部分时间所选择的指标,这样他们直接相关的经济影响。然后我们部署模型和结果展示给相关人员。 And after the models are deployed, we monitor their performance to see check for any drifting. And then we diagnose and retrain the models if needed. No doubt the model training and testing is an essential part of the cycle, but in reality, it takes less than 5% of our time. And so we spend the majority of our time with the data ingestion and cleaning process. So what kinds of data do we have? We have three main types of data, first is the operational data, which includes a historical data and real time data from age devices. And most of the historical data is stored in what are known as ADI files. And ADI is just a proprietary format to Halliburton.

和我们的一个产品服务线,我们有500000多个API文件,每个文件是在拼花大约3 g格式。我们总共处理约1500 tb的数据,我们得到越来越多,从边缘设备实时数据(低语)这卷正在快速增长。

第二种类型的数据是,硬件配置数据,维护数据,和其他一些事件相关的数据,来自该领域。这些类型的数据通常存储在一个SQL数据库。举个例子,我们收集了超过500万的维护记录在不到两年半。

我们也使用外部数据的时候,例如,我们使用气象数据、地质和地球物理数据在需要的时候。

所以总的来说,我们不缺乏数据和我们每天得到更多的数据,但我们有时缺乏数据和质量好,特别是历史数据。但在边缘设备和更严格的数据收集过程,我们开始一个更好的,高质量的数据。

预见性维护项目(示例)

这是一个用例的一个例子为预测性维护。这个项目的目的是减少,每年的维护成本10%,通过现场操作优化、基于避免失效模式或传输组件。这里显示的图片,是我们的一个水力压裂的卡车,卡车位于中间的传播,它连接发动机高压泵。和传播的作用是传递能量的发动机和驱动高压泵,该泵液体进入钻井。所以这是一个非常昂贵的设备。

数据清洗和聚合

对于这个项目,我们必须结合或嫁给运营数据和配置和维护的数据在一个一致的方式。在这个过程中,我们面临着许多挑战,我们收集的操作数据有时来自不同样本的频率,改变从一个赫兹到一千赫兹。所以我们要下样品或样本不同的数据集,进行不同传感器数据之间的同步和非传感器数据之间也像维护记录。

对于我们的维护相关数据,我们有很多免费的文本输入。所以我们必须使用自然语言处理技术提取我们需要的信息。还有很多在未来与手动工作,编程逻辑来确定,记录所属的设备id,因为记录来自各种来源,每个源可能不一致,格式化的设备标识符。设备所使用的性质,他们经常从网站网站和就业工作,和每个作业可能持续几个或更多天,但在每个工作设备经常启动和关闭。所以我们需要考虑设备的瞬态和稳态模式。我们面临很多的缺失数据和错误数据错误的传感器或经常坏的用户输入。

值得庆幸的是我们有数据优惠,帮助我们迅速处理大量的数据集和可伸缩的方式。运行在数据,目前我们休息,溢价空间,一切都是透明的我们的团队成员。我们与不同的笔记本共享和协作,不同的效用函数,来回通过版本控制与笔记本电脑的不同版本。我们还利用三角洲湖的优势加速查询和回到特定的时间拍摄这类型的快照数据。

我们还利用熊猫用户定义函数,相当多,和熊猫UDS他们执行Apache箭头JVM之间的直接交换数据和Python驱动程序和执行程序,和它有接近零C实现或超过实现成本。矢量化操作帮助我们,获得速度提高一百倍,普通高引发对某些计算用户定义函数。期间我们将展示一个简单的示例演示的一个熊猫的UDF功能的用例,我们填写的注意值数据帧与前一个有效值或下一个有效值。

对于这种情况,一个π引发用户定义函数花了4到5小时,但随着pandas-udf,花了约6 - 7分钟,这对我们来说是一个巨大的进步。没有人希望等四到五小时,每件的性格,只是浪费时间和计算资源。

特性工程(示例)

对于这个项目,我们做了很多的工程特性,我们结合不同的功能使用不同的公式基于专业领域。

所以对于我们的项目,我们主要处理时间序列数据。所以我们使用大量的信号处理技术。上面所示的例子中,我们使用窗口的傅里叶变换得到频域特性不同的时间窗口。正如我之前提到的,我们学习的设备,他们从工作转移到工作和网站的网站。所以他们不断,打开或关闭,加载不同的变量在不同的利率和关闭。所以我们做的第一件事是选择基于一个阈值集高负载的窗口。举个例子,我们可以使用像发动机转速和一定的阈值高于阈值,我们将考虑一个高的负载。所以我们选择窗口的数据基于那些包含连续数据的阈值。

在我们原始类型一系列引发数据帧,每一行对应一个时间点,每一列是一个特性。所以我们可以使用收集时间收集的所有函数值列表和相应的数据在每一个时间窗口到一个普通的,这个操作之后,每个时间窗口的数据被收集和转换为单行在这部分数据帧。然后我们可以执行韦尔奇每个窗口傅里叶变换的数据并将其转换到频域。然后我们可以选择为每个窗口值峰值频率成分,然后使用这些功能的机器学习模型。这样的频域特性帮助我们提高我们的模型精度。所以我现在将其移交给呆立描述机器学习的过程。——谢谢Varun。后我们完成了所有的困难工作莱克阀门(低语)和数据聚合和数据特性工程和我们训练,和测试模型和各种方法,我们尝试下一个火花ML,我们尝试深度学习,我们尝试Azure AutoML和XGBoost Sklearn等等。

模型训练/以免/选择(示例)

我们评估模型的各种指标,如(低语)召回率和F1分数和准确性。最后,通常我们选择模型基于其经济影响。右边的表,显示了一些比较在不同毫升包,我们探索。从表中可以看到,所以深倚在GPU上使用LSTM虚拟机,花了一天完成一个培训。和Azure AutoML相对比较快。和提供一个稍微更好的结果为这个特定的用例。最后,对于这个项目,我们意识到,所以基本上不同的模型不会使任何显著差异,但不同的特性和进入模式有更多的影响。

模型部署和可视化

所以在这个项目中,我们使用了PowerBI可视化结果并向最终用户显示。所以我们模块化的整个过程从提取数据和执行数据(低语)和数据聚合和创造功能和调用都通过,进行预测,然后写结果和回blob存储到不同的笔记本。笔记本是策划运行通过数据休息,笔记本和工作流,根据业务需求和通常的方式安排工作每24小时运行。最后我们将展示一个演示如何利用(低语)或工作流运行笔记本。

模型性能监控

在我们部署模型,我们监控模型的性能随着时间的推移,检查是否有任何模型性能漂移。我们所做的是,不断预测存储到blob存储,我们还存储领域的实际结果为blob存储不断。所以我们展示预测与实际结果之间的差异,在PowerBI沿着时间。所以一些提醒将发送电子邮件或文本消息我们队基于一些预设阈值。所以,一旦我们的团队接收记录,我们将调查漂流模型,可以进行再培训或重新部署模型。模型管理是整个过程的一个重要部分,特别是当我们得到越来越多的模型。

模型管理

我自豪地使用电子邮件流,我们手动写的模型具体信息到一个CSV文件,存储模型和相应的环境和运行信息到一个blob存储与特定的命名约定。其实花大量的时间,也会导致一些混乱和矛盾随着时间的推移,特别是如果我们越来越模型。MLflow提供错误数据破坏,它极大地简化了过程的一致性和质量控制。最后,我们将展示一个演示如何利用MLflow管理模型。

就是这样,安娜将显示演示。——(安)的演示,我想分享三个项目,提高性能和运行代码更快或加速开发过程。所以我给详细的代码之前,我想先显示集群的配置。集群称为信号的过程,所以如果你去您的配置页面,它有12个工人节点和每个工作节点重64 g的内存,和16个核心,驱动负载256 g内存和重64核心。这是一个大的集群,因为我们有一个更大的数据集。现在让我们去第一项,我们利用熊猫UDF函数,(低语)过程之一,被称为笔记本电脑填写数据。换一个笔记本,我们做的第一件事,我们读到的数据blob存储到数据帧火花。所以我们读取的数据后,我们做一些预处理,在这里,我把数据帧的大小,你可以看到,数据帧有1.682亿行和74列。

这是一个大数据集。这里我们试图做的是,我们要运送每一列的缺失数据使用前可用场地或下一个可用的。所以我们使用熊猫UDF函数来实现这个目标。这是熊猫UDF函数的定义。所以你要做的第一件事在这里声明,pandas_UDF装饰。所以什么装饰是做一些前处理和发布过程的数据到熊猫的功能。这是一个熊猫的主体功能。所以,正如你所看到的,这是非常简单的,它是纯熊猫和语法,因为它的一只熊猫的功能。(低语)函数定义和我们称之为一个group by和适用。基本上它做什么,它将数据分成不同的组基于泵ID,然后熊猫UDF函数适用于我们每一组独立定义。 And in the end it combines the results back into a data frame.

所以在那之后,我们会读到数据与三角洲blob存储格式。所以你可以看到,整个过程大概用了7分钟。如果你想实现相同的目标,你会在火花或Windows功能失败法律场所或支持基于泵每一列ID,它需要大约7小时。所以速度几乎是16倍,为什么?尝试更快。所以我强烈建议你看看熊猫UDF功能,相信我,你就不会(低语)。

我要展示的是第二项,

笔记本工作流,我们去笔记本,我们使用笔记本工作流运行所有的笔记本。

所以在信号过程中,其自动化MLflow笔记本。

所以笔记本工作流程,这是你的原始定义的方式笔记本从另一个笔记本,所以这是一个赞美存在错误的命令笔记本或工作流的优势,它可以通过一组参数中定义的目标笔记本小部件,也可以返回一个值,你可以,你也可以使用其他笔记本(低语)条件。

当我们在演讲中提到,我们模块化整个ETL过程的每一步和建模过程分为不同的笔记本。然后我们同步所有的笔记本电脑运行在一个笔记本上。这是一个更有组织的方式,更容易调试和管理整个过程。所以笔记本或工作流的语法,这是一个非常简单,所以它叫dbutils.notebook.run第一个参数是笔记本的路径,你正试图运行。因此,第二个参数是在秒的时间,所以这个参数是控制时间的笔记本行,所以目标的笔记本行。所以你不想浪费资源来运行一个笔记本很长一段时间由于一些代码问题,这是浪费钱。最后一个参数是一个字典,所以它的参数传递到目标中定义小部件笔记本。

在这里我没有返回值,因为我们不使用它为任何返回值。让我们去目标笔记本看到女巫是如何定义和位置。这是第一个,选择条件数据。

因此,我们可以看到在这个笔记本,三个小部件定义。所以实际上有数据破坏提供了各种各样的小部件可以在网站上使用,这是一个很好的记录。所以,如果你想知道如何定义小部件检查文档。

所以这是一个最后一项我要展示的是Mlflow。

所以MLflow用来管理整个建模过程和模型。

目前我们只使用MLflow模型跟踪和还回电话模型进行预测。所以MLflow有更多的功能和它不断增长的。

所以要么(低语)模型,然后调用模型通过API。rest API,它也可以将模式部署到容器。这里我们只会使用,MLflow跟踪模型。当然为了使用MLflow,你需要安装包通常使用一些其他的包。

所以我们要做的第一件事,我们创建一个实验。这里我们指定实验和路径和名称。在工作区中也是如此。然后我们创建的实验,

(低语)和实验将显示在工作区中,在这里,transmission_exp_01。

所以创建实验后,我们可以看一下运行实验,这是语法记录,

指定的参数和运行进入实验。所以在这个应用程序中,我们记录所有的ETL参数,

我们也记录从额外的增加,超参数建模的部分。和四天的应用程序,我登录模型当然,也开启了混淆矩阵。还有一个功能,我也用于运行这个模型和重要性条形图的特性。

之后,所有的轮,有很多小部件的实验。让我们去做实验,看看我们解锁。所以双击,进入实验的主页。所以你可以看到这标志着日期,名称和经营运行,资源和所有的参数和矩阵。我的下一站点击其中一个,进入细节。

这里,正如你所看到的,并不是所有的参数和指标。我想告诉所有的工件我们解锁。首先叫XGB集群,这是模型(杂音),它有三个项目,ML模式,所以它基本上指定的所有模型信息和环境文件,它指定所有的包依赖率,我们用来运行模型。当然,模型本身是在拼花格式。

我们解开预处理模型,所以它是终端和我们也解开混淆矩阵作为一个图片,所以你可以下载图片或照片复制粘贴到你的报告,非常方便。我们解锁功能的重要性,柱状图,我们也到一个GSM文件解锁所有的特性。这将帮助我们复制模型,因为我们知道特性已经被使用。它非常方便。就是这样,这是我今天想分享,谢谢大家

看更多的火花+人工智能会话

免费试着砖
«回来
关于张呆立

哈里伯顿公司

我是一个高级技术顾问与哈里伯顿公司专注于预测维护和过程改进。在加入哈里伯顿之前,我曾在电厂预测性维护,通用电气和西门子燃气轮机仿真和建模了8年。我毕业于乔治亚理工学院航空航天工程博士学位和硕士学位的统计数据。

关于Varun Tyagi

哈里伯顿公司

Varun是哈里伯顿公司的技术顾问。在加入哈里伯顿之前,Varun TGS-Nopec地球物理公司工作了四年,CGG六年在休斯顿,地震数据处理和成像地球物理学家。他最后的角色在TGS作为清洁的建议地球物理学家和团队领导,处理,和分析大型三维地震数据集在墨西哥湾,加拿大,西非和巴西。他拥有电气工程的学士及以上学位和工程科学硕士学位,来自宾夕法尼亚州立大学。