使用線上推論記錄

對於 AutoML 表格型模型、AutoML 圖片模型和自訂訓練模型,您可以在模型部署或建立端點時啟用或停用推論記錄。本頁面說明可用的不同型別推論記錄,以及如何啟用或停用這些記錄。

推論記錄類型

您可以透過幾種推論記錄,從推論節點取得資訊:

  • 容器記錄:將推論節點的 stdoutstderr 串流記錄到 Cloud Logging。偵錯時需要這些記錄。

    • v1 服務端點上,容器記錄功能預設為啟用。 部署模型時,您可以停用這項功能。您也可以在變更已部署的模型時,停用或啟用記錄。

    • v1beta1 服務端點上,容器記錄功能預設為停用。部署模型時,您可以啟用這項功能。您也可以在變更已部署的模型時,停用或啟用記錄功能。

  • 存取記錄:將每個要求的資訊 (時間戳記與延遲時間等) 記錄到 Cloud Logging。

    v1v1beta1 服務端點上,存取記錄功能預設為停用。將模型部署至端點時,可以啟用存取記錄。

  • 要求/回應記錄:對線上推論要求和回應進行取樣,並記錄到 BigQuery 資料表。

    您可以建立或修補推論端點,啟用要求/回應記錄。

您可以個別啟用或停用各類記錄。

推論記錄設定

建立端點、將模型部署至端點,或變更已部署的模型時,可以啟用或停用線上推論記錄。

如要更新存取記錄的設定,您必須取消部署模型,然後使用新設定重新部署模型。您可以更新容器記錄的設定,不必重新部署模型。

以較高的每秒查詢次數 (QPS) 執行的線上推論服務會產生大量記錄,這些記錄受到 Cloud Logging 定價政策的規範。如要估算線上推論記錄的價格,請參閱估算帳單金額一文。如要降低這項費用,可以停用推論記錄。

啟用及停用推論記錄

下列範例會標示出修改預設記錄設定的位置:

控制台

在Google Cloud 控制台中將模型部署至端點或建立新端點時,您可以在「記錄」步驟中指定要啟用哪些類型的推論記錄。選取核取方塊即可啟用「存取記錄」或「容器記錄」,取消選取則可停用這些記錄。

使用 REST API 更新容器記錄的設定。

使用 REST API 啟用要求/回應記錄功能。Google Cloud 控制台和 gcloud CLI 不支援要求/回應記錄設定。

如要進一步瞭解如何部署模型,請參閱「使用 Google Cloud 控制台部署模型」。

gcloud

如要變更已部署模型中啟用記錄的預設行為,請在 gcloud 指令中加入旗標:

v1 服務端點

執行 gcloud ai endpoints deploy-model

gcloud ai endpoints deploy-model ENDPOINT_ID\
  --region=LOCATION \
  --model=MODEL_ID \
  --display-name=DEPLOYED_MODEL_NAME \
  --machine-type=MACHINE_TYPE \
  --accelerator=count=2,type=nvidia-tesla-t4 \
  --disable-container-logging \
  --enable-access-logging

v1beta1 服務端點

執行 gcloud beta ai endpoints deploy-model

gcloud beta ai endpoints deploy-model ENDPOINT_ID\
  --region=LOCATION \
  --model=MODEL_ID \
  --display-name=DEPLOYED_MODEL_NAME \
  --machine-type=MACHINE_TYPE \
  --accelerator=count=2,type=nvidia-tesla-t4 \
  --enable-access-logging \
  --enable-container-logging

使用 REST API 更新容器記錄的設定。

使用 REST API 啟用要求/回應記錄功能。Google Cloud 控制台和 gcloud CLI 不支援要求/回應記錄設定。

如要進一步瞭解如何部署模型,請參閱「使用 Vertex AI API 部署模型」。

REST

如要變更已部署模型中啟用記錄的預設行為,請將相關欄位設為 True

v1 服務端點

如要停用容器記錄,請在呼叫 projects.locations.endpoints.deployModelprojects.locations.endpoints.mutateDeployedModel 時,將 disableContainerLogging 欄位設為 True

如要啟用存取記錄,請在透過 projects.locations.endpoints.deployModel 部署模型時,將 enableAccessLogging 設為 True

v1beta1 服務端點

如要啟用容器記錄,請在呼叫 projects.locations.endpoints.deployModelprojects.locations.endpoints.mutateDeployedModel 時,將 enableContainerLogging 欄位設為 True

如要啟用存取記錄,請在透過 projects.locations.endpoints.deployModel 部署模型時,將 enableAccessLogging 設為 True

如要進一步瞭解如何部署模型,請參閱「使用 Vertex AI API 部署模型」。

要求/回應記錄

您只能在透過 projects.locations.endpoints.create 建立端點時,或透過 projects.locations.endpoints.patch 修補現有端點時,啟用要求/回應記錄。

要求/回應記錄是在端點層級進行,因此系統會記錄傳送至同一端點下任何已部署模型的要求。

建立或修補端點時,請在 Endpoint 資源predictRequestResponseLoggingConfig 欄位中填入下列項目:

  • enabled:設為 True 即可啟用要求/回應記錄。

  • samplingPercentage:介於 0 到 1 之間的數字,用於定義要記錄之要求的比例。例如,將值設為 1 可記錄所有要求,設為 0.1 則可記錄 10% 的要求。

  • BigQueryDestination:用於記錄的 BigQuery 資料表。如果您只指定專案名稱,系統會建立名為 logging_ENDPOINT_DISPLAY_NAME_ENDPOINT_ID 的新資料集,其中 ENDPOINT_DISPLAY_NAME 須符合 BigQuery 命名規則。如果未指定資料表名稱,系統會建立名為 request_response_logging 的新資料表。

    BigQuery 資料表的結構定義應如下所示:

    欄位名稱類型模式
    endpointSTRINGNULLABLE
    deployed_model_idSTRINGNULLABLE
    logging_timeTIMESTAMPNULLABLE
    request_idNUMERICNULLABLE
    request_payloadSTRINGREPEATED
    response_payloadSTRINGREPEATED

以下為設定範例:

{
   "predict_request_response_logging_config": {
     "enabled": true,
     "sampling_rate": 0.5,
     "bigquery_destination": {
       "output_uri": "bq://PROJECT_ID.DATASET_NAME.TABLE_NAME"
     }
   }
}

專屬端點和 Private Service Connect 端點的推論要求/回應記錄

如果是專屬端點Private Service Connect 端點,您可以使用要求/回應記錄功能,記錄 TensorFlow、PyTorch、sklearn 和 XGBoost 模型的要求和回應酬載 (酬載大小上限為 10 MB,超過上限的酬載會自動略過)。

要求/回應記錄僅適用於 predictrawPredict 方法。

如要啟用要求/回應記錄,請在端點資源predictRequestResponseLoggingConfig 欄位中填入以下項目:

  • enabled:設為 True 即可啟用要求/回應記錄。

  • samplingRate:要記錄的要求和回應比例。設為大於 0 且小於或等於 1 的數字。例如,將值設為 1 可記錄所有要求,設為 0.1 則可記錄 10% 的要求。

  • BigQueryDestination:輸出內容的 BigQuery 位置,以專案或資料表的 URI 表示。

以下是建立專屬端點的設定範例,並啟用要求/回應記錄:

curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer `gcloud auth print-access-token`" https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/endpoints \
-d '{displayName: "ENDPOINT_NAME", \
     dedicatedEndpointEnabled: true, \
     predictRequestResponseLoggingConfig: { \
       enabled: true, \
       samplingRate: 1.0, \
       bigqueryDestination: { \
          outputUri:"bq://PROJECT_ID" \
       } \
     } \
   }'

更改下列內容:

  • LOCATION_ID:您使用 Vertex AI 的區域。
  • PROJECT_NUMBER:您的 Google Cloud專案編號。
  • ENDPOINT_NAME:端點的顯示名稱。
  • PROJECT_ID:您的 Google Cloud 專案 ID。

以下是建立 Private Service Connect 端點的設定範例,並啟用要求/回應記錄功能:

curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer `gcloud auth print-access-token`" https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/endpoints \
-d '{displayName: "ENDPOINT_NAME", \
     privateServiceConnectConfig: { \
       enablePrivateServiceConnect: true, \
       projectAllowlist: ["ALLOWED_PROJECTS"] \
     }, \
     predictRequestResponseLoggingConfig: { \
       enabled: true, \
       samplingRate: 1.0, \
       bigqueryDestination: { \
          outputUri:"bq://PROJECT_ID" \
       } \
     } \
   }'

更改下列內容:

  • ALLOWED_PROJECTS:以半形逗號分隔的專案 ID 清單,每個 ID 都以引號括住。 Google Cloud例如:["PROJECTID1", "PROJECTID2"]。如果專案未列於此清單,您就無法從該專案將推論要求傳送至 Vertex AI 端點。請務必將 VERTEX_AI_PROJECT_ID 加入這個清單,這樣您就能從端點所在的專案呼叫端點。

要求/回應記錄和 Model Monitoring v1

要求/回應記錄和模型監控 v1 在後端使用相同的 BigQuery 資料表,記錄傳入的要求。為避免這個 BigQuery 資料表發生非預期的變更,同時使用這兩項功能時,系統會強制執行下列限制:

  • 如果端點已啟用模型監控功能,您就無法為該端點啟用要求/回應記錄。

  • 如果您在同一個端點上啟用要求/回應記錄,然後啟用模型監控功能,就無法變更要求/回應記錄設定。

後續步驟