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:
Kullanım alanının ayrıntıları aşağıda verilmiştir:
- HEY kullanarak us-west1 bölgesindeki bir GCE örneğinden us-central1 bölgesindeki Online Tahmine erişme
- Vertex API'ye erişmek için PSC'nin kullanıldığını doğrulama
- HEY kullanarak 5 dakika curl işlemi yapın
- Cloud Monitoring'i kullanarak gecikmeyi doğrulama
- Network Intelligence kullanarak bölgeler arası gecikmeyi doğrulama
- HEY kullanarak us-central1 bölgesindeki bir GCE örneğinden us-central1 bölgesindeki Online Tahmin'e erişin
- Vertex API'ye erişmek için PSC'nin kullanıldığını doğrulama
- HEY kullanarak 5 dakika curl işlemi yapın
- Cloud Monitoring'i kullanarak gecikmeyi doğrulama
- 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
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
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.
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.
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
prediction/online/prediction_latencies metriğini ekleyin ve aşağıdaki seçenekleri belirleyip Uygula'yı seçin.
Aşağıdaki seçeneğe göre Gruplandırma ölçütünü güncelle, Grafiği Kaydet'i seçin.
Kaydet'i seçin, bir Gösterge Tablosu seçmeniz istenir. Yeni Gösterge Tablosu & bir ad girin.
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.
Tablo görünümü elde etmek için açıklamaları genişlettiğinizden emin olun.
Örnek genişletilmiş görünüm:
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
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.
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.
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.
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.
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ü
Vertex AI Model Registry'den modelin dağıtımını kaldırın:
Vertex AI Online Prediction'dan uç noktayı silin
Sırada ne var?
Bu eğitimlerden bazılarına göz atın...
- Google API'leri için Private Service Connect
- Vertex AI, kullanıcı tarafından yönetilen güvenli bir not defteri oluşturma
Daha fazla bilgi ve Videolar
- Private Service Connect'e genel bakış
- Private Service Connect nedir?
- ML modelinden tahmin alma
- Vertex AI nedir?