1. Introdução
Neste tutorial, mostramos como criar e avaliar métricas de previsão on-line do Cloud Monitoring ao realizar testes de comparativo de mercado nas regiões us-central1 e us-west1 em um endpoint de previsão implantado em us-central1 usando a ferramenta de desempenho da Web HEY.
O que você vai criar
Você vai configurar uma rede VPC chamada aiml-vpc, que consiste em sub-redes e instâncias em us-west1 e us-central1. Ela será usada para gerar tráfego usando o HEY, segmentando uma previsão on-line e um modelo implantado em us-central1.
O Private Service Connect e o DNS particular também são incorporados ao tutorial para demonstrar como ambientes locais e multicloud podem aproveitar o PSC para acessar o googleapis.
O Cloud Monitoring e o Network Intelligence serão usados no tutorial para validar o tráfego gerado do HEY para a previsão on-line. Embora as etapas descritas no tutorial sejam implantadas em uma VPC, é possível usar as etapas para implantar e obter um valor de referência das APIs Vertex de ambientes locais ou multicloud. A arquitetura de rede consiste nos componentes abaixo:

Confira abaixo os detalhes do caso de uso:
- Acessar a previsão on-line em us-central1 de uma instância do GCE em us-west1 usando HEY
- Verifique se o PSC está sendo usado para acessar a API Vertex
- Executar curl usando HEY por 5 minutos
- Validar a latência usando o Cloud Monitoring
- Validar a latência entre regiões usando o Network Intelligence
- Acessar a predição on-line em us-central1 de uma instância do GCE em us-central1 usando HEY
- Verifique se o PSC está sendo usado para acessar a API Vertex
- Executar curl usando HEY por 5 minutos
- Validar a latência usando o Cloud Monitoring
- Validar a latência intrarregional usando a inteligência de rede
O que você vai aprender
- Como estabelecer um endpoint do Private Service Connect
- Como gerar carga para uma previsão on-line usando o HEY
- Como criar métricas da Vertex AI usando o Cloud Monitoring
- Como usar o Network Intelligence para validar a latência intrarregional e inter-regional
O que é necessário
- Projeto do Google Cloud
Permissões do IAM
Administrador de rede do Compute
Administrador de rede do Compute
2. Antes de começar
Atualizar o projeto para oferecer suporte ao tutorial
Este tutorial usa $variáveis para ajudar na implementação da configuração do gcloud no Cloud Shell.
No Cloud Shell, faça o seguinte:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
3. Configuração do aiml-vpc
Criar a aiml-vpc
gcloud services enable networkmanagement.googleapis.com
No Cloud Shell, faça o seguinte:
gcloud compute networks create aiml-vpc --project=$projectid --subnet-mode=custom
No Cloud Shell, ative a API Network Management para o Network Intelligence.
gcloud services enable networkmanagement.googleapis.com
Criar a sub-rede de notebooks gerenciados pelo usuário
No Cloud Shell, crie a sub-rede 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
No Cloud Shell, crie a 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
No Cloud Shell, crie a sub-rede us-central1.
gcloud compute networks subnets create us-central1-subnet --project=$projectid --range=192.168.20.0/28 --network=aiml-vpc --region=us-central1
Configuração do Cloud Router e do NAT
O Cloud NAT é usado no tutorial para baixar pacotes de software porque a instância do GCE não tem um endereço IP externo. O Cloud NAT oferece recursos de NAT de saída, o que significa que os hosts da Internet não podem iniciar a comunicação com um notebook gerenciado pelo usuário, tornando-o mais seguro.
No Cloud Shell, crie o Cloud Router regional, us-west1.
gcloud compute routers create cloud-router-us-west1-aiml-nat --network aiml-vpc --region us-west1
No Cloud Shell, crie o gateway regional do Cloud NAT, 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
No Cloud Shell, crie o Cloud Router regional, us-central1.
gcloud compute routers create cloud-router-us-central1-aiml-nat --network aiml-vpc --region us-central1
No Cloud Shell, crie o gateway regional do Cloud NAT, 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. Criar o endpoint do Private Service Connect
Na seção a seguir, você vai criar um endpoint do Private Service Connect (PSC) que será usado para acessar a API Vertex na aiml-vpc.
No Cloud Shell
gcloud compute addresses create psc-ip \
--global \
--purpose=PRIVATE_SERVICE_CONNECT \
--addresses=100.100.10.10 \
--network=aiml-vpc
Armazena 'pscendpointip' durante o laboratório.
pscendpointip=$(gcloud compute addresses list --filter=name:psc-ip --format="value(address)")
echo $pscendpointip
Criar o endpoint do PSC
No Cloud Shell
gcloud compute forwarding-rules create pscvertex \
--global \
--network=aiml-vpc \
--address=psc-ip \
--target-google-apis-bundle=all-apis
Listar os endpoints do Private Service Connect configurados
No Cloud Shell
gcloud compute forwarding-rules list \
--filter target="(all-apis OR vpc-sc)" --global
Descrever os endpoints do Private Service Connect configurados
No Cloud Shell
gcloud compute forwarding-rules describe \
pscvertex --global
5. Criar uma conta de serviço para as instâncias do GCE
Para oferecer um controle refinado à API Vertex, é necessária uma conta de serviço gerenciada pelo usuário, que será aplicada às instâncias do oeste e do centro. Depois de geradas, as permissões da conta de serviço podem ser modificadas com base nos requisitos comerciais. No tutorial, a conta de serviço gerenciada pelo usuário, vertex-sa, terá as seguintes funções aplicadas:
É necessário a API Service Account antes de continuar.
No Cloud Shell, crie a conta de serviço.
gcloud iam service-accounts create vertex-gce-sa \
--description="service account for vertex" \
--display-name="vertex-sa"
No Cloud Shell, atualize a conta de serviço com a função "Administrador da instância de computação".
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:vertex-gce-sa@$projectid.iam.gserviceaccount.com" --role="roles/compute.instanceAdmin.v1"
No Cloud Shell, atualize a conta de serviço com a função de usuário da Vertex AI.
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:vertex-gce-sa@$projectid.iam.gserviceaccount.com" --role="roles/aiplatform.user"
6. Criar uma conta de serviço gerenciada pelo usuário (notebook)
Na seção a seguir, você vai criar uma conta de serviço gerenciada pelo usuário que será associada ao Vertex Workbench (notebook) usado no tutorial.
No tutorial, a conta de serviço terá as seguintes regras aplicadas:
No Cloud Shell, crie a conta de serviço.
gcloud iam service-accounts create user-managed-notebook-sa \
--display-name="user-managed-notebook-sa"
No Cloud Shell, atualize a conta de serviço com o papel de administrador do Storage.
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/storage.admin"
No Cloud Shell, atualize a conta de serviço com a função de usuário da Vertex AI.
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/aiplatform.user"
No Cloud Shell, atualize a conta de serviço com o papel Administrador do Artifact Registry.
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/artifactregistry.admin"
No Cloud Shell, liste a conta de serviço e anote o endereço de e-mail que será usado ao criar o notebook gerenciado pelo usuário.
gcloud iam service-accounts list
7. Criar as instâncias de teste
Na seção a seguir, você vai criar instâncias de teste para realizar testes de valor de referência em us-west1 e us-central1.
No Cloud Shell, crie o 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"
No Cloud Shell, crie o 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"
Para permitir que o IAP se conecte às suas instâncias de VM, crie uma regra de firewall que:
- Aplica-se a todas as instâncias de VM que você quer acessar usando o IAP.
- Permite o tráfego de entrada do intervalo de IP 35.235.240.0/20. Esse intervalo contém todos os endereços IP que o IAP usa para o encaminhamento de TCP.
No Cloud Shell, crie a regra de firewall do IAP.
gcloud compute firewall-rules create ssh-iap-vpc \
--network aiml-vpc \
--allow tcp:22 \
--source-ranges=35.235.240.0/20
8. Criar um notebook gerenciado pelo usuário
Na seção a seguir, crie um notebook gerenciado pelo usuário que incorpore a conta de serviço criada anteriormente, user-managed-notebook-sa.
No Cloud Shell, crie a instância 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
Acesse Vertex AI → Workbench para ver o notebook implantado.

9. Implantar o modelo e a previsão on-line
Na seção a seguir, use o codelabVertex AI:usar rotinas de previsão personalizadas com o Sklearn para pré-processar e pós-processar dados para previsões. Comece pela seção 7,já que você criou um notebook na etapa anterior. Depois que o modelo for implantado, volte ao tutorial para iniciar a próxima seção.

10. Criar um painel de monitoramento personalizado para a previsão on-line
A previsão on-line cria um painel de monitoramento padrão em VERTEX AI → PREVISÃO ON-LINE → NOME DO ENDPOINT (diamonds-cpr_endpoint). No entanto, para nossos testes, precisamos definir um horário de início e de término. Portanto, um painel personalizado é necessário.
Na seção a seguir, você vai criar métricas do Cloud Monitoring para receber medições de latência com base no acesso regional ao endpoint de previsão on-line. Isso vai validar a latência diferente ao acessar um endpoint em us-central1 de instâncias do GCE implantadas em us-west1 e us-central.
Para o tutorial, vamos usar as métricas "prediction_latencies". Outras métricas estão disponíveis em aiplatform.
Métrica | Descrição |
prediction/online/prediction_latencies | Latência de previsão on-line do modelo implantado. |
Criar um gráfico para a métrica prediction_latencies
No Console do Cloud, navegue até MONITORING → Metrics Explorer.

Insira a métrica prediction/online/prediction_latencies e selecione as seguintes opções. Depois, clique em "Aplicar".

Atualize "Agrupar por" com base na opção a seguir e selecione "Salvar gráfico".


Selecione "Salvar". Você vai precisar escolher um painel. Selecione Novo Painel de controle e dê um nome.

Painel personalizado da Vertex
Na seção a seguir, valide se o painel personalizado do Vertex está mostrando a hora correta.
Navegue até MONITORING → Painel e selecione "Painel personalizado do Vertex" e o período. Verifique se o fuso horário está correto.

Expanda a legenda para obter uma visualização em tabela.

Exemplo de visualização expandida:

11. Criar DNS particular para o endpoint do PSC
Crie uma zona de DNS particular na aiml-vpc para resolver todos os googleapis no endereço IP do endpoint do PSC 100.100.10.10.
No Cloud Shell, crie uma zona de DNS particular.
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"
No Cloud Shell, crie o registro A que associa *. googleapis.com ao IP do PSC.
gcloud dns --project=$projectid record-sets create *.googleapis.com. --zone="psc-googleapis" --type="A" --ttl="300" --rrdatas="100.100.10.10"
12. Olá, testando variáveis
O Hey permite que os usuários finais personalizem os testes com base nos requisitos de rede e de aplicativos. Para fins do tutorial, vamos usar a opção detalhada abaixo com uma string de execução de amostra:
c == 1 worker
z == Duração
m == método HTTP POST
D == corpo da solicitação HTTP do arquivo, instances.json
n == número de solicitações a serem executadas. O padrão é 200.
Exemplo de string curl com HEY (a execução não é necessária)
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. Receber o ID da previsão
Receba o ID do endpoint de previsão on-line do Console do Cloud, que será usado nas etapas subsequentes.
Acesse VERTEX AI → PREVISÃO ON-LINE

14. Fazer o download e executar o HEY (us-west1)
Na seção a seguir, você vai fazer login no west-client para baixar e executar o HEY na previsão on-line localizada em us-central1.
No Cloud Shell, faça login no west-client e baixe o HEY.
gcloud compute ssh west-client --project=$projectid --zone=us-west1-a --tunnel-through-iap
No SO, faça o download do HEY e atualize as permissões.
wget https://hey-release.s3.us-east-2.amazonaws.com/hey_linux_amd64
chmod +x hey_linux_amd64
No SO, crie as seguintes variáveis:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
ENDPOINT_ID="insert-your-endpoint-id-here"
Exemplo:
ENDPOINT_ID="2706243362607857664"
Na seção a seguir, você vai criar um arquivo instances.json usando o editor vi ou nano e inserir a string de dados usada para receber uma previsão do modelo implantado.
No SO west-client, crie um arquivo instances.json com a string de dados abaixo:
{"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]]}
Exemplo:
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:$
Pré-teste
No SO, execute um curl para validar se o modelo e o endpoint de previsão estão funcionando corretamente. Observe o IP do endpoint do PSC no registro detalhado e o HTTP/2 200 indicando sucesso.
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 exemplo, observe o endereço IP do PSC usado para acessar a previsão e o resultado bem-sucedido.
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
Executar HEY
No SO, execute o HEY para ativar um teste de valor de referência 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)
Agora que você executou o Hey de uma instância de computação em us-west1, avalie os resultados do seguinte:
- Resultados HEY
- Painel personalizado da Vertex
- Network Intelligence
Resultados HEY
No SO, vamos validar os resultados do HEY com base na execução de 10 minutos.
17,5826 solicitações por segundo
99% em 0,0686 segundos | 68 ms
10.550 respostas com código de status 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
Painel personalizado da Vertex
Navegue até MONITORING → Painel e selecione "Painel personalizado do Vertex". Insira 10m ou especifique o horário de início e término. Verifique se o fuso horário está correto.

A definição de latências de previsão indica uma métrica do lado do servidor que mede o tempo total para responder à solicitação dos clientes depois de receber uma resposta do modelo.
- Duração total da latência: o tempo total que uma solicitação gasta no serviço. Esse valor é a latência do modelo mais a latência de overhead.
Por outro lado, o HEY é uma métrica do lado do cliente que considera os seguintes parâmetros:
Solicitação do cliente + latência total (inclui latência do modelo) + resposta do cliente
Network Intelligence
Agora vamos analisar a latência de rede entre regiões informada pelo Network Intelligence para ter uma ideia da latência de us-west1 para us-central1 informada pelo Google Cloud Platform.
Acesse o painel de desempenho do Network Intelligence no console do Cloud e selecione as opções detalhadas na captura de tela abaixo, indicando latência de 32 a 39 ms.

RESUMO DO VALOR DE REFERÊNCIA DE HEY us-west1
A comparação dos relatórios de latência total pelas ferramentas de teste gera aproximadamente a mesma latência informada pelo HEY. A latência entre regiões contribui com a maior parte da latência. Vamos ver como o cliente central funciona na próxima série de testes.
Ferramenta de latência | Duração |
Inteligência de rede: latência de us-west1 para us-central1 | ~32 a 39 ms |
Cloud Monitoring: latência total de previsão [99º percentil] | 34,58 ms (99p) |
Latência total informada pelo Google | ~ 66,58 a 73,58 ms |
Distribuição de latência do lado do cliente HEY | 68ms (99p) |
16. Fazer o download e executar o HEY (us-central1)
Na seção a seguir, você vai fazer login no central-client para baixar e executar o HEY na previsão on-line localizada em us-central1.
No Cloud Shell, faça login no central-client e baixe o HEY.
gcloud compute ssh central-client --project=$projectid --zone=us-central1-a --tunnel-through-iap
No SO, faça o download do HEY e atualize as permissões.
wget https://hey-release.s3.us-east-2.amazonaws.com/hey_linux_amd64
chmod +x hey_linux_amd64
No SO, crie as seguintes variáveis:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
ENDPOINT_ID="insert-your-endpoint-id-here"
Exemplo:
ENDPOINT_ID="2706243362607857664"
Na seção a seguir, você vai criar um arquivo instances.json usando o editor vi ou nano e inserir a string de dados usada para receber uma previsão do modelo implantado.
No SO west-client, crie um arquivo instances.json com a string de dados abaixo:
{"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]]}
Exemplo:
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:$
Pré-teste
No SO, execute um curl para validar se o modelo e o endpoint de previsão estão funcionando corretamente. Observe o IP do endpoint do PSC no registro detalhado e o HTTP/2 200 indicando sucesso.
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 exemplo, observe o endereço IP do PSC usado para acessar a previsão e o resultado bem-sucedido.
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
Executar HEY
No SO, execute o HEY para ativar um teste de valor de referência 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)
Agora que você executou o Hey em uma instância de computação em us-central1, avalie os resultados do seguinte:
- Resultados HEY
- Painel personalizado da Vertex
- Network Intelligence
Resultados HEY
No SO, vamos validar os resultados do HEY com base na execução de 10 minutos.
44.9408 solicitações por segundo
99% em 0,0353 segundos | 35 ms
26.965 respostas com código de status 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
Painel personalizado da Vertex
Navegue até MONITORING → Painel e selecione "Painel personalizado do Vertex". Insira 10m. Ou o horário de início e de término. Verifique se o fuso horário está correto.
Latências de previsão dos últimos 10 minutos geram 30.533 ms.
A definição de latências de previsão indica uma métrica do lado do servidor que mede o tempo total para responder à solicitação dos clientes depois de receber uma resposta do modelo.
- Duração total da latência: o tempo total que uma solicitação gasta no serviço. Esse valor é a latência do modelo mais a latência de overhead.
Por outro lado, o HEY é uma métrica do lado do cliente que considera os seguintes parâmetros:
Solicitação do cliente + latência total (inclui latência do modelo) + resposta do cliente
Network Intelligence
Agora vamos analisar a latência de rede intrarregional informada pelo Network Intelligence para ter uma ideia da latência us-central1 informada pelo Google Cloud Platform.
Navegue até "Painel de desempenho" em "Inteligência de rede do console do Cloud" e selecione as opções detalhadas na captura de tela abaixo, indicando latência de 0,2 a 0,8 ms.

RESUMO DO VALOR DE REFERÊNCIA DE HEY us-central1
A comparação da latência total informada pelas ferramentas de teste resulta em uma latência menor do que o west-client devido aos endpoints de computação (central-client) e da Vertex (modelo e previsão on-line) na mesma região.
Ferramenta de latência | Duração |
Inteligência de rede: latência intrarregional us-central1 | ~0,2 a 0,8 ms |
Cloud Monitoring: latência total de previsão [99º percentil] | 30,533 ms (99p) |
Latência total informada pelo Google | ~30.733 a 31.333 ms |
Latência do lado do cliente HEY | 35 ms (99p) |
18. Parabéns
Parabéns! Você implantou e validou o HEY para receber a latência de previsão de base do lado do cliente usando uma combinação do Cloud Monitoring e do Network Intelligence. Com base nos testes, você identificou que um endpoint de previsão em us-central pode ser veiculado entre regiões, mas foi observada latência.
O Cosmopup acha que os tutoriais são incríveis!

19. Limpar
No Cloud Shell, exclua os componentes do 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
No console do Cloud, exclua o seguinte:
Pasta do Artifact Registry

No Vertex AI Model Registry, cancele a implantação do modelo:

Na Vertex AI Online Prediction, exclua o endpoint.

Qual é a próxima etapa?
Confira alguns destes tutoriais:
- Private Service Connect para APIs do Google
- Vertex AI: criar um notebook seguro gerenciado pelo usuário
Leituras e vídeos complementares
- Visão geral do Private Service Connect
- O que é o Private Service Connect?
- Como receber previsões de um modelo de ML
- O que é a Vertex AI?