Azure Machine Learning 模型監測

模型監測是機器學習端對端生命週期的最後一個步驟。 此步驟會追蹤實際執行環境中的模型效能,並同時從資料科學和作業觀點分析效能。 在本文中,您將了解 Azure Machine Learning 中的模型監測、您可以監視的訊號和計量,以及適用於模型監測的建議做法。

不同於傳統軟體系統,機器學習系統行為不僅取決於程式碼中指定的規則,同時也取決於從資料中學習到的規則。 資料分布變更、定型服務扭曲、資料品質問題、環境中的變化,以及取用者行為變更都可能導致模型過時。

當模型過時時,其效能降級程度可能會達到無法增加商業價值,或開始在嚴格規範的環境中造成嚴重合規性問題。 因此,監視模型效能是至關重要的。

Azure Machine Learning 模型監測的運作方式

為了實作監視,Azure Machine Learning 會對串流生產推斷資料和參考資料執行統計計算,藉以取得監視訊號。 實際執行推斷資料是指模型在實際執行階段收集到的輸入和輸出資料。 參考資料可以是定型、驗證或有根據事實的歷史資料。

重要

Azure Machine Learning 模型監測僅支援使用認證型驗證 (例如共用存取簽章 (SAS) 權杖) 以存取資料存放區中包含的資料。 若要深入了解資料存放區和驗證模式,請參閱資料管理

每個監視訊號都有一或多個計量。 您可以設定這些計量的閾值,以透過 Azure Machine Learning 或 Azure 事件方格觸發模型或資料異常的相關警示。 當您收到警示時,您可以使用 Azure Machine Learning 工作室來分析或疑難排解監視訊號,以持續改善模型品質。

Azure Machine Learning 會使用下列流程來處理實際執行環境中模型的內建監視訊號,例如資料漂移:

  • 首先,Azure Machine Learning 會計算定型資料中特徵值的統計分布。 此散發是特徵的基準分佈。

  • 接下來,Azure Machine Learning 會計算特徵值在實際執行環境中所記錄之最新值的統計分布。

  • Azure Machine Learning 接著會執行統計檢定或計算距離分數,以比較該特徵在實際執行環境中最新值的分布與基準分布。 如果檢定統計資料或兩個分布之間的距離分數超過使用者指定的閾值,Azure Machine Learning 會識別異常並通知使用者。

設定和使用模型監測

若要在 Azure Machine Learning 中使用模型監測:

首先,請啟用實際執行推斷資料收集。

  • 如果您將模型部署到 Azure Machine Learning 線上端點,您可以使用 Azure Machine Learning 模型資料收集來啟用生產推斷資料收集。
  • 如果您將模型部署在 Azure Machine Learning 外部或 Azure Machine Learning 批次端點,您必須負責收集實際執行推斷資料,以用於 Azure Machine Learning 模型監測。

接下來,請設定模型監測。您可以使用 Azure Machine Learning SDK/CLI 2.0 或 Studio UI 輕鬆地設定模型監測。 在設定期間,您可以指定您慣用的監視訊號,並自訂每個訊號的計量和閾值。

最後,請檢視及分析模型監測結果。設定模型監測之後,Azure Machine Learning 會依指定的排程執行監視作業。 每個執行都會計算並評估所有所選監視訊號的計量,並在超過任何指定的閾值時,觸發警示通知。 您可以遵循警示通知中的連結,在 Azure Machine Learning 工作區中檢視及分析監視結果。

模型監測的功能

Azure Machine Learning 提供下列持續模型監測的功能:

  • 適用於表格式資料的內建監視訊號,包括資料漂移、預測漂移、資料品質、特徵屬性漂移和模型效能。
  • 適用於線上端點的現用模型監測。 如果您將模型部署至線上端點中的實際執行環境,Azure Machine Learning 會自動收集實際執行推斷資料,並將其用於持續監視。
  • 單一監視設定中的多個監視訊號。 針對每個監視訊號,您可以選取慣用的計量和警示閾值。
  • 用於比較的參考資料選擇。 針對監視訊號,您可以使用定型資料或最近的過去實際執行資料來設定參考資料。
  • 適用於資料漂移或資料品質監視的前 N 項特徵。 如果您使用定型資料做為參考資料,則可以定義分層於特徵重要度的資料漂移或資料品質訊號。
  • 定義自訂監視訊號的能力。 如果內建監視訊號不適合您的商務案例,您可以使用自訂監視訊號元件來定義自己的監視訊號。
  • 彈性地使用來自任何來源的生產推斷資料。 如果您在 Azure Machine Learning 外部部署模型,或將模型部署至批次端點,您仍可以自行收集實際執行推斷資料,以在 Azure Machine Learning 模型監測中使用。

模型監測的最佳做法

每個機器學習模型及其使用案例都是唯一的。 因此,模型監測對於每個情況而言都是唯一的。 下列清單描述模型監測的建議最佳做法。

  • 將模型部署至生產環境之後,立即啟動模型監測。
  • 請與熟悉模型的資料科學家合作以設定監測。 針對模型及其使用案例具備見解的資料科學家,可以針對監視訊號和計量提供建議,並為每個計量設定正確的警示閾值以避免警示疲勞。
  • 在您的設定中包括多個監視訊號。 透過多個監視訊號,您可以取得廣泛和細微的監視檢視。 例如,您可以結合資料漂移和特徵屬性漂移訊號,以取得與模型效能問題相關的早期警告。
  • 使用適當的參考資料作為比較基準。 如需作為比較基準的參考資料,您可以使用最近的過去實際執行資料或歷史資料,例如定型或驗證資料。 如需更有意義的比較,請使用定型資料作為資料漂移和資料品質的比較基準。 針對預測漂移,請使用驗證資料作為比較基準。
  • 根據一段時間的實際執行資料成長來指定監視頻率。 例如,如果您的實際執行模型有大量的每日流量,而且每日資料累積已足夠,請將監視頻率設定為每日。 否則,請根據您實際執行資料在一段時間內的成長,考慮每週或每月監視頻率。
  • 監視前 N 項特徵或特徵子集。 如果您使用定型資料作為比較基準,您可以輕鬆地設定前 N 項特徵的資料漂移監視或資料品質監視。 對於具有大量特徵的模型,請考慮監視這些特徵的子集,以降低計算成本和監視雜訊。
  • 當您能夠存取有根據事實資料時,請使用模型效能訊號。 如果您能夠存取有根據事實的資料 (其也稱為「實際值」),根據您的機器學習應用程式,請使用模型效能訊號來比較有根據事實的資料和模型輸出。 此比較提供實際執行環境中模型效能的目標檢視。

回顧時間範圍大小和位移

「回溯窗口大小」是實際執行或參考資料窗口的 ISO 8601 格式持續時間。 「回溯窗口位移」是將您的資料窗口結尾從您監視回合的日期位移的時間期間。

例如,您實際執行環境中的模型有一個監視器設定為在 1 月 31 日下午 3:15 UTC 執行。 P7D (七天) 的實際執行資料回溯窗口大小,以及 P0D (零天) 的資料回溯窗口位移,表示監視器會使用從 1 月 24 日下午 3:15 UTC 到 1 月 31 日下午 3:15 UTC (您監視器開始執行的時間) 的實際執行資料。

針對參考資料,如果您將回溯窗口位移設定為 P7D (七天),參考資料窗口會在實際執行資料窗口開始之前結束,因此不會重疊。 然後,您可以將參考資料回顧時間範圍大小設定為和您所需的大小一樣大。

例如,如果您將參考資料回溯窗口大小設定為 P24D (24 天),參考資料窗口會包括從 1 月 1 日下午 3:15 UTC 到 1 月 24 日下午 3:15 UTC 的資料。 下圖說明此範例。

顯示參考和生產資料之回溯視窗大小和位移的圖表。

在某些情況下,將您實際執行資料的回溯窗口位移設定為大於零天的數字可能會很有用。 例如,如果您的監視器排程於每週星期一下午 3:15 UTC 執行,但您不想在監視回合中使用週末的資料,則您可以使用 P5D (五天) 的回溯窗口大小,以及 P2D (兩天) 的回溯窗口位移。 您的資料窗口接著會在星期一下午 3:15 UTC 前開始,並在星期五下午 3:15 結束。

實際上,您應該確定參考資料時間範圍和生產資料時間範圍不會重疊。 如下圖所示,您可以透過確保參考資料回溯窗口位移 (在此範例中為 P10D 或 10 天) 大於或等於實際執行資料回溯窗口大小及其回溯窗口位移的總和 (在此範例中一共為七天),來確保窗口不會重疊。

顯示非重疊參考資料和實際執行資料窗口的圖表。

透過 Azure Machine Learning 模型監測,您可以針對回顧時間範圍大小和回顧時間範圍位移使用智慧預設值,也可加以自訂以符合您的需求。 同時支援移動窗口和固定窗口。

自訂回顧時間範圍大小

您可以彈性地針對生產資料和參考資料選取回顧時間範圍大小。

  • 根據預設,生產資料的回顧時間範圍大小是監視頻率。 在監視作業執行之前的監視期間中收集到的所有資料都會包括在回溯窗口中。 您可以使用 production_data.data_window.lookback_window_size 屬性來調整實際執行資料的移動資料窗口。

  • 根據預設,參考資料的回顧時間範圍是完整的資料集。 您可以使用 reference_data.data_window.lookback_window_size 屬性來調整參考回顧時間範圍大小。

若要為參考資料指定固定資料窗口,請使用 reference_data.data_window.window_start_datereference_data.data_window.window_end_date 屬性。

自訂回顧時間範圍位移

您可以彈性地為生產資料和參考資料選取資料時間範圍的回顧時間範圍位移。 您可以使用位移來細微控制監視器所使用的資料。 位移僅適用於移動資料窗口。

  • 根據預設,實際執行資料的位移為 P0D (零天)。 您可以使用 production_data.data_window.lookback_window_offset 屬性修改此位移。

  • 根據預設,參考資料的位移是 production_data.data_window.lookback_window_size 的兩倍。 此設定可確保有足夠的參考資料供統計上有意義的監視結果使用。 您可以使用 reference_data.data_window.lookback_window_offset 屬性修改此位移。

監視訊號和計量

Azure Machine Learning 模型監測支援下列監視訊號和計量。

重要

本文中標示為 (預覽) 的項目目前處於公開預覽狀態。 此預覽版本會在沒有服務等級協定的情況下提供,不建議用於實際執行工作負載。 可能不支援特定功能,或可能已經限制功能。 如需詳細資訊,請參閱 Microsoft Azure 預覽版增補使用條款

監視訊號 描述 計量 模型工作或支援的資料格式 生產資料 參考資料
資料漂移 透過比較分布與模型的定型資料或最近的實際執行資料,藉此追蹤模型輸入資料的分布變更。 Jensen-Shannon 距離、人口穩定性指數、標準化沃瑟斯坦距離、雙樣本科摩哥洛夫-史密諾夫檢定檢定、皮爾森卡方檢定 分類 (表格式資料),迴歸 (表格式資料) 實際執行資料:模型輸入 最近的過去生產資料或定型資料
預測漂移 透過比較分布與驗證資料、標記的測試資料或最近的實際執行資料,藉此追蹤模型預測輸出的分布變更。 Jensen-Shannon 距離、人口穩定性指數、標準化沃瑟斯坦距離、切比雪夫距離、雙樣本科摩哥洛夫-史密諾夫檢定檢定、皮爾森卡方檢定 分類 (表格式資料),迴歸 (表格式資料) 實際執行資料:模型輸出 最近的過去生產資料或驗證資料
資料品質 透過比較模型的輸入與模型的定型資料或最近的實際執行資料,藉此追蹤模型輸入的資料完整性。 資料品質檢查包括檢查 Null 值、類型不符或超出範圍值。 Null 值率、資料類型錯誤率、超出範圍比率 分類 (表格式資料),迴歸 (表格式資料) 實際執行資料:模型輸入 最近的過去生產資料或定型資料
特徵屬性漂移 (預覽) 根據特徵對預測的貢獻,也稱為特徵重要度。 特徵屬性漂移會比較其與定型期間的特徵重要度,藉此在生產期間追蹤特徵重要度。 正規化折扣累積增益 分類 (表格式資料),迴歸 (表格式資料) 實際執行資料:模型輸入和輸出 定型資料 (必要)
模型效能:分類 (預覽) 追蹤模型輸出在實際執行環境中的目標效能,方法是將其與收集到的有根據事實的資料進行比較。 正確性、精確度和召回率 類別 (表格式資料) 實際執行資料:模型輸出 有根據事實資料 (必要)
模型效能:迴歸 (預覽) 追蹤模型輸出在實際執行環境中的目標效能,方法是將其與收集到的有根據事實的資料進行比較。 平均絕對誤差 (MAE)、平均平方誤差 (MSE)、均方根誤差 (RMSE) 迴歸 (表格式資料) 實際執行資料:模型輸出 有根據事實資料 (必要)
生成式 AI:產生安全性和品質 (預覽) 使用 GPT 輔助的計量,評估生成式 AI 應用程式的安全性和品質。 根據性、相關性、流暢性、相似性、連貫性 問題與答案 提示、完成、內容和註釋範本 N/A

資料品質指標

資料品質監視訊號會計算下列三個計量,以追蹤模型輸入資料的完整性:

  • Null 值率
  • 資料類型錯誤率
  • 超出範圍比率

Azure Machine Learning 模型監測針對計算 Null 值率、資料類型錯誤率和超出範圍比率,支援高達 0.00001 的精確度。

Null 值率

Null 值率是模型輸入中每個特徵的 Null 值率。 例如,如果監視實際執行資料窗口包含 100 個資料列,而那些資料列其中 10 個資料列的 temperature 特徵的值為 Null,則 temperature 的 Null 值率為 10%。

Azure Machine Learning 支援計算所有特徵資料類型的 Null 值率。

資料類型錯誤率

在每個監視執行期間,Azure Machine Learning 模型監測會從參考資料推斷每個特徵的資料類型。 資料類型錯誤率是目前生產資料時間範圍與參考資料之間的資料類型差異率。

例如,如果 temperature 特徵的資料類型從參考資料推斷為 IntegerType,但在實際執行資料窗口,temperature 的 100 個值中有 10 個值並非 IntegerType,而是字串,則 temperature 的資料類型錯誤率為 10%。

Azure Machine Learning 支援計算 PySpark 中可用的下列資料類型資料類型錯誤率:ShortTypeBooleanTypeBinaryTypeDoubleTypeTimestampTypeStringTypeIntegerTypeFloatTypeByteTypeLongTypeDateType。 如果特徵的資料類型未在此清單中,Azure Machine Learning 模型監測仍會執行,但不會計算該特徵的資料類型錯誤率。

超出範圍比率

在每個監視執行期間,Azure Machine Learning 模型監測會從參考資料判斷每個特徵可接受的範圍或設定。 超出範圍比率是每個特徵的值比率,其落在適當的範圍之外,或由參考資料所決定。

  • 針對數值特徵,適當的範圍是參考資料集中最小值與最大值之間的數值間隔,例如 [0, 100]
  • 針對類別特徵 (例如 color),適當的範圍是包含在參考資料集中所有值的集合,例如 [red, yellow, green]

例如,如果您有數值 temperature 特徵,其中參考資料集中的所有值都落在 [37, 77] 範圍內,但在實際執行資料窗口中,temperature 的 100 個值中有 10 個超出 [37, 77] 的範圍,則 temperature 的超出範圍比率為 10%。

Azure Machine Learning 支援計算 PySpark 中可用的下列資料類型超出範圍比率:StringTypeIntegerTypeDoubleTypeByteTypeLongTypeFloatType。 如果特徵的資料類型未在此清單中,Azure Machine Learning 模型監測仍會執行,但不會計算該特徵的超出範圍比率。

模型監測與 Azure 事件方格的整合

您可以使用 Azure Machine Learning 模型監測執行所產生的事件,透過 Azure 事件方格 (英文) 來設定事件驅動應用程式、處理序或持續整合/持續傳遞 (CI/CD) 工作流程。 當您的模型監測器偵測到漂移、資料品質問題或模型效能降低時,您可以使用事件方格來追蹤這些事件,並以程式設計方式採取行動。

例如,如果生產階段中分類模型的正確性低於特定閾值,您可以使用事件方格來開始使用所收集到有根據事實資料的重新定型作業。 若要了解如何整合 Azure Machine Learning 與事件方格,請參閱監視部署至實際執行環境的模型效能 (英文)。