使用 Azure Machine Learning 進行模型監測
在本文中,您將了解 Azure Machine Learning 中的模型監測、您可以監視的訊號和計量,以及使用模型監測的建議做法。
模型監測的案例
模型監測是機器學習端對端生命週期的最後一個步驟。 此步驟會追蹤生產階段的模型效能,目標是從資料科學和作業觀點了解模型效能。
不同於傳統軟體系統,機器學習系統的行為不僅受程式碼中所指定的規則所控管,也由從資料學習到的模型行為所控管。 因此,資料分佈變更、定型服務扭曲、資料品質問題、環境中的變化,或取用者行為變更都可能導致模型過時。 當模型過時時,其效能降級程度可能會達到無法增加商業價值,或開始在嚴格規範的環境中造成嚴重合規性問題。
Azure 機器學習 中的模型監視限制
Azure 機器學習 模型監視僅支援使用認證型驗證(例如 SAS 令牌)來存取資料存放區中包含的數據。 若要深入瞭解數據存放區和驗證模式,請參閱 數據管理。
模型監測如何在 Azure Machine Learning 中運作
為了實作監視,Azure Machine Learning 會對串流生產推斷資料和參考資料執行統計計算,藉以取得監視訊號。 參考資料可以是歷程記錄定型資料、驗證資料或有根據事實資料。 另一方面,生產推斷資料是指模型在生產階段收集到的輸入和輸出資料。
每個監視訊號都有一或多個計量。 使用者可以設定這些計量的閾值,以便透過 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 SDK/CLI 2.0 或 Studio UI 輕鬆地設定模型監測。 在設定期間,您可以指定您慣用的監視訊號,並自訂每個訊號的計量和閾值。
- 檢視及分析模型監測結果。 設定模型監測之後,Azure Machine Learning 會排程監視作業,以您指定的頻率執行。 每個執行都會計算並評估所有所選監視訊號的計量,並在超過任何指定的閾值時,觸發警示通知。 您可以遵循警示通知中的連結,在 Azure Machine Learning 工作區中檢視及分析監視結果。
模型監測的功能
Azure Machine Learning 提供下列持續模型監測的功能:
- 內建監視訊號。 模型監測提供表格式資料的內建監視訊號。 這些監視訊號包括資料漂移、預測漂移、資料品質、特徵屬性漂移和模型效能。
- 使用 Azure Machine Learning 線上端點進行現用的模型監測設定。 如果您將模型部署至 Azure Machine Learning 線上端點中的生產環境,Azure Machine Learning 會自動收集生產推斷資料,並將其用於持續監視。
- 使用多個監視訊號進行廣泛檢視。 您可以輕鬆在一個監視設定中包含數個監視訊號。 針對每個監視訊號,您可以選取您慣用的計量,並微調警示閾值。
- 使用定型資料或最近的過去生產資料做為比較的參考資料。 針對監視訊號,Azure Machine Learning 可讓您使用定型資料或最近的過去生產資料來設定參考資料。
- 監視資料漂移或資料品質的前 N 項特徵。 如果您使用定型資料做為參考資料,則可以定義分層於特徵重要度的資料漂移或資料品質訊號。
- 彈性地定義監視訊號。 如果內建監視訊號不適合您的商務案例,您可以使用自訂監視訊號元件來定義自己的監視訊號。
- 彈性地使用來自任何來源的生產推斷資料。 如果您在 Azure Machine Learning 外部部署模型,或將模型部署至 Azure Machine Learning 批次端點,則可以收集生產推斷資料,以在 Azure Machine Learning 用於進行模型監測。
回顧時間範圍大小和位移
回顧時間範圍大小是生產或參考資料時間範圍從監視執行的日期回顧的持續時間 (ISO 8601 格式)。
回顧時間範圍位移是時間持續時間 (ISO 8601 格式),以從監視執行的日期位移資料時間範圍結尾。
例如,假設您的模型在生產階段,且您有一個監視器設定為在國際標準時間 1 月 31 日下午 3:15 執行,如果您為監視器設定 P7D
(7 天) 的生產回顧時間範圍大小,以及 P0D
(0 天) 的生產回顧時間範圍位移,則監視器會使用從國際標準時間 1 月 24 日下午 3:15 到 1 月 31 日下午 3:15 的資料。
此外,針對參考資料,如果您將回顧時間範圍位移設定為 P7D
(7 天),則參考資料時間範圍會在生產資料時間範圍開始前就結束,因此不會重疊。 然後,您可以將參考資料回顧時間範圍大小設定為和您所需的大小一樣大。 例如,藉由將參考資料回顧時間範圍大小設定為 P24D
(24 天),參考資料時間範圍包含從國際標準時間 1 月 1 日下午 3:15 到 1 月 24 日下午 3:15 的資料。 下圖說明這個範例。
在某些情況下,您可能會發現將生產資料的回顧時間範圍位移設定為大於 0 天的數字會很有用。 例如,如果您的監視器排程於國際標準時間週一下午 3:15 執行每週一次,但您不想在監視回合中使用週末的資料,則您可以使用 P5D
(5 天) 的回顧時間範圍大小,以及 P2D
(2 天) 的回顧時間範圍位移。 然後,您的資料時間範圍會在國際標準時間星期一下午 3:15 前開始,並在星期五下午 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_date
和reference_data.data_window.window_end_date
屬性。
自訂回顧時間範圍位移
您可以彈性地為生產資料和參考資料選取資料時間範圍的回顧時間範圍位移。 您可以使用位移來細微控制監視器所使用的資料。 位移僅適用於滾動資料時間範圍。
根據預設,生產資料的位移為
P0D
(0 天)。 您可以使用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 值率
- 資料類型錯誤率
- 超出範圍比率
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 中可用的下列資料類型資料類型錯誤率:
ShortType
、BooleanType
、BinaryType
、DoubleType
、TimestampType
、StringType
、IntegerType
、FloatType
、ByteType
、LongType
和DateType
。 - 如果特徵的資料類型未包含在此清單中,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 中可用的這些資料類型超出範圍比率:
StringType
、IntegerType
、DoubleType
、ByteType
、LongType
和FloatType
。 - 如果特徵的資料類型未包含在此清單中,Azure Machine Learning 模型監測仍會執行,但不會計算該特定特徵的超出範圍比率。
Azure Machine Learning 模型監測針對計算 Null 值率、資料類型錯誤率和超出範圍比率,支援高達 0.00001 的精確度。
建議的模型監測最佳做法
每個機器學習模型及其使用案例都是唯一的。 因此,模型監測對於每個情況而言都是唯一的。 以下是模型監測的建議最佳做法清單:
- 將模型部署至生產環境之後,立即啟動模型監測。
- 請與熟悉模型的資料科學家合作,以設定模型監測。 深入解析模型及其使用案例的資料科學家,最適合建議監視訊號和計量,並為每個計量設定正確的警示閾值 (以避免警示疲勞)。
- 在您的監視設定中包含多個監視訊號。 您可以透過多個監視訊號,同時取得監視的廣泛檢視和細微檢視。 例如,您可以結合資料漂移和特徵屬性漂移訊號,以取得模型效能問題相關的早期警告。
- 使用模型定型資料做為參考資料。 針對用來做為比較基準的參考資料,Azure Machine Learning 可讓您使用最近的過去生產資料或歷程記錄資料 (例如定型資料或驗證資料)。 如需有意義的比較,建議您使用定型資料做為資料漂移和資料品質的比較基準。 針對預測漂移,請使用驗證資料做為比較基準。
- 根據生產資料隨著時間成長的方式,指定監視頻率。 例如,如果您的生產模型每天有大量的流量,且每天資料累積就足以讓您監視,則您可以將監視頻率設定為每天。 否則,您可以根據一段時間的生產資料成長,考慮每週或每月監視頻率。
- 監視前 N 個重要特徵或特徵子集。 如果您使用定型資料做為比較基準,您可以輕鬆地設定前 N 項特徵的資料漂移監視或資料品質監視。 對於具有大量特徵的模型,請考慮監視這些特徵的子集,以降低計算成本和監視雜訊。
- 當您能夠存取有根據事實資料時,請使用模型效能訊號。 如果您根據機器學習應用程式的特定情況存取有根據事實資料 (也稱為實際資料),建議您使用模型效能訊號來比較有根據事實資料與模型的輸出。 此比較提供生產階段模型效能的目標檢視。
模型監測與 Azure 事件方格的整合
您可以使用 Azure Machine Learning 模型監視執行所產生的事件,透過 Azure 事件方格來設定事件驅動應用程式、處理程序或 CI/CD 工作流程。
當您的模型監測器偵測到漂移、資料品質問題或模型效能降低時,您可以使用事件方格來追蹤這些事件,並以程式設計方式採取行動。 例如,如果生產階段中分類模型的正確性低於特定閾值,您可以使用事件方格來開始使用所收集到有根據事實資料的重新定型作業。 若要了解如何整合 Azure Machine Learning 與事件方格,請參閱在 Azure Machine Learning 中執行持續模型監測。
相關內容
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應