使用多模型架構方法來調整機器學習模型
本文說明許多使用 Azure Machine Learning 和計算叢集的模型架構。 多模型架構針對需要複雜設定的情況提供多功能性。
架構
下載此架構的 Visio 檔案。
數據流
下列數據流對應至上圖:
數據擷取:
Azure Data Factory 會從源資料庫擷取數據,並將其複製到 Azure Data Lake Storage。
然後,數據會以表格式數據集的形式儲存在Machine Learning資料存放區中。
模型定型管線:
準備數據:
定型管線會從數據存放區擷取數據,並視需要加以轉換。
數據會分組為數據集來定型模型。
定型模型:
管線會訓練數據準備期間所建立之所有數據集的模型。
它會使用
ParallelRunStep
類別來平行定型多個模型。定型模型之後,管線會在MachineLearning中註冊模型及其測試計量。
模型升級管線:
評估模型:
升級管線會先評估定型的模型,再將其移至生產環境。
DevOps 管線會套用商業規則,以判斷模型是否符合部署準則。 例如,它可能會確認測試資料的正確性超過 80%。
快取器模型:
- 升級管線會將合格的模型註冊到生產Machine Learning工作區。
模型批次評分管線:
準備數據:
批次評分管線會從數據存放區擷取數據,並視需要轉換每個檔案。
數據會分組為數據集以進行評分。
分數模型:
管線會使用
ParallelRunStep
類別平行評分多個數據集。它會藉由搜尋模型卷標來識別Machine Learning 中每個數據集的適當模型。
模型會下載並用來為數據集評分。
DataTransferStep
類別會將結果寫回 Azure Data Lake。預測會從 Azure Data Lake 傳遞至 Synapse SQL 以提供服務。
受控在線端點提供即時評分。
由於大量模型,因此會視需要載入它們,而不是預先載入。
結果:
預測: 批次評分管線會將預測儲存至 Synapse SQL。
計量: Microsoft Power BI 會連線到模型預測,以擷取和匯總呈現結果。
元件
Azure Data Factory 是雲端式數據整合服務,可讓您建立數據驅動工作流程,以協調及自動化數據移動和轉換。 在此架構中,Azure Data Factory 會將企業數據和第三方元數據內嵌至 Data Lake Storage。
Azure DevOps 是一組開發人員服務,可提供完整的應用程式和基礎結構生命週期管理。 其中包含持續整合和持續傳遞 (CI/CD) 管線、工作追蹤、原始檔控制、建置管線、套件管理和測試解決方案的工具。 在此架構中,Azure DevOps 可用來管理 CI/CD 管線,以將模型升級、測試和部署自動化至生產環境。
Azure SQL Database 是完全受控的關係型雲端資料庫。 在此架構中,SQL Database 用來儲存結構化數據,這些數據可能會查詢或分析為數據管線的一部分。
Azure 串流分析 是一項即時分析和複雜的事件處理服務,其設計目的是分析和處理大量快速串流數據。 在此架構中,串流分析可用於實時數據處理。
Azure Synapse Analytics 是一種分析服務,可將資料整合、企業資料倉儲和巨量資料分析整合在一起。 此架構會用來儲存批次評分結果。 此方法可讓您有效率地查詢和擷取預測以進行報告或分析。 Synapse SQL 可用來為下游應用程式提供預測,並讓 Power BI 等視覺效果工具存取匯總的結果。
Data Lake Storage 是可大規模調整且安全的儲存服務,適用於高效能分析工作負載。 在此架構中,Data Lake Storage 會做為原始和已轉換數據集的主要儲存層,以及儲存評分管線的結果。
Machine Learning 是一項企業級機器學習服務,可快速建置和部署模型。 它提供所有技能層級的使用者,包括支援各種集成開發環境的工具,例如低程式碼設計工具、自動化機器學習,以及裝載的 Jupyter Notebook 環境。 在此架構中,Machine Learning 可用來管理模型的生命週期,包括定型、評估和部署。 它也協調管線的工作,例如訓練、升階和評分。
受控在線端點 是用於即時評分的Machine Learning功能。 在此架構中,受控在線端點可透過視需要載入機器學習模型,協助提供可調整且安全的預測方式,以近乎即時的方式提供預測。
ParallelRunStep 類別 是 Machine Learning 管線的元件,可用來有效率地執行平行作業。 它可讓您同時對批次工作進行可調整的處理,例如訓練或評分許多模型。 在此架構中,
ParallelRunStep
類別同時用於模型定型和批次評分管線,以平行方式定型或評分多個數據集或模型,這可大幅減少這些作業的運行時間。
Power BI 是軟體服務、應用程式和連接器的集合,可共同運作,將不相關的數據源轉換成一致的、可視化的沉浸式和互動式深入解析。 在此架構中,Power BI 會連線到 Synapse SQL,以透過互動式儀錶板擷取和呈現預測和匯總計量。
替代項目
您可以將任何資料庫用於源數據。
您可以使用 Azure Kubernetes Service (AKS) 進行即時推斷,而不是受控在線端點。 AKS 可讓您部署容器化模型,並提供更多部署控制權。 這些功能可讓模型的動態載入處理傳入要求,而不會耗用資源。
案例詳細資料
許多機器學習問題對於單一機器學習模型而言太複雜,無法解決。 無論是預測每個商店的每一個專案的銷售,還是針對數百個油井建立模型維護,每個實例都有模型可能會改善許多機器學習問題的結果。 這種 許多模型 模式在各種不同的產業中很常見,而且有許多真實世界的使用案例。 使用 Machine Learning 時,端對端許多模型管線可以包含模型定型、批次推斷部署和即時部署。
許多模型解決方案在定型和評分期間,每個模型都需要不同的數據集。 例如,如果工作是預測每個商店中每個項目的銷售額,則每個數據集都會對應至唯一的專案存放區組合。
潛在使用案例
零售: 雜貨店連鎖店需要為每個商店和專案建立個別的收入預測模型,每個商店總計超過1,000個模型。
供應鏈: 針對每個倉儲和產品群組,配送公司需要優化庫存。
餐廳: 擁有數千家專營權的連鎖店需要預測每個專營權的需求。
考量
這些考量能實作 Azure Well-Architected Framework 的支柱,這是一組指導原則,可以用來改善工作負載的品質。 如需詳細資訊,請參閱 Well-Architected Framework。
數據分割: 將數據分割成分割區,對於實作許多模型模式而言非常重要。 如果您想要每個存放區的一個模型,每個數據集都會包含單一存放區的所有數據,因此有和存放區一樣多的數據集。 如果您想要依市集建立產品模型,則產品與市集的每個組合都有數據集。 視源數據格式而定,可能很容易分割數據,或可能需要大量數據洗牌和轉換。 Spark 和 Synapse SQL 可妥善調整這些工作,而 Python pandas 則不會因為它在單一節點和進程上執行。
模型管理: 定型和評分管線會識別並叫用每個數據集的正確模型。 他們會藉由計算具有數據集特徵的標籤,然後使用標籤來尋找比對模型來執行此動作。 標記會識別數據分割索引鍵和模型版本,也可能提供其他資訊。
選擇正確的架構:
當您的定型管線具有複雜的數據轉換和群組需求時,Spark 就適合使用。 它提供彈性的分割和分組技術,以依特性的組合來分組數據,例如產品存放區或位置產品。 結果可以放在Spark DataFrame中,以供後續步驟使用。
如果您的機器學習定型和評分演算法很簡單,您可以使用scikit-learn等連結庫來分割數據。 在此案例中,您可能不需要 Spark,因此您可以避免安裝 Azure Synapse Analytics 或 Azure Databricks 時可能發生的複雜度。
如果您已建立定型數據集,例如儲存在個別的檔案中或組織成不同的數據列或數據行時,您就不需要Spark進行複雜的數據轉換。
Machine Learning 和計算叢集解決方案針對需要複雜設定的情況提供多功能性。 例如,您可以使用自定義 Docker 容器、下載檔案或下載預先定型的模型。 計算機視覺和自然語言處理深度學習是可能需要這種多功能性的應用程式範例。
個別模型存放庫: 若要保護已部署的模型,請考慮將它們儲存在定型和測試管線無法存取的自己的存放庫中。
ParallelRunStep 類別: Python ParallelRunStep 類別 是執行許多模型定型和推斷的強大選項。 它可以以各種方式分割您的數據,然後將機器學習腳本平行套用至數據分割的元素。 如同其他類型的機器學習訓練,您可以指定可存取 Python 套件索引 (PyPI) 套件的自定義定型環境,或更進階的自定義 Docker 環境,以取得比標準 PyPI 還要多的組態。 有許多 CPU 和 GPU 可供選擇。
Online 推斷: 如果管線從頭載入並快取所有模型,模型可能會耗盡容器的記憶體。 因此,即使模型可能會稍微增加延遲,仍會在 run 方法中視需要載入模型。
成本最佳化
成本優化著重於減少不必要的費用,並提升營運效率的方式。 如需詳細資訊,請參閱成本最佳化的設計檢閱檢查清單。
若要進一步瞭解在 Azure 上執行此案例的成本,請使用 定價計算機。 您應該假設:
服務模型會每天定型,以保持其最新狀態。
您需要大約 30 分鐘來處理數據集,其中包含 10000 萬個唯一商店產品群組的 4000 萬個數據列。 數據集會使用布建的叢集來定型 Azure Databricks,該叢集具有使用 Ls16_v2 實例的 12 部虛擬機(VM)。 批次評分與相同數據集大約需要 20 分鐘。
您可以使用 機器學習 來部署即時推斷。 根據您的要求磁碟區,選擇適當的 VM 和叢集大小類型。
AKS 叢集會視需要自動調整,這會導致每個月平均有兩個作用中節點。
若要查看您的使用案例定價有何差異,請變更定價計算機中的變數,以符合您預期的數據大小和提供負載需求。 針對較大或較小的定型數據大小,請增加或減少 Azure Databricks 叢集的大小。 若要在模型服務期間處理更多並行使用者,請增加 AKS 叢集大小。
參與者
本文由 Microsoft 維護。 下列參與者撰寫本文。
主要作者:
- James Nguyen | 首席雲端解決方案架構師
若要查看非公開的 LinkedIn 個人檔案,請登入 LinkedIn。
下一步
- 設定 Machine Learning 的 Kubernetes 叢集
- 許多模型解決方案加速器 GitHub 存放庫
- ParallelRunStep 類別
- DataTransferStep 類別
- 建立資料存放區
- 什麼是 Azure Synapse Analytics?
- 將模型部署到 AKS 叢集