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:
Nachfolgend finden Sie Details zum Anwendungsfall:
- Mit HEY von einer GCE-Instanz in us-west1 auf die Onlinevorhersage in us-central1 zugreifen
- Prüfen, ob PSC für den Zugriff auf die Vertex API verwendet wird
- Führe die curl-Funktion mit HEY 5 Minuten lang durch
- Latenz mit Cloud Monitoring validieren
- Interregionale Latenz mit Network Intelligence validieren
- Mit HEY von einer GCE-Instanz in us-central1 auf die Onlinevorhersage in us-central1 zugreifen
- Prüfen, ob PSC für den Zugriff auf die Vertex API verwendet wird
- Führe die curl-Funktion mit HEY 5 Minuten lang durch
- Latenz mit Cloud Monitoring validieren
- 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
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
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.
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.
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
Fügen Sie den Messwert prediction/online/prediction_latencies ein, wählen Sie die folgenden Optionen aus und klicken Sie auf „Anwenden“.
Aktualisieren Sie „Group by“ (Gruppieren nach) anhand der folgenden Option, „Save Chart“ (Diagramm speichern).
Klicken Sie auf „Speichern“. Sie werden aufgefordert, ein Dashboard auszuwählen. Wählen Sie Neues Dashboard und einen Namen.
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.
Maximieren Sie die Legende, um eine Tabellenansicht zu öffnen.
Beispiel für eine erweiterte Ansicht:
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.
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.
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.
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.
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!
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
Heben Sie die Bereitstellung des Modells in Vertex AI Model Registry auf:
Löschen Sie den Endpunkt in der Onlinevorhersage von Vertex AI.
Was liegt als Nächstes an?
Sehen Sie sich einige dieser Anleitungen an...
Weitere Informationen und Videos
- Private Service Connect – Übersicht
- Was ist Private Service Connect?
- Vorhersagen aus einem ML-Modell abrufen
- Was ist Vertex AI?