1. Introducción
En este instructivo, se muestra cómo crear y evaluar las métricas de predicción en línea de Cloud Monitoring cuando se realizan pruebas de referencia en us-central1 y us-west1 en un extremo de Prediction implementado en us-central1 con la herramienta de rendimiento web HEY.
Qué compilarás
Configurarás una red de VPC llamada aiml-vpc que consta de subredes e instancias en us-west1 y us-central1 que se usarán para generar tráfico con HEY que segmenta una predicción en línea y un modelo implementado en us-central1.
Private Service Connect y DNS privado también se incorporan en el instructivo para demostrar cómo los entornos locales y de múltiples nubes pueden aprovechar PSC para acceder a googleapis.
En el instructivo, se usarán Cloud Monitoring y Network Intelligence para validar el tráfico generado desde HEY hacia la predicción en línea. Si bien los pasos descritos en el instructivo se implementan en una VPC, puedes aprovecharlos para implementar y obtener un valor de referencia de las APIs de Vertex desde entornos locales o de múltiples nubes. La arquitectura de red consta de los siguientes componentes:

A continuación, se muestran los detalles del caso de uso:
- Accede a la predicción en línea en us-central1 desde instancias de GCE en us-west1 con HEY
- Verifica que se use PSC para acceder a la API de Vertex
- Realiza una solicitud curl con HEY durante 5 minutos
- Valida la latencia con Cloud Monitoring
- Valida la latencia entre regiones con Network Intelligence
- Accede a la predicción en línea en us-central1 desde una instancia de GCE en us-central1 con HEY
- Verifica que se use PSC para acceder a la API de Vertex
- Realiza una solicitud curl con HEY durante 5 minutos
- Valida la latencia con Cloud Monitoring
- Valida la latencia dentro de la región con Network Intelligence
Qué aprenderás
- Cómo establecer un extremo de Private Service Connect
- Cómo generar carga en una predicción en línea con HEY
- Cómo crear métricas de Vertex AI con Cloud Monitoring
- Cómo usar Network Intelligence para validar la latencia intrarregional y entre regiones
Requisitos
- Proyecto de Google Cloud
Permisos de IAM
Administrador de red de Compute
Administrador de red de Compute
2. Antes de comenzar
Actualiza el proyecto para que admita el instructivo
En este instructivo, se usan variables para facilitar la implementación de la configuración de gcloud en Cloud Shell.
Dentro de Cloud Shell, haz lo siguiente:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
3. Configuración de aiml-vpc
Crea la VPC de aiml
gcloud services enable networkmanagement.googleapis.com
Dentro de Cloud Shell, haz lo siguiente:
gcloud compute networks create aiml-vpc --project=$projectid --subnet-mode=custom
Dentro de Cloud Shell, habilita la API de Network Management para Network Intelligence.
gcloud services enable networkmanagement.googleapis.com
Crea la subred del notebook administrado por el usuario
Dentro de Cloud Shell, crea la subred 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
Dentro de Cloud Shell, crea la subred 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
Dentro de Cloud Shell, crea la subred 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
Configuración de Cloud Router y NAT
Cloud NAT se usa en el instructivo para descargar paquetes de software porque la instancia de GCE no tiene una dirección IP externa. Cloud NAT proporciona capacidades de NAT de salida, lo que significa que los hosts de Internet no pueden iniciar la comunicación con un notebook administrado por el usuario, lo que lo hace más seguro.
Dentro de Cloud Shell, crea el Cloud Router regional, us-west1.
gcloud compute routers create cloud-router-us-west1-aiml-nat --network aiml-vpc --region us-west1
Dentro de Cloud Shell, crea la puerta de enlace de Cloud NAT regional, 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
Dentro de Cloud Shell, crea el Cloud Router regional, us-central1.
gcloud compute routers create cloud-router-us-central1-aiml-nat --network aiml-vpc --region us-central1
Dentro de Cloud Shell, crea la puerta de enlace de Cloud NAT regional, 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 el extremo de Private Service Connect
En la siguiente sección, crearás un extremo de Private Service Connect (PSC) que se usará para acceder a la API de Vertex desde aiml-vpc.
Desde Cloud Shell
gcloud compute addresses create psc-ip \
--global \
--purpose=PRIVATE_SERVICE_CONNECT \
--addresses=100.100.10.10 \
--network=aiml-vpc
Almacena "pscendpointip" durante el lab
pscendpointip=$(gcloud compute addresses list --filter=name:psc-ip --format="value(address)")
echo $pscendpointip
Crea el extremo de PSC
Desde Cloud Shell
gcloud compute forwarding-rules create pscvertex \
--global \
--network=aiml-vpc \
--address=psc-ip \
--target-google-apis-bundle=all-apis
Enumera los extremos de Private Service Connect configurados
Desde Cloud Shell
gcloud compute forwarding-rules list \
--filter target="(all-apis OR vpc-sc)" --global
Describe los extremos de Private Service Connect configurados
Desde Cloud Shell
gcloud compute forwarding-rules describe \
pscvertex --global
5. Crea una cuenta de servicio para las instancias de GCE
Para proporcionar un nivel de control preciso a la API de Vertex, se requiere una cuenta de servicio administrada por el usuario que se aplicará a las instancias centrales y occidentales. Una vez generados, los permisos de la cuenta de servicio se pueden modificar según los requisitos de la empresa. En el instructivo, la cuenta de servicio administrada por el usuario, vertex-sa, tendrá los siguientes roles aplicados:
Debes la API de Service Account antes de continuar.
Dentro de Cloud Shell, crea la cuenta de servicio.
gcloud iam service-accounts create vertex-gce-sa \
--description="service account for vertex" \
--display-name="vertex-sa"
Dentro de Cloud Shell, actualiza la cuenta de servicio con el rol de administrador de instancias de Compute.
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:vertex-gce-sa@$projectid.iam.gserviceaccount.com" --role="roles/compute.instanceAdmin.v1"
Dentro de Cloud Shell, actualiza la cuenta de servicio con el rol de usuario de Vertex AI.
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:vertex-gce-sa@$projectid.iam.gserviceaccount.com" --role="roles/aiplatform.user"
6. Crea una cuenta de servicio administrada por el usuario (notebook)
En la siguiente sección, crearás una cuenta de servicio administrada por el usuario que se asociará con Vertex Workbench (notebook) que se usa en el instructivo.
En el instructivo, se aplicarán las siguientes reglas a la cuenta de servicio:
Dentro de Cloud Shell, crea la cuenta de servicio.
gcloud iam service-accounts create user-managed-notebook-sa \
--display-name="user-managed-notebook-sa"
En Cloud Shell, actualiza la cuenta de servicio con el rol de administrador de Storage.
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/storage.admin"
Dentro de Cloud Shell, actualiza la cuenta de servicio con el rol de usuario de Vertex AI.
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/aiplatform.user"
Dentro de Cloud Shell, actualiza la cuenta de servicio con el rol de administrador de Artifact Registry.
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/artifactregistry.admin"
Dentro de Cloud Shell, enumera la cuenta de servicio y anota la dirección de correo electrónico que se usará cuando crees el notebook administrado por el usuario.
gcloud iam service-accounts list
7. Crea las instancias de prueba
En la siguiente sección, crearás instancias de prueba para realizar pruebas de referencia desde us-west1 y us-central1.
Dentro de Cloud Shell, crea el cliente 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"
Dentro de Cloud Shell, crea el cliente central.
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"
Para permitir que IAP se conecte a tus instancias de VM, crea una regla de firewall que cumpla con lo siguiente:
- Se aplica a todas las instancias de VM a las que deseas acceder mediante IAP.
- Permite el tráfico de entrada desde el rango de IP 35.235.240.0/20. Este rango contiene todas las direcciones IP que IAP usa para el reenvío de TCP.
Dentro de Cloud Shell, crea la regla de firewall de 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 administrado por el usuario
En la siguiente sección, crea un notebook administrado por el usuario que incorpore la cuenta de servicio creada anteriormente, user-managed-notebook-sa.
Dentro de Cloud Shell, crea la instancia de 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
Navega a Vertex AI → Workbench para ver el notebook implementado.

9. Implementa el modelo y la predicción en línea
En la siguiente sección, usa el codelabproporcionado, Vertex AI:Usa rutinas de predicción personalizadas con Sklearn para preprocesar y posprocesar datos para predicciones, y comienza con la sección 7, ya que creaste un notebook en el paso anterior. Una vez que se implemente el modelo, regresa al instructivo para comenzar la siguiente sección.

10. Crea un panel de supervisión personalizado para la predicción en línea
La Predicción en línea crea un panel de supervisión predeterminado en VERTEX AI → PREDICCIÓN EN LÍNEA → NOMBRE DEL EXTREMO (diamonds-cpr_endpoint). Sin embargo, para nuestras pruebas, necesitamos definir una hora de inicio y una hora de detención, por lo que se requiere un panel personalizado.
En la siguiente sección, crearás métricas de Cloud Monitoring para obtener mediciones de latencia basadas en el acceso regional al extremo de predicción en línea y, así, validar la diferencia de latencia cuando se accede a un extremo en us-central1 desde instancias de GCE implementadas en us-west1 y us-central.
Para el instructivo, usaremos las métricas de prediction_latencies. Hay métricas adicionales disponibles en aiplatform.
Métrica | Descripción |
prediction/online/prediction_latencies | Es la latencia de la predicción en línea del modelo implementado. |
Crea un gráfico para la métrica prediction_latencies
En Cloud Console, navega a MONITORING → Explorador de métricas.

Inserta la métrica prediction/online/prediction_latencies y selecciona las siguientes opciones. Luego, selecciona Aplicar.

Actualiza la opción Agrupar por según la siguiente opción y selecciona Guardar gráfico.


Selecciona Guardar. Se te pedirá que selecciones un panel. Selecciona Panel nuevo y proporciona un nombre.

Panel personalizado de Vertex
En la siguiente sección, valida que el panel personalizado de Vertex muestre la hora correcta.
Navega a MONITORING → Panel y selecciona Vertex Custom Dashboard, y, luego, selecciona el período. Asegúrate de que la zona horaria sea correcta.

Asegúrate de expandir la leyenda para obtener una vista de tabla.

Ejemplo de vista expandida:

11. Crea un DNS privado para el extremo de PSC
Crea una zona de DNS privada en la VPC de aiml para resolver todas las googleapis en la dirección IP del extremo de PSC 100.100.10.10.
En Cloud Shell, crea una zona del DNS privado.
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"
Desde Cloud Shell, crea el registro A que asocia *. googleapis.com a la IP de PSC.
gcloud dns --project=$projectid record-sets create *.googleapis.com. --zone="psc-googleapis" --type="A" --ttl="300" --rrdatas="100.100.10.10"
12. Variables de prueba de Hey
Hey ofrece a los usuarios finales la capacidad de personalizar las pruebas según los requisitos de la red y la aplicación. Para los fines de este instructivo, usaremos la opción que se detalla a continuación con una cadena de ejecución de muestra:
c == 1 trabajador
z == Duration
m == método HTTP POST
D == Cuerpo de la solicitud HTTP del archivo instances.json
n == Cantidad de solicitudes que se ejecutarán. El valor predeterminado es 200.
Ejemplo de cadena de curl con HEY (no se requiere ejecución)
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. Obtén el ID de predicción
Obtén el ID del extremo de predicción en línea de Cloud Console que se usará en los pasos posteriores.
Navega a VERTEX AI → ONLINE PREDICTION.

14. Descarga y ejecuta HEY (us-west1)
En la siguiente sección, accederás a west-client para descargar y ejecutar HEY en la predicción en línea ubicada en us-central1.
Desde Cloud Shell, accede a west-client y descarga HEY.
gcloud compute ssh west-client --project=$projectid --zone=us-west1-a --tunnel-through-iap
Descarga HEY desde el SO y actualiza los permisos.
wget https://hey-release.s3.us-east-2.amazonaws.com/hey_linux_amd64
chmod +x hey_linux_amd64
En el SO, crea las siguientes variables:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
ENDPOINT_ID="insert-your-endpoint-id-here"
Ejemplo:
ENDPOINT_ID="2706243362607857664"
En la siguiente sección, crearás un archivo instances.json con el editor vi o nano, y luego insertarás la cadena de datos que se usa para obtener una predicción del modelo implementado.
Desde el SO de west-client, crea un archivo instances.json con la siguiente cadena de datos:
{"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]]}
Ejemplo:
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:$
Prueba previa
Desde el SO, ejecuta un curl para validar que el modelo y el extremo de predicción funcionen correctamente. Observa la IP del extremo de PSC en el registro detallado y el código HTTP/2 200 que indica que la operación se realizó correctamente.
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
Por ejemplo, observa la dirección IP del PSC que se usó para acceder a la predicción y el resultado exitoso.
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
Ejecuta HEY
Desde el SO, ejecuta HEY para habilitar una prueba de referencia de 10 minutos.
./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)
Ahora que ejecutaste Hey desde una instancia de procesamiento en us-west1, evalúa los resultados de lo siguiente:
- Resultados del HEY
- Panel personalizado de Vertex
- Inteligencia de la red
Resultados del HEY
Desde el SO, validemos los resultados de HEY según la ejecución de 10 minutos:
17.5826 solicitudes por segundo
El 99% en 0.0686 s | 68 ms
10,550 respuestas con el código de estado 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
Panel personalizado de Vertex
Navega a MONITORING → Panel y selecciona Panel personalizado de Vertex. Ingresa 10 min o especifica la hora de inicio y finalización. Asegúrate de que la zona horaria sea correcta.

Si observamos la definición de las latencias de predicción, se indica una métrica del servidor que mide el tiempo total para responder a la solicitud del cliente después de obtener una respuesta del modelo.
- Duración total de la latencia: Es el tiempo total que una solicitud pasa en el servicio, que es la latencia del modelo más la latencia de la sobrecarga.
En cambio, HEY es una métrica del cliente que tiene en cuenta los siguientes parámetros:
Solicitud del cliente + Latencia total (incluida la latencia del modelo) + Respuesta del cliente
Inteligencia de red
Ahora, veamos la latencia de red entre regiones que informa Network Intelligence para tener una idea de la latencia de us-west1 a us-central1 que informa Google Cloud Platform.
Navega a Cloud Console Network Intelligence → Panel de rendimiento y selecciona las siguientes opciones que se detallan en la captura de pantalla a continuación, en la que se indica una latencia de 32 a 39 ms.

Resumen del modelo de referencia de HEY us-west1
Si comparas los informes de latencia total de las herramientas de prueba, obtendrás aproximadamente la misma latencia que informa HEY. La latencia entre regiones representa la mayor parte de la latencia. Veamos cómo se comporta el cliente central en la siguiente serie de pruebas.
Herramienta de latencia | Duración |
Network Intelligence: Latencia de us-west1 a us-central1 | De 32 a 39 ms aprox. |
Cloud Monitoring: Latencia total de predicción [percentil 99] | 34.58 ms (99º percentil) |
Latencia total informada por Google | Aproximadamente de 66.58 a 73.58 ms |
Distribución de latencia del cliente de HEY | 68 ms (99º percentil) |
16. Descarga y ejecuta HEY (us-central1)
En la siguiente sección, accederás a central-client para descargar y ejecutar HEY en la predicción en línea ubicada en us-central1.
Desde Cloud Shell, accede a central-client y descarga HEY.
gcloud compute ssh central-client --project=$projectid --zone=us-central1-a --tunnel-through-iap
Descarga HEY desde el SO y actualiza los permisos.
wget https://hey-release.s3.us-east-2.amazonaws.com/hey_linux_amd64
chmod +x hey_linux_amd64
En el SO, crea las siguientes variables:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
ENDPOINT_ID="insert-your-endpoint-id-here"
Ejemplo:
ENDPOINT_ID="2706243362607857664"
En la siguiente sección, crearás un archivo instances.json con el editor vi o nano, y luego insertarás la cadena de datos que se usa para obtener una predicción del modelo implementado.
Desde el SO de west-client, crea un archivo instances.json con la siguiente cadena de datos:
{"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]]}
Ejemplo:
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:$
Prueba previa
Desde el SO, ejecuta un curl para validar que el modelo y el extremo de predicción funcionen correctamente. Observa la IP del extremo de PSC en el registro detallado y el código HTTP/2 200 que indica que la operación se realizó correctamente.
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
Por ejemplo, observa la dirección IP del PSC que se usó para acceder a la predicción y el resultado exitoso.
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
Ejecutar HEY
Desde el SO, ejecuta HEY para habilitar una prueba de referencia de 10 minutos.
./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)
Ahora que ejecutaste Hey desde una instancia de procesamiento en us-central1, evalúa los resultados de lo siguiente:
- Resultados del HEY
- Panel personalizado de Vertex
- Inteligencia de la red
Resultados de HEY
Desde el SO, validemos los resultados de HEY en función de la ejecución de 10 minutos:
44.9408 solicitudes por segundo
99% en 0.0353 s | 35 ms
26965 respuestas con el código de estado 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
Panel personalizado de Vertex
Navega a MONITORING → Panel y selecciona Vertex Custom Dashboard. Luego, ingresa 10 min. O bien la hora de inicio y finalización Asegúrate de que la zona horaria sea correcta.
Las latencias de predicción de los últimos 10 minutos arrojan 30.533 ms.
Si observamos la definición de las latencias de predicción, se indica una métrica del servidor que mide el tiempo total para responder a la solicitud del cliente después de obtener una respuesta del modelo.
- Duración total de la latencia: Es el tiempo total que una solicitud pasa en el servicio, que es la latencia del modelo más la latencia de la sobrecarga.
En cambio, HEY es una métrica del cliente que tiene en cuenta los siguientes parámetros:
Solicitud del cliente + Latencia total (incluida la latencia del modelo) + Respuesta del cliente
Inteligencia de red
Ahora, veamos la latencia de red dentro de la región que informa Network Intelligence para tener una idea de la latencia de us-central1 que informa Google Cloud Platform.
Navega a Cloud Console Network Intelligence → Panel de rendimiento y selecciona las siguientes opciones que se detallan en la captura de pantalla a continuación, en la que se indica una latencia de 0 .2 a 0 .8 ms.

Resumen del modelo de referencia de HEY para us-central1
La comparación de la latencia total que informan las herramientas de prueba arroja una latencia más baja que la de west-client debido a los extremos de procesamiento (central-client) y de Vertex (modelo y predicción en línea) en la misma región.
Herramienta de latencia | Duración |
Inteligencia de redes: Latencia intrarregional de us-central1 | De ~0.2 a 0 .8 ms |
Cloud Monitoring: Latencia total de la predicción [percentil 99] | 30.533 ms (99º percentil) |
Latencia total informada por Google | Aproximadamente de 30.733 a 31.333 ms |
Latencia del cliente de HEY | 35 ms (P99) |
18. Felicitaciones
Felicitaciones. Implementaste y validaste correctamente HEY para obtener la latencia de referencia de la predicción del cliente con una combinación de Cloud Monitoring y Network Intelligence. Según las pruebas, identificaste que se puede entregar un extremo de predicción en us-central entre regiones, pero se observó latencia.
Cosmopup cree que los instructivos son geniales.

19. Limpia
Borra los componentes del instructivo desde Cloud Shell.
gcloud compute instances delete central-client --zone=us-central1-a -q
gcloud compute instances delete west-client --zone=us-west1-a -q
gcloud compute instances delete workbench-tutorial --zone=us-central1-a -q
gcloud compute forwarding-rules delete pscvertex --global --quiet
gcloud compute addresses delete psc-ip --global --quiet
gcloud compute networks subnets delete workbench-subnet --region=us-central1 --quiet
gcloud compute networks subnets delete us-west1-subnet --region=us-west1 --quiet
gcloud compute networks subnets delete us-central1-subnet --region=us-central1 --quiet
gcloud compute routers delete cloud-router-us-west1-aiml-nat --region=us-west1 --quiet
gcloud compute routers delete cloud-router-us-central1-aiml-nat --region=us-central1 --quiet
gcloud compute firewall-rules delete ssh-iap-vpc --quiet
gcloud dns record-sets delete *.googleapis.com. --zone=psc-googleapis --type=A --quiet
gcloud dns managed-zones delete psc-googleapis --quiet
gcloud compute networks delete aiml-vpc --quiet
gcloud storage rm -r gs://$projectid-cpr-bucket
En la consola de Cloud, se borró lo siguiente:
Carpeta de Artifact Registry

En Vertex AI Model Registry, anula la implementación del modelo:

Borra el extremo de Vertex AI Online Prediction

¿Qué sigue?
Consulta algunos de estos instructivos…
- Private Service Connect para las API de Google
- Vertex AI: Crea un notebook seguro administrado por el usuario
Lecturas y videos adicionales
- Descripción general de Private Service Connect
- ¿Qué es Private Service Connect?
- Cómo obtener predicciones a partir de un modelo de AA
- ¿Qué es Vertex AI?