為什麼需要 MLOps?
總體而言,要開始機器學習生命週期,組織通常必須首先準備資料。您可以從各種來源擷取不同類型的資料,並執行聚合、重複清理和特徵工程等活動。
之後,可以使用資料來訓練和驗證 ML 模型。接下來,可以將經過訓練和驗證的模型部署為預測服務,其他應用程式可以透過 API 存取該服務。
探索性資料分析通常要求您嘗試不同的模型,直到最佳模型版本準備好進行部署。這會導致頻繁的模型版本部署和資料版本控制。在您的應用程式可以整合或使用程式碼中的模型之前,實驗追蹤和 ML 訓練管道管理至關重要。
MLOps 對於系統地同時管理帶有應用程式碼和資料更改的新機器學習模型的發佈至關重要。最佳 MLOps 實作對 ML 資產的處理方式與其他持續整合和交付 (CI/CD) 環境軟體資產相似。作為統一發佈程序的一部分,可以將 ML 模型與其使用的應用程式和服務以及使用它們的應用程式和服務一起部署。
MLOps 有哪些原則?
接下來,我們將解釋 MLOps 的四個關鍵原則。
版本控制
此程序涉及追蹤機器學習資產中的變更,以便您重現結果並視需要恢復到舊版本。每個 ML 訓練程式碼或模型規格都經過程式碼檢閱階段。每個模型都經過版本化,使 ML 模型的訓練可再現和可稽核。
從資料處理到 ML 模型部署,ML 工作流程中的可再現性在每個階段都很重要。這意味著在相同的輸入下,每個階段都應產生相同的結果。
自動化
自動化機器學習管道中的各個階段,以確保可重複性、一致性和可擴展性。這包括從資料擷取、預處理、模型訓練和驗證到部署的階段。
以下是一些可以觸發自動模型訓練和部署的因素:
- 簡訊
- 監控或行事曆事件
- 資料變更
- 模型訓練程式碼變更
- 應用程式碼變更。
自動化測試可協助您及早發現問題,以便快速修正錯誤和從中學習。使用基礎設施即程式碼 (IaC) 提升自動化效率。可以使用工具來定義和管理基礎設施。這有助於確保其可再現性,並且可以在各種環境中一致地部署。
連續 X
通過自動化,您可以在 ML 管道中持續執行測試和部署程式碼。
在 MLOps 中,連續是指在系統中任何位置進行任何變更時連續發生的四項活動:
- 持續整合將程式碼的驗證和測試擴展到管道中的資料和模型
- 持續交付會自動部署新訓練的模型或模型預測服務
- 持續訓練會自動重新訓練機器學習模型以進行重新部署
- 持續監控涉及使用與業務相關的指標進行資料監控和模型監控
模型治理
治理涉及管理 ML 系統的所有方面以提高效率。您應該進行許多治理活動:
- 促進資料科學家、工程師和業務利害關係人之間的密切合作
- 使用清晰的文件和有效的溝通通道,確保每個人有著相同的理解
- 建立機制以收集有關模型預測的意見回饋並進一步重新訓練模型
- 確保機密資料受到保護,保障模型和基礎設施的存取安全,以及符合合規要求
還必須制定結構化的程序,在模型上線之前對其進行檢閱、驗證和核准。這可能涉及檢查公平性、偏見和道德考量。
MLOps 具有哪些優勢?
機器學習可協助組織分析資料並取得用於決策的洞見。但是,這是一個創新和實驗性的領域,會帶來獨有的挑戰。敏感資料保護、預算不足、技能短缺以及不斷演變的技術都會限制專案的成功。如果沒有控制和指導,成本可能會快速增加,資料科學團隊可能無法實現預期的結果。
無論受到什麼限制,MLOps 都可指引 ML 專案取得成功。以下是 MLOps 的一些主要優點。
更快上市
MLOps 為組織提供一個框架,可以更快、更高效地實現資料科學目標。開發人員和經理可以在模型管理方面變得更具戰略性和靈活性。機器學習工程師可以透過聲明式組態檔案佈建基礎設施,從而更順利地啟動專案。
自動化模型建立和部署可以縮短上市時間,同時降低營運成本。資料科學家可以快速探索組織的資料,為所有人提供更多業務價值。
提高生產效率
MLOps 實務可提高生產效率並加速 ML 模型的開發。例如,可以標準化開發或實驗環境。然後,ML 工程師可以啟動新專案、在專案之間輪換,以及跨應用程式重複使用 ML 模型。他們可以建立可重複的程序,以便快速實驗和模型訓練。軟體工程團隊可以透過 ML 軟體開發生命週期進行協作和協調,以提高效率。
高效的模型部署
MLOps 改善生產中的疑難排解和模型管理。例如,軟體工程師可以監控模型效能並重現行為以進行疑難排解。他們可以追蹤和集中管理模型版本,並為不同的業務使用案例挑選合適的版本。
將模型工作流程與持續整合和持續交付 (CI/CD) 管道整合時,可以限制效能的降低並保持模型的品質。即使在升級和模型調優之後,情況也是如此。
如何在組織中實作 MLOps
MLOPs 實作分為三個層級,具體取決於組織內的自動化成熟度。
MLOPs 層級 0
對於剛開始使用機器學習系統的組織來說,手動 ML 工作流程和資料科學家導向性程序是層級 0 的特徵。
每個步驟均手動完成,包括資料準備、機器學習訓練以及模型效能和驗證。需要在步驟之間手動過渡,並且每個步驟都以互動方式執行和管理。資料科學家通常將經過訓練的模型作為成品移交,由工程團隊部署在 API 基礎設施上。
該程序將建立模型的資料科學家與部署模型的工程師分離。非頻繁的發佈意味著資料科學團隊每年只對模型進行幾次再訓練。機器學習模型的其餘應用程式碼沒有 CI/CD 考量。同樣,也不存在主動效能監控。
MLOP 層級 1
想要使用新資料訓練相同模型的組織通常需要實作層級 1 成熟度。MLOps 層級 1 旨在透過自動化 ML 管道來持續訓練模型。
在層級 0 中,部署經過訓練的模型用於生產。相比之下,對於程式 1,需要部署迴圈運行的訓練管道,以便將經過訓練的模型提供給其他應用程式。至少要實現模型預測服務的持續交付。
層級 1 成熟度具有以下特征:
- 需要大量自動化的快速 ML 實驗步驟
- 使用最新資料作為即時管道觸發器,在生產環境中持續訓練模型
- 在開發、預生產和生產環境中實作相同的管道
工程團隊與資料科學家合作建立模組化程式碼元件,這些元件可重複使用、可組合,並且可能在 ML 管道之間共用。還可以建立集中式特徵商店,用於標準化 ML 訓練和服務的特徵儲存、存取和定義。此外,還可以管理中繼資料,例如有關每次管道執行的資訊以及可再現性資料。
MLOPs 層級 2
MLops 層級 2 適用於想要更多實驗並經常建立需要持續培訓之新模型的組織。該層級適用於以技術為導向的公司,它們會在幾分鐘內更新模型,每小時或每天對其進行重新訓練,同時將其重新部署到數千台伺服器上。
由於有多個 ML 管道在起作用,因此 MLOps 層級 2 設定需要所有 MLOps 層級 1 設定。它還需要以下內容:
- ML 管道協調器
- 用於追蹤多個模型的模型登錄檔
以下三個階段針對多個 ML 管道大規模重複,以確保模型持續交付。
建置管道
您可以反覆嘗試新的建模和新的機器學習演算法,同時確保試驗步驟得到妥善協調。此階段輸出 ML 管道的原始程式碼。將程式碼儲存在來源儲存庫中。
部署管道
接下來,您可以建置原始程式碼並執行測試以取得供部署的管道元件。輸出是具有新模型實作的已部的管道。
用管道提供服務
最後,您可以將管道作為應用程式的預測服務。可以從即時資料收集已部署模型預測服務的統計資料。此階段的輸出是執行管道或新實驗週期的觸發器。
MLOps 和 DevOps 之間有什麼區別?
MLOps 和 DevOps 都是旨在改進開發、部署和監控軟體應用程式的程序的實務。
DevOps 旨在彌合開發團隊和營運團隊之間的差距。DevOps 有助於確保自動測試、整合程式碼變更並將其高效可靠地部署到生產環境中。該工具推進協作文化,以實現更快的發佈週期、更高的應用程式品質和更有效的資源利用。
另一方面,MLOps 是一組專門為機器學習項目設計的最佳實務。部署和整合傳統軟體可能相對簡單,而機器學習模型面臨著獨有的挑戰。它們涉及資料收集、模型訓練、驗證、部署以及持續監控和重新培訓。
MLOps 專注於自動化 ML 生命週期。它有助於確保不僅是開發模型,更是系統性和反覆地部署、監控和再訓練。它為 ML 帶來 DevOps 原則。MLOps 可以更快地部署機器學習模型,隨著時間的推移提高準確性,以及更有力地保證模型提供真正的商業價值。
AWS 如何支援您的 MLOps 要求?
Amazon SageMaker 是一項完全受管的服務,可以用來準備資料以及建置、訓練和部署 ML 模型。該服務適用于任何具有完全受管基礎設施、工具和工作程序的使用案例。
SageMaker 為 MLOps 提供專門建置的工具,以將整個 ML 生命週期中的程序自動化。通過使用 Sagemaker for MLOps 工具,您可以快速大規模實現層級 2 的 MLOps 成熟度。
以下是您可以使用的 SageMaker 主要功能:
- 使用 SageMaker Experiments 追蹤與模型訓練作業相關的成品,例如參數、指標和資料集。
- 將 SageMaker Pipelines 設定為定期或在觸發某些事件時自動執行。
- 使用 SageMaker Model Registry 追蹤模型版本。也可以在中央儲存庫中追蹤其中繼資料,例如使用案例分組,以及對效能指標基準建模。可以使用此資訊依據自身的業務需求選擇最佳模型。
立即建立 AWS 帳戶,開始在 Amazon Web Services (AWS) 上使用 MLOps。