Dedizierte private Endpunkte auf Grundlage von Private Service Connect für Online-Inferenzen verwenden

Mit Private Service Connect können Sie sicher von mehreren Nutzerprojekten und VPC-Netzwerken aus auf Vertex AI-Onlineinferenzen 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 Onlineinferenz 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-Onlineinferenzdienst 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).

Dedizierte private Endpunkte unterstützen sowohl HTTP- als auch gRPC-Kommunikationsprotokolle. Bei gRPC-Anfragen muss der Header „x-vertex-ai-endpoint-id“ enthalten sein, damit der Endpunkt richtig identifiziert wird. Die folgenden APIs werden unterstützt:

  • Vorhersagen
  • RawPredict
  • StreamRawPredict
  • Chat Completion (nur Model Garden)

Sie können Online-Inferenzanfragen über das Vertex AI SDK für Python an einen dedizierten privaten Endpunkt senden. Weitere Informationen finden Sie unter Onlineinferenzen abrufen.

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Vertex AI-Nutzer (roles/aiplatform.user) für Ihr Projekt zuzuweisen, um die Berechtigung zu erhalten, die Sie zum Erstellen eines Private Service Connect-Endpunkts benötigen. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Diese vordefinierte Rolle enthält die Berechtigung aiplatform.endpoints.create, die zum Erstellen eines Private Service Connect-Endpunkts erforderlich ist.

Sie können diese Berechtigung auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.

Weitere Informationen zu Vertex AI-Rollen und ‑Berechtigungen finden Sie unter Vertex AI-Zugriffssteuerung mit IAM und Vertex AI-IAM-Berechtigungen.

Online-Inferenzendpunkt erstellen

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

Das standardmäßige Zeitlimit für Anfragen für einen Private Service Connect-Endpunkt beträgt 10 Minuten. Im Vertex AI SDK für Python können Sie optional ein anderes Anfrage-Zeitlimit angeben, indem Sie einen neuen inference_timeout-Wert angeben, wie im folgenden Beispiel gezeigt. Der maximale Wert für die Zeitüberschreitung beträgt 3.600 Sekunden (1 Stunde).

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.
  • INFERENCE_TIMEOUT_SECS: (Optional) Anzahl der Sekunden im optionalen Feld inferenceTimeout.

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"],
    "clientConnectionConfig": {
      "inferenceTimeout": {
        "seconds": INFERENCE_TIMEOUT_SECS
      }
    }
  }
}

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.

Ersetzen Sie Folgendes:

  • VERTEX_AI_PROJECT_ID: die ID des Google Cloud Projekts, in dem Sie den Endpunkt für die Onlineinferenz erstellen
  • REGION: Die Region, in der Sie Vertex AI verwenden.
  • VERTEX_AI_ENDPOINT_NAME: Der Anzeigename für den Endpunkt der Onlineinferenz.
  • ALLOWED_PROJECTS: eine durch Kommas getrennte Liste von Google CloudProjekt-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 Inferenzanfragen 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.
  • INFERENCE_TIMEOUT_SECS: (Optional) Anzahl der Sekunden im optionalen Wert inference_timeout.
PROJECT_ID = "VERTEX_AI_PROJECT_ID"
REGION = "REGION"
VERTEX_AI_ENDPOINT_NAME = "VERTEX_AI_ENDPOINT_NAME"
INFERENCE_TIMEOUT_SECS = "INFERENCE_TIMEOUT_SECS"

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

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

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

Online-Inferenzendpunkt mit PSC-Automatisierung erstellen (Vorabversion)

Die Onlineinferenz ist in die Automatisierung der Dienstverbindung integriert. So können Sie Inferenzendpunkte mit PSC-Automatisierung konfigurieren. Dadurch wird der Prozess vereinfacht, da PSC-Endpunkte automatisch erstellt werden. Das ist besonders für ML-Entwickler von Vorteil, die keine Berechtigungen zum Erstellen von Netzwerkressourcen wie Weiterleitungsregeln in einem Projekt haben.

Zuerst muss Ihr Netzwerkadministrator eine Richtlinie für Dienstverbindungen einrichten. Diese Richtlinie ist eine einmalige Konfiguration pro Projekt und Netzwerk, mit der Vertex AI (Dienstklasse gcp-vertexai) PSC-Endpunkte in Ihren Projekten und Netzwerken generieren kann.

Als Nächstes können Sie Endpunkte mit der PSC-Automatisierungskonfiguration erstellen und dann Ihre Modelle bereitstellen. Nach Abschluss der Bereitstellung sind die relevanten PSC-Endpunktinformationen über die Endpunkte zugänglich.

Beschränkungen

  • VPC Service Controls werden nicht unterstützt.
  • Für PSC-Automatisierungskonfigurationen gilt ein regionales Limit von 500 Endpunkten.
  • Die Ergebnisse der PSC-Automatisierung werden gelöscht, wenn kein Modell bereitgestellt wird oder gerade bereitgestellt wird. Nach der Bereinigung und der anschließenden Bereitstellung des Modells enthalten die neuen Automatisierungsergebnisse eindeutige IP-Adressen und Weiterleitungsregeln.

Richtlinie für Dienstverbindungen erstellen

Sie müssen Netzwerkadministrator sein, um die Richtlinie für Dienstverbindungen zu erstellen. Eine Richtlinie für Dienstverbindungen ist erforderlich, damit Vertex AI PSC-Endpunkte in Ihren Netzwerken erstellen kann. Ohne eine gültige Richtlinie schlägt die Automatisierung mit dem Fehler CONNECTION_POLICY_MISSING fehl.

  1. Erstellen Sie Ihre Richtlinie für Dienstverbindungen.

    • POLICY_NAME: Ein vom Nutzer angegebener Name für die Richtlinie.
    • PROJECT_ID: Die ID des Dienstprojekts, in dem Sie Vertex AI-Ressourcen erstellen.

    • VPC_PROJECT: Die Projekt-ID, in der sich die Client-VPC befindet. Bei der Einrichtung einer einzelnen VPC entspricht dies $PROJECT. Bei der Einrichtung einer freigegebene VPC ist dies das VPC-Hostprojekt.

    • NETWORK_NAME: Der Name des Netzwerks, in dem die Bereitstellung erfolgen soll.

    • REGION: Die Region des Netzwerks.

    • PSC_SUBNETS: Die zu verwendenden Private Service Connect-Subnetze.

    gcloud network-connectivity service-connection-policies create POLICY_NAME \
        --project=VPC_PROJECT \
        --network=projects/PROJECT_ID/global/networks/NETWORK_NAME \
        --service-class=gcp-vertexai --region=REGION --subnets=PSC_SUBNETS
    
  2. Richtlinie für Dienstverbindungen ansehen

    gcloud network-connectivity service-connection-policies list \
        --project=VPC_PROJECT -region=REGION

    Bei einer einzelnen VPC sieht ein Beispiel so aus:

        gcloud network-connectivity service-connection-policies create test-policy \
            --network=default \
            --project=YOUR_PROJECT_ID \
            --region=us-central1 \
            --service-class=gcp-vertexai \
            --subnets=default \
            --psc-connection-limit=500 \
            --description=test

Onlineinferenz-Endpunkt mit PSC-Automatisierungskonfiguration erstellen

Prüfen Sie in der PSCAutomationConfig, ob die projectId auf der Zulassungsliste steht.

REST

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • REGION: Die Region, in der Sie Vertex AI verwenden.
  • VERTEX_AI_PROJECT_ID: Die ID des Google Cloud Projekts, in dem Sie den Endpunkt für Onlineinferenz erstellen.
  • VERTEX_AI_ENDPOINT_NAME: Der Anzeigename für den Endpunkt der Onlinevorhersage.
  • NETWORK_NAME: der vollständige Ressourcenname, einschließlich der Projekt-ID, anstelle der Projektnummer.

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: ["VERTEX_AI_PROJECT_ID"],
      pscAutomationConfigs: [
        { "project_id": "VERTEX_AI_PROJECT_ID", "network": "projects/VERTEX_AI_PROJECT_ID/global/networks/NETWORK_NAME" },
      ],
    },
  },

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.

Ersetzen Sie Folgendes:

  • VERTEX_AI_PROJECT_ID: die ID des Google Cloud Projekts, in dem Sie den Endpunkt für die Onlineinferenz erstellen
  • REGION: Die Region, in der Sie Vertex AI verwenden.
  • VERTEX_AI_ENDPOINT_NAME: Der Anzeigename für den Endpunkt der Onlineinferenz.
  • NETWORK_NAME: der vollständige Ressourcenname, einschließlich der Projekt-ID, anstelle der Projektnummer.
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)

config =
aiplatform.compat.types.service_networking.PrivateServiceConnectConfig(
        enable_private_service_connect=True,
        project_allowlist="VERTEX_AI_PROJECT_ID"
        psc_automation_configs=[
            aiplatform.compat.types.service_networking.PSCAutomationConfig(
                project_id="VERTEX_AI_PROJECT_ID"
network=projects/"VERTEX_AI_PROJECT_ID"/global/networks/"NETWORK_NAME",
            )
        ]
    )
psc_endpoint = aiplatform.PrivateEndpoint.create(
     display_name="VERTEX_AI_ENDPOINT_NAME"
     private_service_connect_config=config,
)

Modell bereitstellen

Nachdem Sie Ihren Onlineinferenz-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.

PSC-Endpunkt manuell erstellen

URI des Dienstanhangs abrufen

Wenn Sie das Modell bereitstellen, wird für den Endpunkt der Onlineinferenz ein Dienstanhang erstellt. Dieser Dienstanhang stellt den Vertex AI-Onlineinferenzdienst 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 Folgendes:

    • ENDPOINT_ID: die ID Ihres Endpunkts für die Onlineinferenz
    • VERTEX_AI_PROJECT_ID: die ID des Google Cloud Projekts, in dem Sie den Endpunkt für die Onlineinferenz 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: die ID des Google Cloud Projekts, in dem Ihr VPC-Netzwerk gehostet wird. Wenn der Endpunkt für Onlineinferenz 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 Onlineinferenzdiensts 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 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.

Optional: PSC-Endpunkt aus dem Ergebnis der PSC-Automatisierung abrufen

Die generierte IP-Adresse und Weiterleitungsregel können Sie über den Inferenzendpunkt abrufen. Beispiel:

"privateServiceConnectConfig": {
  "enablePrivateServiceConnect": true,
  "projectAllowlist": [
    "your-project-id",
  ],
  "pscAutomationConfigs": [
    {
      "projectId": "your-project-id",
      "network": "projects/your-project-id/global/networks/default",
      "ipAddress": "10.128.15.209",
      "forwardingRule": "https://www.googleapis.com/compute/v1/projects/your-project-id/regions/us-central1/forwardingRules/sca-auto-fr-47b0d6a4-eaff-444b-95e6-e4dc1d10101e",
      "state": "PSC_AUTOMATION_STATE_SUCCESSFUL"
    },
  ]
}

Hier sind einige Details zur Fehlerbehandlung.

  • Ein Fehler bei der Automatisierung hat keine Auswirkungen auf das Ergebnis der Modellbereitstellung.
  • Der Erfolg oder Misserfolg des Vorgangs wird im Status angegeben.
    • Bei Erfolg werden die IP-Adresse und die Weiterleitungsregel angezeigt.
    • Wenn die Anmeldung nicht erfolgreich ist, wird eine Fehlermeldung angezeigt.
  • Automatisierungskonfigurationen werden entfernt, wenn keine Modelle auf dem Endpunkt bereitgestellt werden oder gerade bereitgestellt werden. Dies führt zu einer Änderung der IP-Adresse und der Weiterleitungsregel, wenn ein Modell später bereitgestellt wird.
  • Fehlerhafte Automatisierungen werden nicht wiederhergestellt. Im Fehlerfall können Sie den PSC-Endpunkt weiterhin manuell erstellen. Weitere Informationen finden Sie unter PSC-Endpunkt manuell erstellen.

Onlineinferenzen abrufen

Das Abrufen von Onlineinferenzen von einem Endpunkt mit Private Service Connect ähnelt dem Abrufen von Onlineinferenzen 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 Onlineinferenz erstellt wurde.
  • Wenn der globale Zugriff nicht aktiviert ist, muss die Anfrage aus derselben Region gesendet werden.
  • Es sind zwei Ports geöffnet: 443 mit TLS unter Verwendung eines selbst signierten Zertifikats und 80 ohne TLS. Beide Ports unterstützen HTTP und GRPC. Der gesamte Traffic wird über das private Netzwerk geleitet und nicht über das öffentliche Internet.
  • Zum Abrufen von Inferenz muss eine Verbindung über die statische IP-Adresse des Endpunkts hergestellt werden, es sei denn, es wird ein DNS-Eintrag für die interne IP-Adresse erstellt. Senden Sie die predict-Anfragen beispielsweise an den folgenden Endpunkt:

    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.

  • Für gRPC-Anfragen: Damit Endpunkte für gRPC-Anfragen richtig identifiziert werden, muss der Header x-vertex-ai-endpoint-id enthalten sein. Dies ist erforderlich, da Endpunktinformationen nicht im Anfragepfad für die gRPC-Kommunikation übermittelt werden.

  • Sichere Verbindungen (Port 443): Beim Herstellen sicherer Verbindungen über Port 443 verwendet der Server ein selbstsigniertes Zertifikat. Um mit der Verbindung fortzufahren, empfehlen wir einen der folgenden Ansätze:

    • Option 1: Zertifikatsvalidierung umgehen: Konfigurieren Sie den Client so, dass die Zertifikatsvalidierung ignoriert wird und die Verbindung entweder über die IP-Adresse des Servers oder eine bevorzugte DNS-Auflösungsmethode hergestellt wird.
    • Option 2: Trust Store-Integration: Rufen Sie das selbstsignierte Zertifikat des Servers ab, fügen Sie es dem lokalen Trust Store des Clientsystems hinzu und verwenden Sie den DNS-Namen im Format *.prediction.p.vertexai.goog, um die Verbindung herzustellen. Diese Methode sorgt durch die Zertifikatsvalidierung für eine sichere Kommunikation. Das Zertifikat des Servers kann mit dem folgenden Befehl in PSC_CERTIFICATE_FILE.pem geschrieben werden:
    openssl s_client -showcerts -connect INTERNAL_IP_ADDRESS:443 \
      -servername *.prediction.p.vertexai.goog \
      </dev/null 2>/dev/null | sed -n \
      '/-----BEGIN CERTIFICATE-----/,/-----END CERTIFICATE-----/p' >  PSC_CERTIFICATE_FILE.pem
    

In den folgenden Abschnitten finden Sie Beispiele dafür, wie Sie die predict-Anfrage mit Python senden können.

Erstes Beispiel

psc_endpoint = aiplatform.PrivateEndpoint("projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID")
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 einen Pfad zu einer JSON-Datei, die die Anfragedaten enthält.

Zweites Beispiel

import json
import requests
import urllib3
import google.auth.transport.requests

urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

REQUEST_FILE = "PATH_TO_INPUT_FILE"

# Programmatically get credentials and generate an access token
creds, project = google.auth.default()
auth_req = google.auth.transport.requests.Request()
creds.refresh(auth_req)
access_token = creds.token
# Note: the credential lives for 1 hour by default
# After expiration, it must be refreshed
# See https://cloud.google.com/docs/authentication/token-types#access-tokens
# for token lifetimes.

with open(REQUEST_FILE) as json_file:
    data = json.load(json_file)
    url = "https://INTERNAL_IP_ADDRESS/v1/projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID:predict"
    headers = {
      "Content-Type": "application/json",
      "Authorization": f"Bearer {access_token}"  # Add access token to headers
    }
    payload = {
      "instances": data["instances"],
    }

response = requests.post(url, headers=headers, json=payload, verify=False)

print(response.json())

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

Wir empfehlen, einen DNS-Eintrag zu erstellen, damit Sie Onlineinferenzen 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 Online-Inferenzendpunkts

    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
    

Das folgende Beispiel zeigt, wie Sie die predict-Anfrage mit Python an die DNS-Zone senden können:

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:

  • Die Bereitstellung von abgestimmten Gemini-Modellen wird nicht unterstützt.
  • Privater ausgehender Traffic innerhalb des Endpunkts wird nicht unterstützt. Da Private Service Connect-Weiterleitungsregeln unidirektional sind, sind andere privateGoogle Cloud -Arbeitslasten in Ihrem Container nicht zugänglich.
  • Der projectAllowlist-Wert eines Endpunkts kann nicht geändert werden.
  • Vertex Explainable AI wird nicht unterstützt.
  • Bevor Sie einen Endpunkt löschen, müssen Sie die Bereitstellung des Modells aufheben.
  • Wenn die Bereitstellung aller Modelle länger als 10 Minuten aufgehoben wird, wird der Dienstanhang möglicherweise gelöscht. Prüfen Sie den Verbindungsstatus von Private Service Connect. Wenn er CLOSED ist, erstellen Sie die Weiterleitungsregel neu.
  • Nachdem Sie Ihren Endpunkt gelöscht haben, können Sie den Endpunktnamen bis zu 7 Tage lang nicht wiederverwenden.
  • Ein Projekt kann in seinen Private Service Connect-Konfigurationen bis zu 10 verschiedene projectAllowlist-Werte haben.

Nächste Schritte