Referenztests für Vertex AI-Onlinevorhersagen mit HEY

1. Einführung

In dieser Anleitung wird gezeigt, wie Sie Cloud Monitoring-Messwerte für die Onlinevorhersage erstellen und bewerten, wenn Sie mit dem HEY-Tool zur Webleistung Basistests für us-central1 und us-west1 für einen in us-central1 bereitgestellten Vorhersageendpunkt durchführen.

Aufgaben

Sie richten ein VPC-Netzwerk namens „aiml-vpc“ ein, das aus Subnetzen und Instanzen in „us-west1“ und „us-central1“ besteht. Diese werden verwendet, um Traffic mit HEY zu generieren, der auf eine Onlinevorhersage und ein in „us-central1“ bereitgestelltes Modell ausgerichtet ist.

Private Service Connect und Private DNS sind ebenfalls in das Tutorial integriert, um zu zeigen, wie lokale und Multi-Cloud-Umgebungen PSC für den Zugriff auf googleapis nutzen können.

Cloud Monitoring und Network Intelligence werden im Tutorial verwendet, um den von HEY generierten Traffic für die Onlinevorhersage zu validieren. Obwohl die in der Anleitung beschriebenen Schritte in einer VPC bereitgestellt werden, können Sie die Schritte nutzen, um eine Baseline von Vertex APIs aus lokalen oder Multi-Cloud-Umgebungen bereitzustellen und abzurufen. Die Netzwerkarchitektur besteht aus den folgenden Komponenten:

dd5c102ce1ab0150.png

Nachfolgend finden Sie Details zum Anwendungsfall:

  1. Mit HEY auf Onlinevorhersage in us-central1 von einer GCE-Instanz in us-west1 aus zugreifen
  2. Prüfen, ob PSC für den Zugriff auf die Vertex API verwendet wird
  3. curl mit HEY fünf Minuten lang ausführen
  4. Latenz mit Cloud Monitoring validieren
  5. Latenz zwischen Regionen mit Network Intelligence prüfen
  6. Mit HEY über eine GCE-Instanz in us-central1 auf Onlinevorhersagen in us-central1 zugreifen
  7. Prüfen, ob PSC für den Zugriff auf die Vertex API verwendet wird
  8. curl mit HEY fünf Minuten lang ausführen
  9. Latenz mit Cloud Monitoring validieren
  10. Latenz innerhalb einer Region mit Network Intelligence validieren

Lerninhalte

  • Private Service Connect-Endpunkt einrichten
  • Last für eine Onlinevorhersage mit HEY generieren
  • Vertex AI-Messwerte mit Cloud Monitoring erstellen
  • Mit Network Intelligence die Latenz innerhalb und zwischen Regionen validieren

Voraussetzungen

  • Google Cloud-Projekt

IAM-Berechtigungen

Compute-Netzwerkadministrator

Compute-Netzwerkadministrator

Service Directory Editor

DNS-Administrator

Network Management Viewer

2. Hinweis

Projekt für das Tutorial aktualisieren

In dieser Anleitung werden $variables verwendet, um die Implementierung der gcloud-Konfiguration in Cloud Shell zu erleichtern.

Führen Sie in Cloud Shell folgende Schritte aus:

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid

3. Einrichtung von aiml-vpc

aiml-vpc erstellen

gcloud services enable networkmanagement.googleapis.com

Führen Sie in Cloud Shell folgende Schritte aus:

gcloud compute networks create aiml-vpc --project=$projectid --subnet-mode=custom

Aktivieren Sie in Cloud Shell die Network Management API für Network Intelligence.

gcloud services enable networkmanagement.googleapis.com

Subnetz für nutzerverwaltete Notebooks erstellen

Erstellen Sie in Cloud Shell das workbench-subnet.

gcloud compute networks subnets create workbench-subnet --project=$projectid --range=172.16.10.0/28 --network=aiml-vpc --region=us-central1 --enable-private-ip-google-access

Erstellen Sie in Cloud Shell das Subnetz „us-west1-subnet“.

gcloud compute networks subnets create us-west1-subnet --project=$projectid --range=192.168.10.0/28 --network=aiml-vpc --region=us-west1

Erstellen Sie in Cloud Shell das Subnetz „us-central1-subnet“.

gcloud compute networks subnets create us-central1-subnet --project=$projectid --range=192.168.20.0/28 --network=aiml-vpc --region=us-central1

Cloud Router- und NAT-Konfiguration

Cloud NAT wird im Tutorial zum Herunterladen von Softwarepaketen verwendet, da die GCE-Instanz keine externe IP-Adresse hat. Cloud NAT bietet NAT-Funktionen für ausgehenden Traffic. Das bedeutet, dass Internet-Hosts keine Kommunikation mit einem vom Nutzer verwalteten Notebook initiieren dürfen, was die Sicherheit erhöht.

Erstellen Sie in Cloud Shell den regionalen Cloud Router „us-west1“.

gcloud compute routers create cloud-router-us-west1-aiml-nat --network aiml-vpc --region us-west1

Erstellen Sie in Cloud Shell das regionale Cloud NAT-Gateway „us-west1“.

gcloud compute routers nats create cloud-nat-us-west1 --router=cloud-router-us-west1-aiml-nat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-west1

Erstellen Sie in Cloud Shell den regionalen Cloud Router „us-central1“.

gcloud compute routers create cloud-router-us-central1-aiml-nat --network aiml-vpc --region us-central1

Erstellen Sie in Cloud Shell das regionale Cloud NAT-Gateway „us-central1“.

gcloud compute routers nats create cloud-nat-us-central1 --router=cloud-router-us-central1-aiml-nat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-central1

4. Private Service Connect-Endpunkt erstellen

Im folgenden Abschnitt erstellen Sie einen Private Service Connect-Endpunkt (PSC), der für den Zugriff auf die Vertex API über die aiml-vpc verwendet wird.

Über Cloud Shell

gcloud compute addresses create psc-ip \
    --global \
    --purpose=PRIVATE_SERVICE_CONNECT \
    --addresses=100.100.10.10 \
    --network=aiml-vpc

„pscendpointip“ für die Dauer des Labs speichern

pscendpointip=$(gcloud compute addresses list --filter=name:psc-ip --format="value(address)")

echo $pscendpointip

PSC-Endpunkt erstellen

Über Cloud Shell

gcloud compute forwarding-rules create pscvertex \
    --global \
    --network=aiml-vpc \
    --address=psc-ip \
    --target-google-apis-bundle=all-apis

Konfigurierte Private Service Connect-Endpunkte auflisten

Über Cloud Shell

gcloud compute forwarding-rules list  \
--filter target="(all-apis OR vpc-sc)" --global

Konfigurierte Private Service Connect-Endpunkte beschreiben

Über Cloud Shell

gcloud compute forwarding-rules describe \
    pscvertex --global

5. Dienstkonto für die GCE-Instanzen erstellen

Um eine detaillierte Steuerung der Vertex API zu ermöglichen, ist ein vom Nutzer verwaltetes Dienstkonto erforderlich, das auf die westlichen und zentralen Instanzen angewendet wird. Nach der Generierung können die Dienstkontoberechtigungen entsprechend den geschäftlichen Anforderungen geändert werden. Im Tutorial hat das vom Nutzer verwaltete Dienstkonto „vertex-sa“ die folgenden Rollen:

Sie müssen die Service Account API , bevor Sie fortfahren.

Erstellen Sie das Dienstkonto in Cloud Shell.

gcloud iam service-accounts create vertex-gce-sa \
    --description="service account for vertex" \
    --display-name="vertex-sa"

Aktualisieren Sie das Dienstkonto in Cloud Shell mit der Rolle „Compute-Instanzadministrator“.

gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:vertex-gce-sa@$projectid.iam.gserviceaccount.com" --role="roles/compute.instanceAdmin.v1"

Aktualisieren Sie das Dienstkonto in Cloud Shell mit der Rolle „Vertex AI User“.

gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:vertex-gce-sa@$projectid.iam.gserviceaccount.com" --role="roles/aiplatform.user"

6. Nutzerverwaltetes Dienstkonto erstellen (Notebook)

Im folgenden Abschnitt erstellen Sie ein nutzerverwaltetes Dienstkonto, das dem im Tutorial verwendeten Vertex Workbench-Notebook zugeordnet wird.

Im Rahmen der Anleitung werden für das Dienstkonto die folgenden Regeln angewendet:

Erstellen Sie das Dienstkonto in Cloud Shell.

gcloud iam service-accounts create user-managed-notebook-sa \
    --display-name="user-managed-notebook-sa"

Aktualisieren Sie das Dienstkonto in Cloud Shell mit der Rolle „Storage-Administrator“.

gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/storage.admin"

Aktualisieren Sie das Dienstkonto in Cloud Shell mit der Rolle „Vertex AI User“.

gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/aiplatform.user"

Aktualisieren Sie das Dienstkonto in Cloud Shell mit der Rolle „Artifact Registry-Administrator“.

gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/artifactregistry.admin"

Listen Sie in Cloud Shell das Dienstkonto auf und notieren Sie sich die E-Mail-Adresse, die beim Erstellen des nutzerverwalteten Notebooks verwendet wird.

gcloud iam service-accounts list

7. Testinstanzen erstellen

Im folgenden Abschnitt erstellen Sie Testinstanzen, um Basistests in den Regionen us-west1 und us-central1 durchzuführen.

Erstellen Sie in Cloud Shell den west-client.

gcloud compute instances create west-client \
    --zone=us-west1-a \
    --image-family=debian-11 \
    --image-project=debian-cloud \
    --subnet=us-west1-subnet \
    --scopes=https://www.googleapis.com/auth/cloud-platform \
    --no-address \
    --shielded-secure-boot --service-account=vertex-gce-sa@$projectid.iam.gserviceaccount.com \
    --metadata startup-script="#! /bin/bash
      sudo apt-get update
      sudo apt-get install tcpdump dnsutils -y"

Erstellen Sie in Cloud Shell den zentralen Client.

gcloud compute instances create central-client \
    --zone=us-central1-a \
    --image-family=debian-11 \
    --image-project=debian-cloud \
    --subnet=us-central1-subnet \
    --scopes=https://www.googleapis.com/auth/cloud-platform \
    --no-address \
    --shielded-secure-boot --service-account=vertex-gce-sa@$projectid.iam.gserviceaccount.com \
    --metadata startup-script="#! /bin/bash
      sudo apt-get update
      sudo apt-get install tcpdump dnsutils -y"

Damit IAP eine Verbindung zu Ihren VM-Instanzen herstellen kann, erstellen Sie eine Firewallregel, die:

  • Gilt für alle VM-Instanzen, die über IAP zugänglich sein sollen.
  • Lässt eingehenden Traffic aus dem IP-Bereich 35.235.240.0/20 zu. Dieser Bereich enthält alle IP-Adressen, die IAP für die TCP-Weiterleitung verwendet.

Erstellen Sie in Cloud Shell die IAP-Firewallregel.

gcloud compute firewall-rules create ssh-iap-vpc \
    --network aiml-vpc \
    --allow tcp:22 \
    --source-ranges=35.235.240.0/20

8. Nutzerverwaltetes Notebook erstellen

Erstellen Sie im folgenden Abschnitt ein nutzerverwaltetes Notebook, in dem das zuvor erstellte Dienstkonto „user-managed-notebook-sa“ verwendet wird.

Erstellen Sie in Cloud Shell die private-client-Instanz.

gcloud notebooks instances create workbench-tutorial \
      --vm-image-project=deeplearning-platform-release \
      --vm-image-family=common-cpu-notebooks \
      --machine-type=n1-standard-4 \
      --location=us-central1-a \
      --subnet-region=us-central1 \
      --shielded-secure-boot \
      --subnet=workbench-subnet \
      --no-public-ip    --service-account=user-managed-notebook-sa@$projectid.iam.gserviceaccount.com

Rufen Sie Vertex AI → Workbench auf, um Ihr bereitgestelltes Notebook aufzurufen.

b02fcb9b07dca06a.png

9. Modell bereitstellen und Onlinevorhersage

Im folgenden Abschnitt verwenden Sie das bereitgestellte Codelabund beginnen mit Abschnitt 7, da Sie im vorherigen Schritt bereits ein Notebook erstellt haben. Kehren Sie nach der Bereitstellung des Modells zur Anleitung zurück, um mit dem nächsten Abschnitt zu beginnen.

ee68b7ba0cfd2746.png

10. Benutzerdefiniertes Monitoring-Dashboard für Onlinevorhersagen erstellen

Bei der Onlinevorhersage wird ein Standard-Monitoring-Dashboard unter „VERTEX AI“ → „ONLINE PREDICTION“ → „ENDPOINT NAME“ (diamonds-cpr_endpoint) erstellt. Für unsere Tests müssen wir jedoch eine Start- und eine Endzeit definieren. Daher ist ein benutzerdefiniertes Dashboard erforderlich.

Im folgenden Abschnitt erstellen Sie Cloud Monitoring-Messwerte, um Latenzmessungen basierend auf dem regionalen Zugriff auf den Online Prediction-Endpunkt zu erhalten. So können Sie die unterschiedliche Latenz beim Zugriff auf einen Endpunkt in us-central1 von GCE-Instanzen aus validieren, die in us-west1 und us-central bereitgestellt werden.

In dieser Anleitung verwenden wir die Messwerte für die Vorhersagelatenz. Weitere Messwerte sind unter aiplatform verfügbar.

Messwert

Beschreibung

prediction/online/prediction_latencies

Onlinevorhersagelatenz des bereitgestellten Modells.

Diagramm für den prediction_latencies-Messwert erstellen

Rufen Sie in der Cloud Console MONITORING → Metrics Explorer auf.

536668ab0b29d77.png

Fügen Sie den Messwert prediction/online/prediction_latencies ein, wählen Sie die folgenden Optionen aus und klicken Sie auf „Übernehmen“.

c1edd34208cb5ee2.png

Aktualisieren Sie „Gruppieren nach“ entsprechend der folgenden Option und wählen Sie „Diagramm speichern“ aus.

e180a5d8a044b6e1.png

d2ecd6677a3b34e0.png

Wählen Sie „Speichern“ aus. Sie werden aufgefordert, ein Dashboard auszuwählen. Wählen Sie „Neues Dashboard“ aus und geben Sie einen Namen ein.

e29a39dc941c8599.png

Vertex Custom Dashboard

Prüfen Sie im folgenden Abschnitt, ob im benutzerdefinierten Vertex-Dashboard die richtige Zeit angezeigt wird.

Rufen Sie MONITORING → Dashboard auf, wählen Sie „Vertex Custom Dashboard“ und dann den Zeitraum aus. Achten Sie darauf, dass Ihre Zeitzone korrekt ist.

f43ebed798ce1147.png

Erweitern Sie die Legende, um eine Tabellenansicht zu erhalten.

61ffeef22e067ca9.png

Beispiel für die maximierte Ansicht:

9027e8785c023129.png

11. Private DNS für den PSC-Endpunkt erstellen

Erstellen Sie eine private DNS-Zone in der aiml-vpc, um alle googleapis in die PSC-Endpunkt-IP-Adresse 100.100.10.10 aufzulösen.

Erstellen Sie in Cloud Shell eine private DNS-Zone.

gcloud dns --project=$projectid managed-zones create psc-googleapis --description="Private Zone to resolve googleapis to a PSC endpoint" --dns-name="googleapis.com." --visibility="private" --networks="https://www.googleapis.com/compute/v1/projects/$projectid/global/networks/aiml-vpc"

Erstellen Sie in Cloud Shell den A-Datensatz, der *. googleapis.com der PSC-IP zuordnet.

gcloud dns --project=$projectid record-sets create *.googleapis.com. --zone="psc-googleapis" --type="A" --ttl="300" --rrdatas="100.100.10.10"

12. Hallo, Variablen testen

Mit Hey können Endnutzer Tests an die Anforderungen von Netzwerk und Anwendung anpassen. Für diese Anleitung verwenden wir die unten beschriebene Option mit einem Beispiel für einen Ausführungsstring:

c == 1 Worker

z == Dauer

m == HTTP-Methode POST

D == HTTP-Anfragetext aus der Datei „instances.json“

n == Anzahl der auszuführenden Anfragen. Der Standardwert ist 200.

Beispiel für einen curl-String mit HEY (Ausführung nicht erforderlich)

user@us-central$ ./hey_linux_amd64 -c 1 -z 1m -m POST -D instances.json  -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/${projectid$}/locations/us-central1/endpoints/${ENDPOINT_ID}:predict

13. Vorhersage-ID abrufen

Rufen Sie die ID Ihres Onlinevorhersage-Endpunkts aus der Cloud Console ab, die in den folgenden Schritten verwendet wird.

Klicken Sie auf VERTEX AI → ONLINEPREDICTION.

ce4d4a88a3fa2345.png

14. HEY herunterladen und ausführen (us-west1)

Im folgenden Abschnitt melden Sie sich am West-Client an, um HEY herunterzuladen und für die Onlinevorhersage in us-central1 auszuführen.

Melden Sie sich in Cloud Shell beim west-client an und laden Sie HEY herunter.

gcloud compute ssh west-client --project=$projectid --zone=us-west1-a --tunnel-through-iap

Laden Sie HEY über das Betriebssystem herunter und aktualisieren Sie die Berechtigungen.

wget https://hey-release.s3.us-east-2.amazonaws.com/hey_linux_amd64
chmod +x hey_linux_amd64

Erstellen Sie im Betriebssystem die folgenden Variablen:

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
ENDPOINT_ID="insert-your-endpoint-id-here"

Beispiel:

ENDPOINT_ID="2706243362607857664"

Im folgenden Abschnitt erstellen Sie mit dem vi-Editor oder nano die Datei „instances.json“ und fügen den Datenstring ein, mit dem eine Vorhersage vom bereitgestellten Modell abgerufen wird.

Erstellen Sie auf dem Betriebssystem des West-Clients eine instances.json-Datei mit dem folgenden Datenstring:

{"instances": [
  [0.23, 'Ideal', 'E', 'VS2', 61.5, 55.0, 3.95, 3.98, 2.43],
  [0.29, 'Premium', 'J', 'Internally Flawless', 52.5, 49.0, 4.00, 2.13, 3.11]]}

Beispiel:

user@west-client:$ more instances.json 
{"instances": [
  [0.23, 'Ideal', 'E', 'VS2', 61.5, 55.0, 3.95, 3.98, 2.43],
  [0.29, 'Premium', 'J', 'Internally Flawless', 52.5, 49.0, 4.00, 2.13, 3.11]]}

user@west-client:$

Vorabtest

Führen Sie über das Betriebssystem einen Curl-Befehl aus, um zu prüfen, ob das Modell und der Vorhersageendpunkt funktionieren. Notieren Sie sich die IP-Adresse des PSC-Endpunkts im ausführlichen Log und den HTTP/2-Statuscode 200, der auf einen erfolgreichen Vorgang hinweist.

curl -v -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/${projectid}/locations/us-central1/endpoints/${ENDPOINT_ID}:predict -d @instances.json

Beispiel: Notieren Sie sich die PSC-IP-Adresse, die für den Zugriff auf die Vorhersage verwendet wurde, und das erfolgreiche Ergebnis.

user@west-client:$ curl -v -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/${projectid}/locations/us-central1/endpoints/${ENDPOINT_ID}:predict -d @instances.json
Note: Unnecessary use of -X or --request, POST is already inferred.
*   Trying 100.100.10.10:443...
* Connected to us-central1-aiplatform.googleapis.com (100.100.10.10) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
* ALPN, server accepted to use h2
* Server certificate:
*  subject: CN=upload.video.google.com
*  start date: Jul 31 08:22:19 2023 GMT
*  expire date: Oct 23 08:22:18 2023 GMT
*  subjectAltName: host "us-central1-aiplatform.googleapis.com" matched cert's "*.googleapis.com"
*  issuer: C=US; O=Google Trust Services LLC; CN=GTS CA 1C3
*  SSL certificate verify ok.
* Using HTTP2, server supports multi-use
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* Using Stream ID: 1 (easy handle 0x55a9f38b42c0)
> POST /v1/projects/new-test-project-396322/locations/us-central1/endpoints/2706243362607857664:predict HTTP/2
> Host: us-central1-aiplatform.googleapis.com
> user-agent: curl/7.74.0
> accept: */*
> authorization: Bearer ya29.c.b0Aaekm1LqrcaOlWFFwuEOWX_tZVXXvJgN_K-u5_hFyEAYXAi3AnBEBwwtHS8dweW_P2QGfdyFfa31nMT_6BaKBI0mC9IsfzfIiUwXc8u2yJt01gTUSJpCmGAFKZKidRMgkPYivVYCnuymzdYbRAWacIe__StkRzI9UeQOGN3jNIeESr80AdH12goaxCFXWaNWxoYRfGVhekEgUcsKs7t1OhOM-937gy4YGkXcXa8sGuHWRqF5bnulYlTqlxqQ2aAxMTrQg2lwUWRGCmGhPrym7rXJq7oim0DkAJSbAarl1qFuz0PPfNXeHGbs13zY2r1giV7u8_w4Umj_Q5M7H9fTkq7EiqnLzqRkOHXismYL368P1jOUBYM__krFQt4M3X9RJa0g01tOw3FnOh27BmUqlFQ1J2h14JZpx215Q3xzRvgfJ5iW5YYSkv67uZRQk4V04naOUXyc0plzWuVOjj4nor3fYvkS_oW0IyxJoBjeXR16Vnvln8c04svWX9dt7eobczFvBOm9nVdh4lVp8qxbp__2WtMvc1QVg6y-2i6lRpbvmyp1oadxVRjxV1e0wiQFSe-qqsinJu3bnnaMbxdU2cu5j26o8o8Xpgo0SF1UM0b1WX84iatbWpdFSphZm1llwmRagMzcFBW0aBk-i35_bXSbzwURgMfY6Qbyb9Rv9y0F-Maf34I0WxiMldv2uc57nej7dVl9OSm_Ohnro-i9zcpq9fxo9soYVB8WjaZOUjauk4znstc2_6y4atcVVsQBkeU674biR567Ri3M74Jfv4MrrF02ObfrJRdB7UJ4MU_9kWW-kYeeJzoci15UqYV0f_yJgReBwQa66Supmebee2Sn2nku6xZkRMu5Mz55mXuva0XWrpIbor7WckSsXwUFbf7rj5ipa4mOOyf2hJe1Rq0x6yeBaariRzXrhfm5bBpFBU73-zd-IekvOji0ZJQSkk0o6gpX_794Jny7j14aQJ8VxezcFpZUztimYhMnRhlO2lqms1h0h48
> content-type: application/json
> content-length: 158
> 
* Connection state changed (MAX_CONCURRENT_STREAMS == 100)!
* We are completely uploaded and fine
< HTTP/2 200 
< x-vertex-ai-internal-prediction-backend: harpoon
< content-type: application/json; charset=UTF-8
< date: Sun, 20 Aug 2023 03:51:54 GMT
< vary: X-Origin
< vary: Referer
< vary: Origin,Accept-Encoding
< server: scaffolding on HTTPServer2
< cache-control: private
< x-xss-protection: 0
< x-frame-options: SAMEORIGIN
< x-content-type-options: nosniff
< accept-ranges: none
< 
{
  "predictions": [
    "$479.0",
    "$586.0"
  ],
  "deployedModelId": "3587550310781943808",
  "model": "projects/884291964428/locations/us-central1/models/6829574694488768512",
  "modelDisplayName": "diamonds-cpr",
  "modelVersionId": "1"
}
* Connection #0 to host us-central1-aiplatform.googleapis.com left intact

HEY ausführen

Führen Sie HEY über das Betriebssystem aus, um einen 10-minütigen Baslinetest zu aktivieren.

./hey_linux_amd64 -c 1 -z 10m -m POST -D instances.json  -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/$projectid/locations/us-central1/endpoints/${ENDPOINT_ID}:predict

15. Hey Validation (us-west1)

Nachdem Sie „Hey“ über eine Compute-Instanz in „us-west1“ ausgeführt haben, können Sie die Ergebnisse aus den folgenden Quellen auswerten:

  • HEY-Ergebnisse
  • Benutzerdefiniertes Vertex-Dashboard
  • Network Intelligence

HEY-Ergebnisse

Lassen Sie uns die HEY-Ergebnisse anhand der 10-minütigen Ausführung im Betriebssystem validieren.

17,5826 Anfragen pro Sekunde

99% in 0,0686 Sekunden | 68 ms

10.550 Antworten mit dem Statuscode 200

user@west-client:$ ./hey_linux_amd64 -c 1 -z 10m -m POST -D instances.json  -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/$projectid/locations/us-central1/endpoints/${ENDPOINT_ID}:predict

Summary:
  Total:        600.0243 secs
  Slowest:      0.3039 secs
  Fastest:      0.0527 secs
  Average:      0.0569 secs
  Requests/sec: 17.5826
  

Response time histogram:
  0.053 [1]     |
  0.078 [10514] |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
  0.103 [16]    |
  0.128 [4]     |
  0.153 [3]     |
  0.178 [1]     |
  0.203 [0]     |
  0.229 [2]     |
  0.254 [1]     |
  0.279 [5]     |
  0.304 [3]     |


Latency distribution:
  10% in 0.0546 secs
  25% in 0.0551 secs
  50% in 0.0559 secs
  75% in 0.0571 secs
  90% in 0.0596 secs
  95% in 0.0613 secs
  99% in 0.0686 secs

Details (average, fastest, slowest):
  DNS+dialup:   0.0000 secs, 0.0527 secs, 0.3039 secs
  DNS-lookup:   0.0000 secs, 0.0000 secs, 0.0116 secs
  req write:    0.0000 secs, 0.0000 secs, 0.0002 secs
  resp wait:    0.0567 secs, 0.0526 secs, 0.3038 secs
  resp read:    0.0001 secs, 0.0001 secs, 0.0696 secs

Status code distribution:
  [200] 10550 responses

Vertex Custom Dashboard

Rufen Sie „MONITORING“ → „Dashboard“ auf und wählen Sie „Vertex Custom Dashboard“ aus. Geben Sie „10 Minuten“ ein oder legen Sie die Start- und Endzeit fest. Achten Sie darauf, dass Ihre Zeitzone korrekt ist.

4102b1d0438c78e3.png

Wenn wir uns die Definition von Vorhersagelatenzen ansehen, stellen wir fest, dass es sich um einen serverseitigen Messwert handelt, der die Gesamtzeit misst, die benötigt wird, um auf die Anfrage des Clients zu reagieren, nachdem eine Antwort vom Modell empfangen wurde.

  • Gesamtlatenzdauer: Die Gesamtzeit, die eine Anfrage im Dienst verbringt. Dies ist die Modelllatenz plus die Overhead-Latenz.

Im Gegensatz dazu ist HEY ein clientseitiger Messwert, der die folgenden Parameter berücksichtigt:

Clientanfrage + Gesamtlatenz (einschließlich Modelllatenz) + Clientantwort

Network Intelligence

Sehen wir uns nun die von Network Intelligence gemeldete Netzwerk-Latenz zwischen den Regionen an, um eine Vorstellung von der von Google Cloud Platform gemeldeten Latenz zwischen „us-west1“ und „us-central1“ zu erhalten.

Rufen Sie in der Cloud Console „Network Intelligence“ → „Performance Dashboard“ auf und wählen Sie die folgenden Optionen aus, die im Screenshot unten dargestellt sind und eine Latenz von 32 bis 39 ms angeben.

aade5f757115721.png

HEY us-west1 baseline summary

Beim Vergleich der Berichte zur Gesamtlatenz der Testtools wird ungefähr die gleiche Latenz wie bei HEY gemeldet. Die interregionale Latenz trägt den größten Teil zur Latenz bei. Sehen wir uns an, wie sich der zentrale Client in der nächsten Reihe von Tests schlägt.

Latenz-Tool

Dauer

Network Intelligence: Latenz von us-west1 nach us-central1

ca. 32 bis 39 ms

Cloud Monitoring: Gesamtlatenz der Vorhersage [99. Perzentil]

34,58 ms (99.Perzentil)

Von Google gemeldete Gesamtlatenz

~ 66,58 bis 73,58 ms

HEY-Client-Latenzverteilung

68 ms (99. Perzentil)

16. HEY herunterladen und ausführen (us-central1)

Im folgenden Abschnitt melden Sie sich am zentralen Client an, um HEY für die Onlinevorhersage in us-central1 herunterzuladen und auszuführen.

Melden Sie sich in Cloud Shell am zentralen Client an und laden Sie HEY herunter.

gcloud compute ssh central-client --project=$projectid --zone=us-central1-a --tunnel-through-iap

Laden Sie HEY über das Betriebssystem herunter und aktualisieren Sie die Berechtigungen.

wget https://hey-release.s3.us-east-2.amazonaws.com/hey_linux_amd64
chmod +x hey_linux_amd64

Erstellen Sie im Betriebssystem die folgenden Variablen:

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
ENDPOINT_ID="insert-your-endpoint-id-here"

Beispiel:

ENDPOINT_ID="2706243362607857664"

Im folgenden Abschnitt erstellen Sie mit dem vi-Editor oder nano die Datei „instances.json“ und fügen den Datenstring ein, mit dem eine Vorhersage vom bereitgestellten Modell abgerufen wird.

Erstellen Sie auf dem Betriebssystem des West-Clients eine instances.json-Datei mit dem folgenden Datenstring:

{"instances": [
  [0.23, 'Ideal', 'E', 'VS2', 61.5, 55.0, 3.95, 3.98, 2.43],
  [0.29, 'Premium', 'J', 'Internally Flawless', 52.5, 49.0, 4.00, 2.13, 3.11]]}

Beispiel:

user@west-client:$ more instances.json 
{"instances": [
  [0.23, 'Ideal', 'E', 'VS2', 61.5, 55.0, 3.95, 3.98, 2.43],
  [0.29, 'Premium', 'J', 'Internally Flawless', 52.5, 49.0, 4.00, 2.13, 3.11]]}

user@west-client:$

Pre-Test

Führen Sie über das Betriebssystem einen Curl-Befehl aus, um zu prüfen, ob das Modell und der Vorhersageendpunkt funktionieren. Notieren Sie sich die IP-Adresse des PSC-Endpunkts im ausführlichen Log und den HTTP/2-Statuscode 200, der auf einen erfolgreichen Vorgang hinweist.

curl -v -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/${projectid}/locations/us-central1/endpoints/${ENDPOINT_ID}:predict -d @instances.json

Beispiel: Notieren Sie sich die PSC-IP-Adresse, die für den Zugriff auf die Vorhersage verwendet wurde, und das erfolgreiche Ergebnis.

user@central-client:~$ curl -v -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/${projectid}/locations/us-central1/endpoints/${ENDPOINT_ID}:predict -d @instances.json
Note: Unnecessary use of -X or --request, POST is already inferred.
*   Trying 100.100.10.10:443...
* Connected to us-central1-aiplatform.googleapis.com (100.100.10.10) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
* ALPN, server accepted to use h2
* Server certificate:
*  subject: CN=upload.video.google.com
*  start date: Jul 31 08:22:19 2023 GMT
*  expire date: Oct 23 08:22:18 2023 GMT
*  subjectAltName: host "us-central1-aiplatform.googleapis.com" matched cert's "*.googleapis.com"
*  issuer: C=US; O=Google Trust Services LLC; CN=GTS CA 1C3
*  SSL certificate verify ok.
* Using HTTP2, server supports multi-use
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* Using Stream ID: 1 (easy handle 0x559b57adc2c0)
> POST /v1/projects/new-test-project-396322/locations/us-central1/endpoints/2706243362607857664:predict HTTP/2
> Host: us-central1-aiplatform.googleapis.com
> user-agent: curl/7.74.0
> accept: */*
> authorization: Bearer ya29.c.b0Aaekm1KWqq-CIXuL6f1cx9d9jHHquQq9tlSV1oVZ1y3TACi82JFFZRwsagVY7MMovycsU4PLkt9MDMkNngxZE5RzXcS-AoaUaQf1tPT9-_JMTlFI6wCcR7Yr9MeRF5AZblr_k52ZZgEZKeYGcrXoGiqGQcAAwFtHiEVAkUhLuyukteXbMoep1JM9E0zFblJj7Z0yOCMJYBH-6XHcIDYnOKpStMVBR2wcTDbnFrCE08HXbvRnQVcENatTBoI9FzSVL1ORwqUiCcdfnTSjpIXcyD-W82d6ZHjGX_RUhfnH7RPfOJqkuU8pOovwoCjq_jvM_wJUfPuQnBKHp5rxbYxPE349DMBql62po2SWFguuFo-a2eoUnb8-FQeBZqan65zgV0lexR73gZlm071y9grlXv3fmJUo7vlj5W-7_-FJXaWWg8iWc6rmjYeO1Wz2h_8qnmojkX9xSUciI6JfmwdgMWwtvwJb63ppSmdwf8oagrYiQlpMzgRI6rekbRzg-1WOBeOf5nRg5vtxUMSc9iRaoarO5XwFX8vt7rxOUBvbXYVWmo3bsdhzsS9VopMwgMlxgcIJg7bq7_F3iapB-nRjfjfhZWpR83cWIkI2Wb9f89inpsxtYjZbbzdWkZvRB8FYSsY8F8tcpiVoWWyQWZiph9z7O59fF9irWY2gtUnbFcJJ_ZcYztjlMQaR45y42ZflkM3Qn668bzge3Y3hmVI1s6ZSmxxq6m27hoMwVn21R07Y613jwljmaFJ5V8MwkR6yvFhYngrh_JrhRUQtSSMh02Rz25wMfv7g8Fiqymr-12viM4btIFjXZBM3XFqzvso_rw1omI1yYWofmbaBYggpegpJBzSeqVUZe791agjVtiMUkyjXFy__9gI0Qk9ZUarI4p25SvS4I1hX4YyBk6ol32Z5zIsVr1Seff__aklm6M2Mlkumd7nurm46hjOIoOhFpfFxrQ6yivnhYapBOJMYirgbZvigvI3dom1fnmt0-ktmRxp69w7Uzzy
> content-type: application/json
> content-length: 158
> 
* Connection state changed (MAX_CONCURRENT_STREAMS == 100)!
* We are completely uploaded and fine
< HTTP/2 200 
< x-vertex-ai-internal-prediction-backend: harpoon
< date: Sun, 20 Aug 2023 22:25:31 GMT
< content-type: application/json; charset=UTF-8
< vary: X-Origin
< vary: Referer
< vary: Origin,Accept-Encoding
< server: scaffolding on HTTPServer2
< cache-control: private
< x-xss-protection: 0
< x-frame-options: SAMEORIGIN
< x-content-type-options: nosniff
< accept-ranges: none
< 
{
  "predictions": [
    "$479.0",
    "$586.0"
  ],
  "deployedModelId": "3587550310781943808",
  "model": "projects/884291964428/locations/us-central1/models/6829574694488768512",
  "modelDisplayName": "diamonds-cpr",
  "modelVersionId": "1"
}
* Connection #0 to host us-central1-aiplatform.googleapis.com left intact

HEY ausführen

Führen Sie HEY über das Betriebssystem aus, um einen 10-minütigen Baslinetest zu aktivieren.

./hey_linux_amd64 -c 1 -z 10m -m POST -D instances.json  -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/$projectid/locations/us-central1/endpoints/${ENDPOINT_ID}:predict

17. Hey Validation (us-central1)

Nachdem Sie „Hey“ über eine Compute Engine-Instanz in „us-central1“ ausgeführt haben, können Sie die Ergebnisse aus den folgenden Quellen auswerten:

  • HEY-Ergebnisse
  • Benutzerdefiniertes Vertex-Dashboard
  • Network Intelligence

HEY-Ergebnisse

Lassen Sie uns die HEY-Ergebnisse basierend auf der 10-minütigen Ausführung im Betriebssystem validieren.

44,9408 Anfragen pro Sekunde

99% in 0,0353 Sekunden | 35 ms

26.965 Antworten mit dem Statuscode 200

devops_user_1_deepakmichael_alto@central-client:~$ ./hey_linux_amd64 -c 1 -z 10m -m POST -D instances.json  -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/$projectid/locations/us-central1/endpoints/${ENDPOINT_ID}:predict

Summary:
  Total:        600.0113 secs
  Slowest:      0.3673 secs
  Fastest:      0.0184 secs
  Average:      0.0222 secs
  Requests/sec: 44.9408
  

Response time histogram:
  0.018 [1]     |
  0.053 [26923] |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
  0.088 [25]    |
  0.123 [4]     |
  0.158 [0]     |
  0.193 [1]     |
  0.228 [9]     |
  0.263 [1]     |
  0.298 [0]     |
  0.332 [0]     |
  0.367 [1]     |


Latency distribution:
  10% in 0.0199 secs
  25% in 0.0205 secs
  50% in 0.0213 secs
  75% in 0.0226 secs
  90% in 0.0253 secs
  95% in 0.0273 secs
  99% in 0.0353 secs

Details (average, fastest, slowest):
  DNS+dialup:   0.0000 secs, 0.0184 secs, 0.3673 secs
  DNS-lookup:   0.0000 secs, 0.0000 secs, 0.0079 secs
  req write:    0.0000 secs, 0.0000 secs, 0.0007 secs
  resp wait:    0.0220 secs, 0.0182 secs, 0.3672 secs
  resp read:    0.0002 secs, 0.0001 secs, 0.0046 secs

Status code distribution:
  [200] 26965 responses

Vertex Custom Dashboard

Rufen Sie MONITORING → Dashboard auf und wählen Sie „Vertex Custom Dashboard“ aus. Geben Sie „10m“ ein. Oder die Start- und Endzeit. Achten Sie darauf, dass Ihre Zeitzone korrekt ist.

Die Vorhersagelatenzen der letzten 10 Minuten ergeben 30.533 ms.

Wenn wir uns die Definition von Vorhersagelatenzen ansehen, stellen wir fest, dass es sich um einen serverseitigen Messwert handelt, der die Gesamtzeit misst, die benötigt wird, um auf die Anfrage des Clients zu reagieren, nachdem eine Antwort vom Modell empfangen wurde.

  • Gesamtlatenzdauer: Die Gesamtzeit, die eine Anfrage im Dienst verbringt. Dies ist die Modelllatenz plus die Overhead-Latenz.

Im Gegensatz dazu ist HEY ein clientseitiger Messwert, der die folgenden Parameter berücksichtigt:

Clientanfrage + Gesamtlatenz (einschließlich Modelllatenz) + Clientantwort

Network Intelligence

Sehen wir uns nun die von Network Intelligence gemeldete Netzwerk-Latenz innerhalb der Region an, um eine Vorstellung von der von Google Cloud Platform gemeldeten Latenz für „us-central1“ zu erhalten.

Rufen Sie in der Cloud Console „Network Intelligence“ → „Performance Dashboard“ auf und wählen Sie die im Screenshot unten gezeigten Optionen aus, die eine Latenz von 0,2 bis 0,8 ms angeben.

eaa84848c3185fde.png

HEY us-central1 baseline summary

Beim Vergleich der von den Testtools gemeldeten Gesamtlatenz ergibt sich eine geringere Latenz als beim West-Client, da sich die Compute- (Central-Client) und Vertex-Endpunkte (Modell und Onlinevorhersage) in derselben Region befinden.

Latenz-Tool

Dauer

Network Intelligence: Latenz innerhalb der Region „us-central1“

~0,2 bis 0,8 ms

Cloud Monitoring: Gesamtlatenz der Vorhersage [99. Perzentil]

30,533 ms (99.Perzentil)

Von Google gemeldete Gesamtlatenz

ca. 30.733 bis 31.333 ms

HEY-Clientlatenz

35 ms (99. Perzentil)

18. Glückwunsch

Glückwunsch! Sie haben HEY erfolgreich bereitgestellt und validiert, um die clientseitige Vorhersage-Basislatenz mithilfe einer Kombination aus Cloud Monitoring und Network Intelligence zu ermitteln. Bei Tests wurde festgestellt, dass ein Vorhersageendpunkt in us-central regionsübergreifend bereitgestellt werden kann. Es wurde jedoch eine Latenz beobachtet.

Cosmopup findet Tutorials toll!!

e6d3675ca7c6911f.jpeg

19. Bereinigen

Löschen Sie die Komponenten der Anleitung in Cloud Shell.

gcloud compute instances delete central-client --zone=us-central1-a -q

gcloud compute instances delete west-client --zone=us-west1-a -q

gcloud compute instances delete workbench-tutorial --zone=us-central1-a -q

gcloud compute forwarding-rules delete pscvertex --global --quiet 

gcloud compute addresses delete psc-ip --global --quiet

gcloud compute networks subnets delete workbench-subnet --region=us-central1 --quiet 

gcloud compute networks subnets delete us-west1-subnet --region=us-west1 --quiet

gcloud compute networks subnets delete us-central1-subnet --region=us-central1 --quiet

gcloud compute routers delete cloud-router-us-west1-aiml-nat --region=us-west1 --quiet

gcloud compute routers delete cloud-router-us-central1-aiml-nat --region=us-central1 --quiet

gcloud compute firewall-rules delete  ssh-iap-vpc --quiet

gcloud dns record-sets delete *.googleapis.com. --zone=psc-googleapis --type=A --quiet

gcloud dns managed-zones delete psc-googleapis --quiet

gcloud compute networks delete aiml-vpc --quiet

gcloud storage rm -r gs://$projectid-cpr-bucket

Folgendes wurde aus der Cloud Console gelöscht:

Artifact Registry-Ordner

99c17044e2f80919.png

Heben Sie die Bereitstellung des Modells in Vertex AI Model Registry auf:

f5b315f089ae6283.png

Löschen Sie den Endpunkt aus Vertex AI Online Prediction.

9b58688a5037de84.png

Nächste Schritte

Hier findest du einige Tutorials:

Weitere Informationen und Videos

Referenzdokumente