開發高品質預測機器學習解決方案的指南

Last reviewed 2024-07-08 UTC

本文彙整了一些指南,協助您評估、確保及控管建構預測性機器學習 (ML) 解決方案的品質。從開發機器學習模型,到將訓練系統和服務系統部署到實際工作環境,這項工具都能在每個步驟提供建議。這份文件延伸了MLOps 實務指南中討論的資訊,著重於 MLOps 生命週期各個程序中的品質層面,並加以歸納。

本文的適用對象為參與建構、部署及運作機器學習解決方案的人員。本文假設您熟悉一般 MLOps。您不需要具備任何特定 ML 平台知識。

機器學習解決方案品質總覽

在軟體工程中,許多標準、程序、工具和做法都已開發完成,可確保軟體品質。目標是確保軟體在實際執行環境中正常運作,並符合功能性和非功能性需求。這些做法涵蓋軟體測試、軟體驗證和確認,以及軟體記錄監控等主題。在 DevOps 中,這些做法通常會整合至 CI/CD 程序並自動執行。

機器學習運作是一組標準化程序和功能,可快速且可靠地建構、部署及運作機器學習系統。與其他軟體解決方案一樣,機器學習軟體解決方案也需要您整合這些軟體品質做法,並在整個 MLOps 生命週期中套用這些做法。套用這些做法有助於確保模型的可靠性和可預測性,以及模型符合您的需求。

不過,建構、部署及運作機器學習系統的任務會帶來額外挑戰,需要某些可能與其他軟體系統無關的品質做法。除了大多數其他軟體系統的特徵外,ML 系統還具有下列特徵:

  • 資料依附型系統。訓練模型的品質和預測結果取決於訓練資料的有效性,以及預測要求中提交的資料。任何軟體系統都仰賴有效資料,但機器學習系統會自動從資料推斷決策邏輯,因此特別仰賴資料品質。

  • 雙重訓練/服務系統。機器學習工作負載通常包含兩個截然不同但相關的生產系統:訓練系統和服務系統。持續訓練管道會產生新訓練的模型,然後部署這些模型以提供預測服務。每個系統都需要不同的品質做法,以平衡效能和效率,才能在正式環境中產生及維護高效能模型。此外,這兩個系統之間的不一致性會導致錯誤,並降低預測效能。

  • 容易過時。模型部署到正式環境後,通常會因為無法適應所代表環境的變化 (例如季節性消費行為變化) 而效能下降。模型也可能無法因應資料變化,例如新產品和新地點。因此,追蹤模型在正式環境中的成效,是機器學習系統面臨的另一項挑戰。

  • 自動決策系統。與其他軟體系統不同,在這些系統中,會針對一組需求和業務規則仔細手動編碼動作,而機器學習模型會從資料中學習規則,以做出決策。資料中的隱含偏誤可能會導致模型產生不公平的結果。

部署的機器學習模型產生錯誤預測時,機器學習品質不佳可能是各種問題所致。有些問題可能源自任何程式中常見的錯誤。但機器學習專屬問題也可能包括資料偏斜和異常,以及訓練過程中缺乏適當的模型評估和驗證程序。另一個潛在問題是模型內建介面與服務 API 之間的資料格式不一致。此外,即使沒有這些問題,模型效能也會隨著時間而下降,如果未妥善監控,模型可能會無聲無息地失效。因此,您應在開發、部署及實際運作期間,對機器學習模型和系統進行不同類型的測試和監控。

模型開發品質指南

在實驗階段開發機器學習模型時,您可以使用下列兩組目標指標評估模型效能:

  • 模型最佳化指標。這項指標反映了模型的預測成效。這項指標包括分類工作中的準確度F 分數、迴歸和預測工作中的平均絕對百分比誤差、排名工作中的折扣累積收益,以及語言模型中的困惑度BLEU 分數。這項指標的值越好,就代表模型越適合特定工作。在某些用途中,為確保公平性,請務必在不同資料切片 (例如不同客層) 上,達到類似的預測效果。
  • 模型的滿足指標。此指標反映了模型需要滿足的運算條件,如預測延遲。如果將延遲門檻設為特定值 (如 200 毫秒),如果模型未達門檻,系統將不接受。又例如,若您想將模型部署到行動和嵌入式裝置等低功耗硬體,則模型大小就成了滿足指標。

在實驗期間,您會開發、訓練、評估及偵錯模型,以改善模型在最佳化指標方面的成效,同時不違反滿足指標門檻。

實驗指南

  • 預先定義並固定最佳化指標和滿意度指標的門檻。
  • 實作簡化的評估常式,該常式會採用模型和資料,並產生一組評估指標。實作常式,確保無論模型類型 (例如決策樹或類神經網路) 或模型架構 (例如 TensorFlow 或 Scikit-learn) 為何,常式都能正常運作。
  • 確認您有可供比較的基準模式。這個基準可以包含硬式編碼的啟發式方法,也可以是預測平均值或眾數目標值的簡單模型。使用基準模型檢查機器學習模型的成效。如果機器學習模型不如基準模型,表示機器學習模型存在基本問題。
  • 追蹤所有實驗,有助於重現結果及逐步改善。針對每個實驗,儲存超參數值、特徵選取項目和隨機種子。

資料品質指南

  • 在實驗初期,請選擇合適的評估指標,解決任何不平衡的類別。此外,請套用加權少數類別執行個體或減少多數類別執行個體等技術。
  • 請務必瞭解手邊的資料來源,並執行相關的資料前處理和特徵工程,準備訓練資料集。這類程序必須可重複執行及自動化。
  • 請務必準備測試資料分割 (保留) 部分,用於最終評估模型。訓練期間不應看到測試集,且測試集不應用於超參數調整。
  • 請確保訓練、驗證和測試分割區能同樣代表輸入資料。這類測試分割的取樣方式取決於資料性質和手邊的 ML 工作。舉例來說,分層分割適用於分類工作,而依時間順序分割則適用於時間序列工作。
  • 請務必分別預先處理驗證和測試分割區,以及訓練資料分割區。如果混合預先處理分割,會導致資料外洩。舉例來說,使用統計資料轉換資料以進行正規化,或將數值特徵分組時,請從訓練資料計算統計資料,然後套用這些資料來正規化驗證和測試分割。
  • 產生資料集結構定義,其中包含資料型別和特徵的一些統計屬性。您可以在實驗和訓練期間,使用這個結構定義找出異常或無效的資料。
  • 請確認訓練資料已在批次中正確隨機排序,但仍符合模型訓練需求。舉例來說,這項工作可套用至正面和負面執行個體分配。
  • 準備獨立的驗證資料集,用於超參數調整和模型選取。您也可以使用驗證資料集執行提早停止作業。否則,您可以讓模型訓練完畢,達到指定的最大疊代次數。不過,只有在模型於驗證資料集上的成效優於先前的快照時,才儲存模型的新快照。

模型品質指南

  • 請確認模型沒有任何基本問題,導致無法學習輸入和輸出之間的關係。您可以透過極少的範例訓練模型,如果模型無法針對這些範例達到高準確度,模型實作或訓練常式可能存在錯誤。
  • 訓練類神經網路時,請監控損失中的 NaN 值,以及模型訓練期間權重值為零的百分比。這些 NaN 或零值可能表示算術計算有誤,或是梯度消失或爆炸。隨著時間推移,權重值分布的變化趨勢有助於偵測內部共變量變化,進而找出導致訓練速度變慢的原因。您可以套用批次正規化,減緩速度下降的情況。
  • 比較模型在訓練資料和測試資料上的成效,瞭解模型是否過度配適或配適不足。如果看到上述任一問題,請進行相關改善。舉例來說,如果發生欠擬合,您可以提高模型的學習能力。如果發生過度配適,您可能會套用正規化。
  • 分析分類錯誤的執行個體,特別是預測信賴度高的執行個體,以及多類別混淆矩陣中最容易混淆的類別。這類錯誤可能表示訓練樣本標示有誤。此外,錯誤也可能指出資料前處理的機會,例如移除離群值,或是建立新特徵來協助區分這類別。
  • 分析特徵重要性分數,並清除無法大幅提升模型品質的特徵。簡約模型比複雜模型更受歡迎。

訓練管線部署品質指南

實作模型和模型訓練管道時,您需要在 CI/CD 常式中建立一組測試。當您推送新的程式碼變更時,這些測試會自動執行,或在您將訓練管道部署至目標環境之前執行。

規範

  • 單元測試特徵工程功能。
  • 對模型輸入內容的編碼進行單元測試。
  • 獨立對模型的使用者實作 (自訂) 模組執行單元測試,例如自訂圖形卷積和集區化層,或自訂注意力層。
  • 對所有自訂損失或評估函式執行單元測試。
  • 針對預期輸入內容,對模型的輸出類型和形狀進行單元測試。
  • 對幾小批資料進行單元測試,確認模型 fit 函式運作正常,不會發生任何錯誤。測試應確保損失減少,且訓練步驟的執行時間符合預期。您進行這些檢查的原因是,模型程式碼的變更可能會導致錯誤,進而拖慢訓練程序。
  • 單元測試模型的儲存和載入功能。
  • 針對原始輸入內容和預期輸出內容,對匯出的模型服務介面執行單元測試。
  • 使用模擬輸入和輸出構件測試管道步驟的元件。
  • 將管道部署至測試環境,並對端對端管道執行整合測試。在此程序中,請使用一些測試資料,確保工作流程在整個過程中正確執行,並產生預期構件。
  • 將新版訓練管道部署至正式環境時,請使用影子部署。影子部署可確保新部署的管道版本與舊版管道版本平行執行,並使用即時資料。

持續訓練適用的品質指南

持續訓練程序是自動化調度管理及執行訓練管道的程序。典型的訓練工作流程包含資料擷取和分割、資料轉換、模型訓練、模型評估和模型註冊等步驟。部分訓練管線包含較複雜的工作流程。其他工作包括使用未標註的資料執行自我監督式模型訓練,或是為嵌入建立近似最近鄰索引。任何訓練管線的主要輸入內容都是新的訓練資料,主要輸出內容則是可部署到正式環境的新候選模型。

訓練管道會根據排程 (例如每天或每週) 或觸發條件 (例如有新的標籤資料時),在正式環境中自動執行。因此,您需要在訓練工作流程中加入品質控管步驟,具體來說就是資料驗證步驟和模型驗證步驟。這些步驟會驗證管道的輸入和輸出內容。

在訓練工作流程中,您會在資料擷取步驟後新增資料驗證步驟。資料驗證步驟會剖析管道中擷取的新輸入訓練資料。在剖析期間,管道會使用機器學習開發程序中建立的預先定義資料結構定義,偵測異常狀況。視用途而定,您可以忽略或從資料集中移除部分無效記錄。不過,新擷取的資料中可能存在其他問題,導致訓練管道停止執行,因此您必須找出並解決這些問題。

資料驗證指南

  • 確認擷取的訓練資料特徵完整無缺,且符合預期結構定義,也就是沒有遺漏或新增特徵。此外,也請確認功能是否符合預估量。
  • 驗證資料集中特徵的資料類型和形狀,這些特徵會擷取到訓練管道中。
  • 確認特定特徵 (例如日期、時間、網址、郵遞區號和 IP 位址) 的格式符合預期的規則運算式。並確認特徵是否在有效範圍內。
  • 驗證每個特徵的遺漏值比例上限。如果特定特徵中缺少大量值,可能會影響模型訓練。如果缺少值,通常表示特徵來源不可靠。
  • 驗證輸入特徵的網域。舉例來說,檢查類別特徵的詞彙或數值特徵的範圍是否有所變更,並據此調整資料前處理程序。舉例來說,如果上游系統更新後,改用不同的測量單位填入特徵,數值特徵的範圍可能會隨之變更。舉例來說,上游系統可能會將幣別從美元改為日圓,或將距離從公里改為公尺。
  • 確認每項功能的分配情形是否符合預期。 舉例來說,您可能會測試付款類型特徵最常見的值為 cash,且這個付款類型占所有值的 50%。不過,如果最常見的付款類型變更為 credit_card,這項測試可能會失敗。這類外部變更可能需要變更模型。

在模型註冊步驟之前新增模型驗證步驟,確保只有通過驗證條件的模型會註冊以供正式環境部署。

模型驗證指南

  • 如要評估最終模型,請使用未用於模型訓練或超參數調整的獨立測試分割。
  • 根據測試資料分割區為候選模型評分、計算相關評估指標,並確認候選模型超過預先定義的品質門檻。
  • 請確保測試資料分割代表整體資料,以因應不同的資料模式。如果是時間序列資料,請確保測試分割包含的資料比訓練分割更新。
  • 針對重要資料區隔 (例如依國家/地區劃分的使用者,或依類型劃分的電影) 測試模型品質。透過測試切片資料,您可以避免細微的效能問題遭到全域摘要指標遮蓋。
  • 根據測試資料分割評估目前的 (最佳) 模型,並與訓練管道產生的候選 (挑戰者) 模型進行比較。
  • 根據公平性指標驗證模型,偵測隱含偏誤。舉例來說,訓練資料的多元性不足可能會導致隱含偏誤。公平性指標可揭露根本原因問題,您必須先解決這些問題,才能將模型部署至正式環境。

在持續訓練期間,您可以根據最佳化指標和滿足指標驗證模型。或者,您也可以只根據最佳化指標驗證模型,並延後根據滿足指標驗證模型,直到模型部署階段為止。如果您打算將相同模型的變體部署至不同的服務環境或工作負載,則延後根據令人滿意的指標進行驗證可能更合適。不同的服務環境或工作負載 (例如雲端環境與裝置端環境,或是即時環境與批次服務環境) 可能需要不同的滿意度指標門檻。如果您要部署到多個環境,持續訓練管線可能會訓練兩個以上的模型,每個模型都會針對目標部署環境進行最佳化。如需更多資訊和範例,請參閱 Vertex AI 雙重部署

將更多複雜工作流程的持續訓練管道投入生產時,您必須追蹤管道執行作業產生的中繼資料和構件。追蹤這項資訊有助於追蹤及偵錯正式版中可能發生的任何問題。追蹤這項資訊也有助於重現管道的輸出內容,以便在後續的機器學習開發疊代中改善實作方式。

追蹤機器學習中繼資料和構件的指南

  • 追蹤原始碼、已部署管道、管道元件、管道執行作業、使用的資料集,以及產生的構件的沿革。
  • 追蹤管道執行的超參數和設定。
  • 追蹤管道步驟的主要輸入和輸出構件,例如資料集統計資料、資料集異常狀況 (如有)、轉換後的資料和結構定義、模型檢查點,以及模型評估結果。
  • 追蹤條件式管道步驟是否因應條件執行,並在重要步驟未執行或失敗時新增變更機制,確保可觀測性。

模型部署品質指南

假設您已訓練模型,並從最佳化指標的角度驗證模型,且模型已通過模型管理程序 (如後續模型管理一節所述)。模型會儲存在 Model Registry 中,並準備好部署至正式環境。此時,您需要實作一組測試,確認模型適合在目標環境中提供服務。您也需要在模型 CI/CD 常式中自動執行這些測試。

規範

  • 確認模型構件可載入,並透過執行階段依附元件成功叫用。您可以在服務環境的沙箱版本中暫存模型,藉此執行這項驗證。這項驗證可協助您確保模型使用的作業和二進位檔存在於環境中。
  • 在預先發布環境中驗證模型的令人滿意指標 (如有),例如模型大小和延遲時間。
  • 在測試環境中,針對原始輸入內容和預期輸出內容,對模型構件服務介面執行單元測試。
  • 在預備環境中,針對一組典型的預測要求和極端情況,對模型構件執行單元測試。舉例來說,您可以針對所有功能都設為 None 的要求執行個體進行單元測試。
  • 將模型服務 API 部署至目標環境後,請進行冒煙測試。如要執行這項測試,請將單一執行個體或一批執行個體傳送至模型服務,並驗證服務回應。
  • 在少量即時放送資料串上,對新部署的模型版本進行 Canary 測試。這項測試可確保新模型服務不會產生錯誤,再向大量使用者公開模型。
  • 在暫存環境中進行測試,以便快速安全地還原至先前的服務模型版本。
  • 執行線上實驗,使用一小部分服務對象測試新訓練的模型。這項測試會比較新模型與現有模型的成效。比較新模型與目前模型的效能後,您可能會決定全面發布新模型,以處理所有即時預測要求。線上實驗技術包括: A/B 測試多臂老千 (MAB)

模型服務品質指南

部署及在正式環境中提供服務的機器學習模型,預測效能通常會隨著時間而降低。造成這種情況的原因可能是服務特徵與模型預期特徵之間出現不一致。這些不一致之處稱為「訓練提供偏移」。舉例來說,推薦模型可能會預期最常瀏覽的產品代碼等特徵,會收到英數字元輸入值。但由於使用模型服務的應用程式已更新,因此在放送期間傳遞的是產品名稱,而非產品代碼。

此外,隨著服務資料的統計屬性隨時間漂移,模型可能會過時,而目前部署模型所學到的模式不再準確。在這兩種情況下,模型都無法再提供準確的預測結果。

為避免模型預測效能下降,您必須持續監控模型成效。監控功能可讓您定期主動驗證模型效能是否下降。

規範

  • 在資料儲存庫中記錄服務要求/回應酬載的樣本,以供定期分析。要求是輸入執行個體,而回應則是模型針對該資料執行個體產生的預測。
  • 實作自動化程序,透過計算描述性統計資料,剖析儲存的要求/回應資料。定期計算及儲存這些放送統計資料。
  • 比較應用資料統計資料與訓練資料的基準統計資料,找出資料偏移和漂移造成的訓練/應用偏差。此外,您也可以分析放送資料統計資料隨時間的變化。
  • 分析預測的特徵歸因隨時間的變化,找出概念漂移
  • 找出相對於訓練資料的離群值服務資料執行個體。如要找出這些離群值,請使用新穎性偵測技術,並追蹤服務資料中離群值的百分比隨時間的變化。
  • 設定快訊,在模型達到資料集中主要預測特徵的偏差分數門檻時收到通知。
  • 如果標籤可用 (即真值),請將真值標籤與服務執行個體的預測標籤合併,以執行持續評估。此方法類似於您在線上實驗期間,以 A/B 測試方式導入的評估系統。持續評估不僅能找出模型在正式環境中的預測能力,還能找出模型擅長和不擅長處理的要求類型。
  • 為您重視的系統指標設定目標,並根據這些目標評估模型成效。
  • 監控服務效率,確保模型能大規模在正式環境中提供服務。這項監控功能也有助於預測及管理容量規劃,並估算服務基礎架構的成本。監控效率指標,包括 CPU 使用率、GPU 使用率、記憶體使用率、服務延遲時間、輸送量和錯誤率。

模型管理

模型管理是企業的核心功能,可提供指引和程序,協助員工落實企業的 AI 原則。這些原則包括避免建立或強制執行偏誤的模型,以及能夠證明 AI 決策的合理性。模型控管功能可確保迴路中有真人參與。對於敏感和高影響力的工作負載 (通常是面向使用者的工作負載),人工審查尤為重要。這類工作負載包括評估信用風險、為求職者排序、核准保單,以及在社群媒體上傳播資訊。

規範

  • 針對每個模型,按工作建立責任分配矩陣。矩陣應考量整個機構階層的跨職能團隊 (業務線、資料工程、數據資料學、機器學習工程、風險與法規遵循等)。
  • 在連結至模型版本的模型登錄中,維護模型文件和報表,例如使用模型資訊卡。這類中繼資料包括用於訓練模型的資料、模型效能,以及任何已知限制的相關資訊。
  • 在核准模型部署至正式環境前,請先實作模型審查程序。在這類程序中,您會保留模型檢查清單、補充文件,以及利害關係人可能要求的任何額外資訊。
  • 根據基準資料集 (也稱為黃金資料集) 評估模型,涵蓋標準和極端案例。此外,請根據公平性指標驗證模型,協助偵測隱含偏誤。
  • 向模型使用者說明模型的整體預測行為,以及特定樣本輸入例項的預測行為。提供這類資訊有助於瞭解模型的重要功能,以及可能出現的不良行為。
  • 使用假設情境分析工具分析模型的預測行為,瞭解不同資料特徵的重要性。這項分析也有助於以視覺化方式呈現多個模型和輸入資料子集的模型行為。
  • 針對對抗式攻擊測試模型,確保模型在實際工作環境中能有效防範遭人利用。
  • 追蹤正式環境中模型預測成效的快訊、資料集變化和偏移。設定快訊,通知模型利害關係人。
  • 管理模型的線上實驗、推出和復原作業。

後續步驟

貢獻者

作者:Mike Styer | 生成式 AI 解決方案架構師

其他貢獻者:Amanda Brinhosa | 客戶工程師