1. Introduzione
Questo tutorial mostra come creare e valutare le metriche di previsione online di Cloud Monitoring quando esegui test di base in us-central1 e us-west1 su un endpoint Prediction di cui è stato eseguito il deployment in us-central1 utilizzando lo strumento di analisi delle prestazioni web HEY.
Cosa creerai
Configurerai una rete VPC denominata aiml-vpc composta da subnet e istanze in us-west1 e us-central1 che verranno utilizzate per generare traffico utilizzando HEY come target di una previsione online e di un modello di cui è stato eseguito il deployment in us-central1.
Nel tutorial sono inclusi anche Private Service Connect e DNS privato per mostrare come gli ambienti on-premise e multi-cloud possono sfruttare PSC per accedere a googleapis.
Cloud Monitoring e Network Intelligence verranno utilizzati nel tutorial per convalidare il traffico generato da HEY alla previsione online. Sebbene i passaggi descritti nel tutorial vengano implementati in un VPC, puoi sfruttarli per eseguire il deployment e ottenere una baseline delle API Vertex da ambienti on-premise o multi-cloud. L'architettura di rete è costituita dai seguenti componenti:

Di seguito sono riportati i dettagli del caso d'uso:
- Accedere alla previsione online in us-central1 da un'istanza GCE in us-west1 utilizzando HEY
- Verifica che PSC venga utilizzato per accedere all'API Vertex
- Esegui un curl utilizzando HEY per 5 minuti
- Convalida della latenza utilizzando Cloud Monitoring
- Convalidare la latenza tra regioni utilizzando Network Intelligence
- Accedere alla previsione online in us-central1 da un'istanza GCE in us-central1 utilizzando HEY
- Verifica che PSC venga utilizzato per accedere all'API Vertex
- Esegui un curl utilizzando HEY per 5 minuti
- Convalida della latenza utilizzando Cloud Monitoring
- Convalidare la latenza intraregionale utilizzando Network Intelligence
Cosa imparerai a fare
- Come stabilire un endpoint Private Service Connect
- Come generare carico per una previsione online utilizzando HEY
- Come creare metriche Vertex AI utilizzando Cloud Monitoring
- Come utilizzare Network Intelligence per convalidare la latenza intraregionale e interregionale
Che cosa ti serve
- Progetto Google Cloud
Autorizzazioni IAM
2. Prima di iniziare
Aggiornare il progetto per supportare il tutorial
Questo tutorial utilizza le variabili $per facilitare l'implementazione della configurazione di gcloud in Cloud Shell.
In Cloud Shell, esegui le seguenti operazioni:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
3. aiml-vpc setup
Crea aiml-vpc
gcloud services enable networkmanagement.googleapis.com
In Cloud Shell, esegui le seguenti operazioni:
gcloud compute networks create aiml-vpc --project=$projectid --subnet-mode=custom
In Cloud Shell, abilita l'API Network Management per Network Intelligence
gcloud services enable networkmanagement.googleapis.com
Crea la subnet del notebook gestito dall'utente
In Cloud Shell, crea 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
In Cloud Shell, crea 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
In Cloud Shell, crea 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
Configurazione di router Cloud e NAT
Cloud NAT viene utilizzato nel tutorial per scaricare i pacchetti software perché l'istanza GCE non ha un indirizzo IP esterno. Cloud NAT fornisce funzionalità NAT in uscita, il che significa che gli host internet non sono autorizzati a iniziare la comunicazione con un notebook gestito dall'utente, rendendolo più sicuro.
In Cloud Shell, crea il router cloud regionale us-west1.
gcloud compute routers create cloud-router-us-west1-aiml-nat --network aiml-vpc --region us-west1
In Cloud Shell, crea il gateway Cloud NAT regionale 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
In Cloud Shell, crea il router Cloud regionale us-central1.
gcloud compute routers create cloud-router-us-central1-aiml-nat --network aiml-vpc --region us-central1
In Cloud Shell, crea il gateway Cloud NAT regionale 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. Crea l'endpoint Private Service Connect
Nella sezione seguente, creerai un endpoint Private Service Connect (PSC) che verrà utilizzato per accedere all'API Vertex da aiml-vpc.
Da Cloud Shell
gcloud compute addresses create psc-ip \
--global \
--purpose=PRIVATE_SERVICE_CONNECT \
--addresses=100.100.10.10 \
--network=aiml-vpc
Memorizza 'pscendpointip' per la durata del lab
pscendpointip=$(gcloud compute addresses list --filter=name:psc-ip --format="value(address)")
echo $pscendpointip
Crea l'endpoint PSC
Da Cloud Shell
gcloud compute forwarding-rules create pscvertex \
--global \
--network=aiml-vpc \
--address=psc-ip \
--target-google-apis-bundle=all-apis
Elenca gli endpoint Private Service Connect configurati
Da Cloud Shell
gcloud compute forwarding-rules list \
--filter target="(all-apis OR vpc-sc)" --global
Descrivi gli endpoint Private Service Connect configurati
Da Cloud Shell
gcloud compute forwarding-rules describe \
pscvertex --global
5. Crea un service account per le istanze di GCE
Per fornire un controllo granulare all'API Vertex, è necessario un service account gestito dall'utente che verrà applicato alle istanze ovest e centrali. Una volta generate, le autorizzazioni del service account possono essere modificate in base ai requisiti aziendali. Nel tutorial, al service account gestito dall'utente, vertex-sa, verranno applicati i seguenti ruoli:
Prima di procedere, devi l'API Service Account.
In Cloud Shell, crea il service account.
gcloud iam service-accounts create vertex-gce-sa \
--description="service account for vertex" \
--display-name="vertex-sa"
In Cloud Shell, aggiorna il service account con il ruolo compute instance admin
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:vertex-gce-sa@$projectid.iam.gserviceaccount.com" --role="roles/compute.instanceAdmin.v1"
In Cloud Shell, aggiorna il service account con il ruolo Utente Vertex AI
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:vertex-gce-sa@$projectid.iam.gserviceaccount.com" --role="roles/aiplatform.user"
6. Crea un service account gestito dall'utente (Notebooks)
Nella sezione seguente creerai un service account gestito dall'utente che verrà associato a Vertex Workbench (Notebook) utilizzato nel tutorial.
Nel tutorial, al service account verranno applicate le seguenti regole:
In Cloud Shell, crea il service account.
gcloud iam service-accounts create user-managed-notebook-sa \
--display-name="user-managed-notebook-sa"
In Cloud Shell, aggiorna il service account con il ruolo Storage Admin.
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/storage.admin"
In Cloud Shell, aggiorna il service account con il ruolo Utente Vertex AI.
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/aiplatform.user"
In Cloud Shell, aggiorna il service account con il ruolo Amministratore di Artifact Registry.
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/artifactregistry.admin"
In Cloud Shell, elenca il service account e annota l'indirizzo email che verrà utilizzato durante la creazione del notebook gestito dall'utente.
gcloud iam service-accounts list
7. Crea le istanze di test
Nella sezione seguente, creerai istanze di test per eseguire test di base da us-west1 e us-central1.
In Cloud Shell crea 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"
In Cloud Shell, crea central-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"
Per consentire a IAP di connettersi alle tue istanze VM, crea una regola firewall che:
- Si applichi a tutte le istanze VM a cui vuoi accedere tramite IAP.
- Consente il traffico in entrata dall'intervallo IP 35.235.240.0/20. Questo intervallo contiene tutti gli indirizzi IP che utilizzati da IAP per l'inoltro TCP.
In Cloud Shell, crea la regola firewall IAP.
gcloud compute firewall-rules create ssh-iap-vpc \
--network aiml-vpc \
--allow tcp:22 \
--source-ranges=35.235.240.0/20
8. Crea un notebook gestito dall'utente
Nella sezione seguente, crea un notebook gestito dall'utente che incorpora il service account creato in precedenza, user-managed-notebook-sa.
In Cloud Shell, crea l'istanza private-client.
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
Vai a Vertex AI → Workbench per visualizzare il notebook di cui è stato eseguito il deployment.

9. Esegui il deployment del modello e la previsione online
Nella sezione seguente, utilizza il codelab fornito,Vertex AI:utilizza routine di previsione personalizzate con Sklearn per pre-elaborare e post-elaborare i dati per le previsioni, a partire dalla sezione 7, poiché hai già creato un notebook nel passaggio precedente. Una volta eseguito il deployment del modello, torna al tutorial per iniziare la sezione successiva.

10. Crea una dashboard di monitoraggio personalizzata per la previsione online
Online Prediction crea un dashboard di monitoraggio predefinito in VERTEX AI → ONLINE PREDICTION → ENDPOINT NAME (diamonds-cpr_endpoint). Tuttavia, per i nostri test dobbiamo definire un orario di inizio e di fine, pertanto è necessaria una dashboard personalizzata.
Nella sezione seguente, creerai metriche di Cloud Monitoring per ottenere misurazioni della latenza basate sull'accesso regionale all'endpoint di previsione online per convalidare la latenza diversa quando accedi a un endpoint in us-central1 da istanze GCE di cui è stato eseguito il deployment in us-west1 e us-central.
Per il tutorial utilizzeremo le metriche prediction_latencies. Altre metriche sono disponibili in aiplatform.
Metrica | Descrizione |
prediction/online/prediction_latencies | Latenza della previsione online del modello di cui è stato eseguito il deployment. |
Crea un grafico per la metrica prediction_latencies
Da Cloud Console, vai a MONITORING → Esplora metriche.

Inserisci la metrica prediction/online/prediction_latencies e seleziona le seguenti opzioni, poi seleziona Applica.

Aggiorna Raggruppa per in base all'opzione seguente, quindi seleziona Salva grafico.


Seleziona Salva, ti verrà chiesto di selezionare una dashboard. Seleziona Nuova dashboard e fornisci un nome.

Vertex Custom Dashboard
Nella sezione seguente, verifica che la dashboard personalizzata di Vertex mostri l'ora corretta.
Vai a MONITORAGGIO → Dashboard e seleziona Dashboard personalizzata Vertex, quindi seleziona l'ora. Assicurati che il fuso orario sia corretto.

Assicurati di espandere la legenda per ottenere una visualizzazione a tabella.

Esempio di visualizzazione espansa:

11. Crea DNS privato per l'endpoint PSC
Crea una zona DNS privata in aiml-vpc per risolvere tutti i googleapis nell'indirizzo IP dell'endpoint PSC 100.100.10.10.
Da Cloud Shell, crea una zona DNS privata.
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"
Da Cloud Shell, crea il record A che associa *. googleapis.com all'IP PSC.
gcloud dns --project=$projectid record-sets create *.googleapis.com. --zone="psc-googleapis" --type="A" --ttl="300" --rrdatas="100.100.10.10"
12. Hey testing variables
Hey offre agli utenti finali la possibilità di personalizzare i test in base ai requisiti di rete e delle applicazioni. Ai fini del tutorial, utilizzeremo l'opzione descritta di seguito con una stringa di esecuzione di esempio:
c == 1 worker
z == Duration
m == HTTP method POST
D == Corpo della richiesta HTTP dal file instances.json
n == Number of requests to run. Il valore predefinito è 200.
Esempio di stringa curl con HEY (l'esecuzione non è obbligatoria)
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. Ottenere l'ID previsione
Ottieni l'ID endpoint di previsione online da Cloud Console, che verrà utilizzato nei passaggi successivi.
Vai a VERTEX AI → PREVISIONE ONLINE

14. Scarica ed esegui HEY (us-west1)
Nella sezione seguente, accederai a west-client per scaricare ed eseguire HEY rispetto alla previsione online che si trova in us-central1.
Da Cloud Shell, accedi a west-client e scarica HEY
gcloud compute ssh west-client --project=$projectid --zone=us-west1-a --tunnel-through-iap
Dal sistema operativo, scarica HEY e aggiorna le autorizzazioni.
wget https://hey-release.s3.us-east-2.amazonaws.com/hey_linux_amd64
chmod +x hey_linux_amd64
Dal sistema operativo, crea le seguenti variabili:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
ENDPOINT_ID="insert-your-endpoint-id-here"
Esempio:
ENDPOINT_ID="2706243362607857664"
Nella sezione seguente, creerai un file instances.json utilizzando l'editor vi o nano e inserirai la stringa di dati utilizzata per ottenere una previsione dal modello di cui è stato eseguito il deployment.
Dal sistema operativo west-client, crea un file instances.json con la stringa di dati riportata di seguito:
{"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]]}
Esempio:
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
Dal sistema operativo, esegui un comando curl per verificare che l'endpoint del modello e di previsione funzionino correttamente. Prendi nota dell'IP dell'endpoint PSC nel log dettagliato e di HTTP/2 200 che indica l'esito positivo.
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
Esempio: prendi nota dell'indirizzo IP di PSC utilizzato per accedere alla previsione e al risultato positivo.
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
Esegui HEY
Dal sistema operativo, esegui HEY per attivare un test di riferimento di 10 minuti.
./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)
Ora che hai eseguito Hey da un'istanza di computing in us-west1, valuta i risultati da quanto segue:
- Risultati HEY
- Dashboard personalizzata Vertex
- Intelligence di rete
Risultati HEY
Dal sistema operativo, convalidiamo i risultati di HEY in base all'esecuzione di 10 minuti.
17.5826 richieste al secondo
99% in 0,0686 secondi | 68 ms
10.550 risposte con codice di stato 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
Vai a MONITORAGGIO → Dashboard e seleziona Dashboard personalizzata Vertex. Inserisci 10 minuti o specifica l'ora di inizio e di fine. Assicurati che il fuso orario sia corretto.

Se esamini la definizione di Latenze di previsione, noterai una metrica lato server che misura il tempo totale per rispondere alla richiesta dei client dopo aver ottenuto una risposta dal modello.
- Durata latenza totale: il tempo totale che una richiesta trascorre nel servizio, ovvero la latenza del modello più la latenza di overhead.
Al contrario, HEY è una metrica lato client che tiene conto dei seguenti parametri:
Richiesta client + Latenza totale (inclusa la latenza del modello) + Risposta client
Network Intelligence
Ora diamo un'occhiata alla latenza di rete tra regioni segnalata da Network Intelligence per farci un'idea della latenza da us-west1 a us-central1 segnalata da Google Cloud.
Vai a Network Intelligence → Dashboard delle prestazioni di Cloud Console e seleziona le seguenti opzioni dettagliate nello screenshot riportato di seguito, che indica una latenza compresa tra 32 e 39 ms.

HEY us-west1 baseline summary
Il confronto dei report Latenza totale degli strumenti di test produce una latenza approssimativamente uguale a quella segnalata da HEY. La latenza tra regioni contribuisce alla maggior parte della latenza. Vediamo come si comporta il client centrale nella prossima serie di test.
Strumento di latenza | Durata |
Controllo della rete: latenza da us-west1 a us-central1 | ~32-39 ms |
Cloud Monitoring: latenza totale della previsione [99° percentile] | 34,58 ms (99° percentile) |
Latenza totale segnalata da Google | ~ 66,58 - 73,58 ms |
Distribuzione della latenza lato client HEY | 68ms (99p) |
16. Scarica ed esegui HEY (us-central1)
Nella sezione seguente, accederai a central-client per scaricare ed eseguire HEY rispetto alla previsione online che si trova in us-central1.
Da Cloud Shell, accedi al client centrale e scarica HEY
gcloud compute ssh central-client --project=$projectid --zone=us-central1-a --tunnel-through-iap
Dal sistema operativo, scarica HEY e aggiorna le autorizzazioni.
wget https://hey-release.s3.us-east-2.amazonaws.com/hey_linux_amd64
chmod +x hey_linux_amd64
Dal sistema operativo, crea le seguenti variabili:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
ENDPOINT_ID="insert-your-endpoint-id-here"
Esempio:
ENDPOINT_ID="2706243362607857664"
Nella sezione seguente, creerai un file instances.json utilizzando l'editor vi o nano e inserirai la stringa di dati utilizzata per ottenere una previsione dal modello di cui è stato eseguito il deployment.
Dal sistema operativo west-client, crea un file instances.json con la stringa di dati riportata di seguito:
{"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]]}
Esempio:
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
Dal sistema operativo, esegui un comando curl per verificare che l'endpoint del modello e di previsione funzionino correttamente. Prendi nota dell'IP dell'endpoint PSC nel log dettagliato e di HTTP/2 200 che indica l'esito positivo.
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
Esempio: prendi nota dell'indirizzo IP di PSC utilizzato per accedere alla previsione e al risultato positivo.
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
Esegui HEY
Dal sistema operativo, esegui HEY per attivare un test di riferimento di 10 minuti.
./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)
Ora che hai eseguito Hey da un'istanza di computing in us-central1, valuta i risultati da quanto segue:
- Risultati HEY
- Dashboard personalizzata Vertex
- Intelligence di rete
Risultati HEY
Dal sistema operativo, convalidiamo i risultati di HEY in base all'esecuzione di 10 minuti.
44.9408 richieste al secondo
99% in 0,0353 secondi | 35 ms
26.965 risposte con codice di stato 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
Vai a MONITORAGGIO → Dashboard e seleziona Vertex Custom Dashboard, inserisci 10 minuti. Oppure l'ora di inizio e di fine. Assicurati che il fuso orario sia corretto.
Le latenze di previsione degli ultimi 10 minuti sono pari a 30,533 ms.
Se esamini la definizione di Latenze di previsione, noterai una metrica lato server che misura il tempo totale per rispondere alla richiesta dei client dopo aver ottenuto una risposta dal modello.
- Durata latenza totale: il tempo totale che una richiesta trascorre nel servizio, ovvero la latenza del modello più la latenza di overhead.
Al contrario, HEY è una metrica lato client che tiene conto dei seguenti parametri:
Richiesta client + Latenza totale (inclusa la latenza del modello) + Risposta client
Network Intelligence
Ora diamo un'occhiata alla latenza di rete intraregionale segnalata da Network Intelligence per farci un'idea della latenza us-central1 segnalata da Google Cloud Platform.
Vai a Network Intelligence → Dashboard delle prestazioni di Cloud Console e seleziona le seguenti opzioni descritte nello screenshot riportato di seguito, che indica una latenza compresa tra 0,2 e 0,8 ms.

Riepilogo del riferimento HEY us-central1
Il confronto della latenza totale segnalata dagli strumenti di test produce una latenza inferiore rispetto a west-client a causa degli endpoint di calcolo (central-client) e Vertex (modello e previsione online) nella stessa regione.
Strumento di latenza | Durata |
Controllo della rete: latenza intraregionale us-central1 | ~0,2-0,8 ms |
Cloud Monitoring: latenza totale della previsione [99° percentile] | 30,533 ms (99° percentile) |
Latenza totale segnalata da Google | Da circa 30.733 a 31.333 ms |
Latenza lato client HEY | 35 ms (99° percentile) |
18. Complimenti
Congratulazioni, hai eseguito correttamente il deployment e la convalida di HEY per ottenere la latenza di base della previsione lato client utilizzando una combinazione di Cloud Monitoring e Network Intelligence. In base ai test, è stato identificato un endpoint di previsione in us-central che può essere pubblicato tra regioni, ma è stata osservata una latenza.
Cosmopup pensa che i tutorial siano fantastici.

19. Esegui la pulizia
Da Cloud Shell, elimina i componenti del tutorial.
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
Dalla console Cloud sono stati eliminati i seguenti elementi:
Cartella Artifact Registry

Annulla il deployment del modello da Vertex AI Model Registry:

Da previsione online di Vertex AI, elimina l'endpoint.

Passaggi successivi
Dai un'occhiata ad alcuni di questi tutorial…
Ulteriori letture e video
- Panoramica di Private Service Connect
- Che cos'è Private Service Connect?
- Come ottenere previsioni da un modello ML
- Che cos'è Vertex AI?