編輯

共用方式為


使用 Azure Machine Learning 進行大規模機器學習的許多模型

Azure Data Factory
Azure Data Lake
Azure Databricks
Azure Machine Learning
Azure Synapse Analytics

本文說明許多使用 機器學習 和計算叢集的模型架構。 它針對需要複雜設定的情況提供絕佳的多功能性。

隨附文章: 使用 Spark 大規模在 Azure 中使用許多模型機器學習服務,會在 Azure Databricks 或 Azure Synapse Analytics 中使用 Apache Spark。

架構

Azure 上的許多模型機器學習架構圖表,具有 Azure 機器學習。

下載此架構的 Visio 檔案

工作流程

  1. 數據擷取:

    • Azure Data Factory 會從源資料庫提取數據,並將其複製到 Azure Data Lake Storage。
    • 然後,數據會以表格式數據集的形式儲存在Machine Learning資料存放區中。
  2. Model-Training 管線:

    1. 準備數據:
      • 定型管線會從數據存放區提取數據,並視需要進一步轉換數據。
      • 數據會分組為數據集來定型模型。
    2. 定型模型:
      • 管線會訓練數據準備期間所建立之所有數據集的模型。
      • 它會使用 ParallelRunStep 類別來平行定型多個模型。
      • 定型之後,管線會在Machine Learning中註冊模型及其測試計量。
  3. Model-Promotion 管線:

    1. 評估模型:
      • 升級管線會先評估定型的模型,再將其移至生產環境。
      • DevOps 管線會套用商業規則來判斷模型是否符合部署準則(例如,檢查測試數據的正確性超過 80%)。
    2. 快取器模型:
      • 升級管線會將合格的模型註冊到生產Machine Learning工作區。
  4. 模型 Batch-Scoring 管線:

    1. 準備數據:
      • 批次評分管線會從數據存放區提取數據,並視需要進一步轉換每個檔案。
      • 數據會分組為數據集以進行評分。
    2. 評分模型:
      • 管線會使用 ParallelRunStep 類別平行評分多個數據集。
      • 它會藉由搜尋模型卷標來識別Machine Learning 中每個數據集的適當模型。
      • 模型會下載並用來為數據集評分。
      • DataTransferStep 類別可用來將結果寫回 Azure Data Lake。
      • 然後,預測會從 Azure Data Lake 傳遞至 Synapse SQL 以提供服務。
  5. Real-Time 評分:

    • 受控在線端點可用來提供即時評分。
    • 由於大量模型,因此會視需要載入它們,而不是預先載入。
  6. 結果:

    1. 預測: 批次評分管線會將預測儲存至 Synapse SQL。
    2. 計量: Power BI 會連線到模型預測,以擷取和匯總呈現結果。

元件

  • Azure Data Factory 是雲端式數據整合服務,可讓您建立數據驅動工作流程,以協調及自動化數據移動和轉換。 在此架構中,Azure Data Factory 可用來將企業數據和第三方元數據內嵌至 Azure Data Lake Storage。

  • Azure 串流分析 是一項即時分析和複雜的事件處理服務,其設計目的是分析和處理大量快速串流數據。 在此架構中,Azure 串流分析可能會用於即時數據處理,不過工作流程中並未明確顯示。

  • Azure Machine Learning 是企業級機器學習服務,可快速建置和部署模型。 它為使用者提供所有技能層級的工具,例如低程式代碼設計工具、自動化 ML(AutoML),以及支援各種 IDE 的託管 Jupyter Notebook 環境。 在此架構中,Azure Machine Learning 可用來管理機器學習模型的生命週期,包括定型、評估、部署及協調管線,例如定型、升階和評分。

    受控在線端點 是用於即時評分的 Azure Machine Learning 功能。 在此架構中,它會視需要載入機器學習模型,提供可調整且安全的方法來提供近乎即時的預測。

  • ParallelRunStep 是 Azure Machine Learning 管線的元件,可用來有效率地執行平行作業。 它可同時啟用可調整的批處理執行,例如定型或評分許多模型。 在此架構中,ParallelRunStep 用於模型定型和批次評分管線,以平行方式定型或評分多個數據集或模型,大幅減少這些作業的運行時間。

  • Azure Data Lake Storage 是可大規模調整且安全的儲存服務,適用於高效能分析工作負載。 在此架構中,Azure Data Lake Storage 可作為原始和已轉換數據集的主要儲存層,以及儲存評分管線的結果。

  • Azure Synapse Analytics 是一種分析服務,可將資料整合、企業資料倉儲和巨量資料分析整合在一起。 此架構會用於儲存批次評分結果,以便有效率地查詢和擷取預測以進行報告或分析。 Synapse SQL 特別用來為下游應用程式提供預測,並讓 Power BI 等視覺效果工具存取匯總的結果。

  • Azure SQL Database 是完全受控的關係資料庫即服務。 在此架構中,Azure SQL Database 可用來儲存結構化數據,這些數據可能會查詢或分析為數據管線的一部分。

  • Azure DevOps 是一組開發人員服務,可提供完整的應用程式和基礎結構生命週期管理。 其中包含工作追蹤、原始檔控制、建置和 CI/CD、套件管理和測試解決方案的工具。 在此架構中,Azure DevOps 可用來管理 CI/CD 管線,以將模型升級、測試和部署自動化至生產環境。

  • Microsoft Power BI 是軟體服務、應用程式和連接器的集合,這些元件可共同運作並將不相關的資料來源轉換成一致、融入視覺及互動的深入解析。 在此架構中,Power BI 會連線到 Synapse SQL,以透過互動式儀錶板擷取和呈現預測和匯總計量。

替代項目

  • 源數據可以來自任何資料庫。
  • 您可以使用 Azure Kubernetes Service (AKS) 進行即時推斷,而不是受控在線端點。 AKS 允許部署容器化模型,並提供更多部署控制權,讓模型的動態載入處理傳入要求,而不需要耗盡資源。

案例詳細資料

許多機器學習問題對於單一機器學習模型而言太複雜,無法解決。 無論是預測每個商店每個項目的銷售額,還是將數百個油井的維護模型化,每個實例都有模型可能會改善許多機器學習問題的結果。 這種 許多模型 模式在各種不同的產業中很常見,而且有許多真實世界的使用案例。 使用 Azure 機器學習 時,端對端許多模型管線可以包含模型定型、批次推斷部署和即時部署。

許多模型解決方案在定型和評分期間,每個模型都需要不同的數據集。 例如,如果工作是預測每個商店每個項目的銷售額,則每個數據集都會針對唯一的專案存放區組合。

潛在使用案例

  • 零售: 雜貨店連鎖店需要為每個商店和專案建立個別的收入預測模型,每個商店總計超過1,000個模型。
  • 供應鏈: 針對每個倉儲和產品群組,配送公司需要優化庫存。
  • 餐館: 擁有數千家專營權的連鎖店需要預測每個店的需求。

考量

這些考量能實作 Azure Well-Architected Framework 的支柱,其為一組指導原則,可以用來改善工作負載的品質。 如需更多資訊,請參閱 Microsoft Azure 結構完善的架構

  • 數據分割 分割數據是實作許多模型模式的關鍵。 如果您想要每個存放區一個模型,數據集會包含一個存放區的所有數據,而且有與存放區一樣多的數據集。 如果您想要依市集建立產品模型,每個產品與市集組合都會有數據集。 視源數據格式而定,可能很容易分割數據,或可能需要大量數據洗牌和轉換。 Spark 和 Synapse SQL 非常適用於這類工作,而 Python pandas 則不會,因為它只會在一個節點和進程上執行。
  • 模型管理: 定型和評分管線會識別並叫用每個數據集的正確模型。 若要這樣做,他們會計算描述數據集特徵的標記,然後使用標記來尋找比對模型。 標記會識別數據分割索引鍵和模型版本,也可能提供其他資訊。
  • 選擇正確的架構:
    • 當您的定型管線具有複雜的數據轉換和群組需求時,Spark 就適合使用。 它提供彈性的分割和分組技術,以依特性的組合來分組數據,例如產品存放區或位置產品。 結果可以放在Spark DataFrame中,以供後續步驟使用。
    • 當您的機器學習定型和評分演算法相當簡單時,您可以使用scikit-learn 之類的連結庫來分割數據。 在這種情況下,您可能不需要 Spark,因此您可以避免安裝 Azure Synapse 或 Azure Databricks 時可能發生的複雜度。
    • 建立定型數據集時,例如,它們位於個別的檔案或個別的數據列或數據行中,您不需要Spark來進行複雜的數據轉換。
    • 機器學習 和計算叢集解決方案針對需要複雜設定的情況,提供絕佳的多功能性。 例如,您可以使用自定義 Docker 容器,或下載檔案,或下載預先定型的模型。 計算機視覺和自然語言處理 (NLP) 深度學習是可能需要這種多功能性的應用程式範例。
  • 個別的模型存放庫: 若要保護已部署的模型,請考慮將它們儲存在定型和測試管線未觸及的自己的存放庫中。
  • ParallelRunStep 類別: Python ParallelRunStep 類別 是執行許多模型定型和推斷的強大選項。 它可以以各種方式分割您的數據,然後將機器學習腳本平行套用至數據分割的元素。 如同其他類型的 機器學習 定型,您可以指定具有 Python 套件索引 (PyPI) 套件存取權的自定義定型環境,或更進階的自定義 Docker 環境,以用於需要超過標準 PyPI 的設定。 有許多 CPU 和 GPU 可供選擇。
  • 在線推斷: 如果管線在開始時載入並快取所有模型,模型可能會耗盡容器的記憶體。 因此,即使模型可能會稍微增加延遲,仍會在 run 方法中視需要載入模型。

成本最佳化

成本最佳化是關於考慮如何減少不必要的費用,並提升營運效率。 如需詳細資訊,請參閱成本最佳化的設計檢閱檢查清單

若要進一步瞭解在 Azure 上執行此案例的成本,請使用 定價計算機。 良好的開始假設如下:

  • 服務模型會每天定型,以保持其最新狀態。
  • 針對 4000 萬個數據列與 1 萬個存放區和產品群組的數據集,使用布建的叢集進行 Azure Databricks 訓練,該叢集具有 12 個使用Ls16_v2實例的 VM,大約需要 30 分鐘的時間。
  • 批次評分與相同數據集大約需要 20 分鐘。
  • 您可以使用 機器學習 來部署即時推斷。 根據您的要求磁碟區,選擇適當的 VM 類型和叢集大小。
  • AKS 叢集會視需要自動調整,導致每個月有兩個節點平均作用中。

若要查看使用案例的定價差異,請變更變數以符合您預期的數據大小及提供負載需求。 針對較大或較小的定型數據大小,請增加或減少 Azure Databricks 叢集的大小。 若要在模型服務期間處理更多並行使用者,請增加 AKS 叢集大小。

參與者

本文由 Microsoft 維護。 原始投稿人如下。

主要作者:

下一步