1. מבוא
במדריך הזה תלמדו איך ליצור ולהעריך מדדי חיזוי אונליין של Cloud Monitoring בזמן ביצוע בדיקות בסיסיות ב-us-central1 וב-us-west1 לנקודת קצה (endpoint) של Prediction שנפרסה ב-us-central1 באמצעות הכלי HEY לביצועי אינטרנט.
מה תפַתחו
מגדירים רשת VPC בשם segmented-vpc, שמורכבת מרשתות משנה וממכונות ב-us-west1 וב-us-central1 שישמשו ליצירת תעבורת נתונים באמצעות טירגוט ל-HEY וטירגוט ומודל אונליין שנפרסו ב-us-central1.
Private Service Connect ו-DNS פרטי משולבים גם במדריך כדי להדגים איך סביבות מקומיות וסביבות מרובות ענן יכולות לנצל את היתרונות של PSC כדי לגשת ל-googleapis.
במדריך הזה נשתמש ב-Cloud Monitoring וב-Network Intelligence כדי לאמת את התנועה שנוצרה מ-HEY אל החיזוי אונליין. למרות שהשלבים שמתוארים במדריך פרוסים ב-VPC, אתם יכולים למנף את השלבים לפריסה ולקבלת בסיס של Vertex APIS מסביבות מקומיות או בסביבות מרובות ענן. ארכיטקטורת הרשת מורכבת מהרכיבים הבאים:
בהמשך מוצגים פרטים על התרחיש לדוגמה:
- גישה לחיזוי אונליין ב-us-central1 ממכונות GCE ב-us-west1 באמצעות HEY
- איך מוודאים שנעשה שימוש ב-PSC כדי לגשת ל-Vertex API
- ביצוע תלת-ממד באמצעות HEY במשך 5 דקות
- אימות זמן האחזור באמצעות Cloud Monitoring
- אימות זמן האחזור בין אזורים באמצעות Network Intelligence
- גישה לחיזוי אונליין ב-us-central1 ממכונות של GCE ב-us-central1 באמצעות HEY
- איך מוודאים שנעשה שימוש ב-PSC כדי לגשת ל-Vertex API
- ביצוע תלת-ממד באמצעות HEY במשך 5 דקות
- אימות זמן האחזור באמצעות Cloud Monitoring
- אימות זמן האחזור בתוך אזור באמצעות Network Intelligence
מה תלמדו
- איך ליצור נקודת קצה (endpoint) של Private Service Connect
- איך לייצר טעינה לחיזוי אונליין באמצעות HEY
- איך ליצור מדדים של Vertex AI באמצעות Cloud Monitoring
- איך להשתמש ב-Network Intelligence כדי לאמת נתונים בתוך זמן אחזור בין אזורים
מה צריך להכין
- פרויקט ב-Google Cloud
הרשאות IAM
2. לפני שמתחילים
צריך לעדכן את הפרויקט כך שיתמוך במדריך הזה
המדריך הזה משתמש ב-$variables כדי לעזור בהטמעת ההגדרות של gcloud ב-Cloud Shell.
Inside Cloud Shell מבצעים את הפעולות הבאות:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
3. הגדרת Simplyl-vpc
יוצרים את ה-Simplel-vpc
gcloud Services להפעיל את networkmanagement.googleapis.com
Inside Cloud Shell מבצעים את הפעולות הבאות:
gcloud compute networks create aiml-vpc --project=$projectid --subnet-mode=custom
Inside Cloud Shell, מפעילים את ה-API לניהול רשתות עבור Network Intelligence
gcloud services enable networkmanagement.googleapis.com
יצירת רשת משנה של notebook בניהול המשתמש
Inside Cloud Shell, יוצרים את רשת המשנה של שולחן העבודה.
gcloud compute networks subnets create workbench-subnet --project=$projectid --range=172.16.10.0/28 --network=aiml-vpc --region=us-central1 --enable-private-ip-google-access
בתוך Cloud Shell, יוצרים את רשת המשנה us-west1-subnet.
gcloud compute networks subnets create us-west1-subnet --project=$projectid --range=192.168.10.0/28 --network=aiml-vpc --region=us-west1
בתוך Cloud Shell, יוצרים את רשת המשנה us-central1-.
gcloud compute networks subnets create us-central1-subnet --project=$projectid --range=192.168.20.0/28 --network=aiml-vpc --region=us-central1
הגדרת Cloud Router ו-NAT
במדריך הזה תלמדו איך להוריד חבילות תוכנה ב-Cloud NAT כי למכונה של GCE אין כתובת IP חיצונית. Cloud NAT מספק יכולות של תעבורת נתונים יוצאת (egress NAT), כלומר שמארחי אינטרנט לא יכולים ליזום תקשורת עם notebook שמנוהל על ידי משתמש, ולכן הוא מאובטח יותר.
בתוך Cloud Shell, יוצרים את הנתב האזורי בענן, us-west1.
gcloud compute routers create cloud-router-us-west1-aiml-nat --network aiml-vpc --region us-west1
בתוך Cloud Shell, יוצרים את שער Cloud nat האזורי, us-west1.
gcloud compute routers nats create cloud-nat-us-west1 --router=cloud-router-us-west1-aiml-nat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-west1
בתוך Cloud Shell, יוצרים את הנתב האזורי בענן, us-central1.
gcloud compute routers create cloud-router-us-central1-aiml-nat --network aiml-vpc --region us-central1
ב-Inside Cloud Shell, יוצרים את שער הענן האזורי us-central1.
gcloud compute routers nats create cloud-nat-us-central1 --router=cloud-router-us-central1-aiml-nat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-central1
4. יצירת נקודת הקצה של Private Service Connect
בקטע הבא, יוצרים נקודת קצה (endpoint) של Private Service Connect (PSC) שתשמש לגישה ל-Vertex API מ-somel-vpc.
מ-Cloud Shell
gcloud compute addresses create psc-ip \
--global \
--purpose=PRIVATE_SERVICE_CONNECT \
--addresses=100.100.10.10 \
--network=aiml-vpc
אחסון 'pscendpointip' משך שיעור ה-Lab
pscendpointip=$(gcloud compute addresses list --filter=name:psc-ip --format="value(address)")
echo $pscendpointip
יצירה של נקודת קצה (endpoint) של PSC
מ-Cloud Shell
gcloud compute forwarding-rules create pscvertex \
--global \
--network=aiml-vpc \
--address=psc-ip \
--target-google-apis-bundle=all-apis
הצגת רשימה של נקודות הקצה שהוגדרו ל-Private Service Connect
מ-Cloud Shell
gcloud compute forwarding-rules list \
--filter target="(all-apis OR vpc-sc)" --global
תיאור נקודות הקצה שהוגדרו ל-Private Service Connect
מ-Cloud Shell
gcloud compute forwarding-rules describe \
pscvertex --global
5. יצירת חשבון שירות למכונות של GCE
כדי לספק רמת שליטה מדויקת ל-Vertex API, נדרש חשבון שירות שמנוהל על ידי משתמשים, שיוחל במכונות המערביות ובמכונות המרכזיות. אחרי שיוצרים את ההרשאות של חשבון השירות, אפשר לשנות אותן בהתאם לדרישות העסקיות. במדריך הזה יחולו התפקידים הבאים לחשבון השירות המנוהל על ידי המשתמש, vertex-sa:
כדי להמשיך, צריך את Service Account API.
יוצרים את חשבון השירות ב-Inside Cloud Shell.
gcloud iam service-accounts create vertex-gce-sa \
--description="service account for vertex" \
--display-name="vertex-sa"
ב-Inside Cloud Shell, מעדכנים את חשבון השירות בתפקיד אדמין של מכונה מחשוב.
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:vertex-gce-sa@$projectid.iam.gserviceaccount.com" --role="roles/compute.instanceAdmin.v1"
ב-Inside Cloud Shell, מעדכנים את חשבון השירות עם התפקיד Vertex AI User
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:vertex-gce-sa@$projectid.iam.gserviceaccount.com" --role="roles/aiplatform.user"
6. יצירת חשבון שירות שמנוהל על ידי משתמש (Notebook)
בקטע הבא תיצרו חשבון שירות בניהול משתמשים שישויך ל-Vertex Workbench (Notebook) שנעשה בו שימוש במדריך.
במדריך הזה יחולו הכללים הבאים על חשבון השירות:
יוצרים את חשבון השירות ב-Inside Cloud Shell.
gcloud iam service-accounts create user-managed-notebook-sa \
--display-name="user-managed-notebook-sa"
ב-Inside Cloud Shell, מעדכנים את חשבון השירות עם התפקיד Storage Admin.
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/storage.admin"
ב-Inside Cloud Shell, מעדכנים את חשבון השירות עם התפקיד Vertex AI User.
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/aiplatform.user"
ב-Inside Cloud Shell, מעדכנים את חשבון השירות עם התפקיד Artifact Registry Admin.
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/artifactregistry.admin"
ב-Cloud Shell, מציגים את חשבון השירות ורושמים את כתובת האימייל שייעשה בה שימוש ליצירת ה-notebook המנוהל על ידי המשתמש.
gcloud iam service-accounts list
7. יצירת המופעים של הבדיקות
בקטע הבא תיצרו מכונות בדיקה לביצוע בדיקות בסיסיות מ-us-west1 ומ-us-central1.
Inside Cloud Shell יוצרים את הלקוח המערבי.
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"
Inside Cloud Shell יוצרים את הלקוח המרכזי.
gcloud compute instances create central-client \
--zone=us-central1-a \
--image-family=debian-11 \
--image-project=debian-cloud \
--subnet=us-central1-subnet \
--scopes=https://www.googleapis.com/auth/cloud-platform \
--no-address \
--shielded-secure-boot --service-account=vertex-gce-sa@$projectid.iam.gserviceaccount.com \
--metadata startup-script="#! /bin/bash
sudo apt-get update
sudo apt-get install tcpdump dnsutils -y"
כדי לאפשר ל-IAP להתחבר למכונות הווירטואליות, יוצרים כלל של חומת אש:
- המדיניות חלה על כל מכונות וירטואליות שרוצים לגשת אליהן באמצעות IAP.
- תעבורת נתונים נכנסת (ingress) מטווח ה-IP 35.235.240.0/20. הטווח הזה מכיל את כל כתובות ה-IP שמשמשות להעברת TCP באמצעות IAP.
בתוך Cloud Shell, יוצרים את כלל חומת האש IAP.
gcloud compute firewall-rules create ssh-iap-vpc \
--network aiml-vpc \
--allow tcp:22 \
--source-ranges=35.235.240.0/20
8. יצירת notebook בניהול משתמשים
בקטע הבא, יוצרים notebook בניהול משתמש שמשלב את חשבון השירות שנוצר בעבר, user-managed-notebook-sa.
באמצעות Inside Cloud Shell, יוצרים את המכונה הפרטית של הלקוח.
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 כדי להציג את ה-notebook שנפרס.
9. פריסת המודל והחיזוי אונליין
בקטע הבא משתמשים ב-codelab, ב-Vertex AI:שימוש בתרחישי חיזוי מותאמים אישית עם Sklearn כדי לעבד נתונים של עיבוד מראש ולפרסם אותם עבור חיזויים בתור התחלה, בסעיף 7, כי כבר יצרת notebook בשלב הקודם. אחרי שהמודל נפרס, צריך לחזור למדריך כדי להתחיל את הקטע הבא.
10. יצירת לוח בקרה למעקב בהתאמה אישית לחיזוי אונליין
כשמשתמשים בחיזוי אונליין, המערכת יוצרת מרכז בקרה למעקב שמוגדר כברירת מחדל דרך VERTEX AI ← PREDICTION ← ENDPOINT NAME (Diamonds-cpr_endpoint). עם זאת, לצורך הבדיקה שלנו, עלינו להגדיר שעת התחלה ושעת סיום, לכן נדרש מרכז שליטה מותאם אישית.
בחלק הבא, תיצרו מדדים של Cloud Monitoring כדי לקבל מדידות של זמן אחזור על סמך גישה אזורית לנקודת הקצה (endpoint) של החיזוי אונליין, כדי לאמת את זמן האחזור השונה כשניגשים לנקודת קצה ב-us-central1 ממכונות של GCE שנפרסו ב-us-west1 וב-us-central.
במדריך נשתמש במדדים שלpreion_latencies. יש מדדים נוספים שזמינים ב-aiplatform.
מדד | תיאור |
prediction/online/prediction_latencies | זמן אחזור לחיזוי אונליין של המודל שנפרס. |
יוצרים תרשים למדד prediction_latencies
ממסוף Cloud, עוברים אל MONITORING ← Metrics Explorer
מוסיפים את המדד prediction/online/prediction_latencies ובוחרים את האפשרויות הבאות, לוחצים על 'אישור'.
מעדכנים את התכונה 'קיבוץ לפי' לפי האפשרות הבאה ובוחרים באפשרות 'שמירת תרשים'.
לוחצים על 'שמירה', ואז תתבקשו לבחור מרכז בקרה. בחרו 'מרכז בקרה חדש' ו- מזינים שם.
מרכז בקרה בהתאמה אישית של Vertex
בקטע הבא, מוודאים שב-Vertex Custom Dashboard מוצג השעה הנכונה.
עוברים אל MONITORING ← Dashboard (מרכז הבקרה) ובוחרים באפשרות Vertex Custom Dashboard (לוח בקרה מותאם אישית של Vertex) ובוחרים את השעה. יש לוודא שאזור הזמן נכון.
צריך להרחיב את המקרא כדי לקבל תצוגת טבלה.
דוגמה לתצוגה מורחבת:
11. יצירת DNS פרטי לנקודת הקצה (endpoint) של PSC
יוצרים אזור DNS פרטי ב-Simplel-vpc כדי להגדיר את כל בקשות ה-googleapis לכתובת ה-IP 100.100.10.10 של נקודת הקצה של PSC.
יוצרים ב-Cloud Shell אזור DNS פרטי.
gcloud dns --project=$projectid managed-zones create psc-googleapis --description="Private Zone to resolve googleapis to a PSC endpoint" --dns-name="googleapis.com." --visibility="private" --networks="https://www.googleapis.com/compute/v1/projects/$projectid/global/networks/aiml-vpc"
ב-Cloud Shell, יוצרים את רשומת A שמשייכת *. googleapis.com לכתובת ה-IP של PSC.
gcloud dns --project=$projectid record-sets create *.googleapis.com. --zone="psc-googleapis" --type="A" --ttl="300" --rrdatas="100.100.10.10"
12. Ok, משתני בדיקה
Ok מציע למשתמשי הקצה את היכולת להתאים אישית את הבדיקות בהתאם לדרישות הרשת והאפליקציה. למטרת המדריך, נשתמש באפשרות המפורטת למטה עם מחרוזת ביצוע לדוגמה:
c == עובד אחד
z == משך זמן
m == שיטת HTTP POST
D == גוף בקשת HTTP מקובץ, instances.json
n == מספר הבקשות להפעלה. ברירת המחדל היא 200.
דוגמה למחרוזת curl עם HEY (לא נדרש ביצוע)
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. קבלת מזהה החיזוי
מקבלים את מזהה נקודת הקצה לחיזוי אונליין ממסוף Cloud, שבו תשתמשו בשלבים הבאים.
עוברים אל VERTEX AI ← חיזוי אונליין
14. יש להוריד ולהפעיל את HEY (us-west1)
בקטע הבא, יתבצע התחברות ללקוח westo כדי להוריד ולהפעיל את HEY מול החיזוי אונליין שנמצא ב-us-central1.
מ-Cloud Shell, מתחברים ל-west-client ומורידים את HEY
gcloud compute ssh west-client --project=$projectid --zone=us-west1-a --tunnel-through-iap
במערכת ההפעלה, מורידים את HEY ומעדכנים את ההרשאות.
wget https://hey-release.s3.us-east-2.amazonaws.com/hey_linux_amd64
chmod +x hey_linux_amd64
ממערכת ההפעלה, יוצרים את המשתנים הבאים:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
ENDPOINT_ID="insert-your-endpoint-id-here"
דוגמה:
ENDPOINT_ID="2706243362607857664"
בקטע הבא, תיצרו קובץ instances.json באמצעות עורך vi או nano ותוסיפו את מחרוזת הנתונים שמשמשת לקבלת חיזוי מהמודל שנפרס.
במערכת ההפעלה west-client, יוצרים 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:$ 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:$
בדיקה מוקדמת
במערכת ההפעלה, מפעילים curl כדי לוודא שהמודל ונקודת הקצה של החיזוי פועלים כמו שצריך. חשוב לשים לב לכתובת ה-IP של נקודת הקצה של PSC ביומן המפורט ולכתובת HTTP/2 200 שמציינת הצלחה.
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
לדוגמה, שימו לב לכתובת ה-IP של PSC שמשמשת לגישה לחיזוי תוצאה מוצלחת.
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
במערכת ההפעלה, מפעילים את HEY ומפעילים בדיקת בסיס למשך 10 דקות.
./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 Validation (us-west1)
עכשיו, אחרי שמריצים את הפקודה Ok ממכונת מחשוב ב-us-west1, מעריכים את התוצאות הבאות:
- תוצאות HEY
- מרכז בקרה בהתאמה אישית של Vertex
- בינת רשת
תוצאות HEY
ממערכת ההפעלה, מאפשר לאמת את התוצאות של HEY על סמך הרצה של 10 דקות,
17.5826 בקשות לשנייה
99% ב-0.0686 שניות | 68 אלפיות השנייה
10,550 תשובות עם 200 קוד סטטוס
user@west-client:$ ./hey_linux_amd64 -c 1 -z 10m -m POST -D instances.json -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/$projectid/locations/us-central1/endpoints/${ENDPOINT_ID}:predict
Summary:
Total: 600.0243 secs
Slowest: 0.3039 secs
Fastest: 0.0527 secs
Average: 0.0569 secs
Requests/sec: 17.5826
Response time histogram:
0.053 [1] |
0.078 [10514] |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
0.103 [16] |
0.128 [4] |
0.153 [3] |
0.178 [1] |
0.203 [0] |
0.229 [2] |
0.254 [1] |
0.279 [5] |
0.304 [3] |
Latency distribution:
10% in 0.0546 secs
25% in 0.0551 secs
50% in 0.0559 secs
75% in 0.0571 secs
90% in 0.0596 secs
95% in 0.0613 secs
99% in 0.0686 secs
Details (average, fastest, slowest):
DNS+dialup: 0.0000 secs, 0.0527 secs, 0.3039 secs
DNS-lookup: 0.0000 secs, 0.0000 secs, 0.0116 secs
req write: 0.0000 secs, 0.0000 secs, 0.0002 secs
resp wait: 0.0567 secs, 0.0526 secs, 0.3038 secs
resp read: 0.0001 secs, 0.0001 secs, 0.0696 secs
Status code distribution:
[200] 10550 responses
מרכז בקרה בהתאמה אישית של Vertex
עוברים אל MONITORING ← Dashboard (לוח הבקרה) ובוחרים Vertex Custom Dashboard (לוח בקרה מותאם אישית של Vertex). מזינים 10 דק' או מציינים את שעת ההתחלה ושעת הסיום. יש לוודא שאזור הזמן נכון.
עיון בהגדרה של זמן האחזור לחיזוי מציין מדד בצד השרת שמודד את הזמן הכולל לתגובה לבקשת הלקוח אחרי קבלת תגובה מהמודל.
- משך זמן אחזור כולל: משך הזמן הכולל שבו בקשה מבליה בשירות, שהוא זמן האחזור של המודל בתוספת זמן האחזור התקורה.
לעומת זאת, HEY הוא מדד בצד הלקוח שמביא בחשבון את הפרמטרים הבאים:
בקשת לקוח + זמן אחזור כולל (כולל זמן אחזור של המודל) + תגובת לקוח
בינת רשת
עכשיו נבחן את זמן האחזור של הרשת בין אזורים שדווח על ידי Network Intelligence כדי לקבל מושג לגבי זמן האחזור בין us-west1 ל-us-central1 שמדווח על ידי Google Cloud Platform.
עוברים אל Cloud Console Network Intelligence ← Performance Dashboard (מרכז הבקרה של הביצועים) ובוחרים את האפשרויות הבאות שמפורטות בצילום המסך למטה, שמציינת שזמן האחזור הוא 32 עד 39 אלפיות השנייה.
סיכום הבסיס HEY us-west1
השוואת הדוחות של כלי הבדיקה 'סה"כ זמן אחזור' מניבה בערך אותו זמן אחזור שדווח על ידי HEY. זמן האחזור בין אזורים תורם באופן משמעותי בזמן האחזור. בואו נראה את הביצועים של הלקוח המרכזי בסדרת הבדיקות הבאה.
כלי זמן האחזור | משך |
בינת רשת: זמן אחזור של us-west1 עד us-central1 | כ-32 עד 39 אלפיות השנייה |
Cloud Monitoring: זמן האחזור הכולל לחיזוי [99%] | 34.58 אלפיות השנייה (99p) |
זמן האחזור הכולל שדווח על ידי Google | ~ 66.58 עד 73.58 אלפיות השנייה |
התפלגות של זמן אחזור בצד הלקוח ב-HEY | 68 אלפיות השנייה (99p) |
16. הורדה והפעלה של HEY (us-central1)
בקטע הבא, צריך להתחבר ללקוח המרכזי כדי להוריד ולהפעיל את HEY מול החיזוי אונליין שנמצא ב-us-central1.
מ-Cloud Shell, מתחברים ללקוח המרכזי ומורידים את HEY
gcloud compute ssh central-client --project=$projectid --zone=us-central1-a --tunnel-through-iap
במערכת ההפעלה, מורידים את HEY ומעדכנים את ההרשאות.
wget https://hey-release.s3.us-east-2.amazonaws.com/hey_linux_amd64
chmod +x hey_linux_amd64
ממערכת ההפעלה, יוצרים את המשתנים הבאים:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
ENDPOINT_ID="insert-your-endpoint-id-here"
דוגמה:
ENDPOINT_ID="2706243362607857664"
בקטע הבא, תיצרו קובץ instances.json באמצעות עורך vi או nano ותוסיפו את מחרוזת הנתונים שמשמשת לקבלת חיזוי מהמודל שנפרס.
במערכת ההפעלה west-client, יוצרים 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:$ 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:$
בדיקה מוקדמת
במערכת ההפעלה, מפעילים curl כדי לוודא שהמודל ונקודת הקצה של החיזוי פועלים כמו שצריך. חשוב לשים לב לכתובת ה-IP של נקודת הקצה של PSC ביומן המפורט ולכתובת HTTP/2 200 שמציינת הצלחה.
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
לדוגמה, שימו לב לכתובת ה-IP של PSC שמשמשת לגישה לחיזוי תוצאה מוצלחת.
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
במערכת ההפעלה, מפעילים את HEY ומפעילים בדיקת בסיס למשך 10 דקות.
./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 Validation (us-central1)
עכשיו, לאחר שהרצתם Ok ממכונת מחשוב ב-us-central1, מעריכים את התוצאות הבאות:
- תוצאות HEY
- מרכז בקרה בהתאמה אישית של Vertex
- בינת רשת
תוצאות HEY
ממערכת ההפעלה, מאפשר לאמת את התוצאות של HEY על סמך הרצה של 10 דקות,
44.9408 בקשות לשנייה
99% ב-0.0353 שניות | 35 אלפיות השנייה
26,965 תשובות עם קוד סטטוס 200
devops_user_1_deepakmichael_alto@central-client:~$ ./hey_linux_amd64 -c 1 -z 10m -m POST -D instances.json -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/$projectid/locations/us-central1/endpoints/${ENDPOINT_ID}:predict
Summary:
Total: 600.0113 secs
Slowest: 0.3673 secs
Fastest: 0.0184 secs
Average: 0.0222 secs
Requests/sec: 44.9408
Response time histogram:
0.018 [1] |
0.053 [26923] |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
0.088 [25] |
0.123 [4] |
0.158 [0] |
0.193 [1] |
0.228 [9] |
0.263 [1] |
0.298 [0] |
0.332 [0] |
0.367 [1] |
Latency distribution:
10% in 0.0199 secs
25% in 0.0205 secs
50% in 0.0213 secs
75% in 0.0226 secs
90% in 0.0253 secs
95% in 0.0273 secs
99% in 0.0353 secs
Details (average, fastest, slowest):
DNS+dialup: 0.0000 secs, 0.0184 secs, 0.3673 secs
DNS-lookup: 0.0000 secs, 0.0000 secs, 0.0079 secs
req write: 0.0000 secs, 0.0000 secs, 0.0007 secs
resp wait: 0.0220 secs, 0.0182 secs, 0.3672 secs
resp read: 0.0002 secs, 0.0001 secs, 0.0046 secs
Status code distribution:
[200] 26965 responses
מרכז בקרה בהתאמה אישית של Vertex
עוברים אל MONITORING ← Dashboard (לוח הבקרה) ובוחרים ב-Vertex Custom Dashboard (לוח בקרה מותאם אישית של Vertex), מזינים 10m. או שעת ההתחלה והסיום. צריך לוודא שאזור הזמן נכון.
זמן האחזור של החיזוי ל-10 המטרים האחרונים מניב 30.533 אלפיות השנייה.
עיון בהגדרה של זמן האחזור לחיזוי מציין מדד בצד השרת שמודד את הזמן הכולל לתגובה לבקשת הלקוח אחרי קבלת תשובה מהמודל.
- משך זמן אחזור כולל: משך הזמן הכולל שבו בקשה מבליה בשירות, שהוא זמן האחזור של המודל בתוספת זמן האחזור התקורה.
לעומת זאת, HEY הוא מדד בצד הלקוח שמביא בחשבון את הפרמטרים הבאים:
בקשת לקוח + זמן אחזור כולל (כולל זמן אחזור של המודל) + תגובת לקוח
בינת רשת
עכשיו נבחן את זמן האחזור של הרשת בתוך האזור שדווח על ידי Network Intelligence כדי לקבל מושג לגבי זמן האחזור של us-central1 שדווח על ידי Google Cloud Platform.
עוברים אל Cloud Console Network Intelligence ← Performance Dashboard (מרכז הבקרה של הביצועים) ובוחרים את האפשרויות הבאות שמפורטות בצילום המסך למטה, שמציינת זמן אחזור מ- 0 .2 עד 0 .8 ms.
סיכום הבסיס HEY us-central1
השוואת זמן האחזור הכולל שכלי הבדיקה מדווחים עליו מניבה זמן אחזור קצר יותר מזה של הלקוח המערבי, בגלל נקודות המחשוב (מרכז הלקוח) ונקודות הקצה של Vertex (מודל וחיזוי אונליין) באותו אזור.
כלי זמן האחזור | משך |
מודיעין רשת: זמן אחזור של us-central1 בתוך אזור | ~.2 עד 0 .8 אלפיות השנייה |
Cloud Monitoring: זמן האחזור הכולל לחיזוי [99%] | 30.533 אלפיות השנייה (99p) |
זמן האחזור הכולל שדווח על ידי Google | ~30.733 עד 31.333 אלפיות השנייה |
זמן אחזור בצד הלקוח ב-HEY | 35 אלפיות השנייה (99p) |
18. מזל טוב
כל הכבוד! פרסתם ואימתתם בהצלחה את HEY כדי להשיג את זמן האחזור הבסיסי של החיזוי בצד הלקוח באמצעות שילוב של Cloud Monitoring ו-Network Intelligence. על סמך הבדיקות שביצענו, זיהינו נקודת קצה לחיזוי ב-us-central שאפשר להציג בין אזורים, אבל נצפה בזמן האחזור.
ב-Cosmopup שלנו חושבים שמדריכים הם מדהימים!
19. הסרת המשאבים
מוחקים את רכיבי המדריך מ-Cloud Shell.
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 נמחק את הפריטים הבאים:
תיקיית Artifact Registry
ממרשם המודלים של Vertex AI, מבטלים את הפריסה של המודל:
מ-Vertex AI Online Prediction, מחיקת נקודת הקצה
מה השלב הבא?
מעיינים בכמה מהמדריכים האלה...
המשך קריאה סרטונים
- סקירה כללית על Private Service Connect
- מה זה Private Service Connect?
- איך מקבלים חיזויים ממודל למידת מכונה
- מה זה Vertex AI?