MLOps 堆疊:模型開發程式即程序代碼
本文說明 MLOps Stack 如何讓您在原始檔控制的存放庫中實作開發和部署程式作為程序代碼。 它也描述 Databricks Data Intelligence 平臺上模型開發的優點,這是一個單一平臺,可統一模型開發和部署程式的每個步驟。
什麼是MLOps Stack?
使用 MLOps Stack 時,整個模型開發程式會在原始檔控制的存放庫中實作、儲存及追蹤為程式代碼。 以這種方式將程式自動化,有助於進行更可重複、可預測且系統化的部署,並讓您能夠與 CI/CD 程式整合。 以程式代碼表示模型開發程式,可讓您部署程序代碼,而不是部署模型。 部署程式代碼可將建置模型的能力自動化,以便在必要時重新定型模型。
當您使用 MLOps Stack 建立專案時,您可以定義 ML 開發和部署程式的元件,例如筆記本,以用於特徵工程、訓練、測試和部署、用於定型和測試的管線、用於每個階段的工作區,以及使用 GitHub Actions 或 Azure DevOps 進行程式碼自動化測試和部署的 CI/CD 工作流程。
MLOps Stack 所建立的環境會實作 Databricks 建議的 MLOps 工作流程。 您可以自定義程式代碼來建立堆疊,以符合組織的程式或需求。
MLOps Stack 如何運作?
您可以使用 Databricks CLI 來建立 MLOps Stack。 如需逐步指示,請參閱 MLOps Stack 的 Databricks 資產套件組合。
當您起始 MLOps Stacks 專案時,軟體會逐步引導您輸入組態詳細數據,然後建立包含撰寫您專案的檔案的目錄。 此目錄或堆疊會實作 Databricks 建議的生產 MLOps 工作流程。 圖表中顯示的元件會為您建立,而且您只需要編輯檔案以新增自定義程序代碼。
在此圖表中:
- 答: 數據科學家或 ML 工程師會使用
databricks bundle init mlops-stacks
初始化專案。 當您初始化專案時,您可以選擇設定 ML 程式代碼元件(通常是由資料科學家使用)、CI/CD 元件(通常由 ML 工程師使用),或兩者。 - B: ML 工程師為 CI/CD 設定 Databricks 服務主體秘密。
- C: 數據科學家在 Databricks 或其本機系統上開發模型。
- D: 數據科學家會建立提取要求來更新 ML 程式代碼。
- E: CI/CD 執行器會執行筆記本、建立作業,以及在預備和生產工作區中執行其他工作。
您的組織可以使用預設堆疊,或視需要加以自定義,以新增、移除或修訂元件,以符合貴組織的做法。 如需詳細資訊,請參閱 GitHub 存放 庫自述檔 。
MLOps Stack 的設計採用模組化結構,可讓不同的 ML 小組獨立處理專案,同時遵循軟體工程最佳做法並維護生產等級 CI/CD。 生產工程師會設定 ML 基礎結構,讓數據科學家能夠開發、測試及部署 ML 管線和模型至生產環境。
如圖所示,預設 MLOps Stack 包含下列三個元件:
- ML 程式代碼。 MLOps Stacks 會為 ML 專案建立一組範本,包括用於定型的筆記本、批次推斷等等。 標準化範本可讓數據科學家快速開始使用、跨小組統一項目結構,並強制執行已準備好進行測試的模組化程序代碼。
- ML 資源即程序代碼。 MLOps Stack 會針對定型和批次推斷等工作定義資源,例如工作區和管線。 資源定義於 Databricks 資產組合中,以利 ML 環境的測試、優化和版本控制。 例如,您可以嘗試較大的實例類型進行自動化模型重新定型,並自動追蹤變更以供日後參考。
- CI/CD。 您可以使用 GitHub Actions 或 Azure DevOps 來測試及部署 ML 程式代碼和資源,確保所有生產變更都是透過自動化執行,且只會將測試的程式代碼部署到生產環境。
MLOps 專案流程
默認 MLOps Stacks 專案包含具有 CI/CD 工作流程的 ML 管線,以測試及部署跨開發、預備和生產 Databricks 工作區的自動化模型定型和批次推斷作業。 MLOps Stack 可設定,因此您可以修改項目結構,以符合組織的程式。
此圖顯示預設 MLOps Stack 所實作的程式。 在開發工作區中,數據科學家會反覆運算 ML 程式代碼和檔案提取要求(PR)。 PR 會在隔離的預備 Databricks 工作區中觸發單元測試和整合測試。 當 PR 合併到 main、模型定型和批次推斷作業時,在預備中執行的作業會立即更新以執行最新的程式碼。 將 PR 合併為 main 之後,您可以在排程發行程式中剪下新的發行分支,並將程式代碼變更部署至生產環境。
MLOps Stacks 項目結構
MLOps Stack 使用 Databricks 資產套件組合 – 原始程式檔集合,做為專案的端對端定義。 這些來源檔案包含如何測試及部署它們的相關信息。 將檔案收集為套件組合可讓您輕鬆地進行共同版本變更,並使用軟體工程最佳做法,例如原始檔控制、程式代碼檢閱、測試和 CI/CD。
此圖顯示為預設 MLOps Stack 建立的檔案。 如需堆疊中所含檔案的詳細資訊,請參閱 GitHub 存放庫或適用於 MLOps Stack 的 Databricks 資產套件組合檔。
MLOps Stacks 元件
「堆疊」是指開發程式中所使用的一組工具。 預設 MLOps Stack 會利用整合的 Databricks 平臺,並使用下列工具:
元件 | Databricks 中的工具 |
---|---|
ML 模型開發程序代碼 | Databricks 筆記本、 MLflow |
功能開發和管理 | 特徵工程 |
ML 模型存放庫 | Unity 目錄中的模型 |
ML 模型服務 | 馬賽克 AI 模型服務 |
基礎結構即程序代碼 | Databricks Asset Bundles |
協調器 | Databricks 工作 |
持續整合與持續傳遞 | GitHub Actions、 Azure DevOps |
數據和模型效能監視 | Lakehouse 監視 |
下一步
若要開始使用,請參閱 適用於MLOps Stack的 Databricks 資產組合或 GitHub 上的 Databricks MLOps Stacks 存放庫。