Utilizzo di endpoint privati per la previsione online

L'utilizzo di endpoint privati per fornire previsioni online con Vertex AI offre una connessione sicura e a bassa latenza al servizio di previsione online di Vertex AI. Questa guida mostra come configurare endpoint privati su Vertex AI utilizzando il peering di rete VPC per eseguire il peering della tua rete con il servizio di previsione online di Vertex AI.

Panoramica

Prima di pubblicare previsioni online con endpoint privati, devi configurare l'accesso privato ai servizi per creare connessioni in peering tra la tua rete e Vertex AI. Se l'hai già fatto, puoi usare le connessioni in peering esistenti.

Questa guida tratta le seguenti attività:

  • Verifica dello stato delle connessioni in peering esistenti.
  • È abilitata la verifica delle API necessarie.
  • Creazione di un endpoint privato in corso...
  • Deployment di un modello in un endpoint privato.
    • Supporta un solo modello per endpoint privato. È diverso da un endpoint Vertex AI pubblico in cui puoi suddividere il traffico su più modelli di cui è stato eseguito il deployment in un endpoint.
    • L'endpoint privato supporta i modelli tabulari e con addestramento personalizzato AutoML.
  • Invio di una previsione a un endpoint privato.
  • Pulizia delle risorse

Controllare lo stato delle connessioni in peering esistenti

Se hai già delle connessioni in peering che utilizzi con Vertex AI, puoi elencarle per controllare lo stato:

gcloud compute networks peerings list --network NETWORK_NAME

Dovresti vedere che lo stato delle connessioni in peering è ACTIVE. Scopri di più sulle connessioni in peering attive.

Abilita le API necessarie

gcloud services enable aiplatform.googleapis.com
gcloud services enable dns.googleapis.com

Crea un endpoint privato

Per creare un endpoint privato, aggiungi il flag --network quando crei un endpoint utilizzando Google Cloud CLI:

gcloud beta ai endpoints create \
  --display-name=ENDPOINT_DISPLAY_NAME \
  --network=FULLY_QUALIFIED_NETWORK_NAME \
  --region=REGION

Sostituisci NETWORK_NAME con il nome completo della rete:

projects/PROJECT_NUMBER/global/networks/NETWORK_NAME

Se crei l'endpoint senza specificare una rete, crei un endpoint pubblico.

Limitazioni degli endpoint privati

Tieni presente le seguenti limitazioni per gli endpoint privati:

  • Gli endpoint privati non supportano la suddivisione del traffico. Come soluzione alternativa, puoi creare manualmente una suddivisione del traffico eseguendo il deployment del modello in più endpoint privati e suddividendo il traffico tra gli URL di previsione risultanti per ciascun endpoint privato.
  • Gli endpoint privati non supportano SSL/TLS.
  • Per abilitare il logging degli accessi su un endpoint privato, contatta vertex-ai-feedback@google.com.
  • Puoi utilizzare una sola rete per tutti gli endpoint privati in un progetto Google Cloud. Se vuoi passare a un'altra rete, contatta vertex-ai-feedback@google.com.
  • Ti consigliamo vivamente di riprovare lato client in caso di errori recuperabili. Potrebbero includere i seguenti errori:
    • Risposta vuota (codice di errore HTTP 0), probabilmente a causa di un'interruzione temporanea della connessione.
    • Codici di errore HTTP 5xx che indicano che il servizio potrebbe non essere temporaneamente disponibile.
  • Per il codice di errore HTTP 429 che indica che il sistema è attualmente sovraccarico, valuta la possibilità di rallentare il traffico per mitigare il problema anziché riprovare.
  • Le richieste di previsione da PredictionServiceClient nella libreria client Python di Vertex AI non sono supportate.

Monitora gli endpoint privati

Puoi utilizzare la dashboard delle metriche per esaminare la disponibilità e la latenza del traffico inviato a un endpoint privato.

Per personalizzare il monitoraggio, esegui una query sulle seguenti metriche in Cloud Monitoring:

  • aiplatform.googleapis.com/prediction/online/private/response_count

    Il numero di risposte della previsione. Puoi filtrare questa metrica per deployed_model_id o codice di risposta HTTP.

  • aiplatform.googleapis.com/prediction/online/private/prediction_latencies

    Latenza della richiesta di previsione in millisecondi. Puoi filtrare questa metrica per deployed_model_id, solo per le richieste andate a buon fine.

Scopri come selezionare, eseguire query e visualizzare queste metriche in Esplora metriche.

Deployment di un modello

Puoi importare un nuovo modello o eseguire il deployment di un modello esistente che hai già caricato. Per caricare un nuovo modello, utilizza gcloud ai models upload. Per ulteriori informazioni, consulta Importare modelli in Vertex AI.

  1. Per eseguire il deployment di un modello in un endpoint privato, consulta la guida per il deployment dei modelli. Oltre alla suddivisione del traffico e all'abilitazione manuale del logging degli accessi, puoi utilizzare qualsiasi altra opzione disponibile per il deployment di modelli con addestramento personalizzato. Fai riferimento alle limitazioni degli endpoint privati per saperne di più sulle differenze rispetto agli endpoint pubblici.

  2. Dopo aver eseguito il deployment dell'endpoint, puoi ottenere l'URI di previsione dai metadati del tuo endpoint privato.

    1. Se hai il nome visualizzato del tuo endpoint privato, esegui questo comando per ottenere l'ID endpoint:

      ENDPOINT_ID=$(gcloud ai endpoints list \
                --region=REGION \
                --filter=displayName:ENDPOINT_DISPLAY_NAME \
                --format="value(ENDPOINT_ID.scope())")
      

      Altrimenti, per vedere l'ID e il nome visualizzato di tutti gli endpoint, esegui questo comando:

      gcloud ai endpoints list --region=REGION
      
    2. Infine, per ottenere l'URI della previsione, esegui questo comando:

      gcloud beta ai endpoints describe ENDPOINT_ID \
        --region=REGION \
        --format="value(deployedModels.privateEndpoints.predictHttpUri)"
      

Formato URI di previsione privato

L'URI di previsione ha un aspetto diverso per gli endpoint privati rispetto agli endpoint pubblici di Vertex AI:

http://ENDPOINT_ID.aiplatform.googleapis.com/v1/models/DEPLOYED_MODEL_ID:predict

Se scegli di annullare il deployment del modello attuale e di ripeterlo con un nuovo modello, il nome di dominio viene riutilizzato, ma il percorso include un ID modello di cui è stato eseguito il deployment diverso.

Invia una previsione a un endpoint privato

  1. Crea un'istanza Compute Engine nella tua rete VPC. Assicurati di creare l'istanza nella stessa rete VPC di cui hai eseguito il peering con Vertex AI.

  2. Accedi tramite SSH alla tua istanza Compute Engine e installa il tuo client di previsione, se applicabile. Altrimenti, puoi usare curl.

  3. Per fare una previsione, usa l'URL di previsione ottenuto dal deployment del modello. In questo esempio, stai inviando la richiesta dal tuo client di previsione nella tua istanza Compute Engine nella stessa rete VPC:

    curl -X POST -d@PATH_TO_JSON_FILE  http://ENDPOINT_ID.aiplatform.googleapis.com/v1/models/DEPLOYED_MODEL_ID:predict
    

    In questa richiesta di esempio, PATH_TO_JSON_FILE è il percorso della richiesta di previsione, salvata come file JSON. Ad esempio, example-request.json.

Esegui la pulizia delle risorse

Puoi annullare il deployment dei modelli ed eliminare gli endpoint privati come faresti con i modelli e gli endpoint pubblici. Puoi creare endpoint privati su una sola rete per progetto Google Cloud, anche se in seguito elimini autonomamente queste risorse. Se devi passare a un'altra rete, contatta vertex-ai-feedback@google.com.

Esempio: testare gli endpoint privati nel VPC condiviso

Questo esempio utilizza due progetti Google Cloud con una rete VPC condiviso:

  • Il progetto host ospita la rete VPC condiviso.
  • Il progetto client ospita un'istanza Compute Engine in cui esegui un client di previsione, come curl, o il tuo client REST nell'istanza di Compute Engine, per inviare richieste di previsione.

Quando crei l'istanza Compute Engine nel progetto client, deve trovarsi all'interno della subnet personalizzata nella rete VPC condiviso del progetto host e nella stessa regione in cui viene eseguito il deployment del modello.

  1. Creare le connessioni in peering per l'accesso privato ai servizi nel progetto host. Esegui gcloud services vpc-peerings connect:

    gcloud services vpc-peerings connect \
      --service=servicenetworking.googleapis.com \
      --network=HOST_SHARED_VPC_NAME \
      --ranges=PREDICTION_RESERVED_RANGE_NAME \
      --project=HOST_PROJECT_ID
    
  2. Crea l'endpoint nel progetto client utilizzando il nome di rete del progetto host. Esegui gcloud beta ai endpoints create:

    gcloud beta ai endpoints create \
      --display-name=ENDPOINT_DISPLAY_NAME \
      --network=HOST_SHARED_VPC_NAME \
      --region=REGION \
      --project=CLIENT_PROJECT_ID
    
  3. Invia richieste di previsione utilizzando il client di previsione all'interno del progetto client.

Esempio: endpoint privati con subnet non RFC 1918

In questo esempio vengono utilizzati indirizzi non RFC 1918 per creare endpoint privati.

  1. Prenota intervalli IP per nodi, pod e servizi. Gli intervalli IP per i nodi devono essere compresi nell'intervallo RFC 1918.

  2. Crea la connessione in peering per l'accesso privato ai servizi utilizzando gli intervalli riservati.

    gcloud services vpc-peerings connect \
      --service=servicenetworking.googleapis.com \
      --network=VPC_NAME \
      --ranges=NODES_RANGE_NAME,PODS_RANGE_NAME,SERVICES_RANGE_NAME \
      --project=PROJECT_ID
    
  3. Crea l'endpoint, specificando gli intervalli riservati per nodi, pod e servizi. RequestedIpRangeConfig può essere specificato solo dall'API REST.

    # Sample json request for endpoint creation.
    {
      displayName: "my_endpoint",
      network: "projects/<project_num>/global/networks/<network>",
      requestedIpRangeConfig: {
        nodesIpRange: {
          ipAddress: "xxx.xx.x.x",
          ipPrefixLength: 22
        },
        podsIpRange: {
          ipAddress: "yyy.yy.y.y",
          ipPrefixLength: 17
        },
        servicesIpRange: {
          ipAddress: "zzz.zz.z.z",
          ipPrefixLength: 22
        }
      }
    }
    
  4. Invia richieste di previsione utilizzando il client di previsione all'interno del progetto client.