對於每個鑽井現場,有成千上萬的不同的設備操作同時24/7。石油天然氣行業,停機時間可以每天花費數百萬美元。作為當前的標準實踐,大部分的設備與備用計劃維修單位,以減少停機時間。定期維護將每個設備同樣簡單的指標,比如日曆時間或操作時間。使用機器學習模型準確地預測設備故障時間可以幫助業務進度預測維護相應減少停機時間和維護成本。我們有巨大的時間序列數據集和維護記錄在係統中,但他們與低質量不一致。我們有一個特定的挑戰是數據不是連續的,我們需要經過整個數據集找到數據是連續在一些指定的窗口。轉換的數據不同的時間窗口也提供了一個挑戰:如何快速選擇優化窗口大小的選擇和執行並行轉換?數據轉換如傅裏葉變換或小波變換費時,我們必須並行化操作。我們采用火花dataframes磚為我們計算。
下麵是我們的兩個主要步驟進行高效的分布式計算我們的數據轉換:
——嗨,每個人,感謝參加這次會議,我叫Varun Tyagi,我和我的隊友在一起呆立。我們在哈裏伯頓數據科學家,這是一個石油和天然氣服務公司,位於休斯頓,德克薩斯州。
今天我們要談談我們如何有效地利用磚幫助建立機器學習模型預測維護。在我們進入主題之前,我們首先想介紹一下我們的團隊。
我們一個部門叫哈裏伯頓數碼解決方案的一部分。ATS的主要功能是支持和鞏固數字轉換所有產品服務線,我們稱之為psl。所以在哈裏伯頓公司,我們有大約14 psl,不同鑽井固井,健康和安全,並完成。和我們的數字解決方案集團為數據倉庫提供公共平台和架構和治理分析發展,商業智能報告。Beplay体育安卓版本我們簡化和整合各種流程,所有產品服務線。我們還提供和建立一個強大的人才管道或軟件和數字在每個PSL發展。
達利和我,都在在HPS數據科學團隊。所以我們的角色發展分析和機器學習模型來提高運作效率,增加生產正常運行時間,降低運營成本,並提供見解在正確的時間正確的人來幫助他們做出業務級別的決定。
所以在哈裏伯頓,我們遵循的基本分析開發生命周期與特定於我們的用例的一些變化。我們有成千上萬的世界各地的鑽井平台,每個平台都包含很多的工具,放棄與各種傳感器實時收集信息。我們也有大量的數據存儲在SAP和其他SQL數據庫。,多年來,我們收集了pb的數據在不同的文件格式,比如pdf, csp,然後拚花格式。對於每個項目,我們首次發現不同數據源,然後收集和數據集成到同一平台。Beplay体育安卓版本一旦我們吞下數據,我們花大部分時間清潔,聚合和轉換數據。然後,我們工程在領域專家的幫助下執行功能。然後我們訓練和測試模型和基於不同指標選擇模型。但是大部分時間所選擇的指標,這樣他們直接相關的經濟影響。然後我們部署模型和結果展示給相關人員。 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是哈裏伯頓公司的技術顧問。在加入哈裏伯頓之前,Varun TGS-Nopec地球物理公司工作了四年,CGG六年在休斯頓,地震數據處理和成像地球物理學家。他最後的角色在TGS作為清潔的建議地球物理學家和團隊領導,處理,和分析大型三維地震數據集在墨西哥灣,加拿大,西非和巴西。他擁有電氣工程的學士及以上學位和工程科學碩士學位,來自賓夕法尼亞州立大學。