教學課程:使用 Azure Machine Learning 和 IoT Edge 的端對端解決方案

適用於:yes 圖示IoT Edge 1.1

重要

IoT Edge 1.1終止支援日期為 2022 年 12 月 13 日。 如需此產品、服務、技術或 API 的支援資訊,請參閱 Microsoft 產品生命週期。 如需更新至最新版本IoT Edge的詳細資訊,請參閱更新IoT Edge

通常,IoT 應用程式希望利用智慧雲端與智慧邊緣。 在此教學課程中,我們將引導您完成使用從雲端中的 IoT 裝置收集的資料將機器學習模型定型、將該模型部署到 IoT Edge,以及定期維護和精簡模型。

注意

本教學課程集中的概念適用于所有版本的IoT Edge,但您建立來試用案例的範例裝置IoT Edge 1.1 版執行。

此教學課程的主要目的是介紹使用機器學習處理 IoT 資料,特別是在邊緣上。 雖然我們涉及一般機器學習工作流程的許多層面,但此教學課程並不打算深入介紹機器學習。 就案例而言,我們不會嘗試為使用案例建立高度優化的模型 - 我們剛好足以說明如何建立和使用適用于 IoT 資料處理的可行模型。

本教學課程的這一節將討論:

  • 完成本教學課程後續部分的必要條件。
  • 教學課程的目標對象。
  • 教學課程所模擬的使用案例。
  • 本教學課程為滿足使用案例而遵循的整體程序。

如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶

必要條件

若要完成此教學課程,您需要可在其中建立資源之 Azure 訂用帳戶的存取權。 此教學課程中使用的一些服務將產生 Azure 費用。 如果您還沒有 Azure 訂用帳戶,則可以開始使用 Azure 免費帳戶

您還需要一部已安裝 PowerShell 的電腦,您可以在其中執行指令碼以將 Azure 虛擬機器設定為開發電腦。

在此文件中,我們使用下列工具組︰

  • 用於資料擷取的 Azure IoT 中樞

  • Azure Notebooks 作為資料準備和機器學習實驗的主要前端。 在範例資料子集的筆記本中執行 Python 程式碼,是一個在資料準備期間快速反復和互動式回合的絕佳方式。 Jupyter Notebooks 還可用於準備指令碼以在計算後端中大規模執行。

  • Azure Machine Learning 作為大規模機器學習和機器學習映像產生的後端。 我們使用在 Jupyter Notebooks 中備妥且經過測試的指令碼來驅動 Azure Machine Learning 後端。

  • Azure IoT Edge,用於機器學習映像的離線應用程式

很明顯地,還有其他可用的選項。 例如,在某些情況下,IoT Central 可作為無程式碼替代方案使用,以從 IoT 裝置擷取初始定型資料。

目標對象和角色

這一系列文章適用於先前沒有 IoT 開發或機器學習經驗的開發人員。 在邊緣部署機器學習需要了解如何連接各種技術。 因此,此教學課程中涵蓋整個端對端情節,以示範將這些技術一起用於 IoT 解決方案的一種方法。 在真實世界的環境中,這些工作可能會在具有不同專業的幾個人之間分配。 例如,開發人員將著重於裝置或雲端程式碼,而資料科學家則設計分析模型。 若要使個別的開發人員能夠成功完成此教學課程,我們提供了補充指引,其中包含了解更多資訊的見解與連結,我們希望這些資訊足以讓您了解正在完成的工作以及原因。

或者,您可以與不同角色的同事合作,以共同學習此教學課程、充分發揮您的專業知識,並以團隊的方式學習如何彼此合作。

在任一情況下,為了協助引導讀者,此教學課程中的每篇文章都會指示使用者的角色。 那些角色包括:

  • 雲端開發 (包括使用 DevOps 容量的雲端開發人員)
  • 資料分析

使用案例:預測性維護

我們會將此情節以 2008 年設備故障預診斷與健康管理技術會議 (PHM08) 上提出的使用案例為基礎。 目標是預測一組渦輪風扇飛機引擎的剩餘使用年限 (RUL)。 這項資料是使用商業版 MAPSS (Modular Aero-Propulsion System Simulation) 軟體 C-MAPSS 所產生的。 本軟體提供靈活的渦輪風扇引擎模擬環境,可方便地模擬健康情況、控制項和引擎參數。

此教學課程中使用的資料取自渦輪風扇引擎退化模擬資料集 \(英文\)。

讀我檔案:

實驗案例

資料集是由多個多變數時間序列所組成。 每個資料集都會進一步分割為定型和測試子集。 每個時間序列都是來自不同的引擎,亦即,資料可視為來自相同類型的引擎團隊。 每個引擎在啟動時都具有不同程度的初始損耗和一些使用者不知道的獨特製造變化。 這種損耗及變化被認為是正常的,也就是不會將它視為錯誤狀況。 有三種操作設定會對引擎效能產生重大影響。 這些設定也包含在資料中。 資料會受到感應器雜訊的干擾。

引擎會在每個時間序列的開頭正常運作,並在序列期間的某個時刻發生故障。 在定型集合中,故障會慢慢擴大,直到系統失敗。 在測試集合中,時間序列會在系統故障之前的某個時間結束。 競賽的目的是要預測測試集合中故障之前的剩餘操作循環次數,亦即,在引擎將繼續運作的最後一個循環之後的操作循環次數。 還為測試資料提供了真實剩餘使用年限 (RUL) 值的向量。

因為資料是針對競賽發佈的,因此已經獨立發佈衍生機器學習模型的幾種方法。 我們發現,研究範例有助於了解建立特定機器學習模型所涉及的程序和推論。 例如,請參閱︰

GitHub 使用者 jancervenka 的飛機引擎故障預測模型 \(英文\)。

GitHub 使用者 hankroark 的渦輪風扇引擎退化 \(英文\)。

Process

下圖說明我們會在此教學課程中遵循的概略步驟:

流程步驟的架構圖

  1. 收集訓練資料:該流程從收集定型資料開始。 在某些情況下,資料已經收集並且可在資料庫中 (或以資料檔案的形式) 取得。 在其他情況下 (特別是針對 IoT 情節),需要從 IoT 裝置與感應器收集資料並儲存在雲端中。

    我們假設您沒有渦輪風扇引擎的集合,因此專案檔包含簡單的裝置模擬器,可將NASA 裝置資料傳送至雲端。

  2. 準備資料。 在大部分情況下,從裝置和感應器收集的未經處理資料將需要機器學習的準備。 此步驟可能涉及資料清理、資料重新格式化或前置處理,以注入機器學習可以關閉的其他資訊。

    針對我們飛機引擎的機器資料,資料準備涉及根據對資料的實際觀察結果,計算範例中每個資料點的明確故障時間。 這項資訊允許機器學習演算法尋找實際感應器資料模式與引擎的剩餘存留時間之間的相關性。 這是高度網域特定步驟。

  3. 建置機器學習模型。 根據已備妥的資料,我們現在可以嘗試不同的機器學習演算法和參數化來定型模型,並比較彼此的結果。

    在此案例中,我們會比較模型計算的預測結果與在一組引擎上觀察到的實際結果,以進行測試。 在 Azure Machine Learning 中,我們可以管理我們在模型登錄中所建立之模型的不同反覆項目。

  4. 部署模型。 一旦我們擁有符合成功準則的模型,我們就可以移至部署。 這涉及將模型包裝到 Web 服務應用程式中,該應用程式可以使用 REST 呼叫並傳回分析結果來提供資料。 然後將 Web 服務應用程式封裝到 docker 容器中,該容器又可以部署在雲端中或作為 IoT Edge 模組進行部署。 在此範例中,我們會著重在 IoT Edge 部署。

  5. 維護並精簡模型。 部署模型後,我們的工作尚未完成。 在許多情況下,我們希望繼續收集資料,並將資料定期上傳至雲端。 然後我們可以使用這些資料來重新定型及改善我們的模型,然後我們可以將其重新部署到 IoT Edge。

清除資源

本教學課程是集合的一部分,其中每篇文章都會以上一篇文章中所完成的工作為基礎。 請等到您完成最後一個教學課程後,再清除任何資源。

後續步驟

此教學課程分成以下各節:

  1. 設定您的開發電腦和 Azure 服務。
  2. 產生機器學習模組的定型資料。
  3. 定型和部署機器學習模組。
  4. 設定 IoT Edge 裝置作為透明閘道。
  5. 建立和部署 IoT Edge 模組。
  6. 將資料傳送至您的 IoT Edge 裝置。

前往下一篇文章,以設定開發電腦並佈建 Azure 資源。