此架構指南示範如何為 Azure 機器學習 批次評分模型建置可調整的解決方案。 解決方案可以做為範本使用,而且可以一般化為不同的問題。
架構
工作流程
此架構指南適用於串流和靜態數據,前提是擷取程式已調整為數據類型。 下列步驟和元件描述這兩種數據類型的擷取。
串流數據:
- 串流數據源自IoT感測器,其中新事件會以頻繁的間隔串流。
- 傳入串流事件會使用 Azure 事件中樞 排入佇列,然後使用 Azure 串流分析預先處理。
- Azure 事件中樞。 此訊息擷取服務每秒可以擷取數百萬個事件訊息。 在此架構中,感測器會將數據流傳送至事件中樞。
- Azure 串流分析。 事件處理引擎。 串流分析作業會從事件中樞讀取數據流,並執行串流處理。
靜態數據:
- 靜態數據集可以儲存為 Azure Data Lake 儲存體 中的檔案,或在 Azure Synapse 或 Azure SQL 資料庫 的表格式表單中儲存。
- Azure Data Factory 可用來匯總或預先處理預存數據集。
在數據擷取之後,其餘架構會同時等於串流和靜態數據,並包含下列步驟和元件:
- 擷取、匯總或預先處理的數據可以儲存為 Azure Data Lake 儲存體 或 AzureSQL 資料庫 中的表格式格式的檔。 Azure 機器學習 接著會取用此數據。
- Azure 機器學習 用於大規模定型、部署和管理機器學習模型。 在批次評分的內容中,Azure 機器學習 會建立具有自動調整選項的虛擬機叢集,其中作業會以 Python 腳本的平行方式執行。
- 模型會部署為 受控 Batch 端點,然後用來在一段時間內對大量數據進行批次推斷。 批次端點會接收資料的指標,並以非同步方式執行作業,以在計算叢集上平行處理資料。
- 推斷結果可以儲存為 Azure Data Lake 儲存體 中的檔,或以 Azure Synapse 或 Azure SQL 資料庫 的表格式形式儲存。
- 可視化:儲存的模型結果可以透過使用者介面來取用,例如Power BI儀錶板,或透過自定義建置的Web應用程式。
元件
- Azure 事件中樞
- Azure 串流分析
- Azure SQL Database
- Azure Synapse Analytics
- Azure Data Lake 儲存體
- Azure Data Factory
- Azure Machine Learning
- Azure 機器學習 端點
- Azure 上的 Microsoft Power BI
- Azure Web Apps
考量
這些考量能實作 Azure Well-Architected Framework 的要素,其為一組指導原則,可以用來改善工作負載的品質。 如需詳細資訊,請參閱 Microsoft Azure Well-Architected Framework (部分機器翻譯)。
效能
對於標準 Python 模型,通常已接受 CPU 足以處理工作負載。 此架構使用 CPU。 不過,對於 深度學習工作負載,圖形處理單位(GPU)通常會以相當多的方式超過CPU;通常需要大量的CPU叢集,才能取得可比較的效能。
跨 VM 與核心平行處理
當您以批次模式執行許多模型的評分程式時,必須跨 VM 平行處理作業。 有兩種方法是可能的:
- 使用低成本的 VM 建立較大的叢集。
- 使用高效能的 VM 建立較小的叢集,並在每個 VM 上使用更多核心。
一般而言,標準 Python 模型的評分不如深度學習模型的評分要求,而小型叢集應該能夠有效率地處理大量佇列模型。 當數據集大小增加時,您可以增加叢集節點數目。
為了方便起見,單一 Azure 機器學習 管線步驟中會提交一個評分工作。 不過,在相同的管線步驟中為多個數據區塊評分可能會更有效率。 在這些情況下,撰寫自定義程式代碼以讀取多個數據集,並在單一步驟執行期間執行評分腳本。
管理
- 監視作業。 請務必監視執行作業的進度。 不過,監視作用中節點叢集可能是一項挑戰。 若要檢查叢集中節點的狀態,請使用 Azure 入口網站 來管理 機器學習 工作區。 如果節點處於非使用中狀態或作業失敗,錯誤記錄會儲存至 Blob 記憶體,而且也可以在 [管線] 區段中存取。 如需更豐富的監視,請將記錄連線至 Application Insights,或執行個別進程來輪詢叢集及其作業的狀態。
- 記錄。 機器學習 會將所有 stdout/stderr 記錄到相關聯的 Azure 儲存體 帳戶。 若要輕鬆檢視記錄檔,請使用記憶體導覽工具,例如 Azure 儲存體 總管。
成本最佳化
成本最佳化是關於考慮如何減少不必要的費用,並提升營運效率。 如需詳細資訊,請參閱成本最佳化要素的概觀。
此架構指南中使用的最昂貴元件是計算資源。 計算叢集大小會根據佇列中的作業相應增加和減少。 藉由修改計算的布建組態, 以程式設計方式透過 Python SDK 啟用自動調整。 或者,使用 Azure CLI 來設定叢集的自動調整參數。
針對不需要立即處理的工作,請設定自動調整公式,讓默認狀態(最小值)是零節點的叢集。 使用此設定時,叢集會以零節點開頭,而且只會在偵測佇列中的作業時相應增加。 如果批次評分程式每天或更少發生幾次,此設定可大幅節省成本。
自動調整可能不適用於彼此太接近的批次作業。 由於叢集啟動和加速所需的時間會產生成本,因此,如果批次工作負載在上一個作業結束後的幾分鐘內開始,則讓叢集在作業之間執行可能更有成本效益。 此策略取決於評分程式是否排程為以高頻率執行(例如每小時,例如),或頻率較低(例如,每月一次,例如)。
參與者
本文由 Microsoft 維護。 原始投稿人如下。
主要作者:
- 卡洛斯·亞歷山大·桑托斯 |資深特製化 AI 雲端解決方案架構師
- Said Bleik |首席應用科學家經理
若要查看非公開的 LinkedIn 設定檔,請登入 LinkedIn。
下一步
產品檔案:
- 什麼是 Azure Blob 儲存體?
- Azure 中私人 Docker 容器登錄簡介
- Azure 事件中樞
- 什麼是 Azure Machine Learning 服務?
- 什麼是 Azure SQL Database?
- 歡迎使用 Azure 串流分析
Microsoft Learn 課程模組:
- 部署 Azure SQL 資料庫
- 使用 Azure 事件中樞 啟用巨量數據應用程式的可靠傳訊
- 探索 Azure 事件中樞
- 使用 Azure 串流分析實作數據串流解決方案
- 機器學習簡介
- 管理 Azure Container Registry 中的容器映像