Usa Private Service Connect per la previsione online

Private Service Connect consente di accedere a Vertex AI online fare previsioni in modo sicuro da più progetti consumer e reti VPC senza bisogno di indirizzi IP pubblici, accesso a internet pubblico o una di indirizzi IP interni sottoposti esplicitamente a peering.

Consigliamo Private Service Connect per l'uso delle previsioni online che presentano i seguenti requisiti:

  • Richiedi connessioni private e sicure
  • Richiedi bassa latenza
  • Non devono essere accessibili pubblicamente

Private Service Connect utilizza una regola di forwarding in per inviare il traffico in modo unidirezionale Servizio di previsione online di Vertex AI. La regola di forwarding si connette a un collegamento del servizio che espone il servizio Vertex AI alla tua rete VPC. Per ulteriori informazioni, vedi Informazioni sull'accesso ai servizi Vertex AI tramite Private Service Connect. Per saperne di più sulla configurazione di Private Service Connect, consulta Panoramica di Private Service Connect nella documentazione di Virtual Private Cloud (VPC).

Crea l'endpoint di previsione online

Utilizza uno dei seguenti metodi per creare un endpoint di previsione online con Private Service Connect abilitato:

Console

  1. Nella console Google Cloud, in Vertex AI, vai al Pagina Previsione online.

    Vai a Previsione online

  2. Fai clic su Crea.

  3. Specifica un nome visualizzato per l'endpoint.

  4. Seleziona Privato.

  5. Seleziona Private Service Connect.

  6. Fai clic su Seleziona ID progetto.

  7. Seleziona i progetti da aggiungere alla lista consentita per l'endpoint.

  8. Fai clic su Continua.

  9. Scegli le specifiche del tuo modello. Per ulteriori informazioni, vedi Eseguire il deployment di un modello in un endpoint.

  10. Fai clic su Crea per creare l'endpoint ed eseguire il deployment del modello al suo interno.

  11. Prendi nota dell'ID endpoint nella risposta.

API

REST

Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:

  • VERTEX_AI_PROJECT_ID: l'ID del progetto Google Cloud in cui stai creando il cluster endpoint di previsione online.
  • REGION: la regione in cui stai utilizzando Vertex AI.
  • VERTEX_AI_ENDPOINT_NAME: il nome visualizzato per la previsione online endpoint.
  • ALLOWED_PROJECTS: un elenco separato da virgole di ID progetto Google Cloud, ciascuna racchiusa tra virgolette, ad esempio ["PROJECTID1", "PROJECTID2"]. Se un progetto non è contenuto in questo elenco, non potrai inviare richieste di previsione all'endpoint Vertex AI. Assicurati di includere VERTEX_AI_PROJECT_ID presenti in questo elenco, così puoi chiamare l'endpoint dallo stesso progetto in cui si trova.

Metodo HTTP e URL:

POST https://REGION-aiplatform.googleapis.com/v1/projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints

Corpo JSON della richiesta:

{
  "displayName": "VERTEX_AI_ENDPOINT_NAME",
  "privateServiceConnectConfig": {
    "enablePrivateServiceConnect": true,
    "projectAllowlist": ["ALLOWED_PROJECTS"]
  }
}

Per inviare la richiesta, espandi una delle seguenti opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "name": "projects/VERTEX_AI_PROJECT_NUMBER/locations/REGION/endpoints/ENDPOINT_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1.CreateEndpointOperationMetadata",
    "genericMetadata": {
      "createTime": "2020-11-05T17:45:42.812656Z",
      "updateTime": "2020-11-05T17:45:42.812656Z"
    }
  }
}
Prendi nota di ENDPOINT_ID.

Python

Prima di provare questo esempio, segui le istruzioni per la configurazione di Python nel Guida rapida di Vertex AI con librerie client. Per ulteriori informazioni, consulta API Python Vertex AI documentazione di riferimento.

Per eseguire l'autenticazione su Vertex AI, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.

PROJECT_ID = "VERTEX_AI_PROJECT_ID"
REGION = "REGION"
VERTEX_AI_ENDPOINT_NAME = "VERTEX_AI_ENDPOINT_NAME"

from google.cloud import aiplatform

aiplatform.init(project=PROJECT_ID, location=REGION)

# Create the forwarding rule in the consumer project
psc_endpoint = aiplatform.PrivateEndpoint.create(
display_name=VERTEX_AI_ENDPOINT_NAME,
project=PROJECT_ID,
location=REGION,
private_service_connect_config=aiplatform.PrivateEndpoint.PrivateServiceConnectConfig(
    project_allowlist=["ALLOWED_PROJECTS"],
    ),
)

Sostituisci quanto segue:

  • VERTEX_AI_PROJECT_ID: l'ID del progetto Google Cloud in cui crei l'endpoint di previsione online
  • REGION: la regione in cui stai utilizzando Vertex AI
  • VERTEX_AI_ENDPOINT_NAME: il nome visualizzato per endpoint di previsione online
  • ALLOWED_PROJECTS: un elenco di Google Cloud separato da virgole ID progetto, ciascuno racchiuso tra virgolette. Ad esempio: ["PROJECTID1", "PROJECTID2"]. Se un progetto non è contenuto in questo elenco, non potrai inviare richieste di previsione l'endpoint Vertex AI. Assicurati di includere VERTEX_AI_PROJECT_ID in questo elenco in modo che tu possa chiamare il dell'endpoint dello stesso progetto in cui si trova.

Prendi nota di ENDPOINT_ID alla fine del modulo restituito URI endpoint:

INFO:google.cloud.aiplatform.models:To use this PrivateEndpoint in another session:
INFO:google.cloud.aiplatform.models:endpoint = aiplatform.PrivateEndpoint('projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID')

Esegui il deployment del modello

Dopo aver creato l'endpoint di previsione online con Private Service Connect abilitato, esegui il deployment del tuo modello seguendo i passaggi descritti in Eseguire il deployment di un modello in un endpoint.

Recupera l'URI del collegamento al servizio

Quando esegui il deployment del modello, viene creato un collegamento a un servizio per endpoint di previsione. Questo collegamento al servizio rappresenta Il servizio di previsione online di Vertex AI esposto ai tuoi rete VPC. Esegui l' Comando gcloud ai endpoints describe per ottenere l'URI del collegamento al servizio.

  1. Elenca solo il valore serviceAttachment nei dettagli dell'endpoint:

    gcloud ai endpoints describe ENDPOINT_ID \
    --project=VERTEX_AI_PROJECT_ID \
    --region=REGION \
    | grep -i serviceAttachment
    

    Sostituisci quanto segue:

    • ENDPOINT_ID: l'ID dell'endpoint di previsione online
    • VERTEX_AI_PROJECT_ID: l'ID del progetto Google Cloud in cui hai creato il tuo endpoint di previsione online
    • REGION: la regione per questa richiesta

    L'output è simile al seguente:

    serviceAttachment: projects/ac74a9f84c2e5f2a1-tp/regions/us-central1/serviceAttachments/gkedpm-c6e6a854a634dc99472bb802f503c1
    
  2. Prendi nota dell'intera stringa nel campo serviceAttachment. Questo è l'URI del collegamento al servizio.

Creare una regola di forwarding

Puoi prenotare un indirizzo IP interno crea una regola di forwarding con quell'indirizzo. Per creare la regola di forwarding, è necessario l'URI del collegamento al servizio del passaggio precedente.

  1. Per prenotare un indirizzo IP interno per la regola di forwarding, utilizza il metodo Comando gcloud compute addresses create:

    gcloud compute addresses create ADDRESS_NAME \
    --project=VPC_PROJECT_ID \
    --region=REGION \
    --subnet=SUBNETWORK \
    --addresses=INTERNAL_IP_ADDRESS
    

    Sostituisci quanto segue:

    • ADDRESS_NAME: un nome per l'indirizzo IP interno
    • VPC_PROJECT_ID: l'ID del progetto Google Cloud che ospita della tua rete VPC. Se il tuo endpoint di previsione online la regola di forwarding di Private Service Connect è ospitata nello stesso progetto, usa VERTEX_AI_PROJECT_ID per questo parametro.
    • REGION: la regione Google Cloud in cui È necessario creare la regola di forwarding di Private Service Connect
    • SUBNETWORK: il nome della subnet VPC che contiene l'indirizzo IP
    • INTERNAL_IP_ADDRESS: l'indirizzo IP interno di di riserva. Questo parametro è facoltativo.

      • Se questo parametro viene specificato, l'indirizzo IP deve essere compreso tra i valori dall'intervallo di indirizzi IP principali della subnet. L'indirizzo IP può essere un Indirizzo RFC 1918 o una subnet con intervalli non RFC.
      • Se questo parametro viene omesso, verrà visualizzato un indirizzo IP interno vengono allocate automaticamente.
      • Per ulteriori informazioni, vedi Prenota un nuovo indirizzo IPv4 o IPv6 interno statico.
  2. Per verificare che l'indirizzo IP sia riservato, utilizza la Comando gcloud compute addresses list:

    gcloud compute addresses list --filter="name=(ADDRESS_NAME)" \
    --project=VPC_PROJECT_ID
    

    Nella risposta, verifica che sia visualizzato lo stato RESERVED per l'indirizzo IP.

  3. Per creare la regola di forwarding e puntarla al collegamento del servizio di previsione online, Comando gcloud compute forwarding-rules create:

    gcloud compute forwarding-rules create PSC_FORWARDING_RULE_NAME \
        --address=ADDRESS_NAME \
        --project=VPC_PROJECT_ID \
        --region=REGION \
        --network=VPC_NETWORK_NAME \
        --target-service-attachment=SERVICE_ATTACHMENT_URI
    

    Sostituisci quanto segue:

    • PSC_FORWARDING_RULE_NAME: un nome per la regola di forwarding
    • VPC_NETWORK_NAME: il nome della rete VPC in cui è necessario creare l'endpoint
    • SERVICE_ATTACHMENT_URI: il collegamento al servizio in cui hai creato un nota precedente
  4. Per verificare che il collegamento al servizio accetti l'endpoint, utilizza Comando gcloud compute forwarding-rules describe:

    gcloud compute forwarding-rules describe PSC_FORWARDING_RULE_NAME \
    --project=VPC_PROJECT_ID \
    --region=REGION
    

    Nella risposta, verifica che sia visualizzato uno stato ACCEPTED nella pscConnectionStatus.

(Facoltativo) Ottieni l'indirizzo IP interno

Se non hai specificato un valore per INTERNAL_IP_ADDRESS al momento hai creato la regola di forwarding, puoi ottenere l'indirizzo allocati automaticamente Comando gcloud compute forwarding-rules describe:

gcloud compute forwarding-rules describe PSC_FORWARDING_RULE_NAME \
--project=VERTEX_AI_PROJECT_ID \
--region=REGION \
| grep -i IPAddress

Sostituisci quanto segue:

  • VERTEX_AI_PROJECT_ID: il tuo ID progetto
  • REGION: il nome della regione per questa richiesta

Ricevi previsioni online

Ottenere previsioni online da un endpoint con Private Service Connect è simile a ottenere previsioni online da endpoint pubblici, fatta eccezione per le seguenti considerazioni:

  • La richiesta deve essere inviata da un progetto specificato nel projectAllowlist quando è stato creato l'endpoint di previsione online.
  • Se accesso globale non è abilitato, la richiesta deve essere inviata dalla stessa regione.
  • Per ottenere previsioni utilizzando REST, devi connetterti utilizzando il server statico dell'endpoint Indirizzo IP, a meno che non crei un record DNS per l'indirizzo IP interno. Per ad esempio, devi inviare predict richiede a il seguente endpoint:

    https://INTERNAL_IP_ADDRESS/v1/projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID:predict
    

    Sostituisci INTERNAL_IP_ADDRESS con l'indirizzo IP interno che hai prenotato in precedenza.

  • Di seguito è riportato un esempio di come inviare la richiesta previsione utilizzando Python:

    REQUEST_FILE = "PATH_TO_INPUT_FILE"
    import json
    
    import urllib3
    
    urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
    
    with open(REQUEST_FILE) as json_file:
        data = json.load(json_file)
        response = psc_endpoint.predict(
            instances=data["instances"], endpoint_override=INTERNAL_IP_ADDRESS
        )
    print(response)
    

    Sostituisci PATH_TO_INPUT_FILE con un percorso a un file JSON contenente l'input della richiesta.

(Facoltativo) Crea un record DNS per l'indirizzo IP interno

Ti consigliamo di creare un record DNS per ricevere previsioni online. dall'endpoint senza dover specificare l'indirizzo IP interno.

Per ulteriori informazioni, vedi Altri modi per configurare il DNS.

  1. Crea una zona DNS privata utilizzando Comando gcloud dns managed-zones create. Questa zona è associata alla rete VPC che in cui è stata creata la regola di forwarding.

    DNS_NAME_SUFFIX="prediction.p.vertexai.goog."  # DNS names have "." at the end.
    gcloud dns managed-zones create ZONE_NAME \
    --project=VPC_PROJECT_ID \
    --dns-name=$DNS_NAME_SUFFIX \
    --networks=VPC_NETWORK_NAME \
    --visibility=private \
    --description="A DNS zone for Vertex AI endpoints using Private Service Connect."
    
    

    Sostituisci quanto segue:

    • ZONE_NAME: il nome della zona DNS
  2. Per creare un record DNS nella zona, utilizza Comando gcloud dns record-sets create:

    DNS_NAME=ENDPOINT_ID.REGION-VERTEX_AI_PROJECT_NUMBER.$DNS_NAME_SUFFIX
    gcloud dns record-sets create $DNS_NAME \
    --rrdatas=INTERNAL_IP_ADDRESS \
    --zone=ZONE_NAME \
    --type=A \
    --ttl=60 \
    --project=VPC_PROJECT_ID
    

    Sostituisci quanto segue:

    • VERTEX_AI_PROJECT_NUMBER: il numero del progetto Progetto VERTEX_AI_PROJECT_ID. Puoi individuare questo di progetto nella console Google Cloud. Per ulteriori informazioni, vedi Identificazione dei progetti.
    • INTERNAL_IP_ADDRESS: l'indirizzo IP interno del tuo endpoint di previsione online

    Ora puoi inviare le tue richieste predict a:

    https://ENDPOINT_ID.REGION-VERTEX_AI_PROJECT_NUMBER.prediction.p.vertexai.goog/v1/projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID:predict
    

Di seguito è riportato un esempio di come inviare la richiesta previsione alla zona DNS utilizzando Python:

REQUEST_FILE = "PATH_TO_INPUT_FILE"
import json

import urllib3

urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

with open(REQUEST_FILE) as json_file:
    data = json.load(json_file)
    response = psc_endpoint.predict(
        instances=data["instances"], endpoint_override=DNS_NAME
    )
print(response)

Sostituisci DNS_NAME con il nome DNS specificato in Comando gcloud dns record-sets create.

Limitazioni

Gli endpoint Vertex AI con Private Service Connect sono soggetti a le seguenti limitazioni:

  • Il traffico in uscita privato dall'endpoint non è supportato. Poiché Le regole di forwarding di Private Service Connect sono unidirezionali altro privato All'interno del container non sono accessibili i carichi di lavoro Google Cloud.
  • La configurazione projectAllowlist di un endpoint non può essere modificata.
  • Il logging degli accessi non è supportato.
  • Il logging delle richieste e delle risposte non è supportato.
  • Vertex Explainable AI non è supportato.

Limitazioni dell'anteprima

Nell'anteprima, si applicano le seguenti limitazioni aggiuntive:

  • Se annulli il deployment di tutti i modelli Private Service Connect ed esegui nuovamente il deployment devi ricreare la regola di forwarding. anche se il collegamento al servizio nome sia lo stesso.
  • Tutti gli endpoint devono avere la stessa configurazione projectAllowlist.

Passaggi successivi