Azure 上 Python 模型的批次評分

Azure Container Registry
Azure 事件中樞
Azure Machine Learning
Azure SQL Database
Azure 串流分析

此架構指南示範如何為 Azure 機器學習 批次評分模型建置可調整的解決方案。 解決方案可以做為範本使用,而且可以一般化為不同的問題。

架構

顯示 Azure 上 Python 模型的批次評分架構圖表

下載此架構的 Visio 檔案

工作流程

此架構指南適用於串流和靜態數據,前提是擷取程式已調整為數據類型。 下列步驟和元件描述這兩種數據類型的擷取。

串流數據:

  1. 串流數據源自IoT感測器,其中新事件會以頻繁的間隔串流。
  2. 傳入串流事件會使用 Azure 事件中樞 排入佇列,然後使用 Azure 串流分析預先處理。
    • Azure 事件中樞。 此訊息擷取服務每秒可以擷取數百萬個事件訊息。 在此架構中,感測器會將數據流傳送至事件中樞。
    • Azure 串流分析。 事件處理引擎。 串流分析作業會從事件中樞讀取數據流,並執行串流處理。

靜態數據:

  1. 靜態數據集可以儲存為 Azure Data Lake 儲存體 中的檔案,或在 Azure SynapseAzure SQL 資料庫 的表格式表單中儲存。
  2. Azure Data Factory 可用來匯總或預先處理預存數據集。

在數據擷取之後,其餘架構會同時等於串流和靜態數據,並包含下列步驟和元件:

  1. 擷取、匯總或預先處理的數據可以儲存為 Azure Data Lake 儲存體 或 AzureSQL 資料庫 中的表格式格式的檔。 Azure 機器學習 接著會取用此數據。
  2. Azure 機器學習 用於大規模定型、部署和管理機器學習模型。 在批次評分的內容中,Azure 機器學習 會建立具有自動調整選項的虛擬機叢集,其中作業會以 Python 腳本的平行方式執行。
  3. 模型會部署為 受控 Batch 端點,然後用來在一段時間內對大量數據進行批次推斷。 批次端點會接收資料的指標,並以非同步方式執行作業,以在計算叢集上平行處理資料。
  4. 推斷結果可以儲存為 Azure Data Lake 儲存體 中的檔,或以 Azure SynapseAzure SQL 資料庫 的表格式形式儲存。
  5. 可視化:儲存的模型結果可以透過使用者介面來取用,例如Power BI儀錶板,或透過自定義建置的Web應用程式。

元件

考量

這些考量能實作 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 維護。 原始投稿人如下。

主要作者:

若要查看非公開的 LinkedIn 設定檔,請登入 LinkedIn。

下一步

產品檔案:

Microsoft Learn 課程模組: