Referenztests für Vertex AI-Onlinevorhersagen mit HEY

1. Einführung

In dieser Anleitung erfahren Sie, wie Sie Messwerte für die Onlinevorhersage von Cloud Monitoring erstellen und bewerten, wenn Sie Referenztests in us-central1 und us-west1 an einem Vorhersage-Endpunkt in us-central1 mit dem Web-Performance-Tool HEY durchführen.

Aufgaben

Sie richten ein VPC-Netzwerk namens „targetl-vpc“ ein, das aus Subnetzen und Instanzen in „us-west1“ und „us-central1“ besteht. Es wird verwendet, um Traffic mit HEY zu generieren, die auf eine Onlinevorhersage und ein Modell in us-central1 abzielt.

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

In dieser Anleitung werden Cloud Monitoring und Network Intelligence verwendet, um den von HEY an die Onlinevorhersage generierten Traffic zu validieren. Obwohl die in der Anleitung beschriebenen Schritte in einer VPC bereitgestellt werden, können Sie Vertex APIS auch in lokalen oder Multi-Cloud-Umgebungen bereitstellen und eine Referenz dafür abrufen. Die Netzwerkarchitektur besteht aus den folgenden Komponenten:

dd5c102ce1ab0150.png

Nachfolgend finden Sie Details zum Anwendungsfall:

  1. Mit HEY von einer GCE-Instanz in us-west1 auf die Onlinevorhersage in us-central1 zugreifen
  2. Prüfen, ob PSC für den Zugriff auf die Vertex API verwendet wird
  3. Führe die curl-Funktion mit HEY 5 Minuten lang durch
  4. Latenz mit Cloud Monitoring validieren
  5. Interregionale Latenz mit Network Intelligence validieren
  6. Mit HEY von einer GCE-Instanz in us-central1 auf die Onlinevorhersage in us-central1 zugreifen
  7. Prüfen, ob PSC für den Zugriff auf die Vertex API verwendet wird
  8. Führe die curl-Funktion mit HEY 5 Minuten lang durch
  9. Latenz mit Cloud Monitoring validieren
  10. Intraregionale Latenz mit Network Intelligence validieren

Aufgaben in diesem Lab

  • Private Service Connect-Endpunkt einrichten
  • Last für eine Onlinevorhersage mit HEY generieren
  • Vertex AI-Messwerte mit Cloud Monitoring erstellen
  • How to use Network Intelligence to valid intra & Interregionale Latenz

Voraussetzungen

  • Google Cloud-Projekt

IAM-Berechtigungen

Compute-Netzwerkadministrator

Compute-Netzwerkadministrator

Service Directory-Bearbeiter

DNS-Administrator

Netzwerkverwaltungs-Betrachter

2. Hinweis

Projekt zur Unterstützung der Anleitung aktualisieren

In dieser Anleitung wird mithilfe von $variables die Implementierung der gcloud-Konfiguration in Cloud Shell unterstützt.

Führen Sie in Cloud Shell die folgenden Schritte aus:

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

3. Ziel-VPC-Einrichtung

targetl-vpc erstellen

gcloud services enabled networkmanagement.googleapis.com

Führen Sie in Cloud Shell die folgenden Schritte aus:

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

In Cloud Shell die Network Management API für Network Intelligence aktivieren

gcloud services enable networkmanagement.googleapis.com

Nutzerverwaltetes Notebook-Subnetz erstellen

Erstellen Sie in Cloud Shell das Workbench-Subnetz.

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

In der Anleitung wird Cloud NAT zum Herunterladen von Softwarepaketen verwendet, da die GCE-Instanz keine externe IP-Adresse hat. Cloud NAT bietet NAT-Funktionen für ausgehenden Traffic, was bedeutet, dass Internethosts keine Kommunikation mit einem nutzerverwalteten 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 den Ziell-vpc verwendet wird.

Von Cloud Shell

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

„pscendpointip“ speichern für die Dauer des Labs

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

echo $pscendpointip

PSC-Endpunkt erstellen

Von 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

Von Cloud Shell

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

Konfigurierte Private Service Connect-Endpunkte beschreiben

Von Cloud Shell

gcloud compute forwarding-rules describe \
    pscvertex --global

5. Dienstkonto für die GCE-Instanzen erstellen

Um die Vertex API genau steuern zu können, ist ein vom Nutzer verwaltetes Dienstkonto erforderlich, das auf die westliche und die zentrale Instanz angewendet wird. Nachdem die Dienstkontoberechtigungen erstellt wurden, können sie je nach Geschäftsanforderungen geändert werden. In dieser Anleitung werden dem vom Nutzer verwalteten Dienstkonto Vertex-sa die folgenden Rollen angewendet:

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 in Cloud Shell das Dienstkonto 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 in Cloud Shell das Dienstkonto 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 vom Nutzer verwaltetes Dienstkonto, das mit dem in der Anleitung verwendeten Vertex Workbench (Notebook) verknüpft wird.

In der Anleitung werden die folgenden Regeln auf das Dienstkonto 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 in Cloud Shell das Dienstkonto mit der Rolle „Storage Admin“.

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

Aktualisieren Sie in Cloud Shell das Dienstkonto 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 in Cloud Shell das Dienstkonto 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 Referenztests in 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, müssen Sie eine Firewallregel erstellen, die:

  • Gilt für alle VM-Instanzen, die mit 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

Notebook API

Erstellen Sie im folgenden Abschnitt ein nutzerverwaltetes Notebook, das das zuvor erstellte Dienstkonto „user-managed-notebook-sa“ enthält.

Erstellen Sie in Cloud Shell die Instanz des privaten Clients.

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

Gehen Sie zu Vertex AI → Workbench, um Ihr bereitgestelltes Notebook anzusehen.

b02fcb9b07dca06a.png

9. Modell und Onlinevorhersage bereitstellen

Verwenden Sie im folgenden Abschnitt das bereitgestellte Codelab:Vertex AI:Benutzerdefinierte Vorhersageroutinen mit Sklearn verwenden, um Daten für Vorhersagen vorzuverarbeiten und zu posten. Beginnen Sie 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 unter VERTEX AI → ONLINE-PROGNOSE → ENDPOINT NAME (diamonds-cpr_endpoint) ein standardmäßiges Monitoring-Dashboard erstellt. Für unsere Tests müssen wir jedoch eine Start- und Endzeit festlegen, daher ist ein benutzerdefiniertes Dashboard erforderlich.

Im folgenden Abschnitt erstellen Sie Cloud Monitoring-Messwerte, um Latenzmessungen basierend auf dem regionalen Zugriff auf den Endpunkt der Onlinevorhersage zu erhalten und die unterschiedlichen Latenzzeiten zu validieren, wenn über GCE-Instanzen in us-west1 und us-central auf einen Endpunkt in us-central1 zugegriffen wird.

In diesem Tutorial verwenden wir die Messwerte „vorhersage_latenzen“. Weitere Messwerte sind in aiplatform verfügbar.

Messwert

Beschreibung

prediction/online/prediction_latencies

Latenz der Onlinevorhersage des bereitgestellten Modells.

Diagramm für den Messwert „Predict_latencies“ erstellen

Gehen Sie in der Cloud Console zu MONITORING → Metrics Explorer

536668ab0b29d77.png

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

c1edd34208cb5ee2.png

Aktualisieren Sie „Group by“ (Gruppieren nach) anhand der folgenden Option, „Save Chart“ (Diagramm speichern).

e180a5d8a044b6e1.png

d2ecd6677a3b34e0.png

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

e29a39dc941c8599.png

Benutzerdefiniertes Vertex-Dashboard

Prüfen Sie im folgenden Abschnitt, ob das benutzerdefinierte Vertex Dashboard die korrekte Zeit anzeigt.

Gehen Sie zu MONITORING → Dashboard, wählen Sie „Vertex Custom Dashboard“ und dann die Uhrzeit aus. Achten Sie darauf, dass Ihre Zeitzone korrekt ist.

f43ebed798ce1147.png

Maximieren Sie die Legende, um eine Tabellenansicht zu öffnen.

61ffeef22e067ca9.png

Beispiel für eine erweiterte Ansicht:

9027e8785c023129.png

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

Erstellen Sie eine private DNS-Zone im Ziell-vpc, um alle googleapis-Dateien in die IP-Adresse 100.100.10.10 des PSC-Endpunkts 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-Eintrag, der * verknüpft. googleapis.com an die PSC-IP-Adresse.

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

12. Variablen testen

Hey bietet Endnutzern die Möglichkeit, Tests je nach Netzwerk- und Anwendungsanforderungen anzupassen. Für diese Anleitung verwenden wir die unten beschriebene Option mit einem Beispielausführungsstring:

c == 1 Worker

z == Dauer

m == HTTP-Methode POST

D == HTTP-Anfragetext aus 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 aus der Cloud Console Ihre Endpunkt-ID für die Onlinevorhersage ab, die in den nachfolgenden Schritten verwendet wird.

Gehen Sie zu VERTEX AI → ONLINE PROGNOSE.

ce4d4a88a3fa2345.png

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

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

Melden Sie sich in Cloud Shell bei „west-client“ an und laden Sie „HEY“ herunter.

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

Lade „HEY“ im Betriebssystem herunter und aktualisiere 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 Editor „vi“ oder „nano“ eine Datei „instances.json“ und fügen den Datenstring ein, der verwendet wird, um eine Vorhersage aus dem bereitgestellten Modell zu erhalten.

Erstellen Sie im West-Client-Betriebssystem ein 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:$

Vortest

Führen Sie im Betriebssystem einen curl-Befehl aus, um zu prüfen, ob das Modell und der Vorhersageendpunkt wie gewünscht funktionieren. Die IP-Adresse des PSC-Endpunkts im ausführlichen Log und HTTP/2 200 zeigen den Erfolg an.

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

Notieren Sie sich zum Beispiel die PSC-IP-Adresse, die für den Zugriff auf Vorhersagen und ein erfolgreiches Ergebnis zu erzielen.

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 im Betriebssystem HEY aus, um einen 10-minütigen Referenztest zu starten.

./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 nun von einer Compute-Instanz in us-west1 ausgeführt haben, werten Sie die folgenden Ergebnisse aus:

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

HEY-Ergebnisse

Lassen Sie uns im Betriebssystem die HEY-Ergebnisse basierend auf der 10-minütigen Ausführung 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

Benutzerdefiniertes Vertex-Dashboard

Gehen Sie zu MONITORING → Dashboard und wählen Sie „Vertex Custom Dashboard“ aus. Geben Sie 10 Min. ein oder legen Sie eine Start- und Endzeit fest. Achten Sie darauf, dass Ihre Zeitzone korrekt ist.

4102b1d0438c78e3.png

Ein Blick auf die Definition der Vorhersagelatenzen zeigt einen serverseitigen Messwert, der die Gesamtzeit misst, die für die Beantwortung der Clientanfrage nach Erhalt einer Antwort vom Modell benötigt wird.

  • Gesamtlatenzdauer: Die Gesamtzeit, die eine Anfrage im Dienst verbringt. Dies ergibt sich aus der Modelllatenz plus der Overhead-Latenz.

Im Gegensatz dazu ist „HEY“ ein clientseitiger Messwert, bei dem die folgenden Parameter berücksichtigt werden:

Clientanfrage + Gesamtlatenz (einschließlich Modelllatenz) + Clientantwort

Netzwerkintelligenz

Werfen wir nun einen Blick auf die interregionale Netzwerklatenz, die von Network Intelligence gemeldet wurde, um eine Vorstellung von der von der Google Cloud Platform gemeldeten Latenz zwischen us-west1 und us-central1 zu erhalten.

Rufen Sie in der Cloud Console Network Intelligence → Dashboard zur Leistungsüberwachung auf und wählen Sie die folgenden Optionen aus, die im Screenshot unten beschrieben sind. Diese geben eine Latenz von 32 bis 39 ms an.

aade5f757115721.png

HEY us-west1 – Referenzzusammenfassung

Ein Vergleich der Berichte zur Gesamtlatenz durch die Testtools ergibt ungefähr die gleiche Latenz, die von HEY gemeldet wird. Die interregionale Latenz trägt den Großteil der Latenz bei. Sehen wir uns in der nächsten Testreihe an, wie der Central Client abschneidet.

Latenztool

Dauer

Netzwerkinformationen: Latenz zwischen us-west1 und us-central1

~32 bis 39 ms

Cloud Monitoring: Gesamtlatenz der Vorhersage [99. %]

34,58 ms (99p)

Von Google gemeldete Gesamtlatenz

~ 66,58 bis 73,58 ms

HEY – clientseitige Latenzverteilung

68ms (99p)

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

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

Melden Sie sich in Cloud Shell im zentralen Client an und laden Sie „HEY“ herunter

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

Lade „HEY“ im Betriebssystem herunter und aktualisiere 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 Editor „vi“ oder „nano“ eine Datei „instances.json“ und fügen den Datenstring ein, der verwendet wird, um eine Vorhersage aus dem bereitgestellten Modell zu erhalten.

Erstellen Sie im West-Client-Betriebssystem ein 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:$

Vortest

Führen Sie im Betriebssystem einen curl-Befehl aus, um zu prüfen, ob das Modell und der Vorhersageendpunkt wie gewünscht funktionieren. Die IP-Adresse des PSC-Endpunkts im ausführlichen Log und HTTP/2 200 zeigen den Erfolg an.

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

Notieren Sie sich zum Beispiel die PSC-IP-Adresse, die für den Zugriff auf Vorhersagen und ein erfolgreiches Ergebnis zu erzielen.

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 im Betriebssystem HEY aus, um einen 10-minütigen Referenztest zu starten.

./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 nun von einer Compute-Instanz in us-central1 ausgeführt haben, sollten Sie die folgenden Ergebnisse auswerten:

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

HEY-Ergebnisse

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

44,9408 Anfragen pro Sekunde

99% in 0,0353 Sekunden | 35 ms

26965-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

Benutzerdefiniertes Vertex-Dashboard

Gehen Sie zu MONITORING → Dashboard, wählen Sie „Vertex Custom Dashboard“ aus und geben Sie „10m“ ein. oder die Start- und Endzeit. Achten Sie darauf, dass Ihre Zeitzone korrekt ist.

Die Vorhersagelatenzen für die letzten 10 Monate ergeben 30,533 ms.

Ein Blick auf die Definition der Vorhersagelatenzen zeigt einen serverseitigen Messwert, der die Gesamtzeit misst, die für die Beantwortung der Clientanfrage nach Erhalt einer Antwort vom Modell benötigt wird.

  • Gesamtlatenzdauer: Die Gesamtzeit, die eine Anfrage im Dienst verbringt. Dies ergibt sich aus der Modelllatenz plus der Overhead-Latenz.

Im Gegensatz dazu ist „HEY“ ein clientseitiger Messwert, bei dem die folgenden Parameter berücksichtigt werden:

Clientanfrage + Gesamtlatenz (einschließlich Modelllatenz) + Clientantwort

Netzwerkintelligenz

Werfen wir nun einen Blick auf die von Network Intelligence gemeldete intraregionale Netzwerklatenz, um eine Vorstellung von der von der Google Cloud Platform gemeldeten us-central1-Latenz zu erhalten.

Rufen Sie in der Cloud Console Network Intelligence → Dashboard zur Leistungsüberwachung auf und wählen Sie die folgenden Optionen aus, die im Screenshot unten beschrieben sind. Diese geben eine Latenz von 0,2 bis 0,8 ms an.

eaa84848c3185fde.png

HEY us-central1: Zusammenfassung

Der Vergleich der von den Testtools gemeldeten Gesamtlatenz ergibt eine geringere Latenz als der West-Client aufgrund der Computing-Endpunkte (Zentralclient) und Vertex-Endpunkte (Modell und Onlinevorhersage) in derselben Region.

Latenztool

Dauer

Netzwerkinformationen: regionsübergreifende Latenz für us-central1

~0,2 bis 0,8 ms

Cloud Monitoring: Gesamtlatenz der Vorhersage [99. %]

30,533 ms (99p)

Von Google gemeldete Gesamtlatenz

~30,733 bis 31,333 ms

HEY – clientseitige Latenz

35 ms (99p)

18. Glückwunsch

Herzlichen Glückwunsch! Sie haben erfolgreich HEY bereitgestellt und validiert, um mithilfe einer Kombination aus Cloud Monitoring und Network Intelligence die clientseitige Referenzlatenz von Vorhersagen zu ermitteln. In Tests haben Sie festgestellt, dass ein Vorhersageendpunkt in us-central zwischen den Regionen bereitgestellt werden kann, wobei jedoch eine Latenz festgestellt wurde.

Cosmopup findet die Anleitungen super!

e6d3675ca7c6911f.jpeg

19. Bereinigen

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

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

In der Cloud Console wurde Folgendes 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 in der Onlinevorhersage von Vertex AI.

9b58688a5037de84.png

Was liegt als Nächstes an?

Sehen Sie sich einige dieser Anleitungen an...

Weitere Informationen und Videos

Referenzdokumente