1. مقدمة
سيوضّح لك هذا البرنامج التعليمي كيفية إنشاء مقاييس "التوقّع على الإنترنت" في Cloud Monitoring وتقييمها عند إجراء اختبار أساسي على مستوى us-central1 وus-west1 لنقطة نهاية Prediction تم نشرها في us-central1 باستخدام أداة أداء الويب HEY.
ما ستنشئه
ستُعدّ شبكة VPC باسم aiml-vpc تتألف من شبكات فرعية وآلات افتراضية في us-west1 وus-central1 سيتم استخدامها لإنشاء عدد زيارات باستخدام HEY يستهدف Online Prediction ونموذجًا تم تفعيله في us-central1.
تم أيضًا دمج Private Service Connect ونظام أسماء النطاقات الخاص في الدليل التوجيهي/التعليمي لتوضيح كيف يمكن للبيئات المحلية والمتعددة السحابة الإلكترونية الاستفادة من PSC للوصول إلى googleapis.
سيتم استخدام Cloud Monitoring وNetwork Intelligence في البرنامج التعليمي للتحقّق من صحة عدد الزيارات الواردة من HEY إلى خدمة "التوقّع على الإنترنت". على الرغم من أنّ الخطوات الموضّحة في البرنامج التعليمي يتم نشرها في شبكة VPC، يمكنك الاستفادة من الخطوات لنشر خط أساس لواجهات Vertex API والحصول عليه من بيئات محلية أو بيئات متعددة السحابة. تتألف بنية الشبكة من المكوّنات التالية:

في ما يلي تفاصيل حالة الاستخدام:
- الوصول إلى خدمة "التوقّعات على الإنترنت" في us-central1 من مثيلات GCE في us-west1 باستخدام أداة HEY
- تأكَّد من استخدام PSC للوصول إلى Vertex API
- تنفيذ curl باستخدام HEY لمدة 5 دقائق
- التحقّق من صحة وقت الاستجابة باستخدام Cloud Monitoring
- التحقّق من صحة وقت الاستجابة بين المناطق باستخدام Network Intelligence
- الوصول إلى خدمة "التوقّعات على الإنترنت" في us-central1 من مثيلات GCE في us-central1 باستخدام أداة HEY
- تأكَّد من استخدام PSC للوصول إلى Vertex API
- تنفيذ curl باستخدام HEY لمدة 5 دقائق
- التحقّق من صحة وقت الاستجابة باستخدام Cloud Monitoring
- التحقّق من صحة وقت الاستجابة داخل المنطقة باستخدام Network Intelligence
ما ستتعلمه
- كيفية إنشاء نقطة نهاية Private Service Connect
- كيفية إنشاء حمل على "توقّع على الإنترنت" باستخدام أداة HEY
- كيفية إنشاء مقاييس Vertex AI باستخدام Cloud Monitoring
- كيفية استخدام "ذكاء الشبكة" للتحقّق من وقت الاستجابة داخل المناطق وفي ما بينها
المتطلبات
- مشروع Google Cloud
أذونات "إدارة الهوية وإمكانية الوصول"
2. قبل البدء
تعديل المشروع ليتوافق مع البرنامج التعليمي
يستخدِم هذا البرنامج التعليمي $variables للمساعدة في تنفيذ عملية إعداد gcloud في Cloud Shell.
داخل Cloud Shell، اتّبِع الخطوات التالية:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
3. إعداد aiml-vpc
إنشاء aiml-vpc
gcloud services enable networkmanagement.googleapis.com
داخل Cloud Shell، اتّبِع الخطوات التالية:
gcloud compute networks create aiml-vpc --project=$projectid --subnet-mode=custom
داخل Cloud Shell، فعِّل واجهة برمجة التطبيقات لإدارة الشبكة في Network Intelligence
gcloud services enable networkmanagement.googleapis.com
إنشاء الشبكة الفرعية لدفتر الملاحظات المُدارة من قِبل المستخدم
داخل Cloud Shell، أنشئ workbench-subnet.
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-subnet.
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 إمكانات NAT للخروج، ما يعني أنّه لا يُسمح لمضيفي الإنترنت ببدء التواصل مع دفتر ملاحظات يديره المستخدم، ما يجعله أكثر أمانًا.
داخل Cloud Shell، أنشئ موجّه السحابة الإقليمي us-west1.
gcloud compute routers create cloud-router-us-west1-aiml-nat --network aiml-vpc --region us-west1
داخل Cloud Shell، أنشئ بوابة 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
داخل Cloud Shell، أنشئ بوابة NAT السحابية الإقليمية 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
في القسم التالي، ستنشئ نقطة نهاية Private Service Connect (PSC) سيتم استخدامها للوصول إلى Vertex API من aiml-vpc.
من Cloud Shell
gcloud compute addresses create psc-ip \
--global \
--purpose=PRIVATE_SERVICE_CONNECT \
--addresses=100.100.10.10 \
--network=aiml-vpc
تخزين "pscendpointip" لمدة التجربة
pscendpointip=$(gcloud compute addresses list --filter=name:psc-ip --format="value(address)")
echo $pscendpointip
إنشاء نقطة نهاية 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:
يجب واجهة برمجة التطبيقات لحساب الخدمة قبل المتابعة.
داخل Cloud Shell، أنشئ حساب الخدمة.
gcloud iam service-accounts create vertex-gce-sa \
--description="service account for vertex" \
--display-name="vertex-sa"
في Cloud Shell، عدِّل حساب الخدمة باستخدام دور مشرف مثيل Compute
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:vertex-gce-sa@$projectid.iam.gserviceaccount.com" --role="roles/compute.instanceAdmin.v1"
داخل Cloud Shell، عدِّل حساب الخدمة باستخدام دور "مستخدم Vertex AI".
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:vertex-gce-sa@$projectid.iam.gserviceaccount.com" --role="roles/aiplatform.user"
6. إنشاء حساب خدمة يديره المستخدم (دفتر ملاحظات)
في القسم التالي، ستنشئ حساب خدمة يديره المستخدم وسيتم ربطه بـ Vertex Workbench (Notebook) المستخدَم في البرنامج التعليمي.
في البرنامج التعليمي، سيتم تطبيق القواعد التالية على حساب الخدمة:
داخل Cloud Shell، أنشئ حساب الخدمة.
gcloud iam service-accounts create user-managed-notebook-sa \
--display-name="user-managed-notebook-sa"
داخل Cloud Shell، عدِّل حساب الخدمة باستخدام دور "مشرف التخزين".
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/storage.admin"
داخل Cloud Shell، عدِّل حساب الخدمة باستخدام دور "مستخدم Vertex AI".
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/aiplatform.user"
في Cloud Shell، عدِّل حساب الخدمة باستخدام دور "مشرف Artifact Registry".
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/artifactregistry.admin"
داخل Cloud Shell، أدرِج حساب الخدمة واحتفِظ بعنوان البريد الإلكتروني الذي سيتم استخدامه عند إنشاء دفتر ملاحظات يديره المستخدم.
gcloud iam service-accounts list
7. إنشاء مثيلات الاختبارات
في القسم التالي، ستنشئ آلات افتراضية تجريبية لإجراء اختبارات أساسية من us-west1 وus-central1.
داخل Cloud Shell، أنشئ west-client.
gcloud compute instances create west-client \
--zone=us-west1-a \
--image-family=debian-11 \
--image-project=debian-cloud \
--subnet=us-west1-subnet \
--scopes=https://www.googleapis.com/auth/cloud-platform \
--no-address \
--shielded-secure-boot --service-account=vertex-gce-sa@$projectid.iam.gserviceaccount.com \
--metadata startup-script="#! /bin/bash
sudo apt-get update
sudo apt-get install tcpdump dnsutils -y"
داخل Cloud Shell، أنشئ central-client.
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"
للسماح لميزة "الوصول إلى الأجهزة الافتراضية عبر الإنترنت" بالاتصال بأجهزة VM الافتراضية، أنشئ قاعدة جدار حماية تتضمّن ما يلي:
- ينطبق على جميع مثيلات الأجهزة الافتراضية التي تريد إتاحتها باستخدام IAP.
- يسمح بحركة البيانات الواردة من نطاق عناوين IP 35.235.240.0/20. يحتوي هذا النطاق على جميع عناوين IP التي تستخدمها خدمة IAP لإعادة توجيه بروتوكول TCP.
داخل 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. إنشاء دفتر ملاحظات يديره المستخدم
واجهة برمجة التطبيقات لدفتر الملاحظات
في القسم التالي، أنشئ دفتر ملاحظات مُدارًا من قِبل المستخدم يتضمّن حساب الخدمة الذي تم إنشاؤه سابقًا، user-managed-notebook-sa.
داخل 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 للاطّلاع على دفتر الملاحظات الذي تم نشره.

9- تفعيل النموذج والتوقّع على الإنترنت
في القسم التالي، استخدِم الدرس التطبيقي حول الترميزVertex AI:استخدام إجراءات توقّع مخصّصة مع Sklearn للمعالجة السابقة واللاحقة للبيانات بهدف إجراء التوقّعات، وابدأ بالقسم 7 لأنّك أنشأت دفتر ملاحظات في الخطوة السابقة. بعد نشر النموذج، ارجع إلى البرنامج التعليمي لبدء القسم التالي.

10. إنشاء لوحة بيانات مخصّصة للمراقبة في Online Prediction
تنشئ خدمة "التوقّع على الإنترنت" لوحة بيانات تلقائية خاصة بخدمة "المراقبة" ضمن VERTEX AI ← التوقّع على الإنترنت ← اسم نقطة النهاية (diamonds-cpr_endpoint). ومع ذلك، نحتاج إلى تحديد وقتَي البدء والإيقاف لإجراء الاختبار، لذا يجب إنشاء لوحة بيانات مخصّصة.
في القسم التالي، ستنشئ مقاييس Cloud Monitoring للحصول على قياسات وقت الاستجابة استنادًا إلى الوصول الإقليمي إلى نقطة نهاية "التوقّع على الإنترنت" للتحقّق من وقت الاستجابة المختلف عند الوصول إلى نقطة نهاية في us-central1 من مثيلات GCE التي تم نشرها في us-west1 وus-central.
بالنسبة إلى البرنامج التعليمي، سنستخدم مقاييس prediction_latencies، وتتوفّر مقاييس إضافية في aiplatform.
المقياس | الوصف |
prediction/online/prediction_latencies | وقت استجابة التوقّع على الإنترنت للنموذج الذي تم نشره |
إنشاء رسم بياني لمقياس prediction_latencies
من Cloud Console، انتقِل إلى "المراقبة" (MONITORING) → "مستكشف المقاييس" (Metrics Explorer).

أدرِج المقياس prediction/online/prediction_latencies وحدِّد الخيارات التالية، ثم انقر على "تطبيق".

عدِّل "تجميع حسب" استنادًا إلى الخيار التالي، ثم انقر على "حفظ الرسم البياني".


انقر على "حفظ"، وسيُطلب منك اختيار لوحة بيانات. انقر على "لوحة بيانات جديدة" وأدخِل اسمًا.

لوحة البيانات المخصّصة في Vertex
في القسم التالي، تحقَّق من أنّ "لوحة البيانات المخصّصة" في Vertex تعرض الوقت الصحيح.
انتقِل إلى "المراقبة" (MONITORING) → "لوحة البيانات" (Dashboard) واختَر "لوحة بيانات Vertex المخصّصة" (Vertex Custom Dashboard)، ثمّ اختَر الوقت. تأكَّد من أنّ منطقتك الزمنية صحيحة.

احرص على توسيع وسيلة الإيضاح للحصول على عرض جدولي.

مثال على العرض الموسّع:

11. إنشاء نظام أسماء نطاقات خاص لنقطة نهاية Private Service Connect
أنشئ منطقة نظام أسماء نطاقات خاصًا في aiml-vpc لحلّ جميع googleapis إلى عنوان IP لنقطة نهاية PSC 100.100.10.10.
من Cloud Shell، أنشئ منطقة نظام أسماء نطاقات خاصًا.
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 الخاص بخدمة Private Service Connect.
gcloud dns --project=$projectid record-sets create *.googleapis.com. --zone="psc-googleapis" --type="A" --ttl="300" --rrdatas="100.100.10.10"
12. متغيّرات اختبار Hey
تتيح Hey للمستخدمين النهائيين إمكانية تخصيص الاختبار استنادًا إلى متطلبات الشبكة والتطبيق. لأغراض هذا البرنامج التعليمي، سنستخدم الخيار الموضّح أدناه مع سلسلة تنفيذ نموذجية:
c == 1 عامل
z == Duration
m == HTTP method 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 Console الذي سيتم استخدامه في الخطوات اللاحقة.
انتقِل إلى VERTEX AI → ONLINE PREDICTION

14. تنزيل وتنفيذ HEY (us-west1)
في القسم التالي، ستسجّل الدخول إلى west-client لتنزيل HEY وتنفيذه مقابل خدمة "التوقّع على الإنترنت" (Online Prediction) المتوفّرة في 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 الخاص بـ "خدمة مقارنة الأسعار" المستخدَم للوصول إلى التوقّعات والنتائج الناجحة.
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. Hey Validation (us-west1)
بعد تنفيذ Hey من آلة افتراضية في us-west1، قيِّم النتائج من خلال ما يلي:
- نتائج HEY
- لوحة البيانات المخصّصة في Vertex
- Network Intelligence
نتائج 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 المخصّصة" (Vertex Custom Dashboard). أدخِل 10 دقائق أو حدِّد وقتَي البدء والانتهاء. تأكَّد من أنّ منطقتك الزمنية صحيحة.

تشير نظرة على تعريف "مدد الاستجابة للتوقّعات" إلى مقياس من جهة الخادم يقيس إجمالي الوقت المستغرَق للاستجابة لطلب العميل بعد الحصول على استجابة من النموذج.
- إجمالي مدة وقت الاستجابة: إجمالي الوقت الذي يستغرقه الطلب في الخدمة، وهو وقت استجابة النموذج بالإضافة إلى وقت استجابة الحمل الزائد.
في المقابل، HEY هي مقاييس من جهة العميل تأخذ في الاعتبار المَعلمات التالية:
طلب العميل + إجمالي وقت الاستجابة (يشمل وقت استجابة النموذج) + استجابة العميل
الذكاء الشبكي
لنتعرّف الآن على وقت استجابة الشبكة بين المناطق الذي أبلغت عنه "أداة إحصاءات الشبكة" للحصول على فكرة عن وقت الاستجابة من us-west1 إلى us-central1 الذي أبلغت عنه Google Cloud Platform.
انتقِل إلى Cloud Console Network Intelligence → لوحة بيانات الأداء وحدِّد الخيارات التالية الموضّحة بالتفصيل في لقطة الشاشة أدناه والتي تشير إلى وقت استجابة يتراوح بين 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 ملي ثانية (الشريحة المئوية 99) |
16. تنزيل وتنفيذ HEY (us-central1)
في القسم التالي، ستسجّل الدخول إلى central-client لتنزيل HEY وتنفيذه مقابل Online Prediction المتوفّر في us-central1.
من Cloud Shell، سجِّل الدخول إلى central-client ونزِّل 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 الخاص بـ "خدمة مقارنة الأسعار" المستخدَم للوصول إلى التوقّعات والنتائج الناجحة.
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. Hey Validation (us-central1)
بعد تنفيذ Hey من آلة افتراضية في us-central1، قيِّم النتائج من خلال ما يلي:
- نتائج HEY
- لوحة البيانات المخصّصة في Vertex
- Network Intelligence
نتائج HEY
من نظام التشغيل، لننتحقق من نتائج HEY استنادًا إلى عملية التنفيذ التي تستغرق 10 دقائق.
44.9408 طلبًا في الثانية
99% في 0.0353 ثانية | 35 ملي ثانية
26965 ردًّا برمز الحالة 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 المخصّصة" (Vertex Custom Dashboard)، ثم أدخِل 10m. أو وقت البدء والإيقاف تأكَّد من أنّ منطقتك الزمنية صحيحة.
يؤدي وقت استجابة التوقّعات لآخر 10 دقائق إلى 30.533 ملي ثانية.
تشير تعريفات "مدد الاستجابة للتوقعات" إلى مقياس من جهة الخادم يقيس إجمالي الوقت المستغرَق للرد على طلبات العملاء بعد الحصول على استجابة من النموذج.
- إجمالي مدة وقت الاستجابة: إجمالي الوقت الذي يستغرقه الطلب في الخدمة، وهو وقت استجابة النموذج بالإضافة إلى وقت استجابة الحمل الزائد.
في المقابل، HEY هي مقاييس من جهة العميل تأخذ في الاعتبار المَعلمات التالية:
طلب العميل + إجمالي وقت الاستجابة (يشمل وقت استجابة النموذج) + استجابة العميل
Network Intelligence
لنتعرّف الآن على وقت استجابة الشبكة داخل المنطقة الذي أبلغت عنه "أداة Network Intelligence" للحصول على فكرة عن وقت الاستجابة في us-central1 الذي أبلغت عنه Google Cloud Platform.
انتقِل إلى Cloud Console Network Intelligence → Performance Dashboard وحدِّد الخيارات التالية الموضّحة بالتفصيل في لقطة الشاشة أدناه والتي تشير إلى وقت الاستجابة من 0 .2 إلى 0 .8 ملي ثانية.

ملخّص الأداء الأساسي لأداة HEY في المنطقة us-central1
تؤدي مقارنة إجمالي وقت الاستجابة الذي تعرضه أدوات الاختبار إلى وقت استجابة أقل من west-client بسبب نقاط نهاية الحوسبة (central-client) وVertex (النموذج والتوقّع على الإنترنت) في المنطقة نفسها.
أداة قياس وقت الاستجابة | المدة |
Network intelligence: وقت الاستجابة داخل المنطقة us-central1 | من 0.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 Console:
مجلد Artifact Registry

من "سجلّ نماذج Vertex AI"، ألغِ تفعيل النموذج باتّباع الخطوات التالية:

من خدمة "التوقّع على الإنترنت" في Vertex AI، احذف نقطة النهاية.

ما هي الخطوات التالية؟
يمكنك الاطّلاع على بعض هذه البرامج التعليمية...
مزيد من المعلومات والفيديوهات
- نظرة عامة على Private Service Connect
- ما هي خدمة Private Service Connect؟
- كيفية الحصول على توقّعات من نموذج تعلُّم آلي
- ما هي منصة Vertex AI؟