知名公司怎樣測試機器學習模型?

盡管機器學習行業(yè)在開發(fā)幫助數(shù)據(jù)團隊和從業(yè)人員操作其機器學習模型的解決方案方面取得了進展,但測試這些模型以確保它們能按預期工作,仍然是最具挑戰(zhàn)性的方面之一。開始一個機器學習項目時,標準的做法是對業(yè)務、技術和數(shù)據(jù)集的要求進行嚴格注意。

雖然大多數(shù)團隊對在部署模型之前使用模型評估指標來量化模型的性能感到滿意,但這些指標大多不足以確保你的模型為生產(chǎn)做好準備。你還需要對你的模型進行徹底的測試,以確保它們對現(xiàn)實世界的遭遇足夠強大。

參考資料

將自動測試和人工驗證結合起來進行有效的模型測試

GreenSteam公司為海運業(yè)提供軟件解決方案,幫助減少燃料使用。過量的燃料使用既昂貴又不利于環(huán)境,國際海事組織要求船舶運營商變得更加綠色,并在2050年前減少50%的二氧化碳排放量。

GreenSteam的模擬儀表盤測試工作流程概述

  • 用于模型驗證的自動測試。
  • 手動模型評估和驗證。

為了在他們的工作流程中實現(xiàn)自動化測試,該團隊利用使用Jenkins運行代碼質量檢查和冒煙測試。

在自動化測試運行并通過模型管道后,領域專家手動審查評估指標,以確保它們有意義,驗證它們,并標記為準備部署。

團隊運行的單元和集成測試是為了檢查關于數(shù)據(jù)集的一些斷言,以防止低質量的數(shù)據(jù)進入訓練管道,并防止數(shù)據(jù)預處理代碼的問題。你可以把這些斷言看作是團隊對數(shù)據(jù)的假設。例如,他們會期望在數(shù)據(jù)中看到某種相關性,或者看到模型的預測邊界是非負的。

單元測試機器學習代碼比典型的軟件代碼更具挑戰(zhàn)性。單元測試模型代碼的幾個方面對團隊來說是困難的。例如,為了準確地測試,他們必須訓練模型,即使有適度的數(shù)據(jù)集,單元測試也會花費很長的時間。

此外,一些測試隨機失敗。運行單元測試以保證數(shù)據(jù)質量的挑戰(zhàn)之一是,在樣本數(shù)據(jù)集上運行這些測試更加復雜,所花的時間遠遠少于在整個數(shù)據(jù)集上運行這些測試。這對團隊來說是很難解決的,但要解決這些問題。他們選擇了取消部分單元測試,而采用冒煙測試。

團隊定義了驗收標準,他們的測試套件也在不斷發(fā)展,他們通過增加新的測試和刪除其他測試進行試驗,獲得了更多關于什么是有效的和什么是無效的知識。

他們將在一個類似于生產(chǎn)的環(huán)境中對每個新的拉動請求的完整數(shù)據(jù)集進行模型訓練,只是他們將調整超參數(shù)的值,以獲得快速的結果。最后,他們將監(jiān)測管道的健康狀況,以便及早發(fā)現(xiàn)問題。

在訓練完模型后,我們會根據(jù)數(shù)據(jù)集創(chuàng)建帶有不同圖表的報告來顯示結果,這樣領域專家就可以在模型出廠前對其進行審查。

訓練完模型后,領域專家會生成并審查一份模型質量報告。該專家會通過人工審核過程批準(或拒絕)該模型,然后在得到驗證并通過之前的所有測試后,該模型最終可以由團隊運往生產(chǎn)。

零售客戶應用程序進行機器學習測試的方法

這個團隊利用機器學習幫助零售客戶以自動化的方式解決票據(jù)。當用戶提出票據(jù)或由維護問題產(chǎn)生時,應用程序使用機器學習將票據(jù)分類到不同的類別,幫助更快地解決。

工作流程涉及在每次提交時在持續(xù)集成(CI)管道中生成構建。此外,構建管道將運行代碼質量測試(linting測試),以確保沒有代碼問題。

一旦管道生成了構建(一個容器鏡像),模型就會通過發(fā)布管道在類似生產(chǎn)環(huán)境中進行壓力測試。在部署之前,團隊也會偶爾對模型進行A/B測試,以評估不同情況下的性能。

運行測試以檢查代碼質量對任何軟件應用都是至關重要的。你總是想測試你的代碼,以確保它是。

  • 正確的。
  • 可靠(在不同條件下不會中斷)。
  • 安全。
  • 可維護。
  • 高度性能。

這個團隊在CI管道中的任何容器鏡像構建之前,對他們的代碼進行了lint測試。提示測試確保了他們能夠執(zhí)行編碼標準和高質量的代碼,以避免代碼中斷。執(zhí)行這些測試還可以讓團隊在構建過程之前抓住錯誤(當它們?nèi)菀渍{試時)。

根據(jù)不同的用例,該團隊還進行了A/B測試,以了解他們的模型在部署前在不同條件下的表現(xiàn),而不是純粹依賴離線評估指標。通過從A/B測試中學到的東西,他們知道一個新的模型是否改進了當前的模型,并調整了他們的模型,以更好地優(yōu)化業(yè)務指標。
對機器學習模型進行壓力測試

“我們使用發(fā)布管道對模型進行壓力測試,在這里我們用每分鐘X次的推理來轟炸模型的部署。X可以是1000或100,這取決于我們的測試。目的是看看模型的性能是否符合要求”。

測試模型在極端工作負荷下的性能,對于通常預期用戶高流量的商業(yè)應用來說至關重要。因此,該團隊進行了壓力測試,看看在給定的時間范圍內(nèi),在預測請求數(shù)量增加的情況下,該模型的響應速度和穩(wěn)定性如何。

這樣,他們對模型在負載下的可擴展性進行了基準測試,并確定了模型的突破點。此外,該測試幫助他們確定該模型的預測服務是否符合所需的服務水平目標(SLO),即正常運行時間或響應時間指標。

值得注意的是,對模型進行壓力測試的意義不在于看模型能處理多少推理請求,而在于看當用戶超過這種流量時會發(fā)生什么。這樣,你可以了解模型的性能問題,包括加載時間、響應時間和其他瓶頸。

在部署模型后的生產(chǎn)中,我們測試數(shù)據(jù)和模型的漂移。我們還做了生產(chǎn)后的審計;我們每季度都有審計,研究運營情況。

測試生產(chǎn)模型的目標是確保模型的部署是成功的,模型與其他服務一起在生產(chǎn)中正確運行。對于這個團隊來說,在生產(chǎn)中測試模型的推理性能是持續(xù)提供商業(yè)價值的一個關鍵過程。

此外,該團隊還測試了數(shù)據(jù)和模型的漂移,以確保模型可以被監(jiān)控,也許在發(fā)現(xiàn)這種漂移時可以重新訓練。從另一個角度來說,測試生產(chǎn)模型可以使團隊通過領域專家的手動檢查對其關鍵任務模型進行錯誤分析。

一家金融科技初創(chuàng)公司的機器學習應用的行為測試

MonoHQ的交易元數(shù)據(jù)產(chǎn)品使用機器學習對交易報表進行分類,這對各種企業(yè)客戶的應用是有幫助的,如信貸申請、資產(chǎn)規(guī)劃/管理、BNPL(先買后付)和支付。根據(jù)敘述,該產(chǎn)品將數(shù)以千計的客戶的交易歸入不同類別。


在部署模型之前,該團隊進行了一次行為測試。這個測試包括3個要素。

  • 預測分布。
  • 失敗率。
  • 延遲。

如果模型通過了這三項測試,團隊就會把它列出來進行部署。如果模型沒有通過測試,他們將不得不重新工作,直到它通過測試。他們總是確保為這些測試設置一個性能閾值作為衡量標準。

他們還對他們的模型進行A/B測試,以了解哪個版本更適合投入到生產(chǎn)環(huán)境中。

檢查預測質量的行為測試顯示了模型對推理數(shù)據(jù)的反應,特別是NLP模型。

首先,團隊運行一個不變性測試,向輸入數(shù)據(jù)引入擾動性。
接下來,他們檢查輸入的輕微變化是否會影響模型的反應--它對客戶交易的敘述進行正確分類的能力。

從本質上講,他們在這里試圖回答:在具有類似背景的數(shù)據(jù)集中進行輕微的調整是否會產(chǎn)生一致的輸出?

為了測試模型在負載下的響應時間,該團隊配置了一個測試環(huán)境,他們將向模型服務發(fā)送大量的流量。以下是他們的過程。

  • 采取大量的交易數(shù)據(jù)集。
  • 創(chuàng)建表。
  • 將數(shù)據(jù)流向模型服務。
  • 記錄推理延遲。
  • 最后,計算出整個交易數(shù)據(jù)的平均響應時間。

如果響應時間通過了指定的延遲閾值,就可以進行部署了。如果沒有,團隊就得重新修改以改善它,或者設計另一種策略來部署模型以減少延遲。

在這個測試中,團隊將兩個模型容器化,部署到生產(chǎn)系統(tǒng)中,供上游服務消耗到生產(chǎn)系統(tǒng)中。他們部署其中一個模型,為隨機抽樣的用戶提供流量,另一個則為不同的用戶抽樣,這樣他們就可以衡量模型的結果對用戶的真實影響。此外,他們可以使用真實的客戶來調整他們的模型,并測量他們對模型預測的反應。

這種測試還可以幫助團隊避免從新訓練的模型中引入復雜性,因為這些模型很難維護,對他們的用戶沒有任何價值。

為機器學習應用進行工程和統(tǒng)計測試

image.png

一個處理新興市場新聞的系統(tǒng),為交易者、資產(chǎn)經(jīng)理和對沖基金經(jīng)理提供情報。

這個團隊對他們的機器學習項目進行了兩種類型的測試。

  • 基于工程的測試(單元和集成測試)。
  • 基于統(tǒng)計的測試(模型驗證和評估指標)。

工程團隊運行單元測試,檢查模型是否拋出錯誤。然后,數(shù)據(jù)團隊會(向工程團隊)移交模擬模型,其輸入輸出關系與他們正在建立的模型相同。同時,工程團隊會對這個模型進行測試,以確保它不會破壞生產(chǎn)系統(tǒng),然后為它服務,直到數(shù)據(jù)團隊的正確模型準備好。

一旦數(shù)據(jù)團隊和利益相關者評估并確認該模型已準備好部署,工程團隊將運行與原始模型的集成測試。最后,他們將把模擬模型與生產(chǎn)中的原始模型進行交換,如果它能工作的話。

為了運行初始測試以檢查模型是否能與生產(chǎn)中的其他服務很好地整合,數(shù)據(jù)團隊將發(fā)送模擬(或假)模型給工程團隊。模擬模型的結構與真實模型相同,但它只返回隨機輸出。工程團隊將為模擬模型編寫服務,并為測試做準備。

數(shù)據(jù)團隊將向工程團隊提供數(shù)據(jù)和輸入結構,以測試輸入-輸出關系是否與他們所期望的一致,是否以正確的格式出現(xiàn),并且沒有拋出任何錯誤。

工程團隊并不檢查該模型是否是正確的模型;他們只檢查它是否從工程角度發(fā)揮作用。他們這樣做是為了確保當模型進入生產(chǎn)時,它不會破壞產(chǎn)品管道。

當數(shù)據(jù)團隊訓練和評估了正確的模型,并且利益相關者驗證了它,數(shù)據(jù)團隊將把它打包并交給工程團隊。工程團隊將用正確的模型交換模擬模型,然后運行集成測試,以確保它按預期工作,不出現(xiàn)任何錯誤。

數(shù)據(jù)團隊將在真實世界的數(shù)據(jù)和統(tǒng)計評估指標上訓練、測試和驗證他們的模型。數(shù)據(jù)科學負責人審核結果并批準(或否定)該模型。如果有證據(jù)表明該模型是正確的模型,數(shù)據(jù)科學負責人將向必要的利益相關者報告結果。

他將解釋模型的結果和內(nèi)部運作,模型的風險,以及模型的錯誤,并確認他們是否對結果感到滿意,或者模型仍然需要重新工作。如果模型被批準,工程團隊會將模擬模型與原始模型交換,重新進行集成測試,以確認它不會出現(xiàn)任何錯誤,然后進行部署。

總結

希望正如你從用例和工作流程中學到的那樣,模型評估指標不足以確保你的模型可以投入生產(chǎn)。你還需要對你的模型進行徹底的測試,以確保它們對現(xiàn)實世界的遭遇足夠強大。

為ML模型開發(fā)測試可以幫助團隊系統(tǒng)地分析模型錯誤和檢測故障模式,因此在將模型部署到生產(chǎn)之前,要制定和實施解決計劃。

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容