MLOps:使用 Azure Machine Learning v1 的模型管理、部署、譜系和監視
適用於:Azure CLI ml 延伸模組 v1Python SDK azureml v1
在本文中,您將了解如何在 Azure Machine Learning 中套用機器學習作業 (MLOps) 做法,從而管理模型的生命週期。 機器學習作業做法可以提高機器學習解決方案的品質與一致性。
重要
本文中標示為預覽的項目,目前處於公開預覽狀態。 在此提供的這個預覽版本並無服務等級協定。 不建議將預覽功能用於生產工作負載。 可能不支援特定功能,或可能已經限制功能。
如需詳細資訊,請參閱 Microsoft Azure 預覽版增補使用條款。
什麼是機器學習作業?
機器學習作業 (MLOps) 會依據 DevOps 準則和做法,提高工作流程的效率。 例如,持續整合、傳遞和部署。 機器學習作業會將這些準則套用至機器學習程序,其目標為:
- 更快速地實驗和開發模型
- 更快速地將模型部署到生產環境
- 品質保證和端對端譜系追蹤
Azure Machine Learning 中的 MLOps
Azure Machine Learning 提供下列機器學習作業功能:
- 建立可重現的機器學習管線。 機器學習管線可讓您針對資料準備、定型和評分程序,定義可重複且可重複使用的步驟。
- 建立可重複使用的軟體環境,以定型和部署模型。
- 隨處註冊、封裝和部署模型。 您也可以追蹤使用模型所需的相關中繼資料。
- 擷取端對端機器學習生命週期的治理資料。 記錄的譜系資訊可能包括正在發佈模型的人員、進行變更的原因,以及在生產環境中部署或使用模型的時間。
- 通知並警示機器學習生命週期中的事件。 例如,實驗完成、模型註冊、模型部署和資料漂移偵測。
- 監視機器學習應用程式,以了解操作與機器學習問題。 比較定型和推斷之間的模型輸入、探索模型特定的計量,並在機器學習基礎結構上提供監視和警示。
- 使用 Azure Machine Learning 和 Azure Pipelines,將端對端機器學習生命週期自動化。 使用管線可讓您頻繁地更新模型、測試新模型,以及隨著其他應用程式和服務持續推出新的機器學習模型。
如需機器學習作業的詳細資訊,請參閱機器學習作業。
建立可重現的機器學習管線
使用 Azure Machine Learning 的機器學習管線,將模型定型程序中涉及的所有步驟拼接在一起。
機器學習管線可以包含從資料準備、特徵擷取、超參數調整,一路到模型評估的所有步驟。 如需詳細資訊,請參閱 Azure Machine Learning 管線。
如果您使用設計工具來建立機器學習管線,請選取設計工具頁面右上方的省略符號 (...),然後選取 [複製]。 複製管線可讓您反覆查看管線設計,而不會遺失舊版本。
建立可重複使用的軟體環境
Azure Machine Learning (ML) 環境可讓您隨著專案的發展,追蹤和重現專案的軟體相依性。 環境可讓您確保組建可重現,而且不需要手動軟體設定。
環境能描述您專案的 pip 和 Conda 相依性。 環境可用於模型定型和部署。 如需詳細資訊,請參閱什麼是 Azure Machine Learning 環境。
隨處註冊、封裝和部署模型
您可以隨處註冊、封裝和部署模型。
註冊及追蹤機器學習模型
模型註冊可讓您在 Azure 雲端的工作區內儲存模型,以及設定模型的版本。 此模型登錄可讓組織和追蹤您定型的模型變得容易。
提示
已註冊的模型是組成模型的一或多個檔案所在的邏輯容器。 例如,如果您的模型儲存在多個檔案中,您可以將其註冊為 Azure Machine Learning 工作區中的單一模型。 註冊之後,您就可以下載或部署已註冊的模型,並接收所有已註冊的檔案。
使用名稱和版本來識別已註冊的模型。 每次您使用與既有名稱相同的名稱註冊模型時,登錄會遞增版本。 您可以在註冊期間指定其他中繼資料標記。 然後,在搜尋模型時使用這些標籤。 Azure Machine Learning 支援可使用 Python 3.5.2 或更高版本載入的任何模型。
提示
您也可以註冊在 Azure Machine Learning 外部定型的模型。
您無法刪除在作用中部署中正在使用的已註冊模型。 如需詳細資訊,請參閱註冊模型。
重要
當您使用 Azure Machine Learning Studio [模型] 頁面上的 [篩選依據:Tags
] 選項時,請不要使用 TagName : TagValue
,而應使用 TagName=TagValue
(不含空格)。
封裝和偵錯模型
將模型部署到生產環境之前,將模型封裝到 Docker 映像中。 在大部分情況下,在部署期間,會自動在背景中建立映像。 您可以手動指定映像。
如果您在部署時遇到問題,您可以在本機開發環境上部署以進行疑難排解和偵錯。
如需詳細資訊,請參閱將機器學習模型部署至 Azure 和疑難排解遠端模型部署。
轉換和最佳化模型
將模型轉換成 Open Neural Network Exchange (英文) (ONNX) 可能可以改善效能。 平均來說,轉換成 ONNX 可能會產生 2x 的效能提升。
如需詳細資訊,請參閱 ONNX 與 Azure Machine Learning。
使用模型
定型的機器學習模型會部署為雲端或本機的 web 服務。 部署會使用 CPU 或 GPU 來進行推斷。 您也可以使用 Power BI 中的模型。
使用模型做為 Web 服務時,請提供下列項目:
- 用來對提交給服務或裝置的資料進行評分的模型。
- 輸入腳本。 此指令碼會接受要求、使用模型來對資料進行評分,並傳回回應。
- 描述模型和輸入指令碼所需之 Pip 和 Conda 相依性的 Azure Machine Learning 環境。
- 模型和輸入指令碼所需的任何其他資產,例如文字或資料。
您也會提供目標部署平台的設定。 例如,虛擬機器系列類型、可用記憶體,以及部署至 Azure Kubernetes Service 時的核心數目。
建立映像時,也會新增 Azure Machine Learning 所需的元件。 例如,執行 web 服務所需的資產。
批次評分
機器學習管線可支援批次評分。 如需詳細資訊,請參閱教學課程:建置影像分類的 Azure Machine Learning 管線。
即時 web 服務
您可以在 web 服務中使用模型搭配下列計算目標:
- Azure Container Instance
- Azure Kubernetes Service
- 本機開發環境
若要將模型部署為 web 服務,您必須提供下列項目:
- 模型或模型的集成。
- 使用模型所需的相依性。 例如,接受要求並叫用模型或 conda 相依性的指令碼。
- 描述部署模型的方式和位置的部署設定。
如需詳細資訊,請參閱將機器學習模型部署至 Azure。
分析
Microsoft Power BI 支援使用機器學習模型來進行資料分析。 如需詳細資訊,請參閱 AI 與資料流程。
擷取機器學習作業所需的治理資料
Azure Machine Learning 可讓您使用中繼資料,追蹤所有機器學習資產的端對端稽核線索。
- Azure Machine Learning 與 Git 整合,以追蹤您程式碼源自的存放庫、分支及認可的相關資訊。
- Azure Machine Learning 資料集可協助您對資料進行追蹤、剖析和版本設定。
- 可解譯性可讓您說明模型、符合法規合規性,以及瞭解模型如何在指定的輸入下抵達結果。
- Azure Machine Learning 執行歷程記錄會儲存用來將模型定型的程式碼、資料和計算的快照集。
- Azure Machine Learning 模型登錄會擷取與您模型相關聯的所有中繼資料。 此中繼資料包括將模型定型的實驗、部署該模型的位置,以及其部署是否狀況良好。
- 與 Azure 的整合可讓您對機器學習生命週期中的事件採取行動。 例如,模型註冊、部署、資料漂移和定型 (執行) 事件。
提示
系統會自動擷取模型和資料集的某些相關資訊。 您可以使用標記來新增其他資訊。 在您的工作區中尋找已註冊的模型和資料集時,您可以使用標籤做為篩選條件。
將資料集與已註冊的模型產生關聯是選擇性步驟。 如需在註冊模型時參考資料集的詳細資訊,請參閱模型類別參考。
對機器學習生命週期中的事件進行通知、自動化及警示
Azure Machine Learning 會將重要事件發佈至 Azure 事件格線,其可用來通知機器學習生命週期中的事件,並將其自動化。 如需詳細資訊,請參閱根據 Azure Machine Learning 事件來觸發應用程式、程序或 CI/CD 工作流程。
監視作業和機器學習問題
監視可讓您瞭解哪些資料會傳送至模型,以及其所傳回的預測。
這項資訊可協助您瞭解模型的使用方式。 收集到的輸入資料也有助於定型未來版本的模型。
如需詳細資訊,請參閱從生產環境中的模型收集資料。
針對新資料重新定型模型
通常,您會想要驗證模型、進行更新,或甚至是在收到新資訊時從頭重新定型。 有時候,接收新資料是網域的預期部分。 其他的時候,模型效能可能會因為特定感應器的變更、自然的資料變更 (例如季節性效果) 或功能與其他功能之間的改變而降低。 如需詳細資訊,請參閱對資料集偵測資料漂移 (預覽)。
「如何知道我是否應該重新定型?」這個問題並不存在通用的解答,但先前所討論的 Azure Machine Learning 事件和監視工具是自動化的良好起點。 一旦決定重新定型,您應該:
- 使用可重複的自動化程序來對資料進行前置處理
- 定型新模型
- 將新模型的輸出與舊模型的輸出互相比較
- 使用預先定義的準則來選擇是否要取代舊的模型
上述步驟的主要觀念,在於重新定型應該要以自動化的方式進行,而非即興進行。 Azure Machine Learning 管線是建立與資料準備、定型、驗證和部署相關之工作流程的好答案。 請參閱使用管線參數在設計工具中重新定型模型,以了解管線和 Azure Machine Learning 設計工具如何融入重新定型案例中。
將機器學習生命週期自動化
您可以使用 GitHub 和 Azure Pipelines 來建立可定型模型的持續整合程序。 在一般案例中,當資料科學家將變更簽入專案的 Git 存放庫時,Azure Pipeline 即會開始定型回合。 您可以檢查回合的結果,以查看定型模型的效能特性。 您也可以建立將模型部署為 web 服務的管線。
Azure Machine Learning 延伸模組可讓您更輕鬆地使用 Azure Pipelines。 其提供 Azure Pipelines 的下列增強功能:
- 在定義服務連接時啟用工作區選取。
- 使發行管線能夠被在定型管線中建立的定型模型觸發。
如需有關搭配 Azure Machine Learning 使用 Azure Pipelines 的詳細資訊,請參閱下列資源:
- 使用 Azure Pipelines 持續整合和部署機器學習模型
- Azure Machine Learning MLOps 儲存機制
- Azure Machine Learning MLOpsPython 儲存機制
您也可以使用 Azure Data Factory,來建立資料擷取管線,以準備用於定型的資料。 如需詳細資訊,請參閱資料擷取管線的 DevOps。
相關內容
若要深入了解,請閱讀及探索下列資源: