用於監視和偵錯模型的推斷資料表

重要

這項功能處於公開預覽狀態

本文說明用於監視服務模型的推斷資料表。 下圖顯示具有推斷資料表的一般工作流程。 推斷資料表會自動擷取服務端點之模型的連入要求和傳出回覆,並將其記錄為 Unity 目錄差異資料表。 您可以使用這個資料表中的資料監視、偵錯及改善 ML 模型。

針對裝載外部模型的端點模型,您只能 使用 AI 閘道來啟用推斷資料表。

推斷資料表工作流程

什麼是推斷資料表?

監視實際執行工作流程中的模型效能,是 AI 和 ML 模型生命週期的重要層面。 推斷資料表會持續記錄來自 Mosaic AI Model Serving 端點的服務要求輸入和回覆 (預測),並將要求和回覆儲存到 Unity Catalog 中的差異資料表,進而簡化模型的監視和診斷。 然後,您可以使用 Databricks 平台的所有功能 (例如 Databricks SQL 查詢、筆記本和 Lakehouse Monitoring) 監視、偵錯和最佳化模型。

您可以在任何現有或新建立的模型服務端點啟用推斷資料表,然後該端點的要求會自動記錄到 UC 中的資料表。

推斷資料表的一些常見應用如下:

  • 監視資料和模型品質。 您可以使用 Lakehouse 監視持續監視模型效能和資料漂移。 Lakehouse Monitoring 會自動產生您可以與項目關係人共用的資料和模型品質儀表板。 此外,您可以啟用警示,以瞭解何時需要根據傳入資料的班次重新訓練模型,或減少模型效能。
  • 偵錯實際執行問題。 推斷資料表會記錄資料,例如 HTTP 狀態碼、模型執行時間,以及要求和回覆 JSON 程式碼。 您可以使用這個效能資料偵錯。 您也可以使用推斷資料表中的歷程記錄資料,比較歷程記錄要求的模型效能。
  • 建立訓練語料庫。 聯結推斷資料表與 Ground Truth 標籤,即可建立訓練語料庫,用來重新訓練或微調並改善模型。 使用 Databricks 工作,您可以設定連續的意見反應迴圈,並自動化重新訓練。

需求

  • 工作區必須啟用 Unity Catalog。
  • 端點和修飾元的建立者都必須擁有端點的 Can Manage 權限。 請參閱存取控制清單
  • 端點和修飾元的建立者都必須在 Unity Catalog 擁有下列權限
    • 指定目錄的 USE CATALOG 權限。
    • 指定結構描述的 USE SCHEMA 權限。
    • 結構描述的 CREATE TABLE 權限。

啟用和停用推斷資料表

本節說明如何使用 Databricks UI 啟用或停用推斷資料表。 您也可以使用 API;如需指示,請參閱使用 API 啟用模型服務端點上的推斷資料表

推斷資料表的擁有者是建立端點的使用者。 資料表的所有存取控制清單 (ACL) 都遵循標準 Unity 目錄權限,並且可由資料表擁有者修改。

警告

如果您執行下列任何動作,推斷資料表可能會損毀:

  • 變更資料表結構描述。
  • 變更資料表的名稱。
  • 刪除資料表。
  • 喪失 Unity Catalog 目錄或結構描述的權限。

在這個情況下,端點狀態的 auto_capture_config 會顯示酬載資料表的狀態為。FAILED 如果發生這種情況,您必須建立新的端點,才能繼續使用推斷資料表。

若要在端點建立期間啟用推斷資料表,請使用下列步驟:

  1. 在 Databricks Machine Learning UI 按下 [服務]。

  2. 按一下建立服務端點

  3. 選取 [啟用推斷資料表]

  4. 在下拉式功能表中,選取您想要放置資料表的預期目錄和結構描述。

    推斷資料表的目錄和結構描述

  5. 預設資料表名稱為 <catalog>.<schema>.<endpoint-name>_payload。 如有需要,您可以輸入自定義資料表前置詞。

  6. 按一下建立服務端點

您也可以在現有的端點上啟用推斷資料表。 若要編輯現有的端點組態,請執行下列動作:

  1. 瀏覽至端點頁面。
  2. 按下 [編輯組態]。
  3. 遵循先前的指示,從步驟 3 開始。
  4. 完成時,按下 [更新服務端點]。

遵循下列指示,停用推斷資料表:

  1. 瀏覽至端點頁面。
  2. 按下 [編輯組態]。
  3. 按下 [啟用推斷資料表],移除勾選記號。
  4. 滿意端點規格後,按下 [更新]。

工作流程:使用推斷資料表監視模型效能

若要使用推斷資料表監視模型效能,請遵循下列步驟:

  1. 在端點建立期間,或是之後以更新端點的方式,皆可在端點啟用推斷資料表
  2. 根據端點的結構描述,排程工作流程以處理推斷資料表中的 JSON 酬載。
  3. (選用) 將解壓縮的要求和回覆與 Ground-Truth 標籤聯結,允許計算模型品質計量。
  4. 透過產生的差異資料表建立監視器,並重新整理計量。

入門筆記本會實作這個工作流程。

用來監視推斷資料表的入門筆記本

下列筆記本會實作上述步驟,以從 Lakehouse 監視推斷資料表解壓縮要求。 使用 Databricks 工作可視需要或依週期性排程執行筆記本。

推斷資料表 Lakehouse 監視入門筆記本

取得筆記本

用於從端點服務 LLM 監視文字品質的入門筆記本

下列筆記本會從推斷資料表解壓縮要求、計算一組文字評估計量 (例如可讀性和有害性),並啟用對這些計量的監視。 使用 Databricks 工作可視需要或依週期性排程執行筆記本。

LLM 推斷資料表 Lakehouse 監視入門筆記本

取得筆記本

在推斷資料表中查詢和分析結果

服務模型準備就緒之後,所有對模型提出的要求都會自動記錄至推斷資料表,以及回覆。 您可以在 UI 中檢視資料表、從 DBSQL 或筆記本查詢資料表,或使用 REST API 查詢資料表。

若要在 UI 檢視資料表:在端點頁面按下推斷資料表的名稱,即可在目錄總管中開啟資料表。

端點頁面推斷資料表名稱的連結

若要從 DBSQL 或 Databricks Notebooks 查詢資料表:您可以執行類似下列的程式碼查詢推斷資料表。

SELECT * FROM <catalog>.<schema>.<payload_table>

如果您使用 UI 啟用推斷資料表,payload_table就是您在建立端點時指派的資料表名稱。 如果您使用 API 啟用推斷資料表,則系統會在 auto_capture_config 回覆的 state 區段報告 payload_table。 如需範例,請參閱使用 API 啟用模型服務端點上的推斷資料表

效能注意事項

叫用端點之後,您可以在傳送評分要求一小時內,看到已記錄至推斷資料表的叫用。 此外,Azure Databricks 保證至少會傳遞一次記錄,因此有可能 (雖然可能性不高) 傳送重複的記錄。

Unity 目錄推斷資料表結構描述

記錄至推斷資料表的每個要求和回覆,都會寫入有下列結構描述的差異資料表:

注意

如果您使用一批輸入叫用端點,則會將整個批次記錄為一個資料列。

資料行名稱 描述 類型
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 的資料表聯結,例如 Ground Truth 標籤聯結。 若要指定 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 稍後可用於 Ground Truth 標籤聯結。

限制

  • 不支援客戶自控金鑰。
  • 針對託管基礎模型的端點,僅佈建的輸送量工作負載支援推斷資料表。
  • Azure 防火牆可能導致 Unity Catalog 差異資料表建立失敗,因此預設不支援。 若要啟用,請連絡 Databricks 客戶團隊。
  • 啟用推斷資料表時,單一端點中所有服務模型的並行上限總計限制為 128。 若要要求提高這項限制,請連絡 Azure Databricks 客戶團隊。
  • 如果推斷資料表包含超過 500K 個檔案,則不會記錄其他資料。 若要避免超過這個限制,請刪除較舊的資料,在資料表執行 OPTIMIZE 或設定保留。 若要檢查資料表中的檔案數目,請回合。DESCRIBE DETAIL <catalog>.<schema>.<payload_table>
  • 推斷資料表記錄傳遞目前最費力,但您可以預期記錄在要求後的 1 小時內可供使用。 如需詳細資訊,請連絡 Databricks 客戶團隊。

如需一般模型服務端點限制,請參閱模型服務限制和區域