HEY ile Vertex AI online tahmin temel çizgi testi

1. Giriş

Bu eğitim, HEY web performans aracını kullanarak us-central1 ve us-west1 bölgesinde us-central1'de dağıtılan bir Tahmin uç noktasına temel referans testi gerçekleştirirken Cloud Monitoring Online Tahmin metriklerini nasıl oluşturup değerlendireceğinizi gösterir.

Neler oluşturacaksınız?

us-west1 ve us-central1 bölgelerindeki alt ağlardan ve örneklerden oluşan aiml-vpc adında bir VPC ağı oluşturacaksınız. Bu ağ, bir Online Tahmin ve us-central1'de dağıtılan bir model kullanarak HEY kullanarak trafik oluşturmak için kullanılacak.

Şirket içi ve çoklu bulut ortamlarının googleapis'e erişmek için PSC'den nasıl yararlanabileceğini göstermek amacıyla eğiticiye Private Service Connect ve Private DNS de dahil edilmiştir.

Eğiticide, HEY'den Online Tahmine kadar oluşturulan trafiği doğrulamak için Cloud Monitoring ve Network Intelligence kullanılacaktır. Eğiticide açıklanan adımlar VPC'de dağıtılmış olsa da bu adımlardan yararlanarak şirket içi veya çoklu bulut ortamlarından Vertex API'lerini dağıtıp temel çizgisini elde edebilirsiniz. Ağ mimarisi aşağıdaki bileşenlerden oluşur:

dd5c102ce1ab0150.png

Kullanım alanının ayrıntıları aşağıda verilmiştir:

  1. HEY kullanarak us-west1 bölgesindeki bir GCE örneğinden us-central1 bölgesindeki Online Tahmine erişme
  2. Vertex API'ye erişmek için PSC'nin kullanıldığını doğrulama
  3. HEY kullanarak 5 dakika curl işlemi yapın
  4. Cloud Monitoring'i kullanarak gecikmeyi doğrulama
  5. Network Intelligence kullanarak bölgeler arası gecikmeyi doğrulama
  6. HEY kullanarak us-central1 bölgesindeki bir GCE örneğinden us-central1 bölgesindeki Online Tahmin'e erişin
  7. Vertex API'ye erişmek için PSC'nin kullanıldığını doğrulama
  8. HEY kullanarak 5 dakika curl işlemi yapın
  9. Cloud Monitoring'i kullanarak gecikmeyi doğrulama
  10. Network Intelligence kullanarak bölge içi gecikmeyi doğrulama

Neler öğreneceksiniz?

  • Private Service Connect Uç Noktası oluşturma
  • HEY kullanarak Online Tahmine yük oluşturma
  • Cloud Monitoring'i kullanarak Vertex AI metrikleri oluşturma
  • Network Intelligence'ı kullanarak web sitesi ve bölgeler arası gecikme

Gerekenler

  • Google Cloud Projesi

IAM İzinleri

Compute Ağ Yöneticisi

Compute Ağ Yöneticisi

Hizmet Dizini Düzenleyici

DNS Yöneticisi

Network Management Görüntüleyicisi

2. Başlamadan önce

Projeyi, eğiticiyi destekleyecek şekilde güncelleme

Bu eğiticide, Cloud Shell'de gcloud yapılandırması uygulamasına yardımcı olmak için $variables kullanımı açıklanmaktadır.

Cloud Shell'in içinde aşağıdaki işlemleri gerçekleştirin:

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

3. aiml-vpc kurulumu

aiml-vpc'yi oluşturma

gcloud services enabled networkmanagement.googleapis.com

Cloud Shell'in içinde aşağıdaki işlemleri gerçekleştirin:

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

Cloud Shell içinde, Network Intelligence için ağ yönetimi API'sini etkinleştirme

gcloud services enable networkmanagement.googleapis.com

Kullanıcı tarafından yönetilen not defteri alt ağını oluşturma

Cloud Shell'in içinde workbench alt ağını oluşturun.

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

Cloud Shell'in içinde us-west1-alt ağını oluşturun.

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

Cloud Shell'in içinde us-central1-alt ağını oluşturun.

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

Cloud Yönlendirici ve NAT yapılandırması

GCE örneğinin harici bir IP adresi olmadığından yazılım paketlerini indirmek için eğiticide Cloud NAT kullanılır. Cloud NAT, çıkış NAT özellikleri sunar. Bu nedenle, internet ana makinelerinin kullanıcı tarafından yönetilen bir not defteriyle iletişim başlatmasına izin verilmez. Bu sayede not defteri daha güvenli hale gelir.

Cloud Shell'in içinde us-west1 adlı bölgesel bulut yönlendiricisini oluşturun.

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

Cloud Shell'in içinde us-west1 adlı bölgesel bulut nat ağ geçidini oluşturun.

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

Cloud Shell'in içinde us-central1 adlı bölgesel bulut yönlendiricisini oluşturun.

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

Cloud Shell'in içinde us-central1 adlı bölgesel bulut nat ağ geçidini oluşturun.

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. Private Service Connect uç noktasını oluşturma

Aşağıdaki bölümde, aiml-vpc'den Vertex API'ye erişmek için kullanılacak bir Private Service Connect (PSC) uç noktası oluşturacaksınız.

Cloud Shell'den

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

"pscendpointip" öğesini depola (laboratuvar süresince)

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

echo $pscendpointip

PSC uç noktasını oluşturma

Cloud Shell'den

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

Yapılandırılmış Private Service Connect uç noktalarını listeleme

Cloud Shell'den

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

Yapılandırılmış Private Service Connect uç noktalarını açıklama

Cloud Shell'den

gcloud compute forwarding-rules describe \
    pscvertex --global

5. GCE Örnekleri için bir hizmet hesabı oluşturma

Vertex API'ye hassas düzeyde kontrol olanağı sağlamak için batı ve merkezi örneklere uygulanacak, kullanıcı tarafından yönetilen bir hizmet hesabı gereklidir. Hizmet hesabı izinleri oluşturulduktan sonra iş gereksinimlerine göre değiştirilebilir. Eğiticide, kullanıcı tarafından yönetilen hizmet hesabına (vertex-sa) aşağıdaki roller uygulanır:

Devam etmeden önce Service Account API'yi gerekir.

Cloud Shell'in içinde hizmet hesabını oluşturun.

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

Cloud Shell'in içinde, hizmet hesabını işlem örneği yöneticisi rolüyle güncelleme

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

Cloud Shell'in içinde hizmet hesabını Vertex AI Kullanıcısı rolüyle güncelleme

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

6. Kullanıcı tarafından yönetilen hizmet hesabı oluşturma (Not defteri)

Aşağıdaki bölümde, eğitimde kullanılan Vertex Workbench (Notebook) ile ilişkilendirilecek kullanıcı tarafından yönetilen hizmet hesabı oluşturacaksınız.

Eğiticide, hizmet hesabına aşağıdaki kurallar uygulanır:

Cloud Shell'in içinde hizmet hesabını oluşturun.

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

Cloud Shell'in içinde, hizmet hesabını Depolama Alanı Yöneticisi rolüyle güncelleyin.

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

Cloud Shell'in içinde hizmet hesabını Vertex AI Kullanıcısı rolüyle güncelleyin.

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

Cloud Shell'in içinde hizmet hesabını Artifact Registry Yöneticisi rolüyle güncelleyin.

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

Cloud Shell'de hizmet hesabını listeleyin ve kullanıcı tarafından yönetilen not defterini oluştururken kullanılacak e-posta adresini not edin.

gcloud iam service-accounts list

7. Test örneklerini oluşturma

Aşağıdaki bölümde us-west1 ve us-central1'de temel çizgi testi yapmak için test örnekleri oluşturacaksınız.

Cloud Shell'in içinde batı istemcisini oluşturun.

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"

Cloud Shell'in içinde merkezi istemciyi oluşturun.

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"

IAP'nin sanal makine örneklerinize bağlanmasına izin vermek için aşağıdaki şartları yerine getiren bir güvenlik duvarı kuralı oluşturun:

  • IAP kullanarak erişilmesini istediğiniz tüm sanal makine örnekleri için geçerlidir.
  • 35.235.240.0/20 IP aralığından giriş trafiğine izin verir. Bu aralık, IAP'nin TCP yönlendirme için kullandığı tüm IP adreslerini içerir.

Cloud Shell'in içinde IAP güvenlik duvarı kuralını oluşturun.

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

8. Kullanıcı tarafından yönetilen not defteri oluşturma

Notebook API'yi

Aşağıdaki bölümde, önceden oluşturulmuş hizmet hesabını (user-managed-notebook-sa) içeren, kullanıcı tarafından yönetilen bir not defteri oluşturun.

Cloud Shell'in içinde özel istemci örneğini oluşturun.

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

Vertex AI → Workbench'e giderek dağıtılan not defterinizi görüntüleyin.

b02fcb9b07dca06a.png

9. Modeli ve Online Tahmini Dağıtma

Aşağıdaki bölümde, önceki adımda not defteri oluşturduğunuz için sağlanan codelab,Vertex AI:tahminler için işlem verilerini önceden işlemek ve yayınlamak üzere Sklearn ile özel tahmin rutinlerini kullanın bölümü 7. bölümden başlar. Model dağıtıldıktan sonra eğiticiye geri dönerek sonraki bölüme geçin.

ee68b7ba0cfd2746.png

10. Online tahmin için özel izleme kontrol paneli oluştur

Online Tahmin, VERTEX AI → ONLINE PREDICTION → ENDPOINT NAME (diamonds-cpr_endpoint) altında varsayılan bir İzleme Kontrol Paneli oluşturur. Ancak, testlerimiz için bir başlangıç ve bitiş zamanı tanımlamamız gerektiğinden, özel bir Kontrol Paneli gereklidir.

Aşağıdaki bölümde, Online Tahmin Uç Noktasına bölgesel erişime göre gecikme ölçümleri elde etmek üzere Cloud Monitoring Metrikleri oluşturacaksınız. Bu metrikler, us-west1 ve us-central bölgesinde dağıtılan GCE örneklerinden us-central1'de bir uç noktaya erişilirken yaşanan farklı gecikmeyi doğrulayacak.

Eğitim için Prediction_latencies metriklerini kullanacağız. aiplatform'da başka metrikler de mevcut.

Metrik

Açıklama

prediction/online/prediction_latencies

Dağıtılan modelin online tahmin gecikmesi.

prediction_latencies metriği için bir grafik oluşturun

Cloud Console'dan İZLEME → Metrik Gezgini'ne gidin

536668ab0b29d77.png

prediction/online/prediction_latencies metriğini ekleyin ve aşağıdaki seçenekleri belirleyip Uygula'yı seçin.

c1edd34208cb5ee2.png

Aşağıdaki seçeneğe göre Gruplandırma ölçütünü güncelle, Grafiği Kaydet'i seçin.

e180a5d8a044b6e1.png

d2ecd6677a3b34e0.png

Kaydet'i seçin, bir Gösterge Tablosu seçmeniz istenir. Yeni Gösterge Tablosu & bir ad girin.

e29a39dc941c8599.png

Vertex Özel Kontrol Paneli

Aşağıdaki bölümde, Vertex Özel Kontrol Paneli'nin doğru saati gösterdiğini doğrulayın.

İZLEME → Kontrol paneli'ne gidin ve Vertex Özel Kontrol Paneli'ni, ardından saati seçin. Saat diliminizin doğru olduğundan emin olun.

f43ebed798ce1147.png

Tablo görünümü elde etmek için açıklamaları genişlettiğinizden emin olun.

61ffeef22e067ca9.png

Örnek genişletilmiş görünüm:

9027e8785c023129.png

11. PSC Uç Noktası için Gizli DNS Oluşturma

Tüm googleapis'leri PSC uç nokta IP adresi olan 100.100.10.10'a çözümlemek için aiml-vpc'de bir Gizli DNS alt bölgesi oluşturun.

Cloud Shell'den gizli bir DNS alt bölgesi oluşturun.

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"

Cloud Shell'den * ile ilişkilendiren A kaydını oluşturun. googleapis.com'u PSC IP'sine bağlayın.

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

12. Merhaba, test değişkenleri

Hey, son kullanıcılara testi ağ ve uygulama gereksinimlerine göre özelleştirme olanağı sunar. Eğiticinin amacı doğrultusunda, örnek yürütme dizesiyle birlikte aşağıda ayrıntılı olarak açıklanan seçeneği kullanacağız:

c == 1 çalışan

z == Süre

m == HTTP yöntemi POST

D == Dosyadan HTTP istek gövdesi, instances.json

n == Çalıştırılacak istek sayısı. Varsayılan değer 200'dür.

HEY içeren örnek curl dizesi (yürütme gerekli değil)

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. Tahmin kimliğini edinme

Sonraki adımlarda kullanılacak Online Tahmin Uç Nokta Kimliğinizi Cloud Console'dan alın.

VERTEX AI → İNTERNETTEKİ TAHMİN'e gidin

ce4d4a88a3fa2345.png

14. HEY'yi indirin ve yürütün (us-west1)

Aşağıdaki bölümde, us-central1'de bulunan Online Tahmin'i indirmek ve çalıştırmak için batı-istemciye giriş yapacaksınız.

Cloud Shell'den batı istemciye giriş yapın ve HEY'yi indirin

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

İşletim sisteminden HEY'yi indirin ve izinleri güncelleyin.

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

İşletim sisteminde aşağıdaki değişkenleri oluşturun:

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

Örnek:

ENDPOINT_ID="2706243362607857664"

Aşağıdaki bölümde, vi düzenleyicisi veya nano kullanarak bir sample.json dosyası oluşturacak ve dağıtılan modelden tahmin almak için kullanılan veri dizesini ekleyeceksiniz.

Batı istemci işletim sisteminde, aşağıdaki veri dizesiyle bir instances.json dosyası oluşturun:

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

Örnek:

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

Ön test

Modelin ve tahmin uç noktasının başarılı şekilde çalıştığını doğrulamak için işletim sisteminde bir curl işlemi yürütün. Ayrıntılı günlükteki PSC uç nokta IP'si ve HTTP/2 200'ün başarıyı gösterdiğine dikkat edin.

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

Örnek: Tahmine ve verilere erişmek için kullanılan PSC IP adresini yardımcı olur.

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

HEY yürüt

OS'ten, 10 dakikalık referans testi etkinleştirerek HEY yürütün.

./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. Ok Doğrulama (us-west1)

Artık us-west1 bölgesindeki bir compute örneğinden Hey'i yürüttüğünüze göre, aşağıdakilerin sonuçlarını değerlendirin:

  • HEY sonuçları
  • Vertex Özel Kontrol Paneli
  • Ağ Zekası

HEY sonuçları

İşletim sisteminden, 10 dakikalık yürütmeye göre HEY sonuçlarını doğrulayalım.

Saniye başına 17,5826 istek

0,0686 sn.içinde% 99 | 68 ms.

200 durum kodu içeren 10.550 yanıt

user@west-client:$ ./hey_linux_amd64 -c 1 -z 10m -m POST -D instances.json  -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/$projectid/locations/us-central1/endpoints/${ENDPOINT_ID}:predict

Summary:
  Total:        600.0243 secs
  Slowest:      0.3039 secs
  Fastest:      0.0527 secs
  Average:      0.0569 secs
  Requests/sec: 17.5826
  

Response time histogram:
  0.053 [1]     |
  0.078 [10514] |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
  0.103 [16]    |
  0.128 [4]     |
  0.153 [3]     |
  0.178 [1]     |
  0.203 [0]     |
  0.229 [2]     |
  0.254 [1]     |
  0.279 [5]     |
  0.304 [3]     |


Latency distribution:
  10% in 0.0546 secs
  25% in 0.0551 secs
  50% in 0.0559 secs
  75% in 0.0571 secs
  90% in 0.0596 secs
  95% in 0.0613 secs
  99% in 0.0686 secs

Details (average, fastest, slowest):
  DNS+dialup:   0.0000 secs, 0.0527 secs, 0.3039 secs
  DNS-lookup:   0.0000 secs, 0.0000 secs, 0.0116 secs
  req write:    0.0000 secs, 0.0000 secs, 0.0002 secs
  resp wait:    0.0567 secs, 0.0526 secs, 0.3038 secs
  resp read:    0.0001 secs, 0.0001 secs, 0.0696 secs

Status code distribution:
  [200] 10550 responses

Vertex Özel Kontrol Paneli

İZLEME → Kontrol paneli'ne gidip Vertex Özel Kontrol Paneli'ni seçin. 10 dk. girin veya başlangıç ve bitiş zamanını belirtin. Saat diliminizin doğru olduğundan emin olun.

4102b1d0438c78e3.png

Tahmin Gecikmelerinin tanımı incelendiğinde, modelden bir yanıt alındıktan sonra istemci isteğine yanıt vermek için geçen toplam süreyi ölçen Sunucu Tarafı metriği gösterilir.

  • Toplam gecikme süresi: Bir isteğin hizmette harcadığı toplam süre. Diğer bir deyişle, model gecikmesi artı ek yük gecikmesi.

Öte yandan HEY, aşağıdaki parametreleri dikkate alan bir istemci tarafı metrikleridir:

İstemci isteği + Toplam gecikme (model gecikmesi dahil) + İstemci yanıtı

Ağ Zekası

Şimdi, Google Cloud Platform'un bildirdiği us-west1 ile us-central1 arasındaki gecikme hakkında bir fikir edinmek için Network Intelligence'ın bildirdiği bölgeler arası ağ gecikmesine göz atalım.

Cloud Console Network Intelligence → Performans Kontrol Paneli'ne gidin ve aşağıdaki ekran görüntüsünde ayrıntılı olarak açıklanan, 32-39 ms arasında gecikmeyi gösteren aşağıdaki seçenekleri belirleyin.

aade5f757115721.png

HEY us-west1 temel özeti

Toplam gecikme raporlarının test araçlarıyla karşılaştırılması, HEY tarafından bildirilen yaklaşık olarak aynı gecikmeyi verir. Bölgeler arası gecikmenin büyük kısmı gecikmeden kaynaklanır. Merkezi müşterinin bir sonraki test serisinde nasıl performans gösterdiğini görelim.

Gecikme Aracı

Süre

Ağ zekası: us-west1'den us-central1'e gecikme

Yaklaşık 32-39 ms.

Cloud Monitoring: Toplam tahmin gecikmesi [%99]

34,58 ms (99 p)

Google tarafından bildirilen toplam gecikme

~ 66,58 - 73,58 ms

HEY istemci tarafı gecikme dağılımı

68ms (99p)

16. HEY'yi indirin ve yürütün (us-central1)

Aşağıdaki bölümde, us-central1'de bulunan Online Tahmin'i indirmek ve çalıştırmak için merkezi istemciye giriş yapacaksınız.

Cloud Shell'den merkezi istemciye giriş yapın ve HEY'yi indirin

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

İşletim sisteminden HEY'yi indirin ve izinleri güncelleyin.

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

İşletim sisteminde aşağıdaki değişkenleri oluşturun:

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

Örnek:

ENDPOINT_ID="2706243362607857664"

Aşağıdaki bölümde, vi düzenleyicisi veya nano kullanarak bir sample.json dosyası oluşturacak ve dağıtılan modelden tahmin almak için kullanılan veri dizesini ekleyeceksiniz.

Batı istemci işletim sisteminde, aşağıdaki veri dizesiyle bir instances.json dosyası oluşturun:

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

Örnek:

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

Ön test

Modelin ve tahmin uç noktasının başarılı şekilde çalıştığını doğrulamak için işletim sisteminde bir curl işlemi yürütün. Ayrıntılı günlükteki PSC uç nokta IP'si ve HTTP/2 200'ün başarıyı gösterdiğine dikkat edin.

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

Örnek: Tahmine ve verilere erişmek için kullanılan PSC IP adresini yardımcı olur.

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

HEY yürütme

OS'ten, 10 dakikalık referans testi etkinleştirerek HEY yürütün.

./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. Ok Doğrulama (us-central1)

Artık us-central1 bölgesindeki bir compute örneğinden Hey'i yürüttüğünüze göre aşağıdaki sonuçlara göre değerlendirme yapın:

  • HEY sonuçları
  • Vertex Özel Kontrol Paneli
  • Ağ Zekası

HEY sonuçları

İşletim sisteminden, 10 dakikalık yürütmeye göre HEY sonuçlarını doğrulayalım.

Saniye başına 44.9408 istek

0,0353 sn.içinde% 99 | 35 ms.

200 durum koduna sahip 26965 yanıtları

devops_user_1_deepakmichael_alto@central-client:~$ ./hey_linux_amd64 -c 1 -z 10m -m POST -D instances.json  -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/$projectid/locations/us-central1/endpoints/${ENDPOINT_ID}:predict

Summary:
  Total:        600.0113 secs
  Slowest:      0.3673 secs
  Fastest:      0.0184 secs
  Average:      0.0222 secs
  Requests/sec: 44.9408
  

Response time histogram:
  0.018 [1]     |
  0.053 [26923] |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
  0.088 [25]    |
  0.123 [4]     |
  0.158 [0]     |
  0.193 [1]     |
  0.228 [9]     |
  0.263 [1]     |
  0.298 [0]     |
  0.332 [0]     |
  0.367 [1]     |


Latency distribution:
  10% in 0.0199 secs
  25% in 0.0205 secs
  50% in 0.0213 secs
  75% in 0.0226 secs
  90% in 0.0253 secs
  95% in 0.0273 secs
  99% in 0.0353 secs

Details (average, fastest, slowest):
  DNS+dialup:   0.0000 secs, 0.0184 secs, 0.3673 secs
  DNS-lookup:   0.0000 secs, 0.0000 secs, 0.0079 secs
  req write:    0.0000 secs, 0.0000 secs, 0.0007 secs
  resp wait:    0.0220 secs, 0.0182 secs, 0.3672 secs
  resp read:    0.0002 secs, 0.0001 secs, 0.0046 secs

Status code distribution:
  [200] 26965 responses

Vertex Özel Kontrol Paneli

İZLEME → Kontrol paneli'ne gidip Vertex Özel Kontrol Paneli'ni seçip 10 dk. girin. Başlangıç ve bitiş zamanınız da olabilir. Saat diliminizin doğru olduğundan emin olun.

Son 10 adaki Tahmin Gecikmeleri, 30,533 ms verir.

Tahmin Gecikmelerinin tanımı incelendiğinde, modelden bir yanıt alındıktan sonra istemci isteğine yanıt vermek için geçen toplam süreyi ölçen Sunucu Tarafı metriği gösterilir.

  • Toplam gecikme süresi: Bir isteğin hizmette harcadığı toplam süre. Diğer bir deyişle, model gecikmesi artı ek yük gecikmesi.

Öte yandan HEY, aşağıdaki parametreleri dikkate alan bir istemci tarafı metrikleridir:

İstemci isteği + Toplam gecikme (model gecikmesi dahil) + İstemci yanıtı

Ağ Zekası

Şimdi, Google Cloud Platform'un bildirdiği us-central1 gecikmesi hakkında fikir edinmek için Network Intelligence'ın bildirdiği bölge içi ağ gecikmesine göz atalım.

Cloud Console Network Intelligence → Performans Kontrol Paneli'ne gidin ve aşağıdaki ekran görüntüsünde ayrıntılı olarak açıklanan, 0,2 ile 0,8 ms arasında gecikmeyi gösteren aşağıdaki seçenekleri belirleyin.

eaa84848c3185fde.png

HEY us-central1 temel özeti

Test araçları tarafından bildirilen toplam gecikmenin karşılaştırılması, aynı bölgedeki işlem (merkezi istemci) ve Vertex uç noktaları (model ve online tahmin) nedeniyle batı istemciye göre daha düşük gecikme sağlar.

Gecikme Aracı

Süre

Ağ zekası: us-central1 bölge içi gecikme

~,2 ila 0,8 ms.

Cloud Monitoring: Toplam tahmin gecikmesi [%99]

30,533 ms (99p)

Google tarafından bildirilen toplam gecikme

~30,733 - 31,333 ms

HEY istemci tarafı gecikmesi

35 ms (99p)

18. Tebrikler

Tebrikler, Cloud Monitoring ve Network Intelligence'ı birlikte kullanarak istemci taraflı Tahmin referans gecikmesini elde etmek için HEY'yi başarıyla dağıtıp doğruladınız. Teste göre us-central bölgesinde bölgeler arasında hizmet verilebilecek bir tahmin uç noktası belirlediniz. Ancak gecikme gözlemlendi.

Cosmopup, eğitici videoların çok iyi olduğunu düşünüyor.

e6d3675ca7c6911f.jpeg

19. Temizleme

Cloud Shell'den eğitim bileşenlerini silin.

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

Cloud Console'dan şu veriler silindi:

Artifact Registry klasörü

99c17044e2f80919.png

Vertex AI Model Registry'den modelin dağıtımını kaldırın:

f5b315f089ae6283.png

Vertex AI Online Prediction'dan uç noktayı silin

9b58688a5037de84.png

Sırada ne var?

Bu eğitimlerden bazılarına göz atın...

Daha fazla bilgi ve Videolar

Referans belgeler