機(jī)器學(xué)習(xí)模型越來越多地用于做出重要的現(xiàn)實(shí)決策,從識別欺詐行為到在汽車中應(yīng)用自動(dòng)剎車。
一旦將模型部署到生產(chǎn)中,機(jī)器學(xué)習(xí)從業(yè)者的工作就遠(yuǎn)遠(yuǎn)沒有結(jié)束。您必須監(jiān)控您的模型,以確保它們在面對真實(shí)世界活動(dòng)時(shí)繼續(xù)按預(yù)期執(zhí)行。然而,像使用傳統(tǒng)軟件那樣監(jiān)控機(jī)器學(xué)習(xí)系統(tǒng)是不夠的。
那么,如何有效地監(jiān)控生產(chǎn)中的機(jī)器學(xué)習(xí)模型?需要監(jiān)控哪些具體指標(biāo)?哪些工具最有效?這篇文章將回答機(jī)器學(xué)習(xí)從業(yè)者的這些關(guān)鍵問題。
監(jiān)控機(jī)器學(xué)習(xí)模型的重要性
在機(jī)器學(xué)習(xí)的上下文中,監(jiān)控是指跟蹤已部署模型的行為以分析性能的過程。部署后監(jiān)控機(jī)器學(xué)習(xí)模型至關(guān)重要,因?yàn)槟P驮谏a(chǎn)中可能會損壞和降級。部署不是一次性的行動(dòng),你會做而忘記。
為了確定在生產(chǎn)中更新模型的正確時(shí)間,必須有一個(gè)實(shí)時(shí)視圖,使利益相關(guān)者能夠不斷評估模型在實(shí)時(shí)環(huán)境中的性能。這有助于確保模型按預(yù)期運(yùn)行。需要盡可能多地了解已部署的模型,以便在問題和源造成負(fù)面業(yè)務(wù)影響之前發(fā)現(xiàn)它們。
提高知名度聽起來很簡單,但事實(shí)并非如此。監(jiān)控機(jī)器學(xué)習(xí)模型是一項(xiàng)艱巨的任務(wù)。下一節(jié)將更深入地探討監(jiān)控機(jī)器學(xué)習(xí)模型的挑戰(zhàn)。
為什么機(jī)器學(xué)習(xí)系統(tǒng)監(jiān)控很難?
軟件開發(fā)人員多年來一直在將傳統(tǒng)軟件投入生產(chǎn),因此,評估使用機(jī)器學(xué)習(xí)模型進(jìn)行同樣操作的難度是一個(gè)很好的起點(diǎn)。
必須承認(rèn),在生產(chǎn)中討論機(jī)器學(xué)習(xí)模型類似于討論機(jī)器學(xué)習(xí)系統(tǒng)。機(jī)器學(xué)習(xí)系統(tǒng)具有傳統(tǒng)軟件的挑戰(zhàn)和機(jī)器學(xué)習(xí)特有的幾個(gè)挑戰(zhàn)。要了解有關(guān)這些挑戰(zhàn)的更多信息,請參閱 Hidden Technical Debt in Machine Learning Systems 。
機(jī)器學(xué)習(xí)系統(tǒng)行為
在構(gòu)建機(jī)器學(xué)習(xí)系統(tǒng)時(shí),從業(yè)者主要熱衷于跟蹤系統(tǒng)的行為。三個(gè)組件決定系統(tǒng)的行為:
數(shù)據(jù)(特定于 ML ) :機(jī)器學(xué)習(xí)系統(tǒng)的行為取決于模型所基于的數(shù)據(jù)集,以及在生產(chǎn)過程中流入系統(tǒng)的數(shù)據(jù)。
模型(特定于 ML ) :該模型是基于數(shù)據(jù)訓(xùn)練的機(jī)器學(xué)習(xí)算法的輸出。它代表了算法學(xué)習(xí)到的內(nèi)容。最好將模型視為一個(gè)管道,因?yàn)樗ǔS蓞f(xié)調(diào)數(shù)據(jù)流入模型和從模型輸出的所有步驟組成。
The code :需要代碼來構(gòu)建機(jī)器學(xué)習(xí)管道并定義模型配置以訓(xùn)練、測試和評估模型。
正如 Christopher Samiullah 在 Deployment of Machine Learning Models 中所說,“如果沒有理解和跟蹤這些數(shù)據(jù)(以及模型)變化的方法,你就無法理解你的系統(tǒng)?!?/p>
代碼、模型和數(shù)據(jù)中指定的規(guī)則會影響整個(gè)系統(tǒng)的行為?;叵胍幌?,數(shù)據(jù)來自一個(gè)永不停息的來源——“真實(shí)世界”——它是不斷變化的,因此它是不可預(yù)測的。
機(jī)器學(xué)習(xí)系統(tǒng)面臨的挑戰(zhàn)
在構(gòu)建機(jī)器學(xué)習(xí)系統(tǒng)時(shí),這并不像說“我們有兩個(gè)額外的維度”那么簡單。由于以下挑戰(zhàn),代碼和配置給機(jī)器學(xué)習(xí)系統(tǒng)帶來了更多的復(fù)雜性和敏感性:
Entanglements :輸入數(shù)據(jù)分布的任何變化都會影響目標(biāo)函數(shù)的近似值,這可能會影響模型所做的預(yù)測。換句話說,改變?nèi)魏问虑槎紩淖円磺?。因此,必須仔?xì)測試任何功能工程和選擇代碼。
Configurations :模型配置中的缺陷(例如,超參數(shù)、版本和功能)可以從根本上改變系統(tǒng)的行為,傳統(tǒng)的軟件測試無法捕捉到。換句話說,機(jī)器學(xué)習(xí)系統(tǒng)可以預(yù)測不正確但有效的輸出,而不會引發(fā)異常。
與傳統(tǒng)軟件系統(tǒng)相比,這些因素使監(jiān)控機(jī)器學(xué)習(xí)系統(tǒng)變得極其困難,而傳統(tǒng)軟件系統(tǒng)受代碼中規(guī)定的規(guī)則控制。另一個(gè)需要考慮的因素是參與開發(fā)機(jī)器學(xué)習(xí)系統(tǒng)的利益相關(guān)者的數(shù)量。這被稱為 responsibility challenge 。
責(zé)任挑戰(zhàn)
通常,讓多個(gè)利益相關(guān)者參與一個(gè)項(xiàng)目可能會非常有益。每個(gè)利益相關(guān)者都可以根據(jù)他們的專業(yè)知識深入了解需求和約束,使團(tuán)隊(duì)能夠減少和發(fā)現(xiàn)項(xiàng)目風(fēng)險(xiǎn)。
然而,基于業(yè)務(wù)領(lǐng)域和職責(zé),每個(gè)利益相關(guān)者可能對“監(jiān)控”的含義有完全不同的理解。數(shù)據(jù)科學(xué)家和工程師之間的區(qū)別就是一個(gè)例子。
數(shù)據(jù)科學(xué)家的觀點(diǎn)
數(shù)據(jù)科學(xué)家最關(guān)心的是實(shí)現(xiàn)功能目標(biāo),例如輸入數(shù)據(jù)、模型的變化以及模型所做的預(yù)測。監(jiān)控功能目標(biāo)需要對傳遞到模型中的數(shù)據(jù)、模型本身的度量以及對模型所做預(yù)測的了解。
數(shù)據(jù)科學(xué)家可能更關(guān)心模型在生產(chǎn)環(huán)境中的準(zhǔn)確性。為了獲得這樣的洞察力,最好能實(shí)時(shí)獲得真正的標(biāo)簽,這只是有時(shí)的情況。因此,數(shù)據(jù)科學(xué)家經(jīng)常使用代理值來獲得其模型的可見性。
工程師的觀點(diǎn)
另一方面,工程師通常負(fù)責(zé)實(shí)現(xiàn)操作目標(biāo),以確保機(jī)器學(xué)習(xí)系統(tǒng)的資源是健康的。這需要監(jiān)控傳統(tǒng)軟件應(yīng)用程序度量,這在傳統(tǒng)軟件開發(fā)中是典型的。示例包括:
延遲
IO /內(nèi)存/磁盤使用
系統(tǒng)可靠性(正常運(yùn)行時(shí)間)
可聽性
盡管利益相關(guān)者的目標(biāo)和責(zé)任存在差異,但對機(jī)器學(xué)習(xí)系統(tǒng)的充分監(jiān)控考慮到了這兩個(gè)角度。然而,仍然需要全方位的良好理解。為了實(shí)現(xiàn)這一成就,所有利益相關(guān)者聚集在一起,確保條款明確,以便所有團(tuán)隊(duì)成員使用相同的語言仍然至關(guān)重要。
生產(chǎn)中需要監(jiān)控哪些內(nèi)容?
監(jiān)測分為兩個(gè)級別:功能性和操作性。
功能級別監(jiān)控
在功能層面,數(shù)據(jù)科學(xué)家(或/和機(jī)器學(xué)習(xí)工程師)將監(jiān)控三個(gè)不同的類別:輸入數(shù)據(jù)、模型和輸出預(yù)測。監(jiān)測每一個(gè)類別可以讓數(shù)據(jù)科學(xué)家更好地了解模型的性能。
輸入數(shù)據(jù)
模型取決于作為輸入接收的數(shù)據(jù)。如果模型接收到它不期望的輸入,則模型可能會崩潰。監(jiān)控輸入數(shù)據(jù)是檢測功能性能問題并在其影響機(jī)器學(xué)習(xí)系統(tǒng)性能之前消除這些問題的第一步。從輸入數(shù)據(jù)角度監(jiān)控的項(xiàng)目包括:
Data quality :為了維護(hù)數(shù)據(jù)完整性,您必須在生產(chǎn)數(shù)據(jù)看到機(jī)器學(xué)習(xí)模型之前驗(yàn)證它,使用基于數(shù)據(jù)財(cái)產(chǎn)的度量。換句話說,確保數(shù)據(jù)類型是等效的。有幾個(gè)因素可能會影響您的數(shù)據(jù)完整性;例如源數(shù)據(jù)模式的改變或數(shù)據(jù)丟失。這些問題改變了數(shù)據(jù)管道,使得模型不再接收預(yù)期的輸入。
Data drift :可以監(jiān)測訓(xùn)練數(shù)據(jù)和生產(chǎn)數(shù)據(jù)之間分布的變化,以檢查漂移:這是通過檢測特征值的統(tǒng)計(jì)財(cái)產(chǎn)隨時(shí)間的變化來實(shí)現(xiàn)的。數(shù)據(jù)來自一個(gè)永不停止、不斷變化的來源,稱為真實(shí)世界。隨著人們的行為發(fā)生變化,您正在解決的業(yè)務(wù)案例周圍的環(huán)境和環(huán)境可能會發(fā)生變化。此時(shí),是時(shí)候更新機(jī)器學(xué)習(xí)模型了。
模型
機(jī)器學(xué)習(xí)系統(tǒng)的核心是機(jī)器學(xué)習(xí)模型。為了使系統(tǒng)驅(qū)動(dòng)業(yè)務(wù)價(jià)值,模型必須保持高于閾值的性能水平。為了實(shí)現(xiàn)這一目標(biāo),必須監(jiān)控可能影響模型性能的各個(gè)方面,例如模型漂移和版本。
Model drift :模型漂移是由于真實(shí)環(huán)境的變化而導(dǎo)致的模型預(yù)測能力的衰減。應(yīng)使用統(tǒng)計(jì)測試來檢測漂移,并監(jiān)測預(yù)測性能,以評估模型隨時(shí)間的性能。
Versions :始終確保正確的型號在生產(chǎn)中運(yùn)行。應(yīng)跟蹤版本歷史和預(yù)測。
輸出
要了解模型的性能,還必須了解模型在生產(chǎn)環(huán)境中輸出的預(yù)測。機(jī)器學(xué)習(xí)模型被投入生產(chǎn)以解決問題。因此,監(jiān)控模型的輸出是確保其根據(jù)用作 KPI 的指標(biāo)執(zhí)行的一種有價(jià)值的方法。例如:
Ground truth: 對于某些問題,您可以獲取地面真相標(biāo)簽。例如,如果使用一個(gè)模型向用戶推薦個(gè)性化廣告(您預(yù)測用戶是否會點(diǎn)擊該廣告),并且用戶點(diǎn)擊以暗示該廣告是相關(guān)的,那么您幾乎可以立即獲得基本事實(shí)。在這種情況下,可以根據(jù)實(shí)際解決方案評估模型預(yù)測的聚合,以確定模型的性能。然而,在大多數(shù)機(jī)器學(xué)習(xí)用例中,根據(jù)地面真相標(biāo)簽評估模型預(yù)測是困難的,需要一種替代方法。
Prediction drift: 當(dāng)無法獲取地面真相標(biāo)簽時(shí),必須監(jiān)控預(yù)測。如果預(yù)測的分布發(fā)生了劇烈變化,那么就有可能出了問題。例如,如果你正在使用一個(gè)模型來預(yù)測信用卡欺詐交易,而被認(rèn)定為欺詐的交易比例突然上升,那么情況就發(fā)生了變化。也許輸入數(shù)據(jù)結(jié)構(gòu)已經(jīng)改變,系統(tǒng)中的其他一些微服務(wù)行為不當(dāng),或者世界上有更多的欺詐行為。
操作級別監(jiān)控
在操作層面,操作工程師關(guān)心的是確保機(jī)器學(xué)習(xí)系統(tǒng)的資源是健康的。當(dāng)資源不健康時(shí),工程師負(fù)責(zé)采取行動(dòng)。他們還將監(jiān)控三個(gè)類別的機(jī)器學(xué)習(xí)應(yīng)用程序:系統(tǒng)、管道和成本。
ML 系統(tǒng)性能
其思想是不斷了解機(jī)器學(xué)習(xí)模型如何與整個(gè)應(yīng)用程序堆棧一致。這個(gè)領(lǐng)域的問題將影響整個(gè)系統(tǒng)。能夠深入了解模型性能的系統(tǒng)性能指標(biāo)包括:
內(nèi)存使用
延遲
管道
應(yīng)該監(jiān)控兩個(gè)關(guān)鍵管道:數(shù)據(jù)管道和模型管道。未能監(jiān)控?cái)?shù)據(jù)管道可能會引發(fā)數(shù)據(jù)質(zhì)量問題,導(dǎo)致系統(tǒng)崩潰。關(guān)于模型,您希望跟蹤和監(jiān)視可能導(dǎo)致模型在生產(chǎn)中失敗的因素,例如模型依賴關(guān)系。
成本
從數(shù)據(jù)存儲到模型訓(xùn)練等等,機(jī)器學(xué)習(xí)涉及到財(cái)務(wù)成本。雖然機(jī)器學(xué)習(xí)系統(tǒng)可以為企業(yè)創(chuàng)造大量價(jià)值,但也有可能利用機(jī)器學(xué)習(xí)變得極其昂貴。不斷監(jiān)控機(jī)器學(xué)習(xí)應(yīng)用程序的成本是確保成本保持的一個(gè)負(fù)責(zé)任的步驟。
例如,您可以使用 AWS 或 GCP 等云供應(yīng)商設(shè)置預(yù)算,因?yàn)樗麄兊姆?wù)跟蹤您的賬單和支出。當(dāng)預(yù)算達(dá)到上限時(shí),云提供商將發(fā)送警報(bào)通知團(tuán)隊(duì)。
如果您在本地托管機(jī)器學(xué)習(xí)應(yīng)用程序,監(jiān)控系統(tǒng)使用情況和成本可以更好地了解應(yīng)用程序的哪個(gè)組件成本最高,以及您是否可以做出某些妥協(xié)以降低成本。
用于監(jiān)控機(jī)器學(xué)習(xí)模型的工具
現(xiàn)在開始機(jī)器學(xué)習(xí)模型監(jiān)控比以往任何時(shí)候都容易。一些企業(yè)已經(jīng)開發(fā)了一些工具來簡化生產(chǎn)中監(jiān)控機(jī)器學(xué)習(xí)系統(tǒng)的過程。無需重新安裝車輪。
用于監(jiān)視系統(tǒng)的工具取決于要監(jiān)視的特定項(xiàng)目。在最終決定之前,值得瀏覽一下,以找到最適合您的產(chǎn)品。下面列出了一些您可能希望開始的解決方案。
普羅米修斯和格拉法納
Prometheus 是一個(gè)用于事件監(jiān)視和警報(bào)的開源系統(tǒng)。它的工作原理是從插入指令的作業(yè)中抓取實(shí)時(shí)度量,并將抓取的樣本作為時(shí)間序列數(shù)據(jù)存儲在本地。
Grafana 是一個(gè)開源分析和交互式可視化 web 應(yīng)用程序,可與 Prometheus 合作使用,以可視化收集的數(shù)據(jù)。
簡單地說,您可以結(jié)合普羅米修斯和 Grafana 的力量來創(chuàng)建儀表板,使您能夠跟蹤生產(chǎn)中的機(jī)器學(xué)習(xí)系統(tǒng)。您還可以使用這些儀表板設(shè)置警報(bào),在發(fā)生意外事件時(shí)通知您。
如果您使用 NVIDIA Triton Inference Server 在生產(chǎn)中部署、運(yùn)行和擴(kuò)展 AI 模型,您可以利用 NVIDIA Triton 以 Prometheus 格式導(dǎo)出的運(yùn)營指標(biāo)。您可以使用 NVIDIA Triton 從運(yùn)行推斷的系統(tǒng)中收集 GPU / CPU 使用、內(nèi)存和延遲指標(biāo)。這些度量對于擴(kuò)展和負(fù)載平衡請求非常有用,從而滿足應(yīng)用程序 SLA 。
了解有關(guān) Prometheus 和 Grafana 的更多信息。
顯然人工智能
顯然,人工智能是一種開源的 Python 工具,用于在生產(chǎn)環(huán)境中分析、監(jiān)控和調(diào)試機(jī)器學(xué)習(xí)模型。聯(lián)合創(chuàng)始人 Emeli Dral 和 Elena Samuylova 撰寫了有關(guān)模型監(jiān)控的信息性文章,包括:
Monitoring Machine Learning Models in Production
Machine Learning Monitoring: What It Is, and What We Are Missing
要了解更多信息,請參閱 Evidently AI documentation 。
Amazon SageMaker 型號監(jiān)視器
一眼望去, Amazon SageMaker 模型監(jiān)視器可以提醒您模型質(zhì)量的任何偏差,以便采取糾正措施,如再培訓(xùn)、審計(jì)上游系統(tǒng)或修復(fù)質(zhì)量問題。開發(fā)人員可以利用無代碼監(jiān)控功能或通過編碼進(jìn)行自定義分析。有關(guān)詳細(xì)信息,請參閱 Amazon SageMaker documentation 。
機(jī)器學(xué)習(xí)模型監(jiān)控的最佳實(shí)踐
部署模型只是您作為機(jī)器學(xué)習(xí)實(shí)踐者職責(zé)的一部分。您工作的其他部分涉及確保模型在實(shí)時(shí)環(huán)境中按預(yù)期運(yùn)行,這需要監(jiān)控機(jī)器學(xué)習(xí)系統(tǒng)。監(jiān)控機(jī)器學(xué)習(xí)時(shí)需要遵循的一些常規(guī)最佳實(shí)踐包括:
部署階段未啟動(dòng)監(jiān)控
構(gòu)建機(jī)器學(xué)習(xí)模型通常需要多次迭代才能獲得可接受的設(shè)計(jì)。因此,跟蹤和監(jiān)控度量和日志是模型開發(fā)的重要組成部分,一旦開始實(shí)驗(yàn),就應(yīng)該強(qiáng)制執(zhí)行。
嚴(yán)重退化是一個(gè)危險(xiǎn)信號,需要調(diào)查
模型的性能應(yīng)該會降低。然而,突然的大幅度下降是令人擔(dān)憂的原因,應(yīng)立即進(jìn)行調(diào)查。
創(chuàng)建故障排除框架
應(yīng)鼓勵(lì)團(tuán)隊(duì)記錄其故障排除框架。從警報(bào)到故障排除的系統(tǒng)對模型維護(hù)非常有效。
創(chuàng)建行動(dòng)計(jì)劃
在不可避免的情況下,你的機(jī)器學(xué)習(xí)系統(tǒng)出現(xiàn)了中斷,應(yīng)該有一個(gè)框架來應(yīng)對。一旦團(tuán)隊(duì)收到問題警報(bào),框架應(yīng)將團(tuán)隊(duì)從警報(bào)轉(zhuǎn)移到行動(dòng),然后最終調(diào)試問題,以確保模型得到有效維護(hù)。
當(dāng)?shù)孛嬲嫦嗖豢捎脮r(shí)使用代理
不斷了解機(jī)器學(xué)習(xí)模型在生產(chǎn)環(huán)境中的性能至關(guān)重要。如果無法根據(jù)實(shí)際情況評估模型,那么預(yù)測漂移等代理就足夠了。
我還有漏掉什么嗎?你可在 NVIDIA Developer Forums 中留下評論。
接下來是什么?
監(jiān)控機(jī)器學(xué)習(xí)系統(tǒng)是機(jī)器學(xué)習(xí)生命周期中一個(gè)困難但重要的部分。在生產(chǎn)中,模型的性能有時(shí)與預(yù)期不同。因此,需要進(jìn)行適當(dāng)?shù)谋O(jiān)測,以在問題可能造成重大損害之前發(fā)現(xiàn)問題。
一個(gè)薄弱的監(jiān)控系統(tǒng)可能會導(dǎo)致 1 )模型在生產(chǎn)過程中性能不佳而沒有監(jiān)督, 2 )企業(yè)擁有的模型不再提供商業(yè)價(jià)值,或 3 )未發(fā)現(xiàn)的錯(cuò)誤隨著時(shí)間的推移而爆發(fā)。
-
NVIDIA
+關(guān)注
關(guān)注
14文章
5309瀏覽量
106465 -
AI
+關(guān)注
關(guān)注
88文章
35191瀏覽量
280230 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8505瀏覽量
134665
發(fā)布評論請先 登錄
機(jī)器學(xué)習(xí)模型評估指標(biāo)

如何使用TensorFlow構(gòu)建機(jī)器學(xué)習(xí)模型

如何更有效地使用局部放電監(jiān)控?
從利用認(rèn)知 API 到構(gòu)建出自定義的機(jī)器學(xué)習(xí)模型面臨哪些挑戰(zhàn)?
什么是機(jī)器學(xué)習(xí)? 機(jī)器學(xué)習(xí)基礎(chǔ)入門
部署基于嵌入的機(jī)器學(xué)習(xí)模型
R語言機(jī)器學(xué)習(xí)算法的性能分析比較
機(jī)器學(xué)習(xí)被高估了?
機(jī)器學(xué)習(xí)模型在生產(chǎn)中退化的原因

如何評估機(jī)器學(xué)習(xí)模型的性能?機(jī)器學(xué)習(xí)的算法選擇
除靜電設(shè)備在生產(chǎn)中的運(yùn)用

評論