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

適用於:Azure CLI ml 延伸模組 v1Python SDK azureml v1

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

重要

本文中標示為「預覽」的項目目前處於公開預覽狀態。 此預覽版本會在沒有服務等級協定的情況下提供,不建議用於實際執行工作負載。 可能不支援特定功能,或可能已經限制功能。 如需詳細資訊,請參閱 Microsoft Azure 預覽版增補使用條款

什麼是 MLOps?

機器學習作業 (MLOps) 是以提高工作流程效率的 DevOps 準則和做法為基礎。 例如,持續整合、傳遞和部署。 MLOps 會將這些準則套用至機器學習程序,其目標為:

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

Azure Machine Learning 中的 MLOps

Azure Machine Learning 提供下列 MLOps 功能:

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

如需有關 MLOps 的詳細資訊,請參閱機器學習 DevOps (MLOps)

建立可重現的 ML 管線

使用 Azure Machine Learning 的 ML 管線,將模型定型程序中涉及的所有步驟拼接在一起。

ML 管線可以包含從資料準備至特徵擷取到超參數調整以進行模型評估的步驟。 如需詳細資訊,請參閱 ML 管線

如果您使用設計工具來建立 ML 管線,您隨時都可以按一下設計工具頁面右上方的 [...],然後選取 [複製]。 複製管線可讓您反覆查看管線設計,而不會遺失舊版本。

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

Azure Machine Learning (ML) 環境可讓您隨著專案的發展,追蹤和重現專案的軟體相依性。 環境可讓您確保組建可重現,而且不需要手動軟體設定。

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

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

註冊和追蹤 ML 模型

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

提示

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

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

提示

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

您無法刪除在作用中部署中正在使用的已註冊模型。 如需詳細資訊,請參閱部署模型的註冊模型一節。

重要

當您在 Azure Machine Learning 工作室的 [模型] 頁面上使用 [篩選依據]Tags 選項,而不是使用 TagName : TagValue 時,客戶時應使用 TagName=TagValue (不含空格)

封裝和偵錯模型

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

如果您在部署時遇到問題,您可以在本機開發環境上部署以進行疑難排解和偵錯。

如需詳細資訊,請參閱部署模型疑難排解部署

轉換和最佳化模型

將模型轉換成 Open Neural Network Exchange (ONNX) 可能會改善效能。 平均來說,轉換成 ONNX 可能會產生 2x 的效能提升。

如需有關使用 Azure Machine Learning ONNX 的詳細資訊,請參閱建立和加速 ML 模型一文。

使用模型

定型的機器學習模型會部署為雲端或本機的 web 服務。 部署會使用 CPU、GPU 或可現場程式化閘道陣列 (FPGA) 來進行推斷。 您也可以使用 Power BI 中的模型。

使用模型做為 web 服務時,您會提供下列項目:

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

您也會提供目標部署平台的設定。 例如,VM 系列類型、可用記憶體,以及部署至 Azure Kubernetes Service 時的核心數目。

建立映像時,也會新增 Azure Machine Learning 所需的元件。 例如,執行 web 服務所需的資產。

批次評分

ML 管線可支援批次評分。 如需詳細資訊,請參閱批次預測巨量資料

即時 web 服務

您可以在 web 服務中使用模型搭配下列計算目標:

  • Azure Container Instance
  • Azure Kubernetes Service
  • 本機開發環境

若要將模型部署為 web 服務,您必須提供下列項目:

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

如需詳細資訊,請參閱部署模型

分析

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

擷取 MLOps 所需的治理資料

Azure Machine Learning 可讓您使用中繼資料,追蹤所有 ML 資產的端對端稽核記錄。

  • Azure Machine Learning 與 Git 整合,以追蹤您程式碼源自的存放庫/分支/認可的相關資訊。
  • Azure Machine Learning 資料集可協助您對資料進行追蹤、剖析和版本設定。
  • 可解譯性可讓您說明模型、符合法規合規性,以及瞭解模型如何在指定的輸入下抵達結果。
  • Azure Machine Learning 執行歷程記錄會儲存用來將模型定型的程式碼、資料和計算的快照集。
  • Azure Machine Learning 模型登錄會擷取與模型相關聯的所有中繼資料 (哪個實驗對其進行定型、將其部署至何處、其部署的狀況是否良好)。
  • 與 Azure 的整合可讓您對 ML 生命週期中的事件採取行動。 例如,模型註冊、部署、資料漂移和定型 (執行) 事件。

提示

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

將資料集與已註冊的模型產生關聯是選擇性步驟。 如需在註冊模型時參考資料集的詳細資訊,請參閱模型類別參考。

通知、自動化並警示 ML 生命週期中的事件

Azure Machine Learning 會將重要事件發佈至 Azure 事件格線,其可用來通知 ML 生命週期中的事件,並將其自動化。 如需詳細資訊,請參閱此文件

監視操作與 ML 問題

監視可讓您瞭解哪些資料會傳送至模型,以及其所傳回的預測。

這項資訊可協助您瞭解模型的使用方式。 收集到的輸入資料可能也有助於定型未來版本的模型。

如需詳細資訊,請參閱如何啟用模型資料收集

針對新資料重新定型模型

通常,您會想要驗證模型、進行更新,或甚至是在收到新資訊時從頭重新定型。 有時候,接收新資料是網域的預期部分。 其他的時候,如同在資料集上偵測資料漂移 (預覽) 中所討論,模型效能可能會因為特定感應器的變更、自然的資料變更 (例如季節性效果) 或功能與其他功能之間的改變而降低。

「如何知道我是否應該重新定型?」這個問題並不存在通用的解答,但先前所討論的 Azure Machine Learning 事件和監視工具是自動化的良好起點。 一旦決定重新定型,您應該:

  • 使用可重複的自動化程序來對資料進行前置處理
  • 定型新模型
  • 將新模型的輸出與舊模型的輸出做比較
  • 使用預先定義的準則來選擇是否要取代舊的模型

上述步驟的主題是重新定型應會自動執行,而不是臨機操作。 Azure Machine Learning 管線是建立與資料準備、定型、驗證和部署相關之工作流程的好答案。 閱讀使用 Azure Machine Learning 設計工具重新定型模型,以查看管線和 Azure Machine Learning 設計工具如何融入重新定型案例中。

自動化 ML 生命週期

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

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

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

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

您也可以使用 Azure Data Factory,來建立資料擷取管線,以準備用於定型的資料。 如需詳細資訊,請參閱資料擷取管線

下一步

若要深入了解,請閱讀及探索下列資源: