適用於: 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 訂用帳戶,則可以開始使用 Azure 免費帳戶。
您也需要已安裝 PowerShell 的電腦,您可以在其中執行腳本,將 Azure 虛擬機設定為開發機器。
在本檔中,我們使用下列一組工具:
適用於數據擷取的 Azure IoT 中樞
Azure Notebooks 作為數據準備和機器學習測試的主要前端。 在筆記本內對範例數據的子集執行 Python 程式代碼,是在數據準備過程中獲得快速反覆及互動式成果的絕佳方法。 Jupyter Notebook 也可用來準備腳本,以在計算後端大規模執行。
Azure Machine Learning 作為大規模機器學習的後端,以及機器學習映像產生。 我們會使用在 Jupyter Notebook 中準備和測試的腳本來驅動 Azure Machine Learning 後端。
Azure IoT Edge 用於機器學習影像的非雲端應用
顯然,還有其他可用的選項。 例如,在某些情況下,IoT Central 可作為從IoT裝置擷取初始定型數據的無程式代碼替代方案。
目標受眾和角色
這組文章適用於沒有IoT開發或機器學習先前經驗的開發人員。 在邊緣部署機器學習需要瞭解如何連接各種技術的知識。 因此,本教學課程涵蓋整個端對端案例,以示範將這些技術聯結在一起的一種方式,以用於IoT解決方案。 在真實世界中,這些工作可能會分散在具有不同特製化的數個人之間。 例如,開發人員會專注於裝置或雲端程序代碼,而數據科學家則設計分析模型。 為了讓個別開發人員能夠順利完成本教學課程,我們已提供補充指引,並提供深入解析和詳細資訊鏈接,我們希望足以瞭解正在做什麼,以及原因。
或者,您可以與不同角色的同事合作,共同遵循教學課程,將完整的專業知識結合在一起,並學習團隊如何配合。
不論是哪一種情況,為了協助引導讀者,本教學課程中的每個文章都會指出使用者的角色。 這些角色包括:
- 雲端開發(包括擔任 DevOps 角色的雲端開發人員)
- 數據分析
使用案例:預測性維護
我們根據 2008 年預後與健康管理 (PHM08) 會議上提出的使用案例為基礎。 目標是預測一組渦輪風扇飛機發動機的剩餘壽命(RUL)。 這項數據是使用 C-MAPSS 產生的,這是 MAPSS 的商業版本(模組化 Aero-Propulsion 系統模擬)軟體。 此軟體提供彈性渦輪風扇引擎模擬環境,以方便模擬健康情況、控制和引擎參數。
本教學課程中使用的數據取自 Turbofan 引擎降低模擬數據集。
從自述檔:
實驗案例
數據集是由多個多變數時間序列所組成。 每個數據集會進一步分成定型和測試子集。 每個時間序列都是來自不同的引擎,也就是數據可以視為來自相同類型的引擎車隊。 每個引擎在初始磨損和製造變化程度上各不相同,但使用者無法知曉。 這種磨損和變化被認為是正常的,即它不被視為故障狀況。 有三個作設定對引擎效能有重大影響。 這些設定也會包含在數據中。 數據會受到感測器雜訊的污染。
引擎在每次時間序列開始時正常運作,並在序列過程中的某個時間點發生故障。 在訓練集中,故障會逐漸擴大,直到系統故障為止。 在測試集中,時間序列會在系統失敗之前提前結束。 競爭的目標是預測測試集故障前剩餘的作業週期數目,也就是引擎將繼續運作的最後一個周期之後的作業週期數目。 也為測試數據提供真實剩餘實用壽命 (RUL) 值的向量。
由於數據已針對競爭發佈,因此已獨立發佈數種衍生機器學習模型的方法。 我們發現,研究範例有助於瞭解建立特定機器學習模型的程式和推理。 如需範例,請參閱:
由 GitHub 使用者 jancervenka 提供的飛機引擎失敗預測模型。
GitHub 使用者 hankroark 的 Turbofan 引擎退化。
流程
下圖說明我們在本教學課程中遵循的粗略步驟:
收集訓練數據:這個過程從收集訓練數據開始。 在某些情況下,數據已收集並可在資料庫中使用,或以數據檔的形式提供。 在其他情況下,特別是針對IoT案例,數據必須從IoT裝置和感測器收集數據,並儲存在雲端中。
我們假設您沒有渦輪風扇引擎的集合,因此項目檔包含簡單的裝置模擬器,可將 NASA 裝置數據傳送至雲端。
準備數據。 在大部分情況下,從裝置和感測器收集的原始數據將需要準備機器學習。 此步驟可能牽涉到數據清理、數據重新整理格式或前置處理,以注入機器學習可以利用的額外資訊。
針對我們的飛機引擎機械數據,數據準備會根據實際觀察計算範例中每個數據點的明確故障時間。 這項資訊可讓機器學習演算法尋找實際感測器數據模式與引擎預期剩餘存留時間之間的相互關聯。 此步驟是高度領域特定的。
建置機器學習模型。 根據備妥的數據,我們現在可以試驗不同的機器學習演算法和參數化來定型模型,並將結果彼此比較。
在此情況下,為了進行測試,我們會比較模型所計算的預測結果與一組引擎上觀察到的實際結果。 在 Azure Machine Learning 中,我們可以在模型註冊表中管理我們所建立模型的不同版本。
部署模型。 一旦我們有符合成功準則的模型,就可以移至部署。 這牽涉到將模型包裝成 Web 服務應用程式,以使用 REST 呼叫將數據饋送並傳回分析結果。 接著,Web 服務應用程式會封裝成 Docker 容器,接著可以在雲端或 IoT Edge 模組中部署。 在此範例中,我們著重於部署至IoT Edge。
維護和精簡模型。 一旦部署模型,就不會完成我們的工作。 在許多情況下,我們想要繼續收集數據,並定期將數據上傳至雲端。 然後,我們可以使用此數據來重新定型和精簡模型,然後我們可以重新部署到IoT Edge。
清理資源
本教學課程是一組的一部分,其中每個文章都是以先前文章中完成的工作為基礎。 請等候清除任何資源,直到您完成最後一個教學課程為止。
後續步驟
本教學課程分為下列各節:
- 設定您的開發機器和 Azure 服務。
- 產生機器學習模組的定型數據。
- 定型和部署機器學習模組。
- 設定IoT Edge裝置作為透明閘道。
- 建立及部署IoT Edge模組。
- 將數據傳送至IoT Edge裝置。
請繼續進行下一篇文章,以設定開發機器並布建 Azure 資源。