MLOps:使用 Azure Machine Learning 進行模型管理、部署、譜系和監視

適用於:Azure CLI ml 延伸模組 v2 (目前)Python SDK azure-ai-ml v2 (目前)

在本文中,了解在 Azure Machine Learning 中的機器學習作業 (MLOps) 做法,從而管理模型的生命週期。 套用 MLOps 做法可以提高機器學習解決方案的品質與一致性。

什麼是 MLOps?

MLOps 是以提高工作流程效率的 DevOps 準則與做法為基礎。 這些準則包括持續整合、傳遞和部署。 MLOps 會將這些準則套用至機器學習生命週期,其目標為:

  • 更快速地實驗和開發模型。
  • 更快速地將模型部署到生產環境。
  • 品質保證和端對端譜系追蹤。

MLOps 為機器學習程序提供下列功能:

  • 建立可重現的機器學習管線。 使用機器學習管線來針對資料準備、定型和評分程序,定義可重複且可重複使用的步驟。
  • 建立可重複使用的軟體環境。 使用這些環境來定型及部署模型。
  • 隨處註冊、封裝和部署模型。 追蹤使用模型所需的相關聯中繼資料。
  • 擷取端對端機器學習生命週期的治理資料。 記錄的譜系資訊可能包括正在發佈模型的人員,以及進行變更的原因。 其也可能包括在生產環境中部署或使用模型的時間。
  • 通知並警示機器學習生命週期中的事件。 事件包括實驗完成、模型註冊、模型部署和資料漂移偵測。
  • 監視機器學習應用程式,以了解操作與機器學習相關的問題。 比較定型與推斷之間的模型輸入。 探索模型特定的計量。 在您的機器學習基礎結構上提供監視和警示。
  • 使用 Machine Learning 和 Azure Pipelines,將端對端機器學習生命週期自動化。 使用管線經常進行測試及更新模型。 您可以搭配您其他的應用程式和服務持續推出新的機器學習模型。

如需 MLOps 的詳細資訊,請參閱機器學習作業

建立可重現的機器學習管線

使用 Azure Machine Learning 管線,將模型定型程序中的所有步驟拼接在一起。 機器學習管線可以包含包括資料準備、特徵擷取、超參數調整和模型評估的所有步驟。

如果您使用 Azure Machine Learning 設計工具來建立機器學習管線,可以複製管線來逐一查看其設計,而不會遺失舊版。 若要在設計工具中隨時複製管線,請移至右上角以選取 [...]>[複製]

如需有關 Azure Machine Learning 管線的詳細資訊,請參閱機器學習和管線

建立可重複使用的軟體環境

透過使用 Azure Machine Learning 環境,您可以隨專案的發展,追蹤和重現專案的軟體相依性。 您可以使用這些環境來確保組建可重現,而且不需要進行手動軟體設定。

環境能描述您專案的 pip 和 Conda 相依性。 您可以使用模型定型和部署的環境。 如需關於環境的詳細資訊,請參閱什麼是 Azure Machine Learning 環境?

隨處註冊、封裝和部署模型

下列各節將討論如何註冊、封裝和部署模型。

註冊及追蹤機器學習模型

透過模型註冊,您可以在您位於 Azure 雲端的工作區中儲存模型和控制模型版本。 此模型登錄可讓組織和追蹤您定型的模型變得容易。

已註冊的模型是組成模型的一或多個檔案所在的邏輯容器。 例如,如果您的模型儲存在多個檔案中,您可以將檔案註冊為 Azure Machine Learning 工作區中的單一模型。 註冊之後,您就可以下載或部署已註冊的模型,並接收所有元件檔案。

您可以依名稱和版本來識別已註冊的模型。 每次註冊與現有模型名稱相同的模型時,登錄都會遞加版本號碼。 您可以在註冊期間提供中繼資料標籤,並在搜尋模型時使用這些標籤。 Azure Machine Learning 支援可使用 Python 3.5.2 或更高版本載入的任何模型。

提示

您也可以註冊在 Azure Machine Learning 外部定型的模型。

重要

  • 當您使用 Azure Machine Learning 工作室 [模型] 頁面上的 [篩選依據:Tags] 選項時,請不要使用 TagName : TagValue,而應使用 TagName=TagValue (不含空格)。
  • 您無法刪除正在作用中部署中使用的已註冊模型。

如需如何在 Azure Machine Learning 中使用模型的詳細資訊,請參閱在 Azure Machine Learning 中使用模型

封裝和偵錯模型

將模型部署到生產環境之前,必須將模型封裝到 Docker 映像中。 在大部分情況下,會在部署期間自動在背景發生映像建立;不過,您可以手動指定映像。

先部署至本機開發環境很有用,因為您可以在部署至雲端之前,進行疑難排解和偵錯。 這種做法可協助您避免在部署至 Azure Machine Learning 時發生問題。 如需如何解決常見部署問題的詳細資訊,請參閱如何針對線上端點進行疑難排解

轉換和最佳化模型

您可以將模型轉換成 Open Neural Network Exchange (ONNX),以嘗試改善效能。 一般而言,轉換成 ONNX 可以帶來兩倍的效能提升。

如需搭配 Machine Learning 使用 ONNX 的詳細資訊,請參閱建立和加速機器學習模型

部署模型

您可以將已定型的機器學習模型部署在雲端或本機中做為端點。 部署會使用 CPU 和 GPU 來進行推斷。

將模型部署為端點時,您必須提供下列項目:

  • 用來對提交給服務或裝置的資料進行評分的模型
  • 輸入腳本1。 此指令碼會接受要求、使用模型來對資料進行評分,並傳回回應。
  • 描述模型和輸入腳本所需 pip 和 Conda 相依性的環境2
  • 模型和輸入指令碼所需的任何其他資產,例如文字和資料。

您也會提供目標部署平台的設定。 例如,虛擬機器 (VM) 系列類型、可用記憶體,以及核心數目。 建立映像時,也會新增 Azure Machine Learning 所需的元件,例如執行 Web 服務所需的資產。

1,2 當您部署 MLflow 模型時,不需要提供輸入腳本,也稱為評分指令碼。 您也不需要提供部署的環境。 如需部署 MLflow 模型的詳細資訊,請參閱部署 MLflow 模型的指導方針

批次評分

可透過批次端點支援批次評分。 如需批次評分的詳細資訊,請參閱批次端點

即時評分

您可以使用模型搭配線上端點以進行即時評分。 線上端點可以使用下列計算目標:

  • 受控線上端點
  • Azure Kubernetes Service
  • 本機開發環境

若要將模型部署為端點,您必須提供下列項目:

  • 模型或模型的集成。
  • 使用模型所需的相依性。 範例為接受要求並叫用模型和 Conda 相依性的指令碼。
  • 描述部署模型的方式和位置的部署設定。

如需部署以進行即時評分的詳細資訊,請參閱部署線上端點

線上端點的受控制推出

部署至線上端點時,您可以使用受控制的推出來實現下列案例:

  • 為部署建立多個版本的端點。
  • 透過將流量路由傳送至端點內的不同部署,來執行 A/B 測試。
  • 透過更新端點設定中的流量百分比,在端點部署之間切換。

如需使用受控制推出部署的詳細資訊,請參閱針對用於即時推斷的新部署執行安全推出

分析

Microsoft Power BI 支援使用機器學習模型來進行資料分析。 如需詳細資訊,請參閱 Power BI 中的 Azure Machine Learning 整合

擷取 MLOps 所需的治理資料

Azure Machine Learning 可讓您使用中繼資料,追蹤所有機器學習資產的端對端稽核線索。 例如:

  • Azure Machine Learning 資料資產可協助您對資料進行追蹤、剖析和版本設定。
  • 模型可解譯性可讓您說明模型、符合法規合規性,以及了解模型如何在指定的輸入下抵達結果。
  • Azure Machine Learning [作業歷程記錄] 會儲存用來將模型定型的程式碼、資料和計算的快照集。
  • Azure Machine Learning 模型登錄會擷取與您模型相關聯的所有中繼資料。 例如,將模型定型的實驗、部署模型的位置,以及模型部署狀況是否良好。
  • 與 Azure 整合可讓您在機器學習生命週期中對事件採取行動,例如模型註冊、部署、資料漂移和定型 (作業) 事件。

提示

雖然系統會自動擷取模型和資料資產的部分相關資訊,您也可以使用「標籤」來新增其他資訊。 在您的工作區中尋找已註冊的模型和資料資產時,您可以使用標籤做為篩選條件。

對機器學習生命週期中的事件進行通知、自動化及警示

Azure Machine Learning 會將重要事件發佈至 Azure 事件格線,其可用來通知機器學習生命週期中的事件,並將其自動化。 如需如何根據 Azure Machine Learning 事件設定事件驅動程序的詳細資訊,請參閱自訂 CI/CD 和事件驅動工作流程

將機器學習生命週期自動化

您可以使用 GitHub 和 Azure Pipelines 來建立可定型模型的持續整合程序。 在一般案例中,當資料科學家將變更簽入專案的 Git 存放庫時,Azure Pipeline 會開始定型作業。 然後可以檢查作業的結果,以查看定型模型的效能特性。 您也可以建立將模型部署為 web 服務的管線。

Machine Learning 延伸模組 (英文) 可讓您更輕鬆地使用 Azure Pipelines。 延伸模組會提供 Azure Pipelines 的下列增強功能:

  • 在定義服務連線時啟用工作區選取。
  • 使發行管線能夠被在定型管線中建立的定型模型觸發。

如需有關搭配 Machine Learning 使用 Azure Pipelines 的詳細資訊,請參閱搭配 Azure Machine Learning 使用 Azure Pipelines