Private Service Connect für Onlinevorhersagen verwenden

Mit Private Service Connect können Sie sicher von mehreren Nutzerprojekten und VPC-Netzwerken aus auf Vertex AI-Onlinevorhersagen zugreifen, ohne dass öffentliche IP-Adressen, ein öffentlicher Internetzugang oder ein expliziter interner Peering-IP-Adressbereich erforderlich sind.

Wir empfehlen Private Service Connect für Anwendungsfälle der Onlinevorhersage mit folgenden Anforderungen:

  • Private und sichere Verbindungen erforderlich machen
  • Niedrige Latenz erforderlich
  • Sie müssen nicht öffentlich zugänglich sein.

Private Service Connect verwendet eine Weiterleitungsregel in Ihrem VPC-Netzwerk, um Traffic unidirektional an den Vertex AI-Onlinevorhersagedienst zu senden. Die Weiterleitungsregel stellt eine Verbindung zu einem Dienstanhang her, der den Vertex AI-Dienst für Ihr VPC-Netzwerk verfügbar macht. Weitere Informationen finden Sie unter Zugriff auf Vertex AI-Dienste über Private Service Connect. Weitere Informationen zum Einrichten von Private Service Connect finden Sie unter Private Service Connect – Übersicht in der Virtual Private Cloud-Dokumentation (VPC).

Endpunkt für Onlinevorhersagen erstellen

Verwenden Sie eine der folgenden Methoden, um einen Onlinevorhersage-Endpunkt mit aktiviertem Private Service Connect zu erstellen:

Console

  1. Rufen Sie in der Google Cloud Console in Vertex AI die Seite Onlinevorhersage auf.

    Zur Onlinevorhersage

  2. Klicken Sie auf Erstellen.

  3. Geben Sie einen Anzeigenamen für den Endpunkt an.

  4. Klicken Sie auf Privat.

  5. Wählen Sie Private Service Connect aus.

  6. Klicken Sie auf Projekt-IDs auswählen.

  7. Wählen Sie Projekte aus, die der Zulassungsliste für den Endpunkt hinzugefügt werden sollen.

  8. Klicken Sie auf Weiter.

  9. Wählen Sie die Modellspezifikationen aus. Weitere Informationen finden Sie unter Modell auf einem Endpunkt bereitstellen.

  10. Klicken Sie auf Erstellen. um den Endpunkt zu erstellen und das Modell darauf bereitzustellen.

  11. Notieren Sie sich die Endpunkt-ID aus der Antwort.

API

REST

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • VERTEX_AI_PROJECT_ID: die ID des Google Cloud-Projekts, in dem Sie den Endpunkt für Onlinevorhersagen erstellen.
  • REGION: Die Region, in der Sie Vertex AI verwenden.
  • VERTEX_AI_ENDPOINT_NAME: Der Anzeigename für den Endpunkt der Onlinevorhersage.
  • ALLOWED_PROJECTS: eine durch Kommas getrennte Liste von Google Cloud-Projekt-IDs, die jeweils in Anführungszeichen gesetzt sind, z. B. ["PROJECTID1", "PROJECTID2"]. Wenn ein Projekt nicht in dieser Liste enthalten ist, können Sie von dort keine Vorhersageanfragen an den Vertex AI-Endpunkt senden. Achten Sie darauf, dass VERTEX_AI_PROJECT_ID in diese Liste aufgenommen wird, damit Sie den Endpunkt aus demselben Projekt aufrufen können, in dem er sich befindet.

HTTP-Methode und URL:

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

JSON-Text anfordern:

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

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

{
  "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"
    }
  }
}
Notieren Sie sich die verwendete ENDPOINT_ID.

Python

Bevor Sie dieses Beispiel anwenden, folgen Sie den Python-Einrichtungsschritten in der Vertex AI-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Python API.

Richten Sie zur Authentifizierung bei Vertex AI Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

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"],
    ),
)

Ersetzen Sie dabei Folgendes:

  • VERTEX_AI_PROJECT_ID: die ID des Google Cloud-Projekts, in dem Sie den Endpunkt für Onlinevorhersagen erstellen
  • REGION: Die Region, in der Sie Vertex AI verwenden.
  • VERTEX_AI_ENDPOINT_NAME: Der Anzeigename für den Endpunkt der Onlinevorhersage.
  • ALLOWED_PROJECTS: eine durch Kommas getrennte Liste von Google Cloud-Projekt-IDs, die jeweils in Anführungszeichen gesetzt sind. Beispiel: ["PROJECTID1", "PROJECTID2"] Wenn ein Projekt nicht in dieser Liste enthalten ist, können Sie von dort keine Vorhersageanfragen an den Vertex AI-Endpunkt senden. Achten Sie darauf, dass VERTEX_AI_PROJECT_ID in diese Liste aufgenommen wird, damit Sie den Endpunkt aus demselben Projekt aufrufen können, in dem er sich befindet.

Notieren Sie sich die ENDPOINT_ID am Ende des zurückgegebenen Endpunkt-URIs:

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')

Modell bereitstellen

Nachdem Sie Ihren Onlinevorhersage-Endpunkt mit aktiviertem Private Service Connect erstellt haben, stellen Sie Ihr Modell darauf bereit. Führen Sie dazu die Schritte unter Modell auf einem Endpunkt bereitstellen aus.

URI des Dienstanhangs abrufen

Wenn Sie das Modell bereitstellen, wird für den Endpunkt der Onlinevorhersage ein Dienstanhang erstellt. Dieser Dienstanhang stellt den Vertex AI-Onlinevorhersagedienst dar, der für Ihr VPC-Netzwerk verfügbar gemacht wird. Führen Sie den Befehl gcloud ai endpoints describe aus, um den URI des Dienstanhangs abzurufen.

  1. Listen Sie nur den Wert serviceAttachment aus den Endpunktdetails auf:

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

    Ersetzen Sie dabei Folgendes:

    • ENDPOINT_ID: die ID Ihres Endpunkts für Onlinevorhersagen
    • VERTEX_AI_PROJECT_ID: die ID des Google Cloud-Projekts, in dem Sie den Endpunkt für Onlinevorhersagen erstellt haben
    • REGION: Die Region für diese Anfrage

    Die Ausgabe sieht in etwa so aus:

    serviceAttachment: projects/ac74a9f84c2e5f2a1-tp/regions/us-central1/serviceAttachments/gkedpm-c6e6a854a634dc99472bb802f503c1
    
  2. Notieren Sie sich den gesamten String im Feld serviceAttachment. Dies ist der URI des Dienstanhangs.

Erstellen Sie eine Weiterleitungsregel.

Sie können eine interne IP-Adresse reservieren und eine Weiterleitungsregel mit dieser Adresse erstellen. Sie benötigen den URI des Dienstanhangs aus dem vorherigen Schritt, um die Weiterleitungsregel zu erstellen.

  1. Zum Reservieren einer internen IP-Adresse für die Weiterleitungsregel verwenden Sie den Befehl gcloud compute addresses create:

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

    Ersetzen Sie dabei Folgendes:

    • ADDRESS_NAME: ein Name für die interne IP-Adresse
    • VPC_PROJECT_ID ist die ID des Google Cloud-Projekts, in dem Ihr VPC-Netzwerk gehostet wird. Wenn der Endpunkt für Onlinevorhersagen und die Private Service Connect-Weiterleitungsregel im selben Projekt gehostet werden, verwenden Sie für diesen Parameter VERTEX_AI_PROJECT_ID.
    • REGION: die Google Cloud-Region, in der die Private Service Connect-Weiterleitungsregel erstellt werden soll
    • SUBNETWORK: der Name des VPC-Subnetzes, das die IP-Adresse enthält
    • INTERNAL_IP_ADDRESS: die interne IP-Adresse, die reserviert werden soll. Der Parameter ist optional.

      • Wenn dieser Parameter angegeben ist, muss sich die IP-Adresse innerhalb des primären IP-Adressbereichs des Subnetzes befinden. Die IP-Adresse kann eine RFC 1918-Adresse oder ein Subnetz mit Nicht-RFC-Bereichen sein.
      • Wenn Sie diesen Parameter nicht angeben, wird automatisch eine interne IP-Adresse zugewiesen.
      • Weitere Informationen finden Sie unter Neue statische interne IPv4- oder IPv6-Adresse reservieren.
  2. Prüfen Sie mit dem Befehl gcloud compute addresses list, ob die IP-Adresse reserviert ist:

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

    Prüfen Sie in der Antwort, ob für die IP-Adresse der Status RESERVED angezeigt wird.

  3. Verwenden Sie den Befehl gcloud compute forwarding-rules create, um die Weiterleitungsregel zu erstellen und auf den Anhang des Onlinevorhersagediensts zu verweisen:

    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
    

    Ersetzen Sie dabei Folgendes:

    • PSC_FORWARDING_RULE_NAME ist ein Name für die Weiterleitungsregel.
    • VPC_NETWORK_NAME: der Name des VPC-Netzwerks, in dem der Endpunkt erstellt werden soll
    • SERVICE_ATTACHMENT_URI: den Dienstanhang, den Sie zuvor notiert haben.
  4. Prüfen Sie mit dem Befehl gcloud compute forwarding-rules describe, ob der Dienstanhang den Endpunkt akzeptiert:

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

    Prüfen Sie in der Antwort, ob für das Feld pscConnectionStatus der Status ACCEPTED angezeigt wird.

Optional: Interne IP-Adresse abrufen

Wenn Sie beim Erstellen der Weiterleitungsregel keinen Wert für INTERNAL_IP_ADDRESS angegeben haben, erhalten Sie die automatisch zugewiesene Adresse mit dem Befehl gcloud compute forwarding-rules describe:

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

Ersetzen Sie dabei Folgendes:

  • VERTEX_AI_PROJECT_ID: Ihre Projekt-ID.
  • REGION ist der Name der Region für diese Anfrage.

Onlinevorhersagen abrufen

Das Abrufen von Onlinevorhersagen von einem Endpunkt mit Private Service Connect ähnelt dem Abrufen von Onlinevorhersagen von öffentlichen Endpunkten, mit folgenden Ausnahmen:

  • Die Anfrage muss von einem Projekt gesendet werden, das in projectAllowlist angegeben wurde, als der Endpunkt für die Onlinevorhersage erstellt wurde.
  • Wenn der globale Zugriff nicht aktiviert ist, muss die Anfrage aus derselben Region gesendet werden.
  • Zum Abrufen von Vorhersagen mit REST müssen Sie eine Verbindung über die statische IP-Adresse des Endpunkts herstellen, es sei denn, Sie erstellen einen DNS-Eintrag für die interne IP-Adresse. Sie müssen Ihre predict-Anfragen beispielsweise an den folgenden Endpunkt senden:

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

    Ersetzen Sie INTERNAL_IP_ADDRESS durch die zuvor reservierte interne IP-Adresse.

  • Im folgenden Beispiel wird gezeigt, wie Sie die predict-Anfrage mit Python senden:

    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)
    

    Ersetzen Sie PATH_TO_INPUT_FILE durch den Pfad zu einer JSON-Datei, die die Anfrage enthält.

Optional: DNS-Eintrag für die interne IP-Adresse erstellen

Wir empfehlen, einen DNS-Eintrag zu erstellen, damit Sie Onlinevorhersagen von Ihrem Endpunkt erhalten können, ohne die interne IP-Adresse angeben zu müssen.

Weitere Informationen finden Sie unter Andere Möglichkeiten zur Konfiguration von DNS.

  1. Erstellen Sie mit dem Befehl gcloud dns managed-zones create eine private DNS-Zone. Diese Zone ist dem VPC-Netzwerk zugeordnet, in dem die Weiterleitungsregel erstellt wurde.

    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."
    
    

    Ersetzen Sie dabei Folgendes:

    • ZONE_NAME: der Name der DNS-Zone
  2. Verwenden Sie zum Erstellen eines DNS-Eintrags in der Zone den Befehl 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
    

    Ersetzen Sie dabei Folgendes:

    • VERTEX_AI_PROJECT_NUMBER ist Ihre VERTEX_AI_PROJECT_ID Projektnummer. Sie finden diese Projektnummer in der Google Cloud Console. Weitere Informationen finden Sie unter Projekte identifizieren.
    • INTERNAL_IP_ADDRESS: die interne IP-Adresse Ihres Endpunkts für Online-Vorhersagen

    Jetzt können Sie Ihre predict-Anfragen an folgende VMs senden:

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

Im folgenden Beispiel wird gezeigt, wie Sie die predict-Anfrage mit Python an die DNS-Zone senden:

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)

Ersetzen Sie DNS_NAME durch den DNS-Namen, den Sie im Befehl gcloud dns record-sets create angegeben haben.

Beschränkungen

Vertex AI-Endpunkte mit Private Service Connect unterliegen den folgenden Einschränkungen:

  • Privater ausgehender Traffic innerhalb des Endpunkts wird nicht unterstützt. Da Private Service Connect-Weiterleitungsregeln unidirektional sind, sind andere private Google Cloud-Arbeitslasten in Ihrem Container nicht zugänglich.
  • Die projectAllowlist-Konfiguration eines Endpunkts kann nicht geändert werden.
  • Zugriffs-Logging wird nicht unterstützt.
  • Das Anfrage- und Antwort-Logging wird nicht unterstützt.
  • Vertex Explainable AI wird nicht unterstützt.

Vorschau Einschränkungen

In der Vorschau gelten die folgenden zusätzlichen Einschränkungen:

  • Wenn Sie die Bereitstellung aller Private Service Connect-Modelle aufheben und sie noch einmal bereitstellen, müssen Sie die Weiterleitungsregel neu erstellen, auch wenn der Name des Dienstanhangs identisch ist.
  • Alle Endpunkte müssen dieselbe projectAllowlist-Konfiguration haben.

Nächste Schritte