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

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

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

參考資料

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

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

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

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

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

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

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

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

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

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

他們將在一個類似於生產的環境中對每個新的拉動請求的完整數據集進行模型訓練,只是他們將調整超參數的值,以獲得快速的結果。最後,他們將監測管道的健康狀況,以便及早發現問題。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

在部署模型後的生產中,我們測試數據和模型的漂移。我們還做了生產後的審計;我們每季度都有審計,研究運營情況。

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

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

一家金融科技初創公司的機器學習應用的行爲測試

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


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

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

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

他們還對他們的模型進行A/B測試,以瞭解哪個版本更適合投入到生產環境中。

檢查預測質量的行爲測試顯示了模型對推理數據的反應,特別是NLP模型。

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

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

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

  • 採取大量的交易數據集。
  • 創建表。
  • 將數據流向模型服務。
  • 記錄推理延遲。
  • 最後,計算出整個交易數據的平均響應時間。

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

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

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

爲機器學習應用進行工程和統計測試

一個處理新興市場新聞的系統,爲交易者、資產經理和對沖基金經理提供情報。

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

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

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

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

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

數據團隊將向工程團隊提供數據和輸入結構,以測試輸入-輸出關係是否與他們所期望的一致,是否以正確的格式出現,並且沒有拋出任何錯誤。

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

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

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

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

總結

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

爲ML模型開發測試可以幫助團隊系統地分析模型錯誤和檢測故障模式,因此在將模型部署到生產之前,要制定和實施解決計劃。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章