Testowanie bazowego prognoz online Vertex AI przy użyciu HEY

1. Wprowadzenie

Z tego samouczka dowiesz się, jak tworzyć i oceniać wskaźniki prognozowania online Cloud Monitoring podczas przeprowadzania testów porównawczych w regionach us-central1 i us-west1 na potrzeby punktu końcowego prognozowania wdrożonego w regionie us-central1 za pomocą narzędzia do testowania wydajności stron internetowych HEY.

Co utworzysz

Skonfigurujesz sieć VPC o nazwie aiml-vpc, która będzie się składać z podsieci i instancji w regionach us-west1 i us-central1. Będzie ona używana do generowania ruchu za pomocą HEY kierowanego na prognozowanie online i model wdrożony w regionie us-central1.

W samouczku omówiono też Private Service Connect i prywatny DNS, aby pokazać, jak środowiska lokalne i wielochmurowe mogą korzystać z PSC w celu uzyskiwania dostępu do googleapis.

W samouczku do weryfikacji ruchu generowanego z HEY do prognozowania online użyjemy Cloud Monitoring i Network Intelligence. Chociaż kroki opisane w samouczku są wdrażane w sieci VPC, możesz ich użyć do wdrożenia i uzyskania podstawowych informacji o interfejsach Vertex API ze środowisk lokalnych lub wielochmurowych. Architektura sieci składa się z tych komponentów:

dd5c102ce1ab0150.png

Poniżej znajdziesz szczegóły przypadku użycia:

  1. Dostęp do prognozowania online w regionie us-central1 z instancji GCE w regionie us-west1 za pomocą HEY
  2. Sprawdź, czy do uzyskiwania dostępu do interfejsu Vertex API używasz PSC
  3. Wykonaj ćwiczenie z użyciem HEY przez 5 minut
  4. Sprawdzanie czasu oczekiwania za pomocą Cloud Monitoring
  5. Weryfikowanie czasu oczekiwania między regionami za pomocą Network Intelligence
  6. Dostęp do prognozowania online w regionie us-central1 z instancji GCE w regionie us-central1 za pomocą HEY
  7. Sprawdź, czy do uzyskiwania dostępu do interfejsu Vertex API używasz PSC
  8. Wykonaj ćwiczenie z użyciem HEY przez 5 minut
  9. Sprawdzanie czasu oczekiwania za pomocą Cloud Monitoring
  10. Weryfikowanie czasu oczekiwania w regionie za pomocą Network Intelligence

Czego się nauczysz

  • Konfigurowanie punktu końcowego Private Service Connect
  • Jak generować obciążenie prognozowania online za pomocą HEY
  • Jak tworzyć wskaźniki Vertex AI za pomocą Cloud Monitoring
  • Jak używać Network Intelligence do weryfikowania czasu oczekiwania w regionie i między regionami

Czego potrzebujesz

  • Projekt Google Cloud

Uprawnienia

Administrator sieci Compute

Administrator sieci Compute

Edytujący Service Directory

Administrator DNS

Wyświetlający zarządzanie siecią

2. Zanim zaczniesz

Aktualizowanie projektu na potrzeby samouczka

W tym samouczku używamy zmiennych $variables, aby ułatwić implementację konfiguracji gcloud w Cloud Shell.

W Cloud Shell wykonaj te czynności:

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

3. Konfiguracja aiml-vpc

Utwórz sieć aiml-vpc

gcloud services enable networkmanagement.googleapis.com

W Cloud Shell wykonaj te czynności:

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

W Cloud Shell włącz interfejs Network Management API dla Network Intelligence.

gcloud services enable networkmanagement.googleapis.com

Utwórz podsieć notatnika zarządzanego przez użytkownika

W Cloud Shell utwórz podsieć 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

W Cloud Shell utwórz podsieć 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

W Cloud Shell utwórz podsieć 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

Konfiguracja routera Cloud Router i NAT

W samouczku usługa Cloud NAT jest używana do pobierania pakietów oprogramowania, ponieważ instancja GCE nie ma zewnętrznego adresu IP. Cloud NAT zapewnia funkcje NAT ruchu wychodzącego, co oznacza, że hosty internetowe nie mogą inicjować komunikacji z notatnikiem zarządzanym przez użytkownika, co zwiększa bezpieczeństwo.

W Cloud Shell utwórz regionalny router Cloud Router us-west1.

gcloud compute routers create cloud-router-us-west1-aiml-nat --network aiml-vpc --region us-west1

W Cloud Shell utwórz regionalną bramę Cloud NAT w regionie 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

W Cloud Shell utwórz regionalny router chmurowy us-central1.

gcloud compute routers create cloud-router-us-central1-aiml-nat --network aiml-vpc --region us-central1

W Cloud Shell utwórz regionalną bramę Cloud NAT w regionie 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. Utwórz punkt końcowy Private Service Connect.

W następnej sekcji utworzysz punkt końcowy Private Service Connect (PSC), który będzie używany do uzyskiwania dostępu do interfejsu Vertex API z sieci aiml-vpc.

Z Cloud Shell

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

Przechowywanie wartości „pscendpointip” przez czas trwania laboratorium

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

echo $pscendpointip

Tworzenie punktu końcowego PSC

Z Cloud Shell

gcloud compute forwarding-rules create pscvertex \
    --global \
    --network=aiml-vpc \
    --address=psc-ip \
    --target-google-apis-bundle=all-apis

Wyświetlanie listy skonfigurowanych punktów końcowych usługi Private Service Connect

Z Cloud Shell

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

Opisywanie skonfigurowanych punktów końcowych Private Service Connect

Z Cloud Shell

gcloud compute forwarding-rules describe \
    pscvertex --global

5. Tworzenie konta usługi dla instancji GCE

Aby zapewnić precyzyjną kontrolę nad interfejsem Vertex API, wymagane jest zarządzane przez użytkownika konto usługi, które będzie stosowane w przypadku instancji zachodnich i centralnych. Po wygenerowaniu uprawnienia konta usługi można modyfikować w zależności od potrzeb biznesowych. W tym samouczku do konta usługi zarządzanego przez użytkownika, vertex-sa, zostaną przypisane te role:

Zanim przejdziesz dalej, musisz interfejs Service Account API.

W Cloud Shell utwórz konto usługi.

gcloud iam service-accounts create vertex-gce-sa \
    --description="service account for vertex" \
    --display-name="vertex-sa"

W Cloud Shell zaktualizuj konto usługi, przypisując mu rolę administratora instancji Compute Engine.

gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:vertex-gce-sa@$projectid.iam.gserviceaccount.com" --role="roles/compute.instanceAdmin.v1"

W Cloud Shell zaktualizuj konto usługi, przypisując mu rolę użytkownika Vertex AI.

gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:vertex-gce-sa@$projectid.iam.gserviceaccount.com" --role="roles/aiplatform.user"

6. Tworzenie konta usługi zarządzanego przez użytkownika (notatnik)

W następnej sekcji utworzysz konto usługi zarządzane przez użytkownika, które będzie powiązane z Vertex Workbench (notatnikiem) używanym w samouczku.

W samouczku do konta usługi zostaną zastosowane te reguły:

W Cloud Shell utwórz konto usługi.

gcloud iam service-accounts create user-managed-notebook-sa \
    --display-name="user-managed-notebook-sa"

W Cloud Shell zaktualizuj konto usługi, przypisując mu rolę Administrator miejsca na dane.

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

W Cloud Shell zaktualizuj konto usługi, przypisując mu rolę Użytkownik Vertex AI.

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

W Cloud Shell zaktualizuj konto usługi, przypisując mu rolę Administrator Artifact Registry.

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

W Cloud Shell wyświetl listę kont usługi i zanotuj adres e-mail, który będzie używany podczas tworzenia notatnika zarządzanego przez użytkownika.

gcloud iam service-accounts list

7. Tworzenie instancji testów

W następnej sekcji utworzysz instancje testowe, aby przeprowadzić testy podstawowe w regionach us-west1 i us-central1.

W Cloud Shell utwórz klienta 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"

W Cloud Shell utwórz 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"

Aby umożliwić IAP połączenie z instancjami maszyn wirtualnych, utwórz regułę zapory sieciowej, która:

  • Dotyczy wszystkich instancji maszyn wirtualnych, które mają być dostępne przez IAP.
  • Zezwala na ruch przychodzący z zakresu adresów IP 35.235.240.0/20. Ten zakres zawiera wszystkie adresy IP, których IAP używa do przekierowywania TCP.

W Cloud Shell utwórz regułę zapory sieciowej IAP.

gcloud compute firewall-rules create ssh-iap-vpc \
    --network aiml-vpc \
    --allow tcp:22 \
    --source-ranges=35.235.240.0/20

8. Tworzenie notatnika zarządzanego przez użytkownika

interfejs Notebook API.

W następnej sekcji utwórz notatnik zarządzany przez użytkownika, który będzie korzystać z utworzonego wcześniej konta usługi user-managed-notebook-sa.

W Cloud Shell utwórz instancję 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

Przejdź do sekcji Vertex AI → Workbench, aby wyświetlić wdrożony notatnik.

b02fcb9b07dca06a.png

9. Wdrażanie modelu i prognozowanie online

W następnej sekcji skorzystaj z tego samouczka: Vertex AI: używanie niestandardowych procedur prognozowania z Sklearn do przetwarzania wstępnego i końcowego danych na potrzeby prognoz. Zacznij od sekcji 7, ponieważ w poprzednim kroku utworzono już notatnik. Po wdrożeniu modelu wróć do samouczka, aby rozpocząć następną sekcję.

ee68b7ba0cfd2746.png

10. Tworzenie niestandardowego panelu monitorowania prognozowania online

Prognozowanie online tworzy domyślny panel monitorowania w sekcji VERTEX AI → PROGNOZOWANIE ONLINE → NAZWA PUNKTU KOŃCOWEGO (diamonds-cpr_endpoint). Na potrzeby testów musimy jednak określić czas rozpoczęcia i zakończenia, dlatego wymagany jest niestandardowy panel.

W następnej sekcji utworzysz wskaźniki Cloud Monitoring, aby uzyskać pomiary czasu oczekiwania na podstawie regionalnego dostępu do punktu końcowego prognozowania online. Pozwoli to sprawdzić różnice w czasie oczekiwania podczas uzyskiwania dostępu do punktu końcowego w regionie us-central1 z instancji GCE wdrożonych w regionach us-west1 i us-central.

W samouczku użyjemy danych prediction_latencies. Dodatkowe dane są dostępne w aiplatform.

Dane

Opis

prediction/online/prediction_latencies

Czas oczekiwania prognozy online wdrożonego modelu.

Utwórz wykres dla wskaźnika prediction_latencies.

W Cloud Console otwórz MONITOROWANIE → Metrics Explorer.

536668ab0b29d77.png

Wstaw dane prediction/online/prediction_latencies i wybierz te opcje, a potem kliknij Zastosuj.

c1edd34208cb5ee2.png

Zaktualizuj opcję Grupuj według na podstawie poniższej opcji i kliknij Zapisz wykres.

e180a5d8a044b6e1.png

d2ecd6677a3b34e0.png

Kliknij Zapisz. Pojawi się prośba o wybranie panelu. Kliknij Nowy panel i wpisz nazwę.

e29a39dc941c8599.png

Niestandardowy panel Vertex AI

W sekcji poniżej sprawdź, czy niestandardowy panel informacyjny Vertex wyświetla prawidłowy czas.

Otwórz MONITOROWANIE → Panel i wybierz kolejno Vertex Custom Dashboard (Niestandardowy panel Vertex) i czas. Sprawdź, czy strefa czasowa jest prawidłowa.

f43ebed798ce1147.png

Rozwiń legendę, aby wyświetlić tabelę.

61ffeef22e067ca9.png

Przykład widoku rozwiniętego:

9027e8785c023129.png

11. Tworzenie prywatnego DNS dla punktu końcowego PSC

Utwórz prywatną strefę DNS w sieci VPC aiml-vpc, aby rozwiązywać wszystkie adresy googleapis na adres IP punktu końcowego PSC 100.100.10.10.

W Cloud Shell utwórz prywatną strefę DNS.

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"

W Cloud Shell utwórz rekord A, który przypisuje *. googleapis.com do adresu 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 umożliwia użytkownikom dostosowywanie testów do wymagań sieci i aplikacji. Na potrzeby tego samouczka użyjemy opcji opisanej poniżej wraz z przykładowym ciągiem wykonania:

c == 1 instancja robocza

z == Czas trwania

m == HTTP method POST

D == treść żądania HTTP z pliku instances.json

n == liczba żądań do uruchomienia. Wartość domyślna to 200.

Przykładowy ciąg tekstowy curl z poleceniem HEY (nie wymaga wykonania)

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. Uzyskiwanie identyfikatora prognozy

Uzyskaj identyfikator punktu końcowego prognozowania online z konsoli Google Cloud, który będzie używany w kolejnych krokach.

Otwórz VERTEX AI → PROGNOZOWANIE ONLINE.

ce4d4a88a3fa2345.png

14. Pobieranie i wykonywanie HEY (us-west1)

W następnej sekcji zalogujesz się na klienta west-client, aby pobrać i wykonać HEY w odniesieniu do prognozowania online w regionie us-central1.

Z Cloud Shell zaloguj się na klienta zachodniego i pobierz HEY.

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

Pobierz HEY z systemu operacyjnego i zaktualizuj uprawnienia.

wget https://hey-release.s3.us-east-2.amazonaws.com/hey_linux_amd64
chmod +x hey_linux_amd64

W systemie operacyjnym utwórz te zmienne:

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
ENDPOINT_ID="insert-your-endpoint-id-here"

Przykład:

ENDPOINT_ID="2706243362607857664"

W następnej sekcji utworzysz plik instances.json za pomocą edytora vi lub nano i wstawisz ciąg danych używany do uzyskiwania prognozy z wdrożonego modelu.

W systemie operacyjnym west-client utwórz plik instances.json z ciągiem danych poniżej:

{"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]]}

Przykład:

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:$

Test wstępny

Z systemu operacyjnego wykonaj polecenie curl, aby sprawdzić, czy model i punkt końcowy prognozowania działają prawidłowo. Zanotuj adres IP punktu końcowego PSC w szczegółowym dzienniku i kod HTTP/2 200 wskazujący sukces.

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

Zwróć uwagę na adres IP PSC użyty do uzyskania prognozy i osiągnięcia pożądanego wyniku.

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

Wykonaj HEY

Z poziomu systemu operacyjnego uruchom HEY, aby przeprowadzić 10-minutowy test podstawowy.

./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)

Po wykonaniu polecenia Hey z instancji obliczeniowej w regionie us-west1 oceń wyniki na podstawie tych informacji:

  • Wyniki HEY
  • Panel niestandardowy Vertex
  • Analizy sieciowe

Wyniki HEY

Sprawdźmy wyniki HEY w systemie operacyjnym na podstawie 10-minutowego wykonania.

17,5826 żądania na sekundę

99% w 0,0686 s | 68 ms

10 550 odpowiedzi z kodem stanu 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

Niestandardowy panel Vertex AI

Otwórz MONITOROWANIE → Panel i wybierz Panel niestandardowy Vertex. Wpisz 10 min lub określ czas rozpoczęcia i zakończenia. Sprawdź, czy strefa czasowa jest prawidłowa.

4102b1d0438c78e3.png

Definicja opóźnień prognozowania wskazuje na pomiar po stronie serwera, który mierzy całkowity czas odpowiedzi na żądanie klienta po uzyskaniu odpowiedzi z modelu.

  • Całkowity czas oczekiwania: łączny czas, jaki żądanie spędza w usłudze, czyli czas oczekiwania modelu plus czas oczekiwania związany z narzutem.

Z kolei HEY to dane po stronie klienta, które uwzględniają te parametry:

Żądanie klienta + Łączny czas oczekiwania (obejmuje czas oczekiwania modelu) + Odpowiedź klienta

Network Intelligence

Przyjrzyjmy się teraz opóźnieniom w sieci między regionami zgłaszanym przez Network Intelligence, aby uzyskać informacje o opóźnieniach między regionami us-west1 i us-central1 zgłaszanych przez Google Cloud Platform.

Otwórz Cloud Console Network Intelligence → Panel wydajności i wybierz opcje widoczne na zrzucie ekranu poniżej, które wskazują opóźnienie w zakresie 32–39 ms.

aade5f757115721.png

Podsumowanie testu podstawowego HEY w regionie us-west1

Porównanie raportów „Łączne opóźnienie” z narzędzi testowych daje w przybliżeniu takie samo opóźnienie jak w przypadku HEY. Opóźnienie między regionami stanowi większość opóźnienia. Sprawdźmy, jak centralny klient sprawdzi się w kolejnych testach.

Narzędzie do pomiaru czasu oczekiwania

Czas trwania

Analizy sieciowe: opóźnienie między regionami us-west1 i us-central1

~32–39 ms

Cloud Monitoring: całkowity czas oczekiwania na prognozę [99%]

34,58 ms (99p)

Całkowity czas oczekiwania zgłoszony przez Google

~ 66,58–73,58 ms

Rozkład czasu oczekiwania po stronie klienta HEY

68 ms (99p)

16. Pobieranie i wykonywanie HEY (us-central1)

W następnej sekcji zalogujesz się w centralnym kliencie, aby pobrać i wykonać HEY w odniesieniu do prognozowania online w regionie us-central1.

Z Cloud Shell zaloguj się na central-client i pobierz HEY.

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

Pobierz HEY z systemu operacyjnego i zaktualizuj uprawnienia.

wget https://hey-release.s3.us-east-2.amazonaws.com/hey_linux_amd64
chmod +x hey_linux_amd64

W systemie operacyjnym utwórz te zmienne:

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
ENDPOINT_ID="insert-your-endpoint-id-here"

Przykład:

ENDPOINT_ID="2706243362607857664"

W następnej sekcji utworzysz plik instances.json za pomocą edytora vi lub nano i wstawisz ciąg danych używany do uzyskiwania prognozy z wdrożonego modelu.

W systemie operacyjnym west-client utwórz plik instances.json z ciągiem danych poniżej:

{"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]]}

Przykład:

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:$

Test wstępny

Z systemu operacyjnego wykonaj polecenie curl, aby sprawdzić, czy model i punkt końcowy prognozowania działają prawidłowo. Zanotuj adres IP punktu końcowego PSC w szczegółowym dzienniku i kod HTTP/2 200 wskazujący sukces.

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

Przykład: zwróć uwagę na adres IP usługi PSC użyty do uzyskania dostępu do prognozy i osiągnięcia pozytywnego wyniku.

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

Wykonaj HEY

Z poziomu systemu operacyjnego uruchom HEY, aby przeprowadzić 10-minutowy test podstawowy.

./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)

Po wykonaniu polecenia Hey z instancji obliczeniowej w regionie us-central1 oceń wyniki na podstawie tych informacji:

  • Wyniki HEY
  • Panel niestandardowy Vertex
  • Analizy sieciowe

Wyniki HEY

Sprawdźmy wyniki HEY w systemie operacyjnym na podstawie 10-minutowego wykonania.

44,9408 żądania na sekundę

99% w 0,0353 s | 35 ms

26965 odpowiedzi z kodem stanu 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

Niestandardowy panel Vertex AI

Otwórz MONITOROWANIE → Panel i wybierz Vertex Custom Dashboard (Panel niestandardowy Vertex), a następnie wpisz 10 min. lub godzinę rozpoczęcia i zakończenia. Sprawdź, czy strefa czasowa jest prawidłowa.

Opóźnienia prognozowania z ostatnich 10 minut wynoszą 30,533 ms.

Definicja opóźnień prognozowania wskazuje na pomiar po stronie serwera, który mierzy całkowity czas odpowiedzi na żądanie klienta po uzyskaniu odpowiedzi z modelu.

  • Całkowity czas oczekiwania: łączny czas, jaki żądanie spędza w usłudze, czyli czas oczekiwania modelu plus czas oczekiwania związany z narzutem.

Z kolei HEY to dane po stronie klienta, które uwzględniają te parametry:

Żądanie klienta + Łączny czas oczekiwania (obejmuje czas oczekiwania modelu) + Odpowiedź klienta

Network Intelligence

Spójrzmy teraz na opóźnienie sieci w regionie zgłoszone przez Network Intelligence, aby poznać opóźnienie w regionie us-central1 zgłoszone przez Google Cloud Platform.

Otwórz w konsoli Cloud Analizy sieciowe → Panel wydajności i wybierz opcje widoczne na zrzucie ekranu poniżej, które wskazują opóźnienie od 0,2 ms do 0,8 ms.

eaa84848c3185fde.png

Podsumowanie testu podstawowego HEY w regionie us-central1

Porównanie całkowitego czasu oczekiwania zgłoszonego przez narzędzia testowe daje mniejszy czas oczekiwania niż w przypadku klienta zachodniego, ponieważ punkty końcowe obliczeń (klient centralny) i Vertex (model i prognozowanie online) znajdują się w tym samym regionie.

Narzędzie do pomiaru czasu oczekiwania

Czas trwania

Analityka sieciowa: czas oczekiwania w regionie us-central1

~0,2–0,8 ms

Cloud Monitoring: całkowity czas oczekiwania na prognozę [99%]

30,533 ms (99p)

Całkowity czas oczekiwania zgłoszony przez Google

~30,733–31,333 ms

Opóźnienie po stronie klienta HEY

35 ms (99p)

18. Gratulacje

Gratulacje! Udało Ci się wdrożyć i zweryfikować HEY, aby uzyskać podstawowe opóźnienie prognozowania po stronie klienta za pomocą Cloud Monitoring i Network Intelligence. Na podstawie testów udało Ci się ustalić, że punkt końcowy prognozowania w regionie us-central może obsługiwać zapytania z innych regionów, ale zaobserwowano opóźnienia.

Cosmopup uważa, że samouczki są świetne!!

e6d3675ca7c6911f.jpeg

19. Czyszczenie danych

W Cloud Shell usuń komponenty samouczka.

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

W konsoli Cloud usunięto:

Folder Artifact Registry

99c17044e2f80919.png

W rejestrze modeli Vertex AI wycofaj wdrożenie modelu:

f5b315f089ae6283.png

Usuń punkt końcowy z prognozowania online w Vertex AI.

9b58688a5037de84.png

Co dalej?

Zapoznaj się z tymi samouczkami:

Więcej informacji i filmy

Dokumentacja