Private Endpunkte für die Onlinevorhersage verwenden

Die Verwendung privater Endpunkte für Onlinevorhersagen mit Vertex AI bietet eine sichere Verbindung mit niedriger Latenz zum Vertex AI-Onlinevorhersagedienst. In diesem Leitfaden wird gezeigt, wie Sie private Endpunkte in Vertex AI konfigurieren. Dazu verwenden Sie VPC-Netzwerk-Peering, um Ihr Netzwerk mit dem Vertex AI-Onlinevorhersagedienst zu verbinden.

Übersicht

Bevor Sie Onlinevorhersagen mit privaten Endpunkten bereitstellen können, müssen Sie den Zugriff auf private Dienste konfigurieren, um Peering-Verbindungen zwischen Ihrem Netzwerk und Vertex AI herzustellen. Wenn Sie diesen Zugriff bereits eingerichtet haben, können Sie Ihre vorhandenen Peering-Verbindungen verwenden.

In diesem Leitfaden werden folgende Aufgaben behandelt:

  • Status vorhandener Peering-Verbindungen prüfen
  • Prüfen, ob die erforderlichen APIs aktiviert sind
  • Privaten Endpunkt erstellen
  • Modell für einen privaten Endpunkt bereitstellen
    • Pro privatem Endpunkt wird nur ein Modell unterstützt. Dies unterscheidet sich von einem öffentlichen Vertex AI-Endpunkt, bei dem Sie den Traffic auf mehrere Modelle aufteilen können, die auf einem Endpunkt bereitgestellt werden.
    • Der private Endpunkt unterstützt AutoML-Tabellen und benutzerdefiniert trainierte Modelle.
  • Vorhersage an einen privaten Endpunkt senden
  • Ressourcen bereinigen

Status vorhandener Peering-Verbindungen prüfen

Wenn Sie bereits Peering-Verbindungen haben, die Sie mit Vertex AI verwenden, können Sie diese auflisten, um den Status zu prüfen:

gcloud compute networks peerings list --network NETWORK_NAME

Der Status Ihrer Peering-Verbindungen sollte nun ACTIVE lauten. Weitere Informationen zu aktiven Peering-Verbindungen

Erforderliche APIs aktivieren

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

Privaten Endpunkt erstellen

Zum Erstellen eines privaten Endpunkts fügen Sie das Flag --network hinzu, wenn Sie den Endpunkt mithilfe der Google Cloud CLI erstellen:

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

Ersetzen Sie NETWORK_NAME durch den vollständig qualifizierten Netzwerknamen:

projects/PROJECT_NUMBER/global/networks/NETWORK_NAME

Wenn Sie den Endpunkt erstellen, ohne ein Netzwerk anzugeben, wird ein öffentlicher Endpunkt erstellt.

Einschränkungen privater Endpunkte

Beachten Sie die folgenden Einschränkungen für private Endpunkte:

  • Private Endpunkte unterstützen derzeit keine Trafficaufteilung. Als Behelfslösung können Sie die Trafficaufteilung manuell erstellen, indem Sie Ihr Modell auf mehreren privaten Endpunkten bereitstellen und den Traffic auf die resultierenden Vorhersage-URLs für jeden privaten Endpunkt aufteilen.
  • Private Endpunkte unterstützen SSL/TLS nicht.
  • Wenn Sie das Zugriffs-Logging auf einem privaten Endpunkt aktivieren möchten, wenden Sie sich an vertex-ai-feedback@google.com.
  • Sie können nur ein Netzwerk für alle privaten Endpunkte in einem Google Cloud-Projekt verwenden. Wenn Sie zu einem anderen Netzwerk wechseln möchten, wenden Sie sich an vertex-ai-feedback@google.com.
  • Clientseitige Wiederholungsversuche bei behebbaren Fehlern werden dringend empfohlen. Dazu können folgende Fehler gehören:
    • Leere Antwort (HTTP-Fehlercode 0), möglicherweise aufgrund einer vorübergehenden fehlerhaften Verbindung.
    • HTTP-Fehlercodes 5xx, die darauf hinweisen, dass der Dienst möglicherweise vorübergehend nicht verfügbar ist.
  • Für den HTTP-Fehlercode 429, der angibt, dass das System derzeit überlastet ist, sollten Sie den Traffic verlangsamen, um dieses Problem zu beheben, anstatt es noch einmal zu versuchen.
  • Vorhersageanfragen von PredictionServiceClient in der Python-Clientbibliothek von Vertex AI werden nicht unterstützt.

Private Endpunkte überwachen

Mit dem Messwerte-Dashboard können Sie die Verfügbarkeit und Latenz des an den privaten Endpunkt gesendeten Traffics prüfen.

Fragen Sie die folgenden beiden Messwerte in Cloud Monitoring ab, um das Monitoring anzupassen:

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

    Die Anzahl der Vorhersageantworten. Sie können diesen Messwert nach deployed_model_id oder HTTP-Antwortcode filtern.

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

    Die Latenz der Vorhersageanfrage in Millisekunden. Sie können diesen Messwert nach deployed_model_id filtern, aber nur für erfolgreiche Anfragen.

Weitere Informationen zum Auswählen, Abfragen und Anzeigen dieser Messwerte in Metrics Explorer.

Modell bereitstellen

Sie können ein neues Modell importieren oder ein vorhandenes Modell bereitstellen, das Sie bereits hochgeladen haben. Verwenden Sie gcloud ai models upload, um ein neues Modell hochzuladen. Weitere Informationen finden Sie unter Modelle in Vertex AI importieren.

  1. Informationen zum Bereitstellen eines Modells auf einem privaten Endpunkt finden Sie in der Anleitung zum Bereitstellen von Modellen. Neben der Trafficaufteilung und der manuellen Aktivierung des Zugriffs-Loggings stehen Ihnen alle weiteren Optionen für die Bereitstellung von benutzerdefinierten Modellen zur Verfügung. Weitere Informationen zu den Unterschieden zwischen öffentlichen Endpunkten finden Sie unter Einschränkungen bei privaten Endpunkten.

  2. Nachdem Sie den Endpunkt bereitgestellt haben, können Sie den Vorhersage-URI aus den Metadaten Ihres privaten Endpunkts abrufen.

    1. Wenn Sie den Anzeigenamen Ihres privaten Endpunkts haben, führen Sie den folgenden Befehl aus, um die Endpunkt-ID abzurufen:

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

      Führen Sie andernfalls den folgenden Befehl aus, um die Endpunkt-ID und den Anzeigenamen für alle Endpunkte aufzurufen:

      gcloud ai endpoints list --region=REGION
      
    2. Führen Sie schließlich den folgenden Befehl aus, um den Vorhersage-URI abzurufen:

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

Format des privaten Vorhersage-URI

Der Vorhersage-URI unterscheidet sich für private Endpunkte im Vergleich zu öffentlichen Endpunkten von Vertex AI:

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

Wenn Sie die Bereitstellung des aktuellen Modells aufheben und sie mit einem neuen Modell bereitstellen, wird der Domainname wiederverwendet, der Pfad enthält jedoch eine andere bereitgestellte Modell-ID.

Vorhersage an einen privaten Endpunkt senden

  1. Erstellen Sie eine Compute Engine-Instanz in Ihrem VPC-Netzwerk. Erstellen Sie die Instanz im selben VPC-Netzwerk, das Sie per Peering mit Vertex AI verbunden haben.

  2. Stellen Sie eine SSH-Verbindung zu Ihrer Compute Engine-Instanz her und installieren Sie gegebenenfalls Ihren Vorhersageclient. Andernfalls können Sie curl verwenden.

  3. Verwenden Sie für Vorhersagen die Vorhersage-URL, die aus der Modellbereitstellung abgerufen wurde. In diesem Beispiel senden Sie die Anfrage von Ihrem Vorhersageclient in Ihrer Compute Engine-Instanz im selben VPC-Netzwerk:

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

    In dieser Beispielanfrage ist PATH_TO_JSON_FILE der Pfad zu Ihrer Vorhersageanfrage, die als JSON-Datei gespeichert wird. Beispiel: example-request.json

Ressourcen bereinigen

Sie können die Bereitstellung von Modellen aufheben und private Endpunkte auf die gleiche Weise löschen bei öffentlichen Modellen und Endpunkten. Private Endpunkte können nur in einem Netzwerk pro Google Cloud-Projekt erstellt werden. Dies gilt auch dann, wenn Sie diese Ressourcen anschließend selbst löschen. Wenn Sie zu einem anderen Netzwerk wechseln müssen, wenden Sie sich an vertex-ai-feedback@google.com.

Beispiel: Private Endpunkte in freigegebener VPC testen

In diesem Beispiel werden zwei Google Cloud-Projekte mit einem freigegebenen VPC-Netzwerk verwendet:

  • Das Hostprojekt hostet das freigegebene VPC-Netzwerk.
  • Das Clientprojekt hostet eine Compute Engine-Instanz, auf der Sie einen Vorhersageclient wie curl oder Ihren eigenen REST-Client in der Compute Engine-Instanz ausführen, um Vorhersageanfragen zu senden.

Wenn Sie die Compute Engine-Instanz im Clientprojekt erstellen, muss sie sich innerhalb des benutzerdefinierten Subnetzes im freigegebenen VPC-Netzwerk des Hostprojekts und in derselben Region befinden, in der das Modell bereitgestellt wird.

  1. Erstellen Sie die Peering-Verbindungen für den Zugriff auf private Dienste im Hostprojekt. Führen Sie gcloud services vpc-peerings connect aus:

    gcloud services vpc-peerings connect \
      --service=servicenetworking.googleapis.com \
      --network=HOST_SHARED_VPC_NAME \
      --ranges=PREDICTION_RESERVED_RANGE_NAME \
      --project=HOST_PROJECT_ID
    
  2. Erstellen Sie den Endpunkt im Clientprojekt. Verwenden Sie dabei den Netzwerknamen des Hostprojekts. Führen Sie gcloud beta ai endpoints create aus:

    gcloud beta ai endpoints create \
      --display-name=ENDPOINT_DISPLAY_NAME \
      --network=HOST_SHARED_VPC_NAME \
      --region=REGION \
      --project=CLIENT_PROJECT_ID
    
  3. Senden Sie Vorhersageanfragen. Verwenden Sie dazu den Vorhersageclient im Clientprojekt.

Beispiel: Private Endpunkte mit Subnetzen außerhalb von RFC 1918

In diesem Beispiel werden Adressen außerhalb des RFC 1918-Bereichs zum Erstellen privater Endpunkte verwendet.

  1. Reservieren Sie IP-Bereiche für Knoten, Pods und Dienste. IP-Bereiche für Knoten müssen aus dem RFC 1918-Bereich stammen.

  2. Erstellen Sie die Peering-Verbindung für den Zugriff auf private Dienste mithilfe der reservierten Bereiche.

    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. Erstellen Sie den Endpunkt und geben Sie die reservierten Bereiche für Knoten, Pods und Dienste an. RequestedIpRangeConfig kann nur über die REST API angegeben werden.

    # 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. Senden Sie Vorhersageanfragen. Verwenden Sie dazu den Vorhersageclient im Clientprojekt.