Utilizzare il logging dell'inferenza online

Per i modelli tabulari AutoML, i modelli di immagini AutoML e i modelli con addestramento personalizzato, puoi attivare o disattivare i log di inferenza durante il deployment del modello o la creazione dell'endpoint. Questa pagina spiega i diversi tipi di log di inferenza disponibili e come attivarli o disattivarli.

Tipi di log di inferenza

Esistono diversi tipi di log di inferenza che puoi utilizzare per ottenere informazioni dai nodi di inferenza:

  • Logging dei container, che registra i flussi stdout e stderr dai nodi di inferenza in Cloud Logging. Questi log sono necessari per il debug.

    • Nell'endpoint di servizio v1, il logging dei container è attivato per impostazione predefinita. Puoi disattivarla quando esegui il deployment di un modello. Puoi anche disattivare o attivare la registrazione quando modifiche il modello di cui è stato eseguito il deployment.

    • Nell'endpoint di servizio v1beta1, il logging dei container è disattivato per impostazione predefinita. Puoi abilitarlo quando esegui il deployment di un modello. Puoi anche disattivare o attivare la registrazione quando modifiche il modello di cui è stato eseguito il deployment.

  • Logging degli accessi, che registra informazioni come timestamp e latenza per ogni richiesta a Cloud Logging.

    Sia sugli endpoint di servizio v1 che v1beta1, la registrazione degli accessi è disattivata per impostazione predefinita. Puoi abilitare la registrazione degli accessi quando esegui il deployment di un modello in un endpoint.

  • Registrazione di richieste e risposte, che registra un campione di richieste e risposte di inferenza online in una tabella BigQuery.

    Puoi attivare la registrazione delle richieste e delle risposte creando o applicando una patch all'endpoint di inferenza.

Puoi attivare o disattivare ogni tipo di log in modo indipendente.

Impostazioni dei log di inferenza

Puoi attivare o disattivare i log di inferenza online quando crei un endpoint, esegui il deployment di un modello nell'endpoint o modifichi un modello di cui è stato eseguito il deployment.

Per aggiornare le impostazioni dei log di accesso, devi ritirare il deployment del modello e poi eseguirne di nuovo il deployment con le nuove impostazioni. Puoi aggiornare le impostazioni per i log dei container senza eseguire nuovamente il deployment del modello.

L'inferenza online a una velocità elevata di query al secondo (QPS) può produrre un numero elevato di log, soggetti ai prezzi di Cloud Logging. Per stimare i prezzi dei log di inferenza online, consulta la sezione Stima delle fatture per la registrazione. Per ridurre questo costo, puoi disattivare la registrazione delle inferenze.

Attivare e disattivare i log di inferenza

I seguenti esempi mostrano dove modificare le impostazioni di log predefinite:

Console

Quando esegui il deployment di un modello in un endpoint o crei un nuovo endpoint nella consoleGoogle Cloud , puoi specificare i tipi di log di inferenza da attivare nel passaggio Logging. Seleziona le caselle di controllo per attivare Access Logging o Container Logging oppure deseleziona le caselle di controllo per disattivare questi log.

Utilizza l'API REST per aggiornare le impostazioni per i log dei container.

Utilizza l'API REST per abilitare la registrazione delle richieste e delle risposte. La consoleGoogle Cloud e gcloud CLI non supportano la configurazione della registrazione di richiesta-risposta.

Per saperne di più su come eseguire il deployment dei modelli, leggi Eseguire il deployment di un modello utilizzando la console Google Cloud .

gcloud

Per modificare il comportamento predefinito per i log abilitati nei modelli di cui è stato eseguito il deployment, aggiungi flag al comando gcloud:

Endpoint di servizio v1

Corsa 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

Endpoint di servizio v1beta1

Corsa 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

Utilizza l'API REST per aggiornare le impostazioni per i log dei container.

Utilizza l'API REST per abilitare la registrazione delle richieste e delle risposte. La consoleGoogle Cloud e gcloud CLI non supportano la configurazione della registrazione di richiesta-risposta.

Per saperne di più su come eseguire il deployment dei modelli, leggi Eseguire il deployment di un modello utilizzando l'API Vertex AI.

REST

Per modificare il comportamento predefinito per cui i log sono attivati nei modelli di cui è stato eseguito il deployment, imposta i campi pertinenti su True:

Endpoint di servizio v1

Per disattivare il logging dei container, imposta il campo disableContainerLogging su True quando chiami projects.locations.endpoints.deployModel o projects.locations.endpoints.mutateDeployedModel.

Per abilitare il logging degli accessi, imposta enableAccessLogging su True quando esegui il deployment del modello con projects.locations.endpoints.deployModel.

Endpoint di servizio v1beta1

Per attivare il logging dei container, imposta il campo enableContainerLogging su True quando chiami projects.locations.endpoints.deployModel o projects.locations.endpoints.mutateDeployedModel.

Per abilitare il logging degli accessi, imposta enableAccessLogging su True quando esegui il deployment del modello con projects.locations.endpoints.deployModel.

Per saperne di più su come eseguire il deployment dei modelli, leggi Eseguire il deployment di un modello utilizzando l'API Vertex AI.

Registrazione di richieste e risposte

Puoi attivare la registrazione delle richieste e delle risposte solo quando crei un endpoint utilizzando projects.locations.endpoints.create o quando modifichi un endpoint esistente utilizzando projects.locations.endpoints.patch.

Il logging di richiesta-risposta viene eseguito a livello di endpoint, quindi le richieste inviate a tutti i modelli di cui è stato eseguito il deployment nello stesso endpoint vengono registrate.

Quando crei o applichi una patch a un endpoint, compila il campo predictRequestResponseLoggingConfig della risorsa Endpoint con le seguenti voci:

  • enabled: impostato su True per abilitare la registrazione di richieste e risposte.

  • samplingPercentage: un numero compreso tra 0 e 1 che definisce la frazione di richieste da registrare. Ad esempio, imposta questo valore su 1 per registrare tutte le richieste o su 0.1 per registrare il 10% delle richieste.

  • BigQueryDestination: la tabella BigQuery da utilizzare per la registrazione. Se specifichi solo un nome di progetto, viene creato un nuovo set di dati con il nome logging_ENDPOINT_DISPLAY_NAME_ENDPOINT_ID, dove ENDPOINT_DISPLAY_NAME segue le regole di denominazione di BigQuery. Se non specifichi un nome tabella, viene creata una nuova tabella con il nome request_response_logging.

    Lo schema della tabella BigQuery dovrebbe essere simile al seguente:

    Nome campoTipoModalità
    endpointSTRINGNULLABLE
    deployed_model_idSTRINGNULLABLE
    logging_timeTIMESTAMPNULLABLE
    request_idNUMERICNULLABLE
    request_payloadSTRINGREPEATED
    response_payloadSTRINGREPEATED

Di seguito è riportata una configurazione di esempio:

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

Registrazione di richieste e risposte di inferenza per endpoint dedicati ed endpoint Private Service Connect

Per gli endpoint dedicati e gli endpoint Private Service Connect, puoi utilizzare la registrazione delle richieste e delle risposte per registrare i payload delle richieste e delle risposte inferiori a 10 MB (i payload più grandi vengono ignorati automaticamente) per i modelli TensorFlow, PyTorch, sklearn e XGBoost.

La registrazione di richieste e risposte è disponibile solo per i metodi predict e rawPredict.

Per attivare la registrazione di richieste e risposte, compila il campo predictRequestResponseLoggingConfig della risorsa Endpoint con le seguenti voci:

  • enabled: impostato su True per abilitare la registrazione di richieste e risposte.

  • samplingRate: la frazione di richieste e risposte da registrare. Imposta un numero maggiore di 0 e minore o uguale a 1. Ad esempio, imposta questo valore su 1 per registrare tutte le richieste o su 0.1 per registrare il 10% delle richieste.

  • BigQueryDestination: la posizione BigQuery per i contenuti di output, come URI di un progetto o di una tabella.

Di seguito è riportata una configurazione di esempio per la creazione di un endpoint dedicato con il logging richiesta-risposta abilitato:

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" \
       } \
     } \
   }'

Sostituisci quanto segue:

  • LOCATION_ID: la regione in cui utilizzi Vertex AI.
  • PROJECT_NUMBER: Il numero di progetto del tuo progetto Google Cloud.
  • ENDPOINT_NAME: Il nome visualizzato per l'endpoint.
  • PROJECT_ID: l'ID progetto del tuo Google Cloud progetto.

Di seguito è riportata una configurazione di esempio per la creazione di un endpoint Private Service Connect con la registrazione di richiesta-risposta abilitata:

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" \
       } \
     } \
   }'

Sostituisci quanto segue:

  • ALLOWED_PROJECTS: un elenco separato da virgole di ID progetto Google Cloud, ognuno racchiuso tra virgolette. Ad esempio ["PROJECTID1", "PROJECTID2"]. Se un progetto non è incluso in questo elenco, non potrai inviare richieste di inferenza all'endpoint Vertex AI. Assicurati di includere VERTEX_AI_PROJECT_ID in questo elenco in modo da poter chiamare l'endpoint dallo stesso progetto in cui si trova.

Registrazione di richieste e risposte e Model Monitoring v1

La registrazione di richieste e risposte e Model Monitoring v1 utilizzano la stessa tabella BigQuery nel backend per registrare le richieste in entrata. Per evitare modifiche impreviste a questa tabella BigQuery, vengono applicate le seguenti limitazioni quando utilizzi entrambe le funzionalità contemporaneamente:

  • Se per un endpoint è abilitato il monitoraggio dei modelli, non puoi abilitare la registrazione di richieste e risposte per lo stesso endpoint.

  • Se abiliti la registrazione di richieste e risposte e poi il monitoraggio dei modelli sullo stesso endpoint, non potrai modificare la configurazione della registrazione di richieste e risposte.

Passaggi successivi