概念 - 適用於 AI 和機器學習工作流程的機器學習作業 (MLOps)
在本文中,您將了解機器學習作業 (MLOps),包括涉及的作法和工具類型,以及如何簡化和加速 Azure Kubernetes Service (AKS) 上的 AI 和機器學習工作流程。
什麼是 MLOps?
機器學習作業 (MLOps) 包含可協助數據科學家、IT 作業和業務項目關係人共同作業的做法,確保機器學習模型已開發、部署和維護有效率。 MLOps 會將 DevOps 原則套用至機器學習專案,目的是將端對端機器學習生命週期自動化並簡化。 此生命週期包括定型、封裝、驗證、部署、監視和重新定型模型。
MLOps 需要多個角色和工具才能有效地一起運作。 數據科學家著重於與定型模型相關的工作,這稱為內部迴圈。 機器學習工程師和IT作業小組會處理 外部迴圈,其中會套用DevOps做法來封裝、驗證、部署和監視模型。 當模型需要微調或重新定型時,進程會迴圈回到內部迴圈。
MLOps 管線
您的 MLOps 管線可能會利用循序或平行部署的各種工具和微服務。 以下是管線中重要元件的範例,可受益於實作下列最佳做法來減少額外負荷,並允許更快速地反覆執行:
- 用於流入應用程式之新數據的非結構化數據存放區
- 用來儲存和查詢結構化、預先處理數據的向量資料庫
- 數據擷取和編製索引架構
- 向量擷取和/或模型重新定型工作流程
- 計量收集和警示工具(追蹤模型效能、內嵌的數據量等)
- 生命週期管理工具
DevOps 和 MLOps
DevOps 是工具和做法的組合,可讓您建立健全且可重現的應用程式。 使用DevOps的目標是要快速將價值傳遞給使用者。 建立、部署及監視健全且可重現的模型,以將價值傳遞給使用者,是 MLOps 的主要目標。
MLOps 有三 個程式很重要:
- 數據科學家負責的機器學習工作負載 ,包括探勘數據分析 (EDA)、特徵工程,以及模型定型和微調。
- 軟體開發實務, 包括規劃、開發、測試及封裝用於部署的模型。
- 在生產環境中部署和維護模型的作業層面,包括發行、設定資源及監視模型。
適用於 MLOps 的 DevOps 原則
MLOps 利用DevOps中的數個原則來增強機器學習生命週期,例如自動化、持續整合和傳遞 (CI/CD)、原始檔控制、敏捷式規劃和基礎結構即程式代碼 (IaC)。
自動化
藉由自動化工作,您可以減少手動錯誤、提高效率,並確保 ML 生命週期的一致性。 自動化可以套用至各種階段,包括數據收集、模型定型、部署和監視。 透過自動化,您也可以在 AI 管線中套用主動式量值,以確保數據符合貴組織的原則。
例如,您的管線可以自動化:
- 模型微調/重新定型會定期時間間隔,或應用程式中收集一定數量的新數據時。
- 偵測效能降低,以開始微調或重新定型不同數據子集。
- 從外部容器登錄提取的基底容器映像上的常見弱點和暴露度 (CVE) 掃描,以確保安全的安全性做法。
持續整合 (CI)
持續整合涵蓋 模型開發程式的建立 和 驗證 層面。 CI 的目標是建立程式代碼,並在部署之前驗證程式代碼和模型的品質。 這包括對一系列範例數據集進行測試,以確保模型如預期般執行並符合質量標準。
在 MLOps 中,CI 可能會涉及:
- 將 Jupyter 筆記本中的探勘程式碼重構為 Python 或 R 指令碼。
- 驗證遺漏或錯誤值的新輸入數據。
- 端對端管線中的單元測試和整合測試。
若要執行 Linting 和單元測試,您可以使用自動化工具,例如 Azure DevOps 中的 Azure Pipelines 或 GitHub Actions。
持續傳遞 (CD)。
持續傳遞牽涉到在生產環境中安全地部署模型所需的步驟。 第一個步驟是在生產階段前環境中封裝和部署模型,例如開發和測試環境。 參數、超參數和其他模型成品的可移植性是透過這些環境升級程式代碼時維護的重要層面。 當涉及到大型語言模型(LLM)和穩定的擴散模型時,這種可移植性尤其重要。 一旦模型通過單元測試和質量保證 (QA) 測試,您就可以核准它以在 生產環境中部署。
原始檔控制
原始檔控制或 版本控制對於管理程序代碼和模型的變更至關重要。 在 ML 系統中,這是指數據版本控制、程式代碼版本設定和模型版本控制,這可讓跨功能小組有效地共同作業,並追蹤一段時間的變更。 使用 Git 型原始檔控制系統,例如 Azure DevOps 中的 Azure Repos 或 GitHub 存放庫,可讓您以程式設計方式維護變更的歷程記錄、還原為舊版,以及管理不同實驗的分支。
敏捷式規劃
敏捷式規劃牽涉到將工作隔離到 短期衝刺中,這是完成特定工作的簡短時間範圍。 這種方法可讓小組快速適應變更,並針對模型提供累加式改善。 模型定型可以是一個進行中的程式,而敏捷式規劃可協助界定專案範圍,並啟用更好的小組對齊。
您可以使用 Azure DevOps 中的 Azure Boards 或 GitHub 問題等工具來管理您的敏捷式規劃。
基礎結構即程式碼 (IaC)
您可以使用基礎結構即程式代碼來重複和自動化定型、部署及服務模型所需的基礎結構。 在 ML 系統中,IaC 有助於簡化和定義程式代碼中特定作業類型所需的適當 Azure 資源,並在存放庫中維護程式代碼。 這可讓您對基礎結構進行版本控制,並視需要對資源優化、成本效益等進行變更。
下一步
請參閱下列文章,以瞭解 AKS 上智慧型手機應用程式中 MLOps 的最佳做法: