成功MLOps具有的五大共同特征
譯文譯者 | 李睿
審校 | 重樓
51CTO讀者成長計劃社群招募,咨詢小助手(微信號:TTalkxiaozhuli)
盡管人們對應用機器學習的興趣越來越大,但企業(yè)在將機器學習集成到現(xiàn)實應用方面仍然面臨著巨大的挑戰(zhàn)。大多數(shù)的機器學習項目或者在完成之前被放棄,或者無法兌現(xiàn)承諾。
應用機器學習是一個年輕且不斷發(fā)展的領(lǐng)域。機器學習開發(fā)與運維(MLOps)是一個用于部署和維護機器學習模型的新興實踐領(lǐng)域,為機器學習管道提供了許多工具和平臺。然而,目前仍有許多工作要做。
加州大學伯克利分校的科學家最近發(fā)表的一份研究論文,揭示了在不同組織中運行機器學習的最佳實踐。這篇論文基于對不同行業(yè)機器學習工程師的調(diào)查,包含了成功部署和維護機器學習模型的重要經(jīng)驗,并為未來MLOps工具的開發(fā)提供了指導。
1、MLOps管道
MLOps管道是一個由四個任務組成的循環(huán):首先,機器學習團隊必須收集、清理和存儲數(shù)據(jù)來訓練模型。如果企業(yè)正在構(gòu)建一個有監(jiān)督的機器學習模型,他們必須人工或使用半自動工具標記數(shù)據(jù)。
然后,機器學習團隊必須進行特性工程和模型實驗。在這個階段,機器學習工程師會嘗試采用不同的機器學習算法,并創(chuàng)建與這些模型對應的特征。例如,深度神經(jīng)網(wǎng)絡可能只需要很少或不需要特征工程,但經(jīng)典的機器學習模型(如線性回歸或支持向量機)可能需要額外的工程工作,例如使用降維來選擇相關(guān)特征的最小集。
第三步是評估和部署。機器學習工程師根據(jù)不同的機器學習模型在指定的驗證數(shù)據(jù)集上的性能來比較它們。在應用機器學習管道中,部署通常以分階段的方式完成:首先將模型推出給用戶子集,然后根據(jù)當前的生產(chǎn)模型進行評估。如果運行良好,就將其擴展到更多用戶,并再次進行測試,以此類推。
最后,機器學習管道需要持續(xù)的監(jiān)控和響應。機器學習團隊必須持續(xù)監(jiān)控模型在不同用戶和數(shù)據(jù)子集上的性能,并尋找漂移、退化和其他問題的跡象。與此同時,工程師們需要工具來從用戶與模型的交互中收集新的數(shù)據(jù)。一旦機器學習模型的性能下降到某個水平以下,他們就需要重新啟動管道,并收集數(shù)據(jù)集來訓練、驗證和部署模型的新版本。
2、MLOps的“3v”
基于對機器學習工程師的采訪,加州大學伯克利分校的科學家定義了MLOps管道成功的三個標準:速度(Velocity)、驗證(Validation)和版本控制(Versioning)。他們稱之為MLOps的“3v”。
速度是指機器學習團隊迭代的速度。開發(fā)機器學習模型是一個科學的過程,它需要不斷的觀察、假設、發(fā)展和測試。機器學習團隊開發(fā)、訓練和測試新的機器學習原型的速度越快,就能越快地達到最佳解決方案。該論文稱,“機器學習工程師將他們的生產(chǎn)力歸功于優(yōu)先考慮更高的實驗速度的開發(fā)環(huán)境和允許他們快速測試假設的調(diào)試環(huán)境?!?/p>
驗證是機器學習團隊在模型中發(fā)現(xiàn)錯誤的速度。當在實際應用程序中使用機器學習時,企業(yè)希望最好在用戶接觸到錯誤之前盡早發(fā)現(xiàn)并修復錯誤。
最后,版本控制是保持機器學習模型的多個版本的能力。有時,在驗證數(shù)據(jù)集上工作良好的新機器學習模型最終在生產(chǎn)中表現(xiàn)較差。在這種情況下,機器學習團隊必須能夠快速切換回老舊模型,直到他們能夠調(diào)試和更新新模型。
基于這些關(guān)鍵原則以及對機器學習工程師的采訪,論文的作者為成功的MLOps管道提供了一些實際的見解。
3、高速迭代
與傳統(tǒng)的軟件開發(fā)相比,機器學習工程更具實驗性。因此,相當一部分機器學習模型將無法投入生產(chǎn)是很自然的。
該論文的作者寫道:“重要的是確保想法可以快速原型化和驗證,這樣不好的想法就可以立即被剔除。”
在他們的研究中,記錄了一些可以幫助建立高速機器學習管道的有趣策略。一個例子是跨團隊合作,數(shù)據(jù)科學家和主題專家共同合作,選擇最好的假設、特征和模型。這有助于在分配開發(fā)和計算資源之前,在構(gòu)思階段拋棄不可行的假設。
在某些情況下,迭代數(shù)據(jù)比使用不同的機器學習算法和模型配置提供了更快的結(jié)果。
一些團隊將他們的機器學習管道設置為在早期階段扼殺收益最小的想法,以避免浪費未來的時間,并專注于在部署的早期階段獲得最大性能收益的想法。他們通過設置沙盒(通常是Jupyter Notebook)來實現(xiàn)這一點,沙盒可以快速對他們的想法進行壓力測試。
另一種有趣的方法是最小化代碼更改。為了做到這一點,機器學習工程師開發(fā)他們的機器學習模塊,通過修改配置文件而不是源代碼來切換模型。通過這種方式,他們可以創(chuàng)建多個版本的配置文件,并通過相同的代碼快速驗證它們。
因為機器學習實驗需要考慮很多因素才能得出正確的結(jié)果。研究人員在論文中寫道,設置隨機種子,訪問相同版本的代碼庫,以及數(shù)據(jù)約束工程師只進行配置更改,這些都可以減少錯誤的數(shù)量。
4、動態(tài)驗證
機器學習模型必須不斷更新,以跟上環(huán)境數(shù)據(jù)、客戶需求和業(yè)務的變化。為了實現(xiàn)這一目標,企業(yè)需要能夠適應不斷變化的世界的評估過程,避免重復失敗,并防止糟糕的機器學習模型投入生產(chǎn)環(huán)境。
與機器學習工程師面談的重要收獲之一是定期更新驗證數(shù)據(jù)集。這與學術(shù)界的標準實踐有所不同,后者是針對固定的驗證數(shù)據(jù)集測試模型。研究人員寫道,“動態(tài)驗證集有兩個目標:(1)顯而易見的目標是確保驗證集盡可能多地反映實時數(shù)據(jù),并考慮到關(guān)于問題的新知識和總體數(shù)據(jù)分布的變化;(2)另一個更微妙的目標是解決了子群體可能經(jīng)歷的局部變化(例如,特定標簽的準確性較低)?!?/p>
一個有趣的策略是使用“影子階段”,在這個階段中,候選機器學習模型被集成到生產(chǎn)系統(tǒng)中,但其預測結(jié)果不會向用戶展示。這使得機器學習工程師能夠根據(jù)實時數(shù)據(jù)動態(tài)驗證他們的模型,而不會給業(yè)務帶來風險。需要注意的是,帶有用戶反饋循環(huán)的應用程序(例如,推薦系統(tǒng))不支持影子部署。
最后成功的MLOps驗證的一個重要部分是更新驗證指標以反映正確的業(yè)務目標。隨著產(chǎn)品的發(fā)展,它們的關(guān)鍵性能指標和增長指標也會發(fā)生變化。例如,在某一時刻,企業(yè)的目標可能是增加活躍用戶的數(shù)量,而不考慮他們產(chǎn)生的收入。在之后的階段,同一家公司可能想要增加付費用戶的份額,部署的機器學習模型必須基于它們對這些關(guān)鍵指標的貢獻進行評估。這需要機器學習、產(chǎn)品和業(yè)務團隊之間的密切協(xié)調(diào)。
5、良好的軟件工程
根據(jù)加州大學伯克利分校研究團隊采訪的機器學習工程師的經(jīng)驗,健壯的MLOps需要健全的軟件工程和DevOps實踐。
例如,定期對機器學習模型進行再訓練可以幫助團隊保持他們的機器學習模型是最新自版本并避免漂移。這需要軟件和數(shù)據(jù)工程團隊建立正確的管道,以持續(xù)收集和標記新數(shù)據(jù)。對這種實踐的補充是擁有一個健壯的版本控制系統(tǒng),該系統(tǒng)跟蹤機器學習模型的不同版本及其性能指標。這允許工程師設置自動化或半自動化流程,以便在生產(chǎn)模型的性能下降到某個閾值以下時恢復到舊版本。
在一些應用程序中,軟件工程師不得不故意添加一層經(jīng)典的基于規(guī)則的啟發(fā)式來穩(wěn)定行為或機器學習模型。這在許多應用程序中非常重要,在這些應用程序中,機器學習模型可能會根據(jù)輸入向量特征中的錯誤相關(guān)性進行學習和行為。研究人員寫道:“現(xiàn)代模型驅(qū)動的機器學習和傳統(tǒng)基于規(guī)則的人工智能的結(jié)合表明,除了管理學習模型之外,還需要管理過濾器以及過濾器的版本。”
最后,成功的機器學習項目的一個共同主題是對簡單性的偏好。雖然學術(shù)界的研究往往專注于突破最先進技術(shù)的極限,但在應用機器學習中,使用盡可能簡單的模型是一種制勝策略。更簡單的模型訓練和運行成本更低,而且它們通常更易于解釋。在一個有趣的案例中,機器學習工程師報告說他們開發(fā)了一種混合方法,其中他們使用神經(jīng)網(wǎng)絡創(chuàng)建一個特征嵌入層,然后將其用作幾個簡單分類器模型的輸入。
6、創(chuàng)建更好的MLOps工具
這篇論文是關(guān)于在現(xiàn)實應用中實現(xiàn)機器學習的挑戰(zhàn)和教訓的有趣研究。研究人員得出結(jié)論,成功的MLOps實踐圍繞著“更高速度,盡早地驗證,并維護模型的多個版本以減少生產(chǎn)停機時間”這三個目標進行構(gòu)建。
因此,構(gòu)建MLOps堆棧時應該以解決這三個v為目標。
研究人員寫道:“MLOps工具構(gòu)建者可能希望在其產(chǎn)品的開發(fā)速度、盡早驗證或版本控制方面優(yōu)先考慮更好的體驗。”
原文鏈接:https://bdtechtalks.com/2022/12/12/successful-mlops/