用於監視和偵錯模型的推斷數據表
重要
這項功能處於公開預覽狀態。
本文說明監視服務模型的推斷數據表。 下圖顯示具有推斷數據表的一般工作流程。 推斷數據表會自動擷取服務端點之模型的連入要求和傳出回應,並將其記錄為 Unity 目錄差異數據表。 您可以使用此資料表中的數據來監視、偵錯及改善 ML 模型。
什麼是推斷數據表?
監視生產工作流程中模型效能是 AI 和 ML 模型生命週期的重要層面。 推斷數據表會持續記錄 Databricks 模型服務端點的要求輸入和回應,並將其儲存到 Unity 目錄中的 Delta 數據表,藉以簡化模型的監視和診斷。 然後,您可以使用 Databricks 平臺的所有功能,例如 DBSQL 查詢、筆記本和 Lakehouse 監視來監視、偵錯和優化模型。
您可以在任何現有或新建立的模型上啟用推斷數據表來提供端點,然後會自動將該端點的要求記錄到 UC 中的數據表。
推斷資料表的一些常見應用程式如下:
- 監視數據和模型品質。 您可以使用 Lakehouse 監視持續監視模型效能和數據漂移。 Lakehouse Monitoring 會自動產生您可以與專案關係人共用的數據和模型品質儀錶板。 此外,您可以啟用警示,以瞭解何時需要根據傳入數據的班次重新定型模型,或減少模型效能。
- 偵錯生產問題。 推斷數據表記錄數據,例如 HTTP 狀態代碼、模型運行時間,以及要求和回應 JSON 程式代碼。 您可以使用此效能資料進行偵錯。 您也可以使用推斷數據表中的歷程記錄數據來比較歷程記錄要求的模型效能。
- 建立訓練主體。 藉由聯結推斷數據表與地面真相卷標,您可以建立定型主體,讓您可用來重新定型或微調並改善模型。 使用 Databricks 工作流程,您可以設定連續的意見反應迴圈,並自動重新定型。
需求
- 您的工作區必須已啟用 Unity 目錄。
- 若要在端點上啟用推斷數據表,端點的建立者和修飾詞都需要下列許可權:
- 端點的 CAN MANAGE 許可權。
USE CATALOG
指定之目錄的許可權。USE SCHEMA
指定架構的許可權。CREATE TABLE
架構中的許可權。
啟用和停用推斷數據表
本節說明如何使用 Databricks UI 來啟用或停用推斷數據表。 您也可以使用 API;如需指示,請參閱 使用 API 在提供端點的模型上啟用推斷數據表。
推斷數據表的擁有者是建立端點的使用者。 數據表上的所有訪問控制清單 (ACL) 都遵循標準 Unity 目錄許可權,而且可由數據表擁有者修改。
警告
如果您執行下列任何動作,推斷數據表可能會損毀:
- 變更數據表架構。
- 變更數據表名稱。
- 刪除資料表。
- 失去 Unity 目錄目錄或架構的許可權。
在此情況下, auto_capture_config
端點狀態的 會顯示 FAILED
承載數據表的狀態。 如果發生這種情況,您必須建立新的端點,才能繼續使用推斷數據表。
若要在端點建立期間啟用推斷數據表,請使用下列步驟:
按兩下 Databricks 機器學習 UI 中的 [服務]。
按兩下 [ 建立服務端點]。
選取 [ 啟用推斷數據表]。
在下拉功能表中,選取您想要放置資料表的所需目錄和架構。
預設資料表名稱為
<catalog>.<schema>.<endpoint-name>_payload
。 如有需要,您可以輸入自定義數據表前置詞。按兩下 [ 建立服務端點]。
您也可以在現有的端點上啟用推斷數據表。 若要編輯現有的端點組態,請執行下列動作:
- 流覽至您的端點頁面。
- 按兩下 [ 編輯組態]。
- 請遵循先前的指示,從步驟 3 開始。
- 完成時,按兩下 [ 更新服務端點]。
請遵循下列指示來停用推斷資料表:
重要
當您停用端點上的推斷數據表時,您無法重新啟用它們。 若要繼續使用推斷數據表,您必須建立新的端點,並在其上啟用推斷數據表。
- 流覽至您的端點頁面。
- 按兩下 [ 編輯組態]。
- 按兩下 [ 啟用推斷資料表 ] 以移除複選標記。
- 一旦您滿意端點規格,請按兩下 [ 更新]。
工作流程:使用推斷數據表監視模型效能
若要使用推斷數據表監視模型效能,請遵循下列步驟:
- 在您的 端點上啟用推斷數據表 ,無論是在端點建立期間,還是在之後更新。
- 根據端點的架構,排程工作流程以處理推斷數據表中的 JSON 承載。
- (選擇性)將解壓縮的要求和回應與地面事實標籤,以允許計算模型品質計量。
- 透過產生的 Delta 資料表建立監視器,並重新整理計量。
入門筆記本會實作此工作流程。
用來監視推斷數據表的入門筆記本
下列筆記本會實作上述步驟,以從 Lakehouse 監視推斷數據表解壓縮要求。 筆記本可以視需要執行,或使用 Databricks 工作流程執行週期性排程。
推斷數據表 Lakehouse 監視入門筆記本
入門筆記本,可從提供 LLM 的端點監視文字品質
下列筆記本會從推斷數據表解壓縮要求、計算一組文字評估計量(例如可讀性和毒性),並啟用對這些計量的監視。 筆記本可以視需要執行,或使用 Databricks 工作流程執行週期性排程。
LLM 推斷數據表 Lakehouse 監視入門筆記本
在推斷數據表中查詢和分析結果
服務模型準備就緒之後,所有對模型提出的要求都會自動記錄至推斷數據表,以及回應。 您可以在 UI 中檢視數據表、從 DBSQL 或筆記本查詢數據表,或使用 REST API 查詢數據表。
若要在 UI 中檢視數據表: 在端點頁面上,按兩下推斷數據表的名稱,以在目錄總管中開啟資料表。
若要從 DBSQL 或 Databricks 筆記本查詢數據表: 您可以執行類似下列的程式代碼來查詢推斷數據表。
SELECT * FROM <catalog>.<schema>.<payload_table>
如果您使用UI啟用推斷數據表, payload_table
就是您在建立端點時指派的數據表名稱。 如果您使用 API 啟用推斷數據表, payload_table
則會在 state
回應的 auto_capture_config
區段中回報。 如需範例,請參閱 使用 API 在提供端點的模型上啟用推斷數據表。
效能注意事項
叫用端點之後,您可以在傳送評分要求之後的 10 分鐘內看到已記錄至推斷數據表的調用。 此外,Azure Databricks 保證記錄傳遞至少會發生一次,因此有可能傳送重複的記錄。
Unity 目錄推斷數據表架構
記錄至推斷數據表的每個要求和響應都會寫入具有下列架構的 Delta 資料表:
注意
如果您使用一批輸入來叫用端點,則會將整個批次記錄為一個數據列。
資料行名稱 | 描述 | 類型 |
---|---|---|
databricks_request_id |
Azure Databricks 產生的要求標識符附加至所有服務要求的模型。 | 字串 |
client_request_id |
選擇性客戶端產生的要求識別碼,可在服務要求主體的模型中指定。 如需詳細資訊,請參閱 指定 client_request_id 。 |
字串 |
date |
收到模型服務要求的UTC日期。 | 日期 |
timestamp_ms |
收到模型服務要求時,以 epoch 毫秒為單位的時間戳。 | LONG |
status_code |
從模型傳回的 HTTP 狀態代碼。 | INT |
sampling_fraction |
要求已向下取樣之事件中使用的取樣分數。 這個值介於 0 到 1 之間,其中 1 代表包含 100% 的傳入要求。 | DOUBLE |
execution_time_ms |
運行時間,以毫秒為單位,模型執行推斷。 這不包括額外的網路等待時間,而且只代表模型產生預測所花費的時間。 | LONG |
request |
傳送至模型服務端點的原始要求 JSON 主體。 | 字串 |
response |
模型服務端點所傳回的原始回應 JSON 主體。 | 字串 |
request_metadata |
與模型相關的元數據對應,提供與要求相關聯的端點。 此對應包含端點所使用的端點名稱、模型名稱和模型版本。 | MAP<STRING、STRING> |
指定 client_request_id
欄位 client_request_id
是使用者可以在模型服務要求本文中提供的選擇性值。 這可讓使用者提供自己的標識碼給出現在 下最後推斷數據表 client_request_id
中的要求,並可用於將要求與其他使用 client_request_id
的數據表聯結,例如基礎事實卷標聯結。 若要指定 client_request_id
,請將它納入 為要求承載的最上層索引鍵。 client_request_id
如果未指定 ,則值會在對應至要求的數據列中顯示為 null。
{
"client_request_id": "<user-provided-id>",
"dataframe_records": [
{
"sepal length (cm)": 5.1,
"sepal width (cm)": 3.5,
"petal length (cm)": 1.4,
"petal width (cm)": 0.2
},
{
"sepal length (cm)": 4.9,
"sepal width (cm)": 3,
"petal length (cm)": 1.4,
"petal width (cm)": 0.2
},
{
"sepal length (cm)": 4.7,
"sepal width (cm)": 3.2,
"petal length (cm)": 1.3,
"petal width (cm)": 0.2
}
]
}
client_request_id
如果還有其他數據表有與 client_request_id
相關聯的標籤,則稍後可以用於地面事實標籤。
限制
- 不支援客戶管理的金鑰。
- 針對裝載 基礎模型的端點,推斷數據表僅支援 布建的輸送量 工作負載。
- 布建輸送量端點上的推斷數據表不支持記錄串流要求。
- 裝載外部模型的端點不支援推斷數據表。
- 不支援 Azure 防火牆,而且可能會導致建立 Unity 目錄差異數據表失敗。
- 啟用推斷數據表時,單一端點中所有服務模型的最大並行總數限製為128。 請連絡您的 Azure Databricks 帳戶小組,要求增加此限制。
- 如果推斷數據表包含超過 500K 個檔案,則不會記錄其他數據。 若要避免超過此限制,請刪除較舊的數據,在您的數據表上執行 OPTIMIZE 或設定保留期。 若要檢查資料表中的檔案數目,請執行
DESCRIBE DETAIL <catalog>.<schema>.<payload_table>
。
如需提供端點限制的一般模型,請參閱 模型服務限制和區域。
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應