解決方案構想
本文說明解決方案概念。 您的雲端架構師可以使用本指南,協助視覺化此架構的一般實作的主要元件。 以本文為起點,設計符合您工作負載具體要求的完善解決方案。
本文提供使用 Azure Databricks 的機器學習作業 (MLOps) 架構和程式。 數據科學家和工程師可以使用此標準化程式,將機器學習模型和管線從開發移至生產環境。
該解決方案可以利用完全自動化、持續監控和強大的協作。 因此,它的目標是 MLOps 成熟度的第 4 級。 此架構會 使用產生模型 方法的升級程序代碼,而不是 升級模型 方法。 產生模型方法的升級程式代碼著重於撰寫和管理產生機器學習模型的程序代碼。 本文中的建議包括自動化或手動程序的選項。
架構
下載此架構的 Visio 檔案。
Workflow
下列工作流程對應至上一個圖表。 使用原始檔控制和儲存元件來管理及組織程式代碼和數據。
原始檔控制:此專案的程式碼存放庫會組織筆記本、模組和管線。 您可以建立開發分支來測試更新和新模型。 在 Git 支援的筆記本或整合開發環境 (IDE) 中開發程式代碼,以與 Git 資料夾 整合,以便您可以與 Azure Databricks 工作區同步。 原始檔控制會從開發環境升級機器學習管線、在預備環境中進行測試,以及在生產環境中部署。
Lakehouse 生產數據: 身為數據科學家,您可以在開發環境中只讀存取生產數據。 開發環境可以有鏡像數據和修訂的機密數據。 在開發記憶體環境中,您也有開發和測試的讀取和寫入存取權。 建議您對儲存於 Azure Data Lake Storage 中並使用 Delta Lake 格式的資料採用 lakehouse 架構。 Lakehouse 提供強固、可調整且彈性的解決方案來進行數據管理。 若要定義存取控制,請使用 表格存取控制。
主要工作流程包含下列環境。
部署
在開發環境中,您會開發機器學習管線。
進行探索性資料分析 (EDA)。 在互動式迭代流程中探索資料。 您可能不會將此工作部署到預備或生產環境。 使用 Databricks SQL、dbutils.data.summarize 命令和 Databricks AutoML 等工具。
開發 模型定型 和其他機器學習管線。 開發機器學習管線模組化程式碼,並透過 Databricks 筆記本或 MLflow 專案協調程式碼。 在此架構中,模型定型管線會從功能存放區和其他 Lakehouse 數據表讀取數據。 管線會將記錄模型參數和計量定型並調整為 MLflow 追蹤伺服器。 功能存放區 API 會記錄最終模型。 這些記錄包括模型、其輸入和定型程序代碼。
提交程式碼。 若要將機器學習工作流程推向生產環境,請將特徵工程、訓練和其他流程的程式碼提交至源代碼管理。 在程式代碼基底中,將機器學習程式碼和作業程序代碼放在不同的資料夾中,讓小組成員可以同時開發程序代碼。 機器學習程式代碼是與模型和數據相關的程序代碼。 作業程式代碼是與 Databricks 作業和基礎結構相關的程式代碼。
撰寫和測試程式代碼時所執行的活動核心循環稱為 innerloop 程式。 若要執行開發階段的內部迴圈程式,請將 Visual Studio Code (VS Code) 與開發容器命令列介面 (CLI) 和 Databricks CLI 結合使用。 您可以在本機撰寫程式代碼並執行單元測試。 您也應該從本機開發環境提交、監視和分析模型管線。
預備
在預備環境中,持續整合 (CI) 基礎結構會測試模擬生產環境中的機器學習管線變更。
合併請求。 當您在原始檔控制中針對專案的預備 (或 主要) 分支提交合併要求或提取要求時,持續整合和持續傳遞 (CI/CD) 工具 ( 例如 Azure DevOps ) 會執行測試。
執行單元測試和 CI 測試。 單元測試會在 CI 基礎結構中執行,而整合測試會在 Azure Databricks 上的端對端 工作流程 中執行。 如果測試通過,程式碼會變更合併。
建置發行分支。 當您想要將更新的機器學習管線部署至生產環境時,您可以建置新版本。 CI/CD 工具中的部署管線會將更新的管線重新部署為新的 工作流程。
實際執行環境
機器學習工程師會管理生產環境,其中機器學習管線會直接為終端應用程式提供服務。 生產重新整理功能表資料中的主要管線、定型和部署新模型、執行推斷或服務,以及監視模型效能。
功能數據表重新整理: 此管線會讀取數據、計算功能,以及寫入 功能存放區 數據表。 您可以將此管線設定為在串流模式中持續執行、依排程執行,或在觸發程式上執行。
模型訓練: 在生產環境中,您可以設置模型訓練或重新訓練流程,以觸發或排程的方式在最新的生產數據上訓練新模型。 模型會自動註冊至 Unity 目錄。
模型評測與推廣: 註冊新的模型版本時,CD 管線會啟動,執行測試以確保模型在生產環境中表現良好。 當模型通過測試時,Unity 目錄會透過模型階段轉換追蹤其進度。 測試包括合規性檢查、A/B 測試,以比較新模型與目前的生產模型,以及基礎結構測試。 Lakehouse 數據表會記錄測試結果和計量。 在模型轉換為生產環境之前,您可以選擇性地要求手動註銷。
模型部署: 當模型進入生產環境時,其會部署以進行評分或服務。 最常見的部署模式包括下列選項:
批次或串流評分: 對於分鐘或更長的延遲, 批次和串流 是最符合成本效益的選項。 評分管線會從功能存放區讀取最新的數據、從 Unity 目錄載入最新的生產模型版本,並在 Databricks 作業中執行推斷。 它可以將預測發佈至 Lakehouse 數據表、Java 資料庫連線能力 (JDBC) 連線、一般檔案、消息佇列或其他下游系統。
在線服務 (REST API): 針對低延遲的使用案例,您通常需要在線服務。 MLflow 可以將模型 部署到馬賽克 AI 模型服務、雲端提供者服務系統和其他系統。 在所有情況下,服務系統都會使用 Unity 目錄的最新生產模型初始化。 針對每個要求,它會從在線功能存放區擷取功能,並進行預測。
監視: 連續或定期 工作流程 會監視漂移、效能和其他計量的輸入資料和模型預測。 您可以使用 Lakeflow 宣告式管線 架構來自動監視管線,並將計量儲存在湖屋資料表中。 Databricks SQL、Power BI 和其他工具可以從這些資料表讀取,以建立儀表板和警示。 若要監視應用程式計量、記錄和基礎結構,您也可以整合 Azure 監視器與 Azure Databricks。
漂移偵測和模型重新定型: 此架構同時支援手動和自動重新定型。 排程重新定型作業,讓模型保持最新狀態。 偵測到的漂移越過您在監視步驟中設定的預先設定閾值之後,重新定型管線會分析漂移並觸發重新定型。 您可以將管線設定為自動啟動,也可以接收通知,然後手動執行管線。
元件
資料湖倉儲架構會統一資料湖和資料倉儲的元素。 此架構使用湖庫來取得資料管理和效能功能,這些功能通常在資料倉儲中找到,但具有資料湖提供的低成本、彈性物件存放區。
建議您使用 Delta Lake 作為 Lakehouse 的開放原始碼資料格式。 在此架構中,Delta Lake 會將所有機器學習資料儲存在 Data Lake Storage 中,並提供高效能的查詢引擎。
MLflow 是一個開放原始碼專案,用於管理端對端機器學習生命週期。 在此架構中,MLflow 會追蹤實驗、管理模型版本,並協助將模型部署至各種推論平台。 MLflow 具有下列元件:
MLflow 中的 追蹤功能 是用於記錄和管理機器學習實驗的系統。 在此架構中,它會記錄和組織每個實驗執行的參數、指標和模型成品。 此功能可讓您比較結果、重現實驗,以及稽核模型開發。
Databricks 自動記錄 是一項自動化功能,可擴充 MLflow 自動記錄 ,藉由擷取模型參數、計量、檔案和譜系資訊來追蹤機器學習實驗。 在此架構中,Databricks 自動記錄會自動記錄這些詳細數據,以確保一致的實驗追蹤和重現性。
MLflow 模型是標準化的封裝格式。 在此架構中,MLflow 模型支援跨不同服務和推論平台的模型儲存和部署。
Unity 目錄 是資料控管解決方案,可在 Azure Databricks 工作區提供集中式存取控制、稽核、譜系和資料探索功能。 在此架構中,它會控管存取、維護譜系,以及跨工作區建構模型和資料。
Mosaic AI 模型服務 是一項將 MLflow 模型裝載為 REST 端點的服務。 在此架構中,它可讓已部署的機器學習模型透過 API 提供預測。
Azure Databricks 是分析和機器學習的受控平台。 在此架構中,Azure Databricks 會與企業安全性整合、提供高可用性,並連線 MLflow 和其他機器學習元件以進行端對端 MLOps。
Databricks Runtime for Machine Learning 是預先設定的環境,可自動建立針對機器學習進行最佳化的叢集,並預先安裝熱門的機器學習程式庫,例如 TensorFlow、PyTorch 和 XGBoost。 它也預安裝適用於 機器學習 工具的 Azure Databricks,例如 AutoML 和功能存放區用戶端。 在此架構中,它提供現成的叢集以及流行的機器學習程式庫和工具。
功能存放區是功能的集中式存放庫。 在此架構中,特徵存放區支援特徵探索和共用,並有助於防止模型訓練和推論之間的資料偏差。
Databricks SQL 是無伺服器資料倉儲,可與不同的工具整合,讓您可以在慣用的環境中撰寫查詢和儀錶板,而不需要調整至新的平臺。 在此架構中,Databricks SQL 可讓您查詢資料並建立儀錶板以進行分析和報告。
Git 資料夾是 整合的工作區目錄。 在此架構中,Git 資料夾會將 Azure Databricks 工作區連線到您的 Git 提供者。 此整合可改善筆記本或程式碼共同作業以及 IDE 整合。
工作流程 和 作業 提供在 Azure Databricks 叢集中執行非互動式程式碼的方法。 在此架構中,工作流程和作業提供資料準備、特徵化、定型、推論和監視的自動化。
替代項目
您可以針對 Azure 基礎結構量身打造此解決方案。 請考慮下列自訂:
使用共用一般生產工作區的多個開發工作區。
為現有的基礎結構交換一或多個架構元件。 例如,您可以使用 Azure Data Factory 來協調 Databricks 作業。
透過 Git 和 Azure Databricks REST API 與現有的 CI/CD 工具整合。
使用 Microsoft Fabric 作為機器學習功能的替代服務。 Fabric 提供資料工程 (具有 Apache Spark 的 Lakehouse)、資料倉儲和統一儲存體的 OneLake 整合工作負載。
案例詳細資料
此解決方案提供使用 Azure Databricks 之強固型 MLOps 程序。 您可以取代架構中的所有元素,以便視需要整合其他 Azure 服務和合作夥伴服務。 此架構和描述改編自電子書 The Big Book of MLOps: Second Edition。 電子書會更詳細地探索此架構。
MLOps 有助於降低機器學習和 AI 系統故障的風險,並提高協作和工具的效率。 如需 MLOps 簡介和此架構的概觀,請參閱 在 Lakehouse 上建構 MLOps。
使用此架構來採取下列動作:
將業務利害關係人與機器學習和資料科學小組連線。 使用此架構來納入筆記本和 IDE 以進行開發。 商務項目關係人可以在 Databricks SQL 中檢視計量和儀錶板,全都在相同的 Lakehouse 架構中。
將機器學習基礎架構集中在資料上。 此架構會將機器學習數據視為其他數據。 機器學習數據報含特徵工程、定型、推斷和監視的數據。 此架構會重複使用生產管線、儀錶板和其他一般數據處理的工具,以進行機器學習數據處理。
在模組和管線中實作 MLOps。 如同任何軟體應用程式,請使用此架構中的模組化管線和程式代碼來測試個別元件,並降低未來重構的成本。
視需要自動化 MLOps 程序。 在此架構中,您可以自動化步驟以提高生產力並降低人為錯誤的風險,但不需要將每個步驟自動化。 Azure Databricks 允許使用者介面 (UI) 和手動程式,以及自動化的 API。
潛在使用案例
此架構適用於所有類型的機器學習、深度學習和進階分析。 此架構使用下列常見的機器學習和 AI 技術:
傳統機器學習,例如線性模型、樹狀結構模型和提升
現代深度學習,例如 TensorFlow 和 PyTorch
自訂分析,例如統計資料、貝葉斯方法和圖形分析
此架構支援單一機器上的小型資料,以及使用分散式運算和圖形處理單元 (GPU) 加速資源的大型資料。 在架構的每個階段,您可以選擇運算資源和程式庫,以適應案例的資料大小和問題維度。
此架構適用於所有類型的產業和商業使用案例。 使用此架構的 Azure Databricks 客戶包括下列產業中的小型和大型組織:
- 消費者產品及零售商品
- 金融服務
- 醫療保健與生命科學
- 資訊科技
如需詳細資訊,請參閱 Databricks 客戶。
MLOps 工作流程中的基礎模型微調
隨著越來越多的組織使用大型語言模型來執行專門任務,他們必須在 MLOps 流程中添加基礎模型微調。 您可以使用 Azure Databricks 來微調資料的基礎模型。 此功能支援自訂應用程式和成熟的 MLOps 流程。 在本文的 MLOps 架構內容中,微調符合數個最佳實務:
模組化管道和程式碼: 微調任務可以封裝為訓練管道中的模組化元件。 此結構可啟用隔離評估並簡化重構。
實驗(微調運行)跟踪: MLflow 整合會使用特定參數 (例如紀元數和學習率) 以及損失和交叉熵等計量來記錄每個微調執行。 此過程提高了可重現性、可審計性和衡量改進的能力。
模型登錄和部署: 微調的模型會自動在 Unity 目錄中註冊。 此自動化支援部署和治理。
自動化和 CI/CD: 微調作業可以透過 Databricks 工作流程或 CI/CD 管線起始。 此程式支援持續學習和模型重新整理週期。
這種方法可讓團隊在使用基礎模型的靈活性和強大功能時保持高 MLOps 成熟度。 如需相關資訊,請參閱 基礎模型微調。
參與者
本文由 Microsoft 維護。 下列參與者撰寫本文。
主要作者:
- Brandon Cowen | 資深雲端解決方案架構師
- Prabal Deb |首席軟體工程師
其他貢獻者:
- 羅德里戈·羅德里格斯 |AI 和量子高級雲解決方案架構師
若要查看非公開的 LinkedIn 個人檔案,請登入 LinkedIn。