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 w usłudze Cloud Monitoring podczas wykonywania testów podstawowych w regionie us-central1 i us-west1 w punkcie końcowym prognozy wdrożonym w us-central1 przy użyciu internetowego narzędzia do testowania wydajności HEY.

Co utworzysz

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

Samouczek obejmuje również usługi Private Service Connect i Private DNS, które pokazują, jak środowiska lokalne i wielochmurowe mogą wykorzystać PSC do uzyskiwania dostępu do usługi googleapis.

W samouczku będą używane usługi Cloud Monitoring i Network Intelligence do weryfikowania ruchu generowanego z HEY do prognozy online. Chociaż kroki opisane w samouczku są wdrażane w VPC, możesz wykorzystać kroki pozwalające wdrożyć i uzyskać podstawowe interfejsy Vertex APIS w środowiskach lokalnych lub wielochmurowych. Architektura sieci składa się z tych komponentów:

dd5c102ce1ab0150.png

Poniżej znajduje się szczegółowy opis przypadku użycia:

  1. Uzyskaj dostęp do prognozowania online w regionie us-central1 z instancji GCE w regionie us-west1 za pomocą HEY
  2. Sprawdź, czy usługa PSC jest używana do uzyskiwania dostępu do interfejsu Vertex API
  3. Wykonuj skręty z użyciem HEY przez 5 minut
  4. Weryfikowanie czasu oczekiwania przy użyciu Cloud Monitoring
  5. Weryfikowanie opóźnienia między regionami przy użyciu Network Intelligence
  6. Uzyskaj dostęp do prognoz online w us-central1 z instancji GCE w us-central1 za pomocą HEY
  7. Sprawdź, czy usługa PSC jest używana do uzyskiwania dostępu do interfejsu Vertex API
  8. Wykonuj skręty z użyciem HEY przez 5 minut
  9. Weryfikowanie czasu oczekiwania przy użyciu Cloud Monitoring
  10. Weryfikowanie opóźnienia w regionie za pomocą Network Intelligence

Czego się nauczysz

  • Jak ustanowić punkt końcowy usługi Private Service Connect
  • Jak wygenerować obciążenie prognozy online za pomocą HEY
  • Jak tworzyć wskaźniki Vertex AI za pomocą Cloud Monitoring
  • Jak za pomocą Network Intelligence sprawdzać poprawność systemów wewnętrznych i czas oczekiwania 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, które ułatwiają 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 celul-vpc

Tworzenie pliku cell-vpc

gcloud services włącz networkmanagement.googleapis.com

W Cloud Shell wykonaj te czynności:

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

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

gcloud services enable networkmanagement.googleapis.com

Tworzenie podsieci notatnika zarządzanej przez użytkownika

Utwórz podsieć obszaru roboczego w Cloud Shell.

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 podsieci us-west1.

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 podsieci us-central1.

gcloud compute networks subnets create us-central1-subnet --project=$projectid --range=192.168.20.0/28 --network=aiml-vpc --region=us-central1

Konfiguracja Cloud Router i NAT

Usługa Cloud NAT jest używana w samouczku do pobierania pakietów oprogramowania, ponieważ instancja GCE nie ma zewnętrznego adresu IP. Cloud NAT zapewnia funkcje NAT dla ruchu wychodzącego, co oznacza, że hosty internetowe nie mogą inicjować komunikacji z notatnikiem zarządzanym przez użytkownika, co zwiększa jego 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

Utwórz w Cloud Shell regionalną bramę 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

W Cloud Shell utwórz regionalny router Cloud Router – 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 o nazwie 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. Tworzenie punktu końcowego Private Service Connect

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

Z Cloud Shell

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

Sklep „pscendpointip” na czas trwania modułu

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 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ć szczegółową kontrolę nad interfejsem Vertex API, wymagane jest konto usługi zarządzane przez użytkownika, które zostanie zastosowane do instancji zachodniej i centralnej. Po wygenerowaniu uprawnień konta usługi można je zmienić odpowiednio do wymagań biznesowych. W tym samouczku do konta usługi zarządzanego przez użytkownika (vertex-sa) zostaną zastosowane te role:

Zanim przejdziesz dalej, musisz interfejs Service Account API.

Utwórz konto usługi w Cloud Shell.

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

W Cloud Shell zaktualizuj konto usługi, dodając do niego rolę „administrator instancji Compute”.

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, dodając do niego 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 tej sekcji utworzysz konto usługi zarządzane przez użytkownika, które zostanie powiązane z Vertex Workbench (Notatnik) używanym w samouczku.

W samouczku na koncie usługi zostaną zastosowane te reguły:

Utwórz konto usługi w Cloud Shell.

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

W Cloud Shell zaktualizuj konto usługi, przypisując do niego 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, dodając do niego rolę użytkownika 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, dodając do niego 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 wymień konto 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 testowych

W tej sekcji utworzysz instancje testowe do przeprowadzania testów podstawowych z regionów 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"

Utwórz centralnego klienta w Cloud Shell.

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 nawiązywanie połączeń z maszynami wirtualnymi, utwórz regułę zapory sieciowej, która:

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

Utwórz w Cloud Shell 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 zawierający utworzone wcześniej konto usługi – user-managed-notebook-sa.

Utwórz w Cloud Shell instancję klienta prywatnego.

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 Vertex AI → Workbench, aby wyświetlić wdrożony notatnik.

b02fcb9b07dca06a.png

9. Wdróż model i prognozę online

W poniższej sekcji użyj przygotowanych modułów z programowania, Vertex AI:używaj niestandardowych procedur prognozowania w narzędziu Sklearn do wstępnego przetwarzania danych i po ich zakończeniu na potrzeby prognoz. Zaczynamy od sekcji 7,ponieważ notatnik został już utworzony w poprzednim kroku. Po wdrożeniu modelu wróć do samouczka, aby przejść do następnej sekcji.

ee68b7ba0cfd2746.png

10. Tworzenie niestandardowego panelu monitorowania na potrzeby prognozowania online

Prognoza online tworzy domyślny panel monitorowania w sekcji VERTEX AI → ONLINE PREDICTION → ENDPOINT NAME (diamonds-cpr_endpoint). Do testów musimy jednak określić czas rozpoczęcia i zakończenia, dlatego potrzebny jest niestandardowy Panel.

W tej sekcji utworzysz wskaźniki Cloud Monitoring, które umożliwiają uzyskiwanie pomiarów czasu oczekiwania na podstawie regionalnego dostępu do punktu końcowego prognozowania online w celu walidacji różnych czasów oczekiwania podczas uzyskiwania dostępu do punktu końcowego w us-central1 z instancji GCE wdrożonych w regionach us-west1 i us-central.

W samouczku użyjemy wskaźników prognozowania_opóźnienia. Dodatkowe dane są dostępne na platformie aiplatform.

Dane

Opis

prediction/online/prediction_latencies

Opóźnienie prognozy online wdrożonego modelu.

Utwórz wykres wskaźnika prediction_latencies

W konsoli Cloud przejdź do MONITORING → Metrics Explorer

536668ab0b29d77.png

Wstaw dane prediction/online/prediction_latencies, wybierz poniższe opcje i kliknij Zastosuj.

c1edd34208cb5ee2.png

Zaktualizuj Grupuj według na podstawie następującej opcji, wybierz Zapisz wykres.

e180a5d8a044b6e1.png

d2ecd6677a3b34e0.png

Kliknij Zapisz. Pojawi się prośba o wybranie panelu. Wybierz opcję Nowy pulpit nawigacyjny i podać nazwę.

e29a39dc941c8599.png

Niestandardowy panel Vertex

W następnej sekcji sprawdź, czy niestandardowy panel Vertex wyświetla prawidłowy czas.

Otwórz MONITORING → Panel i wybierz panel niestandardowy Vertex, a następnie wybierz godzinę. Upewnij się, że strefa czasowa jest prawidłowa.

f43ebed798ce1147.png

Rozwiń legendę, aby uzyskać widok tabeli.

61ffeef22e067ca9.png

Przykładowy widok rozwinięty:

9027e8785c023129.png

11. Utwórz prywatny DNS dla punktu końcowego PSC

Utwórz prywatną strefę DNS w celu vpc, aby łączyć wszystkie zasoby googleapis z adresem IP punktu końcowego PSC 100.100.10.10.

Utwórz w Cloud Shell 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 wiąże symbol *. googleapis.com na adres IP PSC.

gcloud dns --project=$projectid record-sets create *.googleapis.com. --zone="psc-googleapis" --type="A" --ttl="300" --rrdatas="100.100.10.10"

12. Testowanie zmiennych

Hey oferuje użytkownikom możliwość dostosowywania testów do wymagań sieci i aplikacji. W tym samouczku użyjemy opisanej poniżej opcji wraz z przykładowym ciągiem wykonania:

c == 1 instancja robocza

z == Czas trwania

m == metoda HTTP POST

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

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

Przykładowy ciąg curl z ciągiem HEY (nie musisz wykonywać)

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 z Cloud Console identyfikator punktu końcowego prognozy online, który zostanie użyty w kolejnych krokach.

Przejdź do VERTEX AI → PROCENT ONLINE

ce4d4a88a3fa2345.png

14. Pobierz i uruchom HEY (us-west1)

W następnej sekcji zalogujesz się do klienta West-client, aby pobrać i uruchomić narzędzie HEY zgodnie z prognozą online w regionie us-central1.

W Cloud Shell zaloguj się w kliencie West i pobierz plik HEY.

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

Z systemu operacyjnego pobierz HEY 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 uzyskania prognozy z wdrożonego modelu.

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

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

Wykonaj w systemie operacyjnym polecenie curl, aby sprawdzić, czy model i punkt końcowy prognozy działają prawidłowo. Zanotuj adres IP punktu końcowego PSC w szczegółowym dzienniku, a kod HTTP/2 200 oznacza powodzenie.

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 PSC używany do uzyskiwania dostępu do funkcji prognozowania & może być bardzo korzystny.

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 polecenie HEY

W systemie operacyjnym uruchom HEY, włączając 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. Weryfikacja hej (us-west1)

Po wykonaniu polecenia Hey w instancji obliczeniowej w regionie us-west1 oceń wyniki:

  • Wyniki HEY
  • Niestandardowy panel Vertex
  • Analizy sieciowe

Wyniki HEY

W systemie operacyjnym sprawdźmy wyniki HEY na podstawie 10-minutowego wykonania,

17,5826 żądań na sekundę

99% w 0,0686 sekundzie | 68 ms

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

Otwórz MONITORING → Panel i wybierz panel niestandardowy Vertex. Wpisz 10 m lub określ czas rozpoczęcia i zakończenia. Upewnij się, że strefa czasowa jest prawidłowa.

4102b1d0438c78e3.png

Analiza definicji opóźnień prognozowania wskazuje wskaźnik po stronie serwera, który mierzy łączny czas odpowiedzi na żądanie klienta po otrzymaniu odpowiedzi z modelu.

  • Całkowity czas oczekiwania: łączny czas, jaki żądanie spędza w usłudze, czyli czas oczekiwania modelu i czas oczekiwania.

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

Żądanie klienta + całkowity czas oczekiwania (w tym czas oczekiwania modelu) + odpowiedź klienta

Analiza sieciowa

Przyjrzyjmy się teraz opóźnieniom sieci między regionami raportowanym przez Network Intelligence, aby zorientować się, jaka jest różnica w opóźnieniach między regionami us-west1 i us-central1 raportowanymi przez Google Cloud Platform.

Przejdź do Cloud Console Network Intelligence → Panel wydajności i wybierz następujące opcje wyszczególnione na zrzucie ekranu poniżej. Wynikają one z opóźnienia 32–39 ms.

aade5f757115721.png

Podsumowanie bazowego poziomu HEY us-west1

Porównanie raportów o całkowitym czasie oczekiwania za pomocą narzędzi testowych daje mniej więcej taki sam czas oczekiwania co raport HEY. Za większość czasu oczekiwania odpowiada opóźnienie między regionami. W kolejnej serii testów sprawdźmy, jak sprawdza się centralny klient.

Narzędzie do określania czasu oczekiwania

Czas trwania

Analiza sieci: czas oczekiwania z us-west1 do us-central1

Ok. 32–39 ms

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

34,58 ms (99 p)

Całkowity czas oczekiwania zgłoszony przez Google

~ 66,58–73,58 ms

Rozkład czasu oczekiwania po stronie klienta HEY

68ms (99p)

16. Pobierz i uruchom plik HEY (us-central1)

W następnej sekcji zalogujesz się w centralnym kliencie, aby pobrać i uruchomić HEY zgodnie z prognozą online w us-central1.

Zaloguj się w Cloud Shell do centralnego klienta i pobierz HEY.

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

Z systemu operacyjnego pobierz HEY 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 uzyskania prognozy z wdrożonego modelu.

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

{"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 przed testem

Wykonaj w systemie operacyjnym polecenie curl, aby sprawdzić, czy model i punkt końcowy prognozy działają prawidłowo. Zanotuj adres IP punktu końcowego PSC w szczegółowym dzienniku, a kod HTTP/2 200 oznacza powodzenie.

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 PSC używany do uzyskiwania dostępu do funkcji prognozowania & może być bardzo korzystny.

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 polecenie HEY

W systemie operacyjnym uruchom HEY, włączając 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. Weryfikacja „OK” (us-central1)

Gdy wykonasz polecenie „Hey” w instancji obliczeniowej w regionie us-central1, oceń wyniki z tego:

  • Wyniki HEY
  • Niestandardowy panel Vertex
  • Analizy sieciowe

Wyniki HEY

W systemie operacyjnym sprawdźmy wyniki HEY na podstawie 10-minutowego wykonania,

44,9408 żądań na sekundę

99% w 0,0353 s | 35 ms

26 965 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

Przejdź do MONITORING → Panel i wybierz Vertex Custom Dashboard, a następnie wpisz 10 m. lub godzinę rozpoczęcia i zakończenia. Upewnij się, że strefa czasowa jest prawidłowa.

Opóźnienia prognozowania w ciągu ostatnich 10 minut to 30,533 ms.

Analiza definicji opóźnień prognozowania wskazuje wskaźnik po stronie serwera, który mierzy łączny czas odpowiedzi na żądanie klienta po otrzymaniu odpowiedzi z modelu.

  • Całkowity czas oczekiwania: łączny czas, jaki żądanie spędza w usłudze, czyli czas oczekiwania modelu i czas oczekiwania.

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

Żądanie klienta + całkowity czas oczekiwania (w tym czas oczekiwania modelu) + odpowiedź klienta

Analiza sieciowa

Przyjrzyjmy się teraz opóźnieniom sieci w regionie raportowanym przez Network Intelligence, aby zobrazować czas oczekiwania us-central1 w Google Cloud Platform.

Przejdź do Cloud Console Network Intelligence → Panel wydajności i wybierz następujące opcje wyszczególnione na zrzucie ekranu poniżej, które wskazują czas oczekiwania od 0,2 do 0,8 ms.

eaa84848c3185fde.png

Podsumowanie bazowego zestawu danych HEY us-central1

Porównanie całkowitego czasu oczekiwania zgłoszonego przez narzędzia testowe pozwala uzyskać krótszy czas oczekiwania niż klient-klient-zachodni ze względu na punkty końcowe obliczeniowe (centralny klient) i Vertex (prognoza online) w tym samym regionie.

Narzędzie do określania czasu oczekiwania

Czas trwania

Analityka sieci: czas oczekiwania us-central1 w regionie

~0,2–0,8 ms

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

30,533 ms (99 p)

Całkowity czas oczekiwania zgłoszony przez Google

Ok. 30,733–31,333 ms

Czas oczekiwania po stronie klienta HEY

35 ms (99p)

18. Gratulacje

Gratulujemy! Udało Ci się wdrożyć i zweryfikować HEY, dzięki czemu uzyskasz podstawowy czas oczekiwania w prognozie po stronie klienta przy użyciu kombinacji Cloud Monitoring i Network Intelligence. Na podstawie testów udało Ci się wskazać punkt końcowy prognozy w regionie us-central, który może być udostępniany między regionami, mimo że zaobserwowano opóźnienie.

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

e6d3675ca7c6911f.jpeg

19. Czyszczenie danych

Usuń z Cloud Shell 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

Z Cloud Console usunięto te elementy:

Folder Artifact Registry

99c17044e2f80919.png

W Vertex AI Model Registry wycofaj wdrożenie modelu:

f5b315f089ae6283.png

Usuń punkt końcowy z Vertex AI Online Prediction

9b58688a5037de84.png

Co dalej?

Przejrzyj te samouczki...

Więcej informacji filmy,

Dokumentacja