使用 API 在提供端點的模型上啟用推斷數據表
重要
這項功能處於公開預覽狀態。
本文說明如何使用 Databricks API 來啟用模型服務端點的推斷數據表。 如需使用推斷數據表的一般資訊,包括如何使用 Databricks UI 加以啟用,請參閱 用於監視和偵錯模型的推斷數據表。
您可以在建立新的端點或現有端點時啟用推斷數據表。 Databricks 建議您使用服務主體建立端點,以便在建立端點的使用者從工作區移除時,不會影響推斷數據表。
推斷資料表的擁有者是建立端點的使用者。 資料表的所有存取控制清單 (ACL) 都遵循標準 Unity Catalog 權限,並且可由資料表擁有者修改。
需求
- 工作區必須啟用 Unity Catalog。
- 端點和修飾元的建立者都必須擁有端點的 Can Manage 權限。 請參閱存取控制清單。
- 端點和修飾元的建立者都必須在 Unity Catalog 擁有下列權限:
- 指定目錄的
USE CATALOG
權限。 - 指定結構描述的
USE SCHEMA
權限。 - 結構描述的
CREATE TABLE
權限。
- 指定目錄的
使用 API 在端點建立時啟用推斷數據表
您可以在使用 API 建立端點期間啟用端點的推斷資料表。 如需建立端點的指示,請參閱 建立提供端點的自定義模型。
在 API 中,要求主體必須 auto_capture_config
指定:
- Unity 目錄目錄:字串,代表要儲存數據表的目錄
- Unity 目錄架構:字串,表示要儲存數據表的架構
- (選擇性) 數據表前置詞:做為推斷數據表名稱前置詞的字串。 如果未指定此專案,則會使用端點名稱。
- 已啟用 (選擇性) :用來啟用或停用推斷數據表的布爾值。 根據預設,這是 true。
指定目錄、架構和選擇性數據表前置詞之後,會在 建立 <catalog>.<schema>.<table_prefix>_payload
數據表。 此數據表會自動建立 Unity 目錄受控數據表。 數據表的擁有者是建立端點的使用者。
注意
不支援指定現有的數據表,因為推斷數據表一律會在端點建立或端點更新時自動建立。
警告
如果您執行下列任何動作,推斷資料表可能會損毀:
- 變更資料表結構描述。
- 變更資料表的名稱。
- 刪除資料表。
- 喪失 Unity Catalog 目錄或結構描述的權限。
在這個情況下,端點狀態的 auto_capture_config
會顯示酬載資料表的狀態為。FAILED
如果發生這種情況,您必須建立新的端點,才能繼續使用推斷資料表。
下列範例示範如何在端點建立期間啟用推斷數據表。
POST /api/2.0/serving-endpoints
{
"name": "feed-ads",
"config":
{
"served_entities": [
{
"entity_name": "ads1",
"entity_version": "1",
"workload_size": "Small",
"scale_to_zero_enabled": true
}
],
"auto_capture_config":
{
"catalog_name": "ml",
"schema_name": "ads",
"table_name_prefix": "feed-ads-prod"
}
}
}
回應如下所示:
{
"name": "feed-ads",
"creator": "customer@example.com",
"creation_timestamp": 1666829055000,
"last_updated_timestamp": 1666829055000,
"state": {
"ready": "NOT_READY",
"config_update": "IN_PROGRESS"
},
"pending_config": {
"start_time": 1666718879000,
"served_entities": [
{
"name": "ads1-1",
"entity_name": "ads1",
"entity_version": "1",
"workload_size": "Small",
"scale_to_zero_enabled": true,
"state": {
"deployment": "DEPLOYMENT_CREATING",
"deployment_state_message": "Creating"
},
"creator": "customer@example.com",
"creation_timestamp": 1666829055000
}
],
"config_version": 1,
"traffic_config": {
"routes": [
{
"served_model_name": "ads1-1",
"traffic_percentage": 100
}
]
},
"auto_capture_config": {
"catalog_name": "ml",
"schema_name": "ads",
"table_name_prefix": "feed-ads-prod",
"state": {
"payload_table": {
"name": "feed-ads-prod_payload"
}
},
"enabled": true
}
},
"id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"permission_level": "CAN_MANAGE"
}
一旦啟用登入推斷數據表之後,請等候端點準備就緒。 然後,您可以開始呼叫它。
建立推斷數據表之後,系統應該處理架構演進和新增數據。
下列作業不會影響資料表的完整性:
- 針對數據表執行 OPTIMIZE、ANALYZE 和 VACUUM。
- 刪除舊的未使用數據。
如果您未指定 auto_capture_config
,預設會重複使用先前組態版本的設定組態。 例如,如果推斷數據表已啟用,則會在下一個端點更新上使用相同的設定,或如果推斷數據表已停用,則會繼續停用。
{
"served_entities": [
{
"name":"current",
"entity_name":"model-A",
"entity_version":"1",
"workload_size":"Small",
"scale_to_zero_enabled":true
}
],
"auto_capture_config": {
"enabled": false
}
}
使用 API 在現有端點上啟用推斷數據表
您也可以使用 API 在現有的端點上啟用推斷資料表。 啟用推斷數據表之後,請在未來的更新端點 API 呼叫中繼續指定相同的 auto_capture_config
主體,以繼續使用推斷數據表。
注意
不支援啟用推斷數據表之後變更數據表位置。
PUT /api/2.0/serving-endpoints/{name}/config
{
"served_entities": [
{
"name":"current",
"entity_name":"model-A",
"entity_version":"1",
"workload_size":"Small",
"scale_to_zero_enabled":true
},
{
"name":"challenger",
"entity_name":"model-B",
"entity_version":"1",
"workload_size":"Small",
"scale_to_zero_enabled":true
}
],
"traffic_config":{
"routes": [
{
"served_model_name":"current",
"traffic_percentage":"50"
},
{
"served_model_name":"challenger",
"traffic_percentage":"50"
}
]
},
"auto_capture_config":{
"catalog_name": "catalog",
"schema_name": "schema",
"table_name_prefix": "my-endpoint"
}
}
停用推斷數據表
停用推斷數據表時,您不需要指定目錄、架構或數據表前置詞。 唯一的必要欄位是 enabled: false
。
POST /api/2.0/serving-endpoints
{
"name": "feed-ads",
"config":{
"served_entities": [
{
"entity_name": "ads1",
"entity_version": "1",
"workload_size": "Small",
"scale_to_zero_enabled": true
}
],
"auto_capture_config":{
"enabled": false
}
}
}
若要重新啟用已停用的推斷數據表,請遵循在現有端點上啟用推斷數據表中的指示。 您可以使用相同的資料表或指定新的資料表。
下一步
啟用推斷數據表之後,您可以使用 Databricks Lakehouse Monitoring 來監視模型服務端點中的服務模型。 如需詳細資訊,請參閱 工作流程:使用推斷數據表監視模型效能。