網(wǎng)管軟件定制開(kāi)發(fā)北京網(wǎng)站優(yōu)化技術(shù)
本文介紹如何在 Azure 機(jī)器學(xué)習(xí)中應(yīng)用機(jī)器學(xué)習(xí)運(yùn)營(yíng) (MLOps) 做法,以管理模型的生命周期。 應(yīng)用 MLOps 做法可改善機(jī)器學(xué)習(xí)解決方案的質(zhì)量和一致性。
關(guān)注TechLead,分享AI全維度知識(shí)。作者擁有10+年互聯(lián)網(wǎng)服務(wù)架構(gòu)、AI產(chǎn)品研發(fā)經(jīng)驗(yàn)、團(tuán)隊(duì)管理經(jīng)驗(yàn),同濟(jì)本復(fù)旦碩,復(fù)旦機(jī)器人智能實(shí)驗(yàn)室成員,阿里云認(rèn)證的資深架構(gòu)師,項(xiàng)目管理專業(yè)人士,上億營(yíng)收AI產(chǎn)品研發(fā)負(fù)責(zé)人。
什么是 MLOps?
MLOps 基于可提高工作流效率的 DevOps 原理和做法。 例如持續(xù)集成、持續(xù)交付和持續(xù)部署。 MLOps 將這些原理應(yīng)用到機(jī)器學(xué)習(xí)過(guò)程,其目標(biāo)是:
- 更快地試驗(yàn)和開(kāi)發(fā)模型。
- 更快地將模型部署到生產(chǎn)環(huán)境。
- 質(zhì)量保證和端到端世系跟蹤。
機(jī)器學(xué)習(xí)中的 MLOps
機(jī)器學(xué)習(xí)提供以下 MLOps 功能:
- 創(chuàng)建可重現(xiàn)的機(jī)器學(xué)習(xí)管道。 使用機(jī)器學(xué)習(xí)管道可為數(shù)據(jù)準(zhǔn)備、訓(xùn)練和評(píng)分過(guò)程定義可重復(fù)且可重用的步驟。
- 創(chuàng)建可重用的軟件環(huán)境。 使用這些環(huán)境訓(xùn)練和部署模型。
- 從任意位置注冊(cè)、打包和部署模型。 還可以跟蹤使用模型時(shí)所需的關(guān)聯(lián)元數(shù)據(jù)。
- 捕獲端到端機(jī)器學(xué)習(xí)生命周期的監(jiān)管數(shù)據(jù)。 記錄的世系信息可以包括模型的發(fā)布者和做出更改的原因。 還包括在生產(chǎn)環(huán)境中部署或使用模型的時(shí)間。
- 針對(duì)機(jī)器學(xué)習(xí)生命周期中的事件發(fā)出通知和警報(bào)。 事件示例包括試驗(yàn)完成、模型注冊(cè)、模型部署和數(shù)據(jù)偏移檢測(cè)。
- 監(jiān)視機(jī)器學(xué)習(xí)應(yīng)用程序中的操作和機(jī)器學(xué)習(xí)相關(guān)問(wèn)題。 比較訓(xùn)練與推理之間的模型輸入。 探索特定于模型的指標(biāo)。 提供有關(guān)機(jī)器學(xué)習(xí)基礎(chǔ)結(jié)構(gòu)的監(jiān)視和警報(bào)信息。
- 使用機(jī)器學(xué)習(xí)和 Azure Pipelines 自動(dòng)化端到端機(jī)器學(xué)習(xí)生命周期。 通過(guò)使用管道,可以經(jīng)常更新模型。 還可以測(cè)試新模型。 可以連同其他應(yīng)用程序和服務(wù)持續(xù)推出新的機(jī)器學(xué)習(xí)模型。
創(chuàng)建可重現(xiàn)的機(jī)器學(xué)習(xí)管道
使用機(jī)器學(xué)習(xí)中的機(jī)器學(xué)習(xí)管道,將模型訓(xùn)練過(guò)程中的所有步驟匯聚到一起。
機(jī)器學(xué)習(xí)管道可以包含從數(shù)據(jù)準(zhǔn)備、到特征提取、到超參數(shù)優(yōu)化、再到模型評(píng)估的所有步驟。 有關(guān)詳細(xì)信息,請(qǐng)參閱機(jī)器學(xué)習(xí)管道。
如果使用設(shè)計(jì)器來(lái)創(chuàng)建機(jī)器學(xué)習(xí)管道,可以隨時(shí)選擇設(shè)計(jì)器頁(yè)面右上角的“…”圖標(biāo)。 然后選擇“克隆”。 克隆管道可以迭代管道設(shè)計(jì),且不會(huì)丟失舊版本。
創(chuàng)建可重用的軟件環(huán)境
使用機(jī)器學(xué)習(xí)環(huán)境,可對(duì)不斷演進(jìn)的項(xiàng)目軟件依賴項(xiàng)進(jìn)行跟蹤和再現(xiàn)。 使用環(huán)境,無(wú)需進(jìn)行手動(dòng)軟件配置,就能確保生成項(xiàng)目可以再現(xiàn)。
環(huán)境描述項(xiàng)目的 pip 和 conda 依賴項(xiàng)。 可以使用它們來(lái)訓(xùn)練和部署模型。 有關(guān)詳細(xì)信息,請(qǐng)參閱什么是機(jī)器學(xué)習(xí)環(huán)境?。
從任意位置注冊(cè)、打包和部署模型
以下部分討論如何注冊(cè)、打包和部署模型。
注冊(cè)和跟蹤機(jī)器學(xué)習(xí)模型
可以使用模型注冊(cè)在 Azure 云的工作區(qū)中存儲(chǔ)模型并控制模型版本。 使用模型注冊(cè)表,可輕松組織和跟蹤定型的模型。
提示
已注冊(cè)的模型是構(gòu)成模型的一個(gè)或多個(gè)文件的邏輯容器。 例如,如果你有一個(gè)存儲(chǔ)在多個(gè)文件中的模型,可以在機(jī)器學(xué)習(xí)工作區(qū)中將這些文件作為一個(gè)模型注冊(cè)。 注冊(cè)后,可以下載或部署已注冊(cè)的模型,并接收注冊(cè)的所有文件。
按名稱和版本標(biāo)識(shí)已注冊(cè)的模型。 每次使用與現(xiàn)有名稱相同的名稱來(lái)注冊(cè)模型時(shí),注冊(cè)表都會(huì)將版本遞增。 在注冊(cè)期間可以提供其他元數(shù)據(jù)標(biāo)記。 然后,可以在搜索模型時(shí)使用這些標(biāo)記。 機(jī)器學(xué)習(xí)支持可以使用 Python 3.5.2 或更高版本加載的任何模型。
重要
- 在 Azure 機(jī)器學(xué)習(xí)工作室的“模型”頁(yè)上使用“按
Tags
篩選”選項(xiàng)時(shí),請(qǐng)使用TagName=TagValue
(無(wú)空格),而不是使用TagName : TagValue
。 - 無(wú)法刪除在活動(dòng)部署中使用的已注冊(cè)模型。
有關(guān)詳細(xì)信息,請(qǐng)參閱在 Azure 機(jī)器學(xué)習(xí)中使用模型。
打包和調(diào)試模型
在將模型部署到生產(chǎn)環(huán)境之前,需將其打包成 Docker 映像。 大多數(shù)情況下,映像創(chuàng)建操作會(huì)在部署期間在后臺(tái)自動(dòng)發(fā)生。 可以手動(dòng)指定映像。
如果部署時(shí)遇到問(wèn)題,可以在本地開(kāi)發(fā)環(huán)境中部署,以進(jìn)行故障排除和調(diào)試。
有關(guān)詳細(xì)信息,請(qǐng)參閱如何對(duì)聯(lián)機(jī)終結(jié)點(diǎn)進(jìn)行故障排除。
轉(zhuǎn)換和優(yōu)化模型
將模型轉(zhuǎn)換為 Open Neural Network Exchange (ONNX) 可以提高性能。 一般情況下,轉(zhuǎn)換為 ONNX 可將性能提高兩倍。
有關(guān)包含機(jī)器學(xué)習(xí)的 ONNX 的詳細(xì)信息,請(qǐng)參閱創(chuàng)建和加速機(jī)器學(xué)習(xí)模型一文。
使用模型
已訓(xùn)練的機(jī)器學(xué)習(xí)模型將在云中或本地部署為終結(jié)點(diǎn)。 部署使用 CPU 或 GPU 進(jìn)行推理。
將模型部署為終結(jié)點(diǎn)時(shí),請(qǐng)?zhí)峁┮韵马?xiàng):
- 用于對(duì)提交到服務(wù)或設(shè)備的數(shù)據(jù)進(jìn)行評(píng)分的模型。
- 一個(gè)入口腳本。 此腳本接受請(qǐng)求,使用模型對(duì)數(shù)據(jù)評(píng)分,然后返回響應(yīng)。
- 一個(gè)描述模型和入口腳本所需 pip 和 Conda 依賴項(xiàng)的機(jī)器學(xué)習(xí)環(huán)境。
- 模型和入口腳本所需的任何其他資產(chǎn),例如文本、數(shù)據(jù)等。
還需要提供目標(biāo)部署平臺(tái)的配置。 例如,VM 系列類型、可用內(nèi)存和核心數(shù)。 創(chuàng)建映像時(shí),還會(huì)添加 Azure 機(jī)器學(xué)習(xí)所需的組件。 例如,運(yùn)行 Web 服務(wù)所需的資產(chǎn)。
批評(píng)分
通過(guò)批處理終結(jié)點(diǎn)支持批評(píng)分。 有關(guān)詳細(xì)信息,請(qǐng)參閱終結(jié)點(diǎn)。
聯(lián)機(jī)終結(jié)點(diǎn)
可以將模型與聯(lián)機(jī)終結(jié)點(diǎn)配合使用。 聯(lián)機(jī)終結(jié)點(diǎn)可以使用以下計(jì)算目標(biāo):
- 托管聯(lián)機(jī)終結(jié)點(diǎn)
- Azure Kubernetes 服務(wù)
- 本地開(kāi)發(fā)環(huán)境
若要將模型部署到終結(jié)點(diǎn),必須提供以下項(xiàng):
- 模型或模型系綜。
- 使用模型所需的依賴項(xiàng)。 例如,接受請(qǐng)求并調(diào)用模型、conda 依賴項(xiàng)的腳本。
- 用于描述如何以及在何處部署模型的部署配置。
有關(guān)詳細(xì)信息,請(qǐng)參閱部署聯(lián)機(jī)終結(jié)點(diǎn)。
受控推出
部署到聯(lián)機(jī)終結(jié)點(diǎn)時(shí),可以使用受控推出來(lái)實(shí)現(xiàn)以下方案:
- 為部署創(chuàng)建終結(jié)點(diǎn)的多個(gè)版本
- 通過(guò)將流量路由到終結(jié)點(diǎn)中的不同部署來(lái)執(zhí)行 A/B 測(cè)試。
- 通過(guò)在終結(jié)點(diǎn)配置中更新流量百分比,在終結(jié)點(diǎn)部署之間進(jìn)行切換。
有關(guān)詳細(xì)信息,請(qǐng)參閱機(jī)器學(xué)習(xí)模型的受控推出。
分析
Microsoft Power BI 支持使用機(jī)器學(xué)習(xí)模型進(jìn)行數(shù)據(jù)分析。 有關(guān)詳細(xì)信息,請(qǐng)參閱 Power BI 中的機(jī)器學(xué)習(xí)集成(預(yù)覽版)。
捕獲 MLOps 所需的治理數(shù)據(jù)
機(jī)器學(xué)習(xí)提供使用元數(shù)據(jù)跟蹤所有機(jī)器學(xué)習(xí)資產(chǎn)的端到端審核線索的功能。 例如:
- 機(jī)器學(xué)習(xí)數(shù)據(jù)集可幫助你跟蹤、分析數(shù)據(jù)及控制其版本。
- 借助可解釋性,可以解釋模型、滿足法規(guī)要求,并了解模型如何針對(duì)特定輸入來(lái)提供結(jié)果。
- 機(jī)器學(xué)習(xí)作業(yè)歷史記錄存儲(chǔ)用于訓(xùn)練模型的代碼、數(shù)據(jù)和計(jì)算的快照。
- 機(jī)器學(xué)習(xí)模型注冊(cè)表捕獲與模型關(guān)聯(lián)的所有元數(shù)據(jù)。 例如,元數(shù)據(jù)包括已訓(xùn)練它的試驗(yàn)、正在部署的位置以及該模型的部署是否正常。
- 通過(guò)與 Azure 集成,可以對(duì)機(jī)器學(xué)習(xí)生命周期中的事件進(jìn)行操作。 例如,模型注冊(cè)、部署、數(shù)據(jù)偏移和訓(xùn)練(作業(yè))事件。
提示
系統(tǒng)會(huì)自動(dòng)捕獲有關(guān)模型和數(shù)據(jù)集的某些信息,同時(shí)你可以使用“標(biāo)記”添加其他信息。 在工作區(qū)中查找已注冊(cè)的模型和數(shù)據(jù)集時(shí),可以使用標(biāo)記作為篩選器。
針對(duì)機(jī)器學(xué)習(xí)生命周期中的事件自動(dòng)發(fā)出通知和警報(bào)
機(jī)器學(xué)習(xí)將關(guān)鍵事件發(fā)布到 Azure 事件網(wǎng)格。使用事件網(wǎng)格可以針對(duì)機(jī)器學(xué)習(xí)生命周期中的事件發(fā)出通知并自動(dòng)采取措施。 有關(guān)詳細(xì)信息,請(qǐng)參閱使用事件網(wǎng)格。
自動(dòng)化機(jī)器學(xué)習(xí)生命周期
可以使用 GitHub 和 Azure Pipelines 來(lái)創(chuàng)建用于訓(xùn)練模型的持續(xù)集成過(guò)程。 在典型方案中,當(dāng)數(shù)據(jù)科學(xué)家將某項(xiàng)更改簽入項(xiàng)目的 Git 存儲(chǔ)庫(kù)時(shí),Azure 管道將啟動(dòng)訓(xùn)練作業(yè)。 然后,可以檢查該作業(yè)的結(jié)果,以了解已訓(xùn)練模型的性能特征。 還可以創(chuàng)建一個(gè)管道用于將模型部署為 Web 服務(wù)。
安裝機(jī)器學(xué)習(xí)擴(kuò)展可以更輕松地使用 Azure Pipelines。 該擴(kuò)展為 Azure Pipelines 提供以下增強(qiáng):
- 在定義服務(wù)連接時(shí)啟用工作區(qū)選擇。
- 使發(fā)布管道可由訓(xùn)練管道中創(chuàng)建的已訓(xùn)練模型觸發(fā)。
關(guān)注TechLead,分享AI全維度知識(shí)。作者擁有10+年互聯(lián)網(wǎng)服務(wù)架構(gòu)、AI產(chǎn)品研發(fā)經(jīng)驗(yàn)、團(tuán)隊(duì)管理經(jīng)驗(yàn),同濟(jì)本復(fù)旦碩,復(fù)旦機(jī)器人智能實(shí)驗(yàn)室成員,阿里云認(rèn)證的資深架構(gòu)師,項(xiàng)目管理專業(yè)人士,上億營(yíng)收AI產(chǎn)品研發(fā)負(fù)責(zé)人。