1. Giriş
Bu eğitimde, HEY web performansı aracını kullanarak us-central1'de dağıtılan bir Tahmin uç noktasına us-central1 ve us-west1 genelinde temel test gerçekleştirirken Cloud Monitoring Online Tahmin metriklerini nasıl oluşturacağınız ve değerlendireceğiniz gösterilmektedir.
Ne oluşturacaksınız?
us-west1 ve us-central1'de alt ağlar ve örneklerden oluşan aiml-vpc adlı bir VPC ağı oluşturacaksınız. Bu ağ, us-central1'de dağıtılan bir Online Prediction ve modeli hedefleyen HEY kullanılarak 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 Private Service Connect ve özel DNS de eğitime dahil edilmiştir.
Eğitimde, HEY'den Online Tahmin'e oluşturulan trafiği doğrulamak için Cloud Monitoring ve Network Intelligence kullanılır. Eğitimde özetlenen adımlar bir VPC'de dağıtılsa da bu adımlardan yararlanarak şirket içi veya çoklu bulut ortamlarından Vertex API'lerini dağıtabilir ve temel bilgilerini edinebilirsiniz. Ağ mimarisi aşağıdaki bileşenlerden oluşur:

Kullanım alanıyla ilgili ayrıntıları aşağıda bulabilirsiniz:
- HEY'yi kullanarak us-west1'deki bir GCE örneğinden us-central1'deki Online Prediction'a erişme
- Vertex API'ye erişmek için PSC'nin kullanıldığını doğrulayın.
- HEY ile 5 dakika boyunca curl işlemi gerçekleştirme
- Cloud Monitoring'i kullanarak gecikmeyi doğrulama
- Ağ Zekası'nı kullanarak bölgeler arası gecikmeyi doğrulama
- HEY'yi kullanarak us-central1'deki bir GCE örneğinden us-central1'de online tahmine erişme
- Vertex API'ye erişmek için PSC'nin kullanıldığını doğrulayın.
- HEY ile 5 dakika boyunca curl işlemi gerçekleştirme
- Cloud Monitoring'i kullanarak gecikmeyi doğrulama
- Ağ Zekası'nı kullanarak bölge içi gecikmeyi doğrulama
Neler öğreneceksiniz?
- Private Service Connect uç noktası oluşturma
- HEY'i kullanarak online tahminde yük oluşturma
- Cloud Monitoring'i kullanarak Vertex AI metrikleri oluşturma
- Bölgeler arası ve bölgeler içi gecikmeyi doğrulamak için ağ analizi nasıl kullanılır?
Gerekenler
- Google Cloud projesi
IAM İzinleri
2. Başlamadan önce
Projeyi, eğitimi destekleyecek şekilde güncelleme
Bu eğitimde, Cloud Shell'de gcloud yapılandırmasının uygulanmasına yardımcı olmak için $değişkenleri kullanılır.
Cloud Shell'de aşağıdakileri yapın:
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 enable networkmanagement.googleapis.com
Cloud Shell'de aşağıdakileri yapın:
gcloud compute networks create aiml-vpc --project=$projectid --subnet-mode=custom
Cloud Shell'de Network Intelligence için Network Management API'yi etkinleştirin.
gcloud services enable networkmanagement.googleapis.com
Kullanıcı tarafından yönetilen not defteri alt ağı oluşturma
Cloud Shell'de workbench-subnet'i 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'de us-west1-subnet'i 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'de us-central1-subnet'i 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 Router ve NAT yapılandırması
GCE örneğinde harici IP adresi olmadığından, yazılım paketlerini indirmek için eğitimde Cloud NAT kullanılır. Cloud NAT, çıkış NAT özellikleri sağlar. Bu nedenle, internet ana makinelerinin kullanıcı tarafından yönetilen bir not defteriyle iletişimi başlatmasına izin verilmez. Bu da Cloud NAT'i daha güvenli hale getirir.
Cloud Shell'de bölgesel Cloud Router'ı (us-west1) oluşturun.
gcloud compute routers create cloud-router-us-west1-aiml-nat --network aiml-vpc --region us-west1
Cloud Shell'de bölgesel Cloud NAT ağ geçidi olan us-west1'i 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'de bölgesel Cloud Router'ı (us-central1) oluşturun.
gcloud compute routers create cloud-router-us-central1-aiml-nat --network aiml-vpc --region us-central1
Cloud Shell'de bölgesel Cloud NAT ağ geçidi olan us-central1'i 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şturun
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
Laboratuvar süresince "pscendpointip" değerini saklayın.
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 hizmet hesabı oluşturma
Vertex API'de ayrıntılı kontrol sağlamak için batı ve merkez örneklerine uygulanacak kullanıcı tarafından yönetilen bir hizmet hesabı gerekir. Oluşturulduktan sonra hizmet hesabı izinleri, işletme gereksinimlerine göre değiştirilebilir. Eğitimde, kullanıcı tarafından yönetilen hizmet hesabı olan vertex-sa'ya aşağıdaki roller uygulanır:
Devam etmeden önce Hizmet Hesabı API'sini gerekir.
Cloud Shell'de hizmet hesabını oluşturun.
gcloud iam service-accounts create vertex-gce-sa \
--description="service account for vertex" \
--display-name="vertex-sa"
Cloud Shell'de hizmet hesabını işlem örneği yöneticisi rolüyle güncelleyin.
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:vertex-gce-sa@$projectid.iam.gserviceaccount.com" --role="roles/compute.instanceAdmin.v1"
Cloud Shell'de hizmet hesabını Vertex AI Kullanıcısı rolüyle güncelleyin.
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 (Notebook)
Aşağıdaki bölümde, eğitimde kullanılan Vertex Workbench (Not Defteri) ile ilişkilendirilecek kullanıcı tarafından yönetilen bir hizmet hesabı oluşturacaksınız.
Eğitimde, hizmet hesabına aşağıdaki kurallar uygulanır:
Cloud Shell'de hizmet hesabını oluşturun.
gcloud iam service-accounts create user-managed-notebook-sa \
--display-name="user-managed-notebook-sa"
Cloud Shell'de hizmet hesabını Storage Admin 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'de 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'de 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 defteri oluşturulurken 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'den temel testler gerçekleştirmek için test örnekleri oluşturacaksınız.
Cloud Shell'de west-client'ı 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'de central-client'ı 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 özellikleri içeren bir güvenlik duvarı kuralı oluşturun:
- IAP kullanarak erişmek istediğiniz tüm sanal makine örnekleri için geçerlidir.
- 35.235.240.0/20 IP aralığından gelen giriş trafiğine izin verir. Bu aralık, IAP'nin TCP yönlendirme için kullandığı tüm IP adreslerini içerir.
Cloud Shell'de 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
Aşağıdaki bölümde, daha önce oluşturulan hizmet hesabını (user-managed-notebook-sa) içeren, kullanıcı tarafından yönetilen bir not defteri oluşturun.
Cloud Shell'de private-client ö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
Dağıtılan not defterinizi görüntülemek için Vertex AI → Workbench'e gidin.

9. Modeli dağıtma ve online tahmin
Aşağıdaki bölümde, sağlanan codelab'i kullanın. Önceki adımda zaten bir not defteri oluşturduğunuz için Vertex AI:Tahminler için verileri önceden ve sonradan işlemek üzere Sklearn ile özel tahmin rutinlerini kullanma başlıklı codelab'in 7. bölümünden başlayın. Model dağıtıldıktan sonra bir sonraki bölüme başlamak için eğitime geri dönün.

10. Online tahmin için özel izleme kontrol paneli oluşturma
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, us-west1 ve us-central bölgelerinde dağıtılan GCE örneklerinden us-central1 bölgesindeki bir uç noktaya erişirken oluşan farklı gecikmeyi doğrulamak için Online Tahmin Uç Noktası'na bölgesel erişime dayalı gecikme ölçümleri elde etmek üzere Cloud Monitoring metrikleri oluşturacaksınız.
Eğitimde prediction_latencies metriklerini kullanacağız. Ek metrikler aiplatform'da mevcuttur.
Metrik | Açıklama |
prediction/online/prediction_latencies | Dağıtılan modelin online tahmin gecikmesi. |
prediction_latencies metriği için grafik oluşturma
Cloud Console'da İZLEME → Metrik Gezgini'ne gidin.

Metrik prediction/online/prediction_latencies'i ekleyin, aşağıdaki seçenekleri belirleyin ve Uygula'yı seçin.

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


Kaydet'i seçin. Bir kontrol paneli seçmeniz istenir. Yeni Gösterge Tablosu'nu seçip bir ad girin.

Vertex Özel Kontrol Paneli
Aşağıdaki bölümde, Vertex özel kontrol panelinde doğru saatin gösterildiğini doğrulayın.
MONITORING → Kontrol Paneli'ne gidin, Vertex Custom Kontrol Paneli'ni ve ardından zamanı seçin. Saat diliminizin doğru olduğundan emin olun.

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

Genişletilmiş görünüm örneği:

11. PSC uç noktası için özel DNS oluşturma
Tüm googleapis'leri 100.100.10.10 PSC uç nokta IP adresine çözümlemek için aiml-vpc'de gizli bir DNS bölgesi oluşturun.
Cloud Shell'den gizli DNS 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, *. googleapis.com adresini PSC IP'siyle ilişkilendiren A kaydını oluşturun.
gcloud dns --project=$projectid record-sets create *.googleapis.com. --zone="psc-googleapis" --type="A" --ttl="300" --rrdatas="100.100.10.10"
12. Hey test değişkenleri
Hey, son kullanıcılara testleri ağ ve uygulama gereksinimlerine göre özelleştirme olanağı sunar. Eğitimin amacı doğrultusunda, aşağıda ayrıntılı olarak açıklanan seçeneği örnek bir yürütme dizesiyle birlikte kullanacağız:
c == 1 çalışan
z == Süre
m == HTTP yöntemi POST
D == HTTP istek gövdesi (instances.json dosyasından)
n == Çalıştırılacak istek sayısı. Varsayılan değer 200'dür.
HEY ile örnek curl dizesi (yürütme gerekli değildir)
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 Prediction Endpoint ID'nizi Cloud Console'dan alın.
VERTEX AI → ONLINE PREDICTION'a (Vertex AI → Online Tahmin) gidin.

14. HEY'i (us-west1) indirme ve yürütme
Aşağıdaki bölümde, us-central1'de bulunan Online Prediction'a karşı HEY'yi indirip yürütmek için west-client'ta oturum açacaksınız.
Cloud Shell'den west-client'a giriş yapın ve HEY'i indirin.
gcloud compute ssh west-client --project=$projectid --zone=us-west1-a --tunnel-through-iap
HEY'i işletim sisteminden 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üzenleyici veya nano kullanarak bir instances.json dosyası oluşturacak ve dağıtılan modelden tahmin almak için kullanılan veri dizesini ekleyeceksiniz.
west-client işletim sisteminde aşağıdaki veri dizesini içeren 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ı bir şekilde çalıştığını doğrulamak için işletim sisteminden bir curl komutu çalıştırın. Ayrıntılı günlükte PSC uç noktası IP'sini ve HTTP/2 200'ü (başarılı olduğunu gösterir) not 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
Örneğin, tahmine erişmek ve başarılı sonuç elde etmek için kullanılan PSC IP adresini not edin.
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'i yürütme
İşletim sisteminden 10 dakikalık bir temel test etkinleştirerek HEY'yi çalıştırı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. Hey Validation (us-west1)
Artık us-west1'deki bir bilgi işlem örneğinden Hey'i çalıştırdığınıza göre, sonuçları aşağıdakilerden 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.
17,5826 istek/sn
%99'u 0,0686 saniyede | 68 ms
200 durum koduyla 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 gidin ve Vertex Özel Kontrol Paneli'ni seçin. 10 dk. girin veya başlangıç ve bitiş zamanınızı belirtin. Saat diliminizin doğru olduğundan emin olun.

Tahmin gecikmelerinin tanımına baktığımızda, modelden yanıt alındıktan sonra istemcinin isteğine yanıt vermek için geçen toplam süreyi ölçen bir sunucu tarafı metriği olduğunu görüyoruz.
- Toplam gecikme süresi: Bir isteğin hizmette geçirdiği toplam süre. Bu süre, model gecikmesi ile ek yük gecikmesinin toplamıdır.
Buna karşılık HEY, aşağıdaki parametreleri dikkate alan bir istemci tarafı metriğidir:
İstemci isteği + Toplam gecikme (model gecikmesi dahil) + İstemci yanıtı
Network Intelligence
Şimdi de Google Cloud Platform tarafından bildirilen us-west1 ile us-central1 arasındaki gecikme hakkında fikir edinmek için Network Intelligence tarafından bildirilen bölgeler arası ağ gecikmesine göz atalım.
Cloud Console Network Intelligence → Performance Dashboard'a gidin ve aşağıdaki ekran görüntüsünde ayrıntılı olarak açıklanan, 32-39 ms arasındaki gecikmeyi gösteren seçenekleri belirleyin.

HEY us-west1 temel özeti
Test araçları tarafından bildirilen toplam gecikme raporlarının karşılaştırılması, HEY tarafından bildirilen gecikmeyle yaklaşık olarak aynı gecikmeyi verir. Gecikmenin büyük bir kısmını bölgeler arası gecikme oluşturur. Bir sonraki test serisinde merkezi istemcinin nasıl performans gösterdiğine bakalım.
Gecikme Aracı | Süre |
Ağ zekası: us-west1 ile us-central1 arasındaki gecikme | Yaklaşık 32-39 ms |
Cloud Monitoring: Toplam tahmin gecikmesi [99. yüzdelik dilim] | 34,58 ms (99p) |
Google tarafından bildirilen toplam gecikme | ~ 66,58 - 73,58 ms |
HEY istemci tarafı gecikme dağılımı | 68ms (99p) |
16. HEY'i (us-central1) indirip yürütün
Aşağıdaki bölümde, us-central1'de bulunan Online Prediction'a karşı HEY'yi indirmek ve yürütmek için central-client'a giriş yapacaksınız.
Cloud Shell'den central-client'a giriş yapın ve HEY'i indirin.
gcloud compute ssh central-client --project=$projectid --zone=us-central1-a --tunnel-through-iap
HEY'i işletim sisteminden 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üzenleyici veya nano kullanarak bir instances.json dosyası oluşturacak ve dağıtılan modelden tahmin almak için kullanılan veri dizesini ekleyeceksiniz.
west-client işletim sisteminde aşağıdaki veri dizesini içeren 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ı bir şekilde çalıştığını doğrulamak için işletim sisteminden bir curl komutu çalıştırın. Ayrıntılı günlükte PSC uç noktası IP'sini ve HTTP/2 200'ü (başarılı olduğunu gösterir) not 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
Örneğin, tahmine erişmek ve başarılı sonuç elde etmek için kullanılan PSC IP adresini not edin.
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'i yürütün
İşletim sisteminden 10 dakikalık bir temel test etkinleştirerek HEY'yi çalıştırı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. Hey Validation (us-central1)
us-central1 bölgesindeki bir işlem örneğinden Hey komutunu çalıştırdığınıza göre, aşağıdaki sonuçları 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.
44,9408 istek/sn
%99'u 0,0353 saniyede | 35 ms
200 durum koduyla 26.965 yanıt
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 gidin ve Vertex Özel Kontrol Paneli'ni seçip 10 m girin. Başlangıç ve bitiş zamanınız. Saat diliminizin doğru olduğundan emin olun.
Son 10 dakikadaki tahmin gecikmeleri 30.533 ms'dir.
Tahmin gecikmelerinin tanımına baktığımızda, modelden yanıt aldıktan sonra istemcinin isteğine yanıt vermek için geçen toplam süreyi ölçen bir sunucu tarafı metriği olduğunu görüyoruz.
- Toplam gecikme süresi: Bir isteğin hizmette geçirdiği toplam süre. Bu süre, model gecikmesi ile ek yük gecikmesinin toplamıdır.
Buna karşılık HEY, aşağıdaki parametreleri dikkate alan bir istemci tarafı metriğidir:
İstemci isteği + Toplam gecikme (model gecikmesi dahil) + İstemci yanıtı
Network Intelligence
Şimdi de Google Cloud Platform tarafından bildirilen us-central1 gecikmesi hakkında fikir edinmek için Network Intelligence tarafından bildirilen bölge içi ağ gecikmesine göz atalım.
Cloud Console Network Intelligence → Performance Dashboard'a gidin ve aşağıdaki ekran görüntüsünde ayrıntılı olarak açıklanan, gecikme süresinin 0,2 ila 0,8 ms olduğunu gösteren seçenekleri belirleyin.

HEY us-central1 temel performans özeti
Test araçları tarafından bildirilen toplam gecikmeyi karşılaştırdığımızda, aynı bölgedeki işlem (central-client) ve Vertex uç noktaları (model ve online tahmin) nedeniyle west-client'tan daha düşük bir gecikme elde ederiz.
Gecikme Aracı | Süre |
Ağ zekası: us-central1 bölge içi gecikme | ~0,2-0,8 ms |
Cloud Monitoring: Toplam tahmin gecikmesi [99. yüzdelik dilim] | 30.533 ms (99p) |
Google tarafından bildirilen toplam gecikme | ~30.733 ila 31.333 ms |
HEY istemci tarafı gecikmesi | 35 ms (99p) |
18. Tebrikler
Tebrikler, HEY'yi başarıyla dağıtıp doğruladınız. Cloud Monitoring ve Network Intelligence'ı birlikte kullanarak istemci tarafında tahmin için temel gecikme süresini elde ettiniz. Testlere göre, ABD'nin orta kesiminde bir tahmin uç noktasının bölgeler arası sunulabileceği ancak gecikme olduğu tespit edildi.
Cosmopup, eğitici içeriklerin harika olduğunu düşünüyor.

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 aşağıdakiler silindi:
Artifact Registry klasörü

Vertex AI Model Registry'den modeli dağıtımdan kaldırın:

Vertex AI Online Prediction'dan uç noktayı silin.

Yapabilecekleriniz
Bu eğitici içeriklere göz atın:
- Google API'leri için Private Service Connect
- Vertex AI: Güvenli, kullanıcı tarafından yönetilen not defteri oluşturma
Daha fazla bilgi ve videolar
- Private Service Connect'e genel bakış
- Private Service Connect nedir?
- Makine öğrenimi modelinden tahmin alma
- Vertex AI nedir?