編輯

共用方式為


使用 Azure Databricks 協調 MLOps

Azure Databricks

解決方案構想

本文說明解決方案概念。 您的雲端架構師可以使用本指南,協助視覺化此架構的一般實作的主要元件。 以本文為起點,設計符合您工作負載具體要求的完善解決方案。

本文提供使用 Azure Databricks 的機器學習作業 (MLOps) 架構和程式。 數據科學家和工程師可以使用此標準化程式,將機器學習模型和管線從開發移至生產環境。

此解決方案可以利用完整的自動化、持續監視和健全的共同作業,因此以MLOps成熟度層級4為目標。 此架構會 使用產生模型 方法的升級程序代碼,而不是 升級模型 方法。 產生模型方法的升級程式代碼著重於撰寫和管理產生機器學習模型的程序代碼。 本文中的建議包括自動化或手動程序的選項。

架構

此圖顯示使用 Azure Databricks for MLOps 的解決方案。

此圖表顯示此工作流程的12個步驟。 Lakehouse 生產數據區段包含數據表、功能數據表和 Lakehouse 數據表模型計量。 原始檔控制區段包含開發、預備和發行環境。 原始檔控制包括 Azure DevOps 和 GitHub。 在主要開發環境中,步驟 1 探勘數據分析會從數據表讀取數據。 步驟 2 模型定型會從數據表和功能數據表讀取數據。 步驟 3 會將程式代碼認可至原始檔控制中的開發環境。 步驟 4 會將要求合併至預備環境。 原始檔控制預備環境會在主要預備環境中觸發步驟 5 單元和 CI 測試,以從功能數據表和數據表讀取數據。 程式代碼會變更合併至原始檔控制預備環境。 步驟 6 會在發行環境中建置發行分支。 從發行環境指向主要生產環境的箭號,會顯示部署機器學習 Databricks 作業。 在主要生產環境中,步驟 7 功能數據表重新整理會從數據表讀取數據,並將數據傳送至功能數據表。 步驟 8 模型定型會從漂移偵測和模型重新定型讀取數據。 步驟 8 也會將模型推送至 Unity 目錄。 步驟 9 模型評估和升級會從 Unity 目錄載入模型以進行評估。 然後,它會將模型傳送至預備環境,然後在 Unity 目錄中生產環境。 步驟 10 模型部署會載入模型以推斷及從功能數據表讀取數據。 步驟 11 監視會從功能數據表讀取數據,並讀取 Lakehouse 數據表模型計量。 步驟 11 也會將數據寫入 Lakehouse 數據表和 Azure 監視器。 步驟 12 模型重新定型指向步驟 8 和箭號狀態觸發模型重新定型。

下載此架構的 Visio 檔案

工作流程

下列工作流程會對應至上圖。 使用原始檔控制和儲存元件來管理及組織程式代碼和數據。

原始檔控制:此專案的程式碼存放庫會組織筆記本、模組和管線。 您可以建立開發分支來測試更新和新模型。 在 Git 支援的筆記本或整合開發環境 (IDE) 中開發程式代碼,以與 Git 資料夾 整合,以便您可以與 Azure Databricks 工作區同步。 原始檔控制會從開發環境升級機器學習管線、在預備環境中進行測試,以及在生產環境中部署。

Lakehouse 生產數據: 身為數據科學家,您可以在開發環境中只讀存取生產數據。 開發環境可以有鏡像數據和修訂的機密數據。 在開發記憶體環境中,您也有開發和測試的讀取和寫入存取權。 建議您針對在 Azure Data Lake Storage 中儲存 Delta Lake 格式數據的數據使用 Lakehouse 架構。 Lakehouse 提供強固、可調整且彈性的解決方案來進行數據管理。 若要定義訪問控制,請使用 Microsoft Entra ID 認證傳遞數據表存取控制

下列環境包含主要工作流程。

部署

在開發環境中,您會開發機器學習管線。

  1. 執行探勘數據分析 (EDA): 在互動式反覆程式中探索數據。 您可能不會將此工作部署到預備或生產環境。 使用 Databricks SQLdbutils.data.summarize 命令和 Databricks AutoML 等工具。

  2. 開發模型定型和其他機器學習管線:開發機器學習管線模組化程序代碼,並透過 Databricks Notebooks 或 MLFlow 專案協調程式碼。 在此架構中,模型定型管線會從功能存放區和其他 Lakehouse 數據表讀取數據。 管線會將記錄模型參數和計量定型並調整為 MLflow 追蹤伺服器。 功能存放區 API記錄最終模型。 這些記錄包括模型、其輸入和定型程序代碼。

  3. 認可程式代碼: 若要將機器學習工作流程升階至生產環境,請將特徵化、定型和其他管線的程式代碼認可至原始檔控制。 在程式代碼基底中,將機器學習程式碼和作業程序代碼放在不同的資料夾中,讓小組成員可以同時開發程序代碼。 機器學習程式代碼是與模型和數據相關的程序代碼。 作業程式代碼是與 Databricks 作業和基礎結構相關的程式代碼。

撰寫和測試程式代碼時所執行的活動核心循環稱為 innerloop 程式。 若要執行開發階段的內部程式,請使用 Visual Studio Code 搭配開發容器 CLI 和 Databricks CLI。 您可以在本機撰寫程式代碼並執行單元測試。 您也應該從本機開發環境提交、監視和分析模型管線。

預備

在預備環境中,持續整合 (CI) 基礎結構會測試模擬生產環境中的機器學習管線變更。

  1. 合併要求:當您在原始檔控制中針對專案的預備(main) 分支提交合併要求或提取要求時,Azure DevOps 會執行測試等持續整合和持續傳遞 (CI/CD) 工具。

  2. 執行單元測試和 CI 測試: 在 CI 基礎結構中執行單元測試,並在 Azure Databricks 上的端對端 工作流程 中執行整合測試。 如果測試通過,程式碼會變更合併。

  3. 建置發行分支: 當您想要將更新的機器學習管線部署到生產環境時,您可以建置新版本。 CI/CD 工具中的部署管線會將更新的管線重新部署為新的 工作流程

實際執行環境

機器學習工程師會管理生產環境,其中機器學習管線會直接為終端應用程式提供服務。 生產重新整理功能表資料中的主要管線、定型和部署新模型、執行推斷或服務,以及監視模型效能。

  1. 功能數據表重新整理: 此管線會讀取數據、計算功能,以及寫入 功能存放區 數據表。 您可以將此管線設定為在串流模式中持續執行、依排程執行,或在觸發程式上執行。

  2. 模型定型: 在生產環境中,您可以設定模型定型或重新定型管線,以在觸發程式上執行,或排程來定型最新模型的最新生產數據。 模型會自動註冊至 Unity 目錄

  3. 模型評估和升級: 註冊新的模型版本時,CD 管線會觸發,其會執行測試,以確保模型在生產環境中執行良好。 當模型通過測試時,Unity 目錄會透過模型階段轉換追蹤其進度。 測試包括合規性檢查、A/B 測試,以比較新模型與目前的生產模型,以及基礎結構測試。 Lakehouse 數據表會記錄測試結果和計量。 在模型轉換為生產環境之前,您可以選擇性地要求手動註銷。

  4. 模型部署: 當模型進入生產環境時,其會部署以進行評分或服務。 最常見的部署模式包括:

    • 批次或串流評分: 對於分鐘或更長的延遲, 批次和串流 是最符合成本效益的選項。 評分管線會從功能存放區讀取最新的數據、從 Unity 目錄載入最新的生產模型版本,並在 Databricks 作業中執行推斷。 它可以將預測發佈至 Lakehouse 數據表、Java 資料庫連線能力 (JDBC) 連線、一般檔案、消息佇列或其他下游系統。

    • 在線服務 (REST API): 針對低延遲的使用案例,您通常需要在線服務。 MLflow 可以將模型 部署到馬賽克 AI 模型服務、雲端提供者服務系統和其他系統。 在所有情況下,服務系統都會使用 Unity 目錄的最新生產模型初始化。 針對每個要求,它會從在線功能存放區擷取功能,並進行預測。

  5. 監視: 連續或定期 工作流程 會監視漂移、效能和其他計量的輸入資料和模型預測。 您可以使用 Delta Live Tables 架構將管線的監視自動化,並將計量儲存在 Lakehouse 數據表中。 Databricks SQLPower BI 和其他工具可以從這些資料表讀取,以建立儀表板和警示。 若要監視應用程式計量、記錄和基礎結構,您也可以整合 Azure 監視器與 Azure Databricks。

  6. 漂移偵測和模型重新定型: 此架構同時支援手動和自動重新定型。 排程重新定型作業,讓模型保持最新狀態。 偵測到的漂移越過您在監視步驟中設定的預先設定閾值之後,重新定型管線會分析漂移並觸發重新定型。 您可以設定管線來自動觸發,或者您可以接收通知,然後手動執行管線。

元件

  • Data Lakehouse 架構會統一 Data Lake 和數據倉儲的元素。 使用 Lakehouse 取得通常位於數據倉儲中的數據管理和效能功能,但具有數據湖所提供的低成本彈性物件存放區。

    • Delta Lake 是 Lakehouse 的建議開放原始碼數據格式。 Azure Databricks 會將資料儲存在 Data Lake Storage 中,並提供高效能的查詢引擎。
  • MLflow 是一個用於管理端到端機器學習生命週期的開源專案。 MLflow 具有下列元件:

    • 追蹤 功能 會追蹤實驗,以便記錄和比較參數、計量和模型成品。

    • MLflow 模型 是一種格式,可用來將模型從任何機器學習連結庫儲存和部署至各種模型服務與推斷平臺。

    • Unity 目錄 提供 Azure Databricks 工作區的集中式訪問控制、稽核、譜系和數據探索功能。

    • 馬賽克 AI 模型服務 會將 MLflow 模型裝載為 REST 端點。

  • Azure Databricks 提供受控 MLflow 服務,其具有企業安全性功能、高可用性,以及與其他 Azure Databricks 工作區功能的整合。

    • 適用於 機器學習 的 Databricks Runtime 可自動建立已針對機器學習優化的叢集,並預安裝 TensorFlow、PyTorch 和 XGBoost 等熱門機器學習連結庫。 它也預安裝適用於 機器學習 工具的 Azure Databricks,例如 AutoML 和功能存放區用戶端。

    • 功能存放區是功能的集中式存放庫。 使用功能存放區來探索和共用功能,並協助防止模型定型和推斷之間的數據扭曲。

    • Databricks SQL 會與各種工具整合,讓您可以在慣用的環境中撰寫查詢和儀錶板,而不需要調整為新的平臺。

    • Git 資料夾 可讓您在 Azure Databricks 工作區中與您的 Git 提供者整合,以改善筆記本或程式代碼共同作業和 IDE 整合。

    • 工作流程作業 提供在 Azure Databricks 叢集中執行非互動式程式碼的方式。 針對機器學習服務,作業會為資料準備、特徵化、定型、推斷和監視提供自動化。

替代項目

您可以針對 Azure 基礎結構量身打造此解決方案。 請考慮下列自訂:

  • 使用共用一般生產工作區的多個開發工作區。

  • 為現有的基礎結構交換一或多個架構元件。 例如,您可以使用 Azure Data Factory 來協調 Databricks 作業。

  • 透過 Git 和 Azure Databricks REST API 與現有的 CI/CD 工具整合。

  • 使用 Microsoft FabricAzure Synapse Analytics 作為機器學習功能的替代服務。

案例詳細資料

此解決方案提供使用 Azure Databricks 之強固型 MLOps 程序。 您可以取代架構中的所有元素,以便視需要整合其他 Azure 服務和合作夥伴服務。 此架構和描述是從電子書 《MLOps 的大書》改編的。 電子書會更詳細地探索此架構。

MLOps 有助於降低機器學習和 AI 系統中失敗的風險,並改善共同作業和工具的效率。 如需 MLOps 簡介和此架構的概觀,請參閱 在 Lakehouse 上建構 MLOps。

使用此架構來:

  • 將業務利害關係人與機器學習和資料科學小組連線。 使用此架構來納入筆記本和 IDE 以進行開發。 商務項目關係人可以在 Databricks SQL 中檢視計量和儀錶板,全都在相同的 Lakehouse 架構中。

  • 讓您的機器學習成為基礎結構中心。 此架構會將機器學習數據視為其他數據。 機器學習數據報含特徵工程、定型、推斷和監視的數據。 此架構會重複使用生產管線、儀錶板和其他一般數據處理的工具,以進行機器學習數據處理。

  • 在模組和管線中實作 MLOps。 如同任何軟體應用程式,請使用此架構中的模組化管線和程式代碼來測試個別元件,並降低未來重構的成本。

  • 視需要自動化 MLOps 程序。 在此架構中,您可以自動化步驟以改善生產力並降低人為錯誤的風險,但不需要將每個步驟自動化。 Azure Databricks 除了用於自動化的 API 之外,還允許 UI 和手動程式。

潛在使用案例

此架構適用於所有類型的機器學習、深度學習和進階分析。 此架構中的常見機器學習和 AI 技術包括:

  • 傳統機器學習服務,例如線性模型、以樹狀結構為基礎的模型,以及提升。
  • 現代深度學習,如 TensorFlow 和 PyTorch。
  • 自訂分析,例如統計資料、貝氏方法和圖表分析。

此架構同時支援小型資料 (單一機器) 和大型資料 (分散式運算和 GPU 加速)。 在架構的每個階段中,您可以選擇計算資源和連結庫,以適應您案例的數據和問題維度。

此架構適用於所有類型的產業和商業使用案例。 使用此架構的 Azure Databricks 客戶包括下列產業中的小型和大型組織:

  • 消費者產品及零售商品
  • 金融服務
  • 醫療保健與生命科學
  • 資訊科技

如需範例,請參閱 Databricks 客戶

參與者

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

主要作者:

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

下一步