Utilizzo del 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.

    Su entrambi gli endpoint di servizio v1 e v1beta1, il logging degli accessi è disattivato 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 di richieste e risposte creando o applicando 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 annullare il deployment del modello, e poi rieseguire il deployment del modello con le nuove impostazioni. Puoi aggiornare le impostazioni per i log dei container senza rieseguire il deployment del modello.

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

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 abilitare nel passaggio Logging. Seleziona le caselle di controllo per abilitare Logging degli accessi o Logging dei container 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 attivare la registrazione delle richieste e delle risposte. La consoleGoogle Cloud e gcloud CLI non supportano la configurazione della registrazione delle richieste e delle risposte.

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

Esegui 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

Esegui 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 attivare la registrazione delle richieste e delle risposte. La consoleGoogle Cloud e gcloud CLI non supportano la configurazione della registrazione delle richieste e delle risposte.

Per ulteriori informazioni su come eseguire il deployment dei modelli, consulta Eseguire il deployment di un modello utilizzando l'API Agent Platform.

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 ulteriori informazioni su come eseguire il deployment dei modelli, consulta Eseguire il deployment di un modello utilizzando l'API Agent Platform.

Logging 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 della 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 di richieste e risposte per registrare i payload di richieste e 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 Agent Platform.
  • 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 Google Cloud ID progetto, ognuno racchiuso tra virgolette. Ad esempio ["PROJECTID1", "PROJECTID2"]. Se un progetto non è incluso in questo elenco, non potrai inviare richieste di inferenza all'endpoint della Agent Platform. Assicurati di includere VERTEX_AI_PROJECT_ID in questo elenco in modo da poter chiamare l'endpoint dallo stesso progetto in cui si trova.

Logging di richiesta/risposta 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