解決方案構想
本文是解決方案概念。 如果您想要使用詳細資訊來擴充內容,例如潛在的使用案例、替代服務、實作考慮或定價指引,請提供 GitHub 意見反應讓我們知道。
本文提供 使用 Azure Databricks 的機器學習作業 (MLOps) 架構和程式。 此程式定義一種標準化的方式,可將機器學習模型和管線從開發移至生產環境,並提供包含自動化和手動程式的選項。
架構
工作流程
此解決方案提供強固的 MLOps 程式,其使用 Azure Databricks。 架構中的所有元素皆可插入,因此您可以視需要整合其他 Azure 和第三方服務。 此架構和描述是從電子書 《MLOps 的大書》改編的。 本電子書會更詳細地探索這裡所述的架構。
原始檔控制:此專案的程式代碼存放庫會組織筆記本、模組和管線。 數據科學家會建立開發分支來測試更新和新模型。 程序代碼是在筆記本或 IDE 中開發,由 Git 支援,且 Databricks Repos 整合可與 Azure Databricks 工作區同步處理。 原始檔控制會將機器學習管線從開發到預備環境(用於測試)、生產環境(用於部署)。
Lakehouse - 生產數據:數據科學家在開發環境中工作,其具有生產數據的只讀存取權。 (或者,可以鏡像或修訂數據。它們也有開發記憶體環境的讀取/寫入存取權,以進行開發和實驗。 我們建議使用 Lakehouse 架構來儲存數據,其中數據會以 Delta Lake 格式儲存在 Azure Data Lake 儲存體。 訪問控制是使用 Microsoft Entra 認證傳遞 或 數據表訪問控制來定義。
部署
在開發環境中,數據科學家和工程師會開發機器學習管線。
探勘數據分析 (EDA):數據科學家會探索互動式反覆程序中的數據。 此臨機操作工作可能不會部署到預備或生產環境。 工具可能包含 Databricks SQL、
dbutils.data.summarize
、 和 AutoML。模型定型和其他機器學習管線:機器學習管線是在筆記本和/或IDE 中開發為模組化程序代碼。 例如,模型定型管線會從 Feature Store 和其他 Lakehouse 數據表讀取數據。 將記錄模型參數和計量定型和微調到 MLflow 追蹤伺服器。 功能存放區 API 會記錄最終模型。 這些記錄會連結模型、其輸入和定型程序代碼。
認可程式代碼:為了將機器學習工作流程提升至生產環境,數據科學家會將程式代碼認可為特徵化、定型和其他管線,以進行原始檔控制。
預備
在預備環境中,CI 基礎結構會測試模擬生產環境中的機器學習管線變更。
合併要求:在原始檔控制中針對專案的預備(main) 分支提交合併(或提取)要求時,Azure DevOps 會執行測試等持續整合和持續傳遞 (CI/CD) 工具。
單元和 CI 測試:單元測試會在 CI 基礎結構中執行,而整合測試會在 Azure Databricks 上執行端對端 工作流程 。 如果測試通過,程式代碼會變更合併。
建置發行分支:當機器學習工程師準備好將更新的機器學習管線部署到生產環境時,他們可以建置新版本。 CI/CD 工具中的部署管線會將更新的管線重新部署為新的 工作流程。
實際執行環境
機器學習工程師會管理生產環境,其中機器學習管線會直接為終端應用程式提供服務。 生產重新整理功能數據表中的主要管線、定型和部署新模型、執行推斷或服務,以及監視模型效能。
功能數據表重新整理:此管線會讀取數據、計算功能,以及寫入 功能存放區 數據表。 它會在串流模式中持續執行、依排程執行或觸發。
模型定型:在生產環境中,會觸發模型定型或重新定型管線,或排程在最新的生產數據上定型新的模型。 模型會註冊至 MLflow 模型登錄。
持續部署:註冊新的模型版本會觸發CD管線,其會執行測試,以確保模型在生產環境中執行良好。 當模型通過測試時,其進度會透過模型階段轉換在模型登錄中追蹤。 登錄 Webhook 可用於自動化。 測試可以包含合規性檢查、A/B 測試,以比較新模型與目前的生產模型,以及基礎結構測試。 測試結果和計量會記錄在 Lakehouse 數據表中。 您可以選擇性地要求手動註銷,才能將模型轉換為生產環境。
模型部署:當模型進入生產環境時,其會部署以進行評分或服務。 最常見的部署模式如下:
- 批次或串流評分:對於分鐘或更長的延遲,批次和串流是最符合成本效益的選項。 評分管線會從功能存放區讀取最新的數據、從模型登錄載入最新的生產模型版本,並在 Databricks 作業中執行推斷。 它可以將預測發佈至 Lakehouse 數據表、Java Database 連線 ivity (JDBC) 連線、一般檔案、消息佇列或其他下游系統。
- 在線服務 (REST API):針對低延遲使用案例,通常需要在線服務。 MLflow 可以將模型 部署到 Azure Databricks 上的 MLflow 模型服務、雲端提供者服務系統和其他系統。 在所有情況下,服務系統都會使用模型登錄中最新的生產模型初始化。 針對每個要求,它會從在線功能存放區擷取功能並做出預測。
監視:連續或定期 工作流程 會監視漂移、效能和其他計量的輸入數據和模型預測。 Delta Live Tables 可以簡化監視管線的自動化,並將計量儲存在 Lakehouse 數據表中。 Databricks SQL、 Power BI 和其他工具可以從這些數據表讀取,以建立儀錶板和警示。
重新定型:此架構同時支援手動和自動重新定型。 排程的重新定型作業是讓模型保持最新狀態的最簡單方式。
元件
- Data Lakehouse。 Lakehouse 架構會統一數據湖和數據倉儲的最佳元素,提供數據倉儲中通常發現的數據管理和效能,以及數據湖所提供的低成本彈性物件存放區。
- Delta Lake 是 Lakehouse 開放原始碼數據格式的建議選擇。 Azure Databricks 會將數據儲存在 Data Lake 儲存體,並提供高效能的查詢引擎。
- MLflow 是一個開放原始碼專案,用於管理端對端機器學習生命週期。 以下是其主要元件:
- 追蹤 可讓您追蹤實驗來記錄和比較參數、計量和模型成品。
- Databricks 自動記錄 擴充 MLflow 自動記錄 ,以追蹤機器學習實驗、自動記錄模型參數、計量、檔案和譜系資訊。
- MLFlow 模型 可讓您將模型從任何機器學習連結庫儲存和部署至各種模型服務與推斷平臺。
- 模型登錄 提供集中式模型存放區,用於管理從開發到生產環境的模型生命週期階段轉換。
- 模型服務 可讓您將 MLflow 模型裝載為 REST 端點。
- 追蹤 可讓您追蹤實驗來記錄和比較參數、計量和模型成品。
- Azure Databricks。 Azure Databricks 提供受控 MLflow 服務,其中包含企業安全性功能、高可用性,以及與其他 Azure Databricks 工作區功能的整合。
- 適用於 機器學習 的 Databricks Runtime 會自動化建立已針對機器學習優化的叢集、預安裝 TensorFlow、PyTorch 和 XGBoost 等熱門機器學習連結庫,以及適用於 AutoML 和 Feature Store 用戶端等 機器學習 工具的 Azure Databricks。
- 功能存放區 是功能的集中式存放庫。 它可啟用功能共用和探索,並有助於避免模型定型與推斷之間的數據扭曲。
- Databricks SQL。 Databricks SQL 為 Lakehouse 數據上的 SQL 查詢,以及視覺效果、儀錶板和警示提供簡單的體驗。
- Databricks Repos 可讓您與 Azure Databricks 工作區中的 Git 提供者整合,簡化筆記本或程式代碼和 IDE 整合的共同作業開發。
- 工作流程 和 作業 提供在 Azure Databricks 叢集中執行非互動式程式代碼的方式。 針對機器學習服務,作業會為數據準備、特徵化、定型、推斷和監視提供自動化。
替代項目
您可以針對 Azure 基礎結構量身打造此解決方案。 常見的自訂包括:
- 共用一般生產工作區的多個開發工作區。
- 交換一或多個現有基礎結構的架構元件。 例如,您可以使用 Azure Data Factory 來協調 Databricks 作業。
- 透過 Git 和 Azure Databricks REST API 與現有的 CI/CD 工具整合。
案例詳細資料
MLOps 有助於降低機器學習和 AI 系統中失敗的風險,並改善共同作業和工具的效率。 如需 MLOps 簡介和此架構的概觀,請參閱 在 Lakehouse 上建構 MLOps。
透過使用此架構,您可以:
- 連線 您的商務項目關係人與機器學習和數據科學小組。 此架構可讓數據科學家使用筆記本和 IDE 進行開發。 它可讓商務項目關係人檢視 Databricks SQL 中的計量和儀錶板,全都在相同的 Lakehouse 架構中。
- 讓您的機器學習基礎結構成為中心。 此架構會像其他數據一樣處理機器學習數據(來自特徵工程、定型、推斷和監視的數據)。 它會針對生產管線、儀錶板和其他一般數據處理重複使用工具,以進行機器學習數據處理。
- 在模組和管線中實作MLOps。 如同任何軟體應用程式,此架構中的模組化管線和程式代碼可測試個別元件,並降低未來重構的成本。
- 視需要自動化 MLOps 程式。 在此架構中,您可以自動化步驟以改善生產力並降低人為錯誤的風險,但不需要自動化每個步驟。 Azure Databricks 除了用於自動化的 API 之外,還允許 UI 和手動程式。
潛在使用案例
此架構適用於所有類型的機器學習、深度學習和進階分析。 此架構中使用的常見機器學習/AI 技術包括:
- 傳統機器學習服務,例如線性模型、以樹狀結構為基礎的模型,以及提升。
- 新式深度學習,例如 TensorFlow 和 PyTorch。
- 自定義分析,例如統計數據、貝氏方法和圖表分析。
此架構同時支援小型數據(單一計算機)和大型數據(分散式運算和 GPU 加速)。 在架構的每個階段中,您可以選擇計算資源和連結庫來適應您的數據和問題維度。
此架構適用於所有類型的產業和商業使用案例。 使用此和類似架構的 Azure Databricks 客戶包括下列產業中的小型和大型組織:
- 消費品和零售服務
- 金融服務
- 醫療保健與生命科學
- 資訊科技
如需範例,請參閱 Databricks 網站。
參與者
本文由 Microsoft 維護。 原始投稿人如下。
主體作者:
- Brandon Cowen |資深雲端解決方案架構師
其他參與者:
- 米克·阿爾伯特 |技術寫入器
若要查看非公開的 LinkedIn 設定檔,請登入 LinkedIn。
下一步
- MLOps 的大書
- 需要以資料為中心的 ML 平臺 (MLOps 簡介)
- Databricks 機器學習 產品內快速入門
- 10 分鐘的教學課程:開始使用 Azure Databricks 上的機器學習
- Databricks 機器學習 檔
- Databricks 機器學習 產品頁面和資源
- Databricks 上的 MLOps:操作指南
- 使用 Databricks 將 ML 生命週期自動化 機器學習
- 搭配 MLflow 的 Azure Databricks 上的 MLOps
- 真實世界的 機器學習 工程
- 自動化您的 機器學習 管線
- Databricks Academy
- Databricks Academy GitHub 專案
- MLOps 詞彙
- 選取 機器學習 平臺的三個原則
- 什麼是 Lakehouse?
- Delta Lake 首頁
- 將數據內嵌至 Azure Databricks Lakehouse
- 叢集
- Libraries
- MLflow 檔
- Azure Databricks MLflow 指南
- 跨工作區共用模型
- Notebooks
- 開發人員工具 和指引
- 將 MLflow 模型部署至 Azure 機器學習 中的在線端點
- 部署至 Azure Kubernetes Service (AKS)