اختبار الأساس لتوقّعات Vertex AI على الإنترنت مع HEY

1. مقدمة

سيشرح لك هذا البرنامج التعليمي كيفية إنشاء مقاييس توقّعات مراقبة السحابة الإلكترونية على الإنترنت وتقييمها عند إجراء اختبار أساسي في us-central1 وus-west1 إلى نقطة نهاية للتوقّع تم نشرها في us-central1 باستخدام أداة HEY لأداء الويب.

ما الذي ستقوم ببنائه

ستقوم بإعداد شبكة VPC تسمى intentl-vpc والتي تتكون من شبكات فرعية ومثيلات في us-west1 وus-central1 سيتم استخدامها لإنشاء حركة بيانات باستخدام HEY تستهدف التنبؤ على الإنترنت والنموذج المنشور في us-central1.

تم أيضًا دمج Private Service Connect و"نظام أسماء النطاقات الخاص" في الدليل التوجيهي لتوضيح كيف يمكن لبيئات السحابة الإلكترونية المتعددة في المؤسسة وبيئات السحابة الإلكترونية المتعددة الاستفادة من PSC للوصول إلى googleapis.

سيتم استخدام Cloud Monitoring وNetwork Intelligence في الدليل التوجيهي للتحقّق من صحة عدد الزيارات الواردة من HEY إلى "التوقّع على الإنترنت". على الرغم من أنّ الخطوات الموضّحة في الدليل التوجيهي متوفّرة في شبكة VPC، يمكنك الاستفادة من هذه الخطوات لنشر واجهة Vertex APIS والحصول عليها من بيئات داخل الشركة أو بيئات السحابة الإلكترونية المتعددة. تتكوّن بنية الشبكة من المكونات التالية:

dd5c102ce1ab0150.png

في ما يلي تفاصيل حالة الاستخدام:

  1. الوصول إلى التنبؤ على الإنترنت في us-central1 من حالات GCE في us-west1 باستخدام HEY
  2. تأكَّد من استخدام PSC للوصول إلى Vertex API.
  3. يمكنك أداء تمويج الشعر باستخدام كلمة HEY لمدة 5 دقائق.
  4. التحقق من وقت الاستجابة باستخدام Cloud Monitoring
  5. التحقّق من وقت الاستجابة بين المناطق باستخدام Network Intelligence
  6. الوصول إلى التنبؤ على الإنترنت في us-central1 من مثيلات GCE في us-central1 باستخدام HEY
  7. تأكَّد من استخدام PSC للوصول إلى Vertex API.
  8. يمكنك أداء تمويج الشعر باستخدام كلمة HEY لمدة 5 دقائق.
  9. التحقق من وقت الاستجابة باستخدام Cloud Monitoring
  10. التحقّق من وقت الاستجابة داخل المنطقة باستخدام Network Intelligence

المعلومات التي ستطّلع عليها

  • كيفية إنشاء نقطة نهاية في Private Service Connect
  • كيفية إنشاء تحميل لتوقُّع على الإنترنت باستخدام HEY
  • طريقة إنشاء مقاييس Vertex AI باستخدام Cloud Monitoring
  • كيفية استخدام Network Intelligence للتحقق من عمليات وقت الاستجابة بين المناطق

المتطلبات

  • مشروع Google Cloud

أذونات "إدارة الهوية وإمكانية الوصول"

Compute Network Admin

Compute Network Admin

محرِّر دليل الخدمات

مشرف نظام أسماء النطاقات

مُشاهد إدارة الشبكة

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. إعدادiml-vpc

إنشاء ملف intentl-vpc

تعمل خدمات gcloud على تفعيل 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، أنشئ الشبكة الفرعية لطاولة العمل.

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

يتم استخدام ترجمة عنوان الشبكة في السحابة الإلكترونية في البرنامج التعليمي لتنزيل حِزم البرامج لأن مثيل GCE لا يحتوي على عنوان IP خارجي. وتوفِّر ترجمة عنوان الشبكة في السحابة الإلكترونية إمكانات ترجمة عنوان الشبكة (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 من داخل 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، يجب استخدام حساب خدمة يديره المستخدم ليتم تطبيقه على المثيلات الغربية والمركزية. وبعد إنشاء أذونات حساب الخدمة، يمكن تعديلها استنادًا إلى متطلبات النشاط التجاري. في البرنامج التعليمي، سيتم تطبيق الأدوار التالية على حساب الخدمة الذي يديره المستخدم، Headex-sa:

يجب واجهة برمجة تطبيقات حساب الخدمة قبل المتابعة.

داخل Cloud Shell، أنشئ حساب الخدمة.

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

داخل Cloud Shell، يمكنك تعديل حساب الخدمة باستخدام دور مشرف مثيل الحوسبة.

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 (دفتر الملاحظات) المستخدم في البرنامج التعليمي.

في الدليل التعليمي، سيتم تطبيق القواعد التالية على حساب الخدمة:

داخل 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".

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 العميل الغربي.

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 العميل المركزي.

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"

للسماح لعمليات الشراء داخل التطبيق بالاتصال بمثيلات الأجهزة الافتراضية، أنشِئ قاعدة جدار حماية تعمل على:

  • ينطبق ذلك على جميع مثيلات الأجهزة الافتراضية التي تريد أن تتوفّر إمكانية الوصول إليها من خلال استخدام الشراء داخل التطبيق.
  • يسمح بالزيارات الواردة من نطاق IP 35.235.240.0/20. يحتوي هذا النطاق على جميع عناوين IP التي يستخدمها بروتوكول IAP لإعادة توجيه بروتوكول التحكم بالنقل.

داخل Cloud Shell، أنشئ قاعدة جدار الحماية للشراء داخل التطبيق.

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

8. إنشاء ورقة ملاحظات يديرها المستخدم

واجهة برمجة تطبيقات notebook API

في القسم التالي، أنشِئ ورقة ملاحظات مُدارة بواسطة المستخدم تتضمّن حساب الخدمة الذي تم إنشاؤه سابقًا، 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 لعرض ورقة الملاحظات المنشورة.

b02fcb9b07dca06a.png

9. نشر النموذج والتوقّع على الإنترنت

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

ee68b7ba0cfd2746.png

10. إنشاء لوحة بيانات مراقبة مخصّصة لميزة "التوقّع على الإنترنت"

تنشئ ميزة التوقّع على الإنترنت لوحة بيانات تلقائية للمراقبة ضمن VERTEX AI ← PREDICTION على الإنترنت ← ENDPOINT NAME (diamonds-cpr_endpoint). مع ذلك، لإجراء الاختبار، نحتاج إلى تحديد وقت البدء والانتهاء، وبالتالي يجب توفّر لوحة بيانات مخصّصة.

في القسم التالي، سيتم إنشاء مقاييس Cloud Monitoring للحصول على قياسات وقت الاستجابة استنادًا إلى الوصول الإقليمي إلى "نقطة نهاية التوقّع على الإنترنت" للتحقّق من وقت الاستجابة المختلف عند الوصول إلى نقطة نهاية في us-central1 من مثيلات GCE المنشورة في us-west1 وus-central.

بالنسبة إلى الدليل التوجيهي، سنستخدم مقاييس arrange_latencies، وتتوفّر مقاييس إضافية في aiplatform.

المقياس

الوصف

prediction/online/prediction_latencies

وقت استجابة التوقّع على الإنترنت للنموذج المنشور.

إنشاء رسم بياني لمقياس prediction_latencies

من Cloud Console، انتقِل إلى "المراقبة" ← Metrics Explorer.

536668ab0b29d77.png

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

c1edd34208cb5ee2.png

قم بتحديث "Group by" (التجميع حسب) بناءً على الخيار التالي، حدد "Save Chart" (حفظ المخطط).

e180a5d8a044b6e1.png

d2ecd6677a3b34e0.png

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

e29a39dc941c8599.png

لوحة بيانات Vertex المخصّصة

في القسم التالي، تحقق من أن لوحة بيانات Vertex المخصصة تعرض الوقت الصحيح.

يمكنك الانتقال إلى ميزة "المراقبة" ← "لوحة البيانات" واختيار لوحة البيانات المخصصة Vertex، ثم اختيار الوقت. تأكَّد من صحة المنطقة الزمنية.

f43ebed798ce1147.png

تأكَّد من توسيع وسيلة الإيضاح للحصول على عرض في جدول.

61ffeef22e067ca9.png

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

9027e8785c023129.png

11. إنشاء نظام أسماء نطاقات خاص لنقطة نهاية PSC

يمكنك إنشاء منطقة نظام أسماء نطاقات خاصة في intentl-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 لـ PSC.

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

12. متغيرات الاختبار السريع

وتتيح Ok للمستخدمين النهائيين إمكانية تخصيص الاختبار استنادًا إلى متطلبات الشبكة والتطبيق. لأغراض البرنامج التعليمي، سنستخدم الخيار المفصّل أدناه مع نموذج سلسلة تنفيذ:

c == عامل واحد

z == المدة

m == HTTP طريقة POST

D == نص طلب HTTP من الملف، arranges.json

n == عدد الطلبات المطلوب تنفيذها. والعدد التلقائي هو 200.

مثال على سلسلة الضفائر مع كلمة 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 ← التنبؤ على الإنترنت.

ce4d4a88a3fa2345.png

14. تنزيل وتنفيذ HEY (us-west1)

في القسم التالي، ستسجل الدخول إلى العميل الغربي لتنزيل HEY وتنفيذه وفقًا للتوقعات على الإنترنت الموجودة في us-central1.

من Cloud Shell، سجِّل الدخول إلى العميل الغربي ونزِّل 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"

في القسم التالي، ستقوم بإنشاء ملف Outlook.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:$

اختبار مسبق

من نظام التشغيل، نفِّذ عملية تجعيد للتأكّد من أنّ النموذج ونقطة نهاية التوقّع تعملان بنجاح. لاحظ عنوان 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 (us-west1)

الآن بعد أن نفذت Hey من مثيل حوسبة في 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 المخصّصة

يمكنك الانتقال إلى ميزة "المراقبة" ← "لوحة البيانات" ثم اختيار Vertex Custom Dashboard. أدخل 10 د أو حدد وقت البدء والتوقف. تأكَّد من صحة المنطقة الزمنية.

4102b1d0438c78e3.png

إنّ إلقاء نظرة على تعريف أوقات استجابة التوقعات يشير إلى مقياس من جهة الخادم يقيس الوقت الإجمالي للاستجابة لطلب العملاء بعد الحصول على استجابة من النموذج.

  • إجمالي مدة وقت الاستجابة: إجمالي الوقت الذي يقضيه الطلب في الخدمة، وهو وقت استجابة النموذج بالإضافة إلى وقت الاستجابة العام.

وفي المقابل، HEY هي مقاييس من جانب العميل تأخذ في الاعتبار المَعلمات التالية:

طلب العميل + إجمالي وقت الاستجابة (بما في ذلك وقت استجابة النموذج) + استجابة العميل

Network Intelligence

لنلقِ الآن نظرة على وقت استجابة الشبكة بين المناطق التي تم تسجيلها من قِبل Network Intelligence للحصول على فكرة عن وقت الاستجابة us-west1 إلى us-central1 من Google Cloud Platform.

انتقِل إلى "مراقبة الشبكة في Cloud Console" ← "لوحة بيانات الأداء" وحدِّد الخيارات التالية الموضّحة بالتفصيل في لقطة الشاشة أدناه التي تشير إلى وقت الاستجابة من 32 إلى 39 ملي ثانية.

aade5f757115721.png

ملخص Hey us-west1

تؤدي مقارنة تقارير "إجمالي وقت الاستجابة" من خلال أدوات الاختبار إلى عرض وقت الاستجابة نفسه تقريبًا الذي تم تسجيله من خلال HEY. إنّ وقت الاستجابة بين المناطق يساهم في الجزء الأكبر من وقت الاستجابة. لنرَ أداء العميل المركزي في السلسلة التالية من الاختبارات.

أداة وقت الاستجابة

المدة

تحليل معلومات الشبكة: وقت الاستجابة us-west1 إلى us-central1

من 32 إلى 39 ملي ثانية تقريبًا

مراقبة السحابة الإلكترونية: إجمالي وقت الاستجابة للتوقّع [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"

في القسم التالي، ستقوم بإنشاء ملف Outlook.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:$

الاختبار المسبق

من نظام التشغيل، نفِّذ عملية تجعيد للتأكّد من أنّ النموذج ونقطة نهاية التوقّع تعملان بنجاح. لاحظ عنوان 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. التحقّق من صحة Hey (us-central1)

الآن بعد أن نفذت Hey من مثيل حوسبة في us-central1، يُرجى تقييم النتائج من خلال ما يلي:

  • نتائج HEY
  • لوحة بيانات Vertex المخصّصة
  • مراقبة الشبكات

النتائج الرئيسية

من نظام التشغيل، دعنا نتحقق من صحة نتائج 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 المخصّصة

يمكنك الانتقال إلى ميزة "المراقبة" ← "لوحة البيانات" واختيار لوحة البيانات المخصصة Vertex، ثم الدخول إلى مسافة 10 أمتار. أو وقت البدء والتوقف. تأكَّد من صحة المنطقة الزمنية.

وقت الاستجابة للتوقّع في آخر 10 دقائق ينتج عنه 30.533 ملي ثانية.

إنّ إلقاء نظرة على تعريف أوقات استجابة التوقعات يشير إلى مقياس من جهة الخادم يقيس الوقت الإجمالي للاستجابة لطلب العملاء بعد الحصول على استجابة من النموذج.

  • إجمالي مدة وقت الاستجابة: إجمالي الوقت الذي يقضيه الطلب في الخدمة، وهو وقت استجابة النموذج بالإضافة إلى وقت الاستجابة العام.

وفي المقابل، HEY هي مقاييس من جانب العميل تأخذ في الاعتبار المَعلمات التالية:

طلب العميل + إجمالي وقت الاستجابة (بما في ذلك وقت استجابة النموذج) + استجابة العميل

Network Intelligence

لنلقِ الآن نظرة على وقت استجابة الشبكة داخل المنطقة الذي تم تسجيله من خلال Network Intelligence للحصول على فكرة عن وقت الاستجابة us-central1 الذي تم الإبلاغ عنه من خلال Google Cloud Platform.

انتقِل إلى Cloud Console Network Intelligence ← لوحة بيانات الأداء واختَر الخيارات التالية الموضّحة بالتفصيل في لقطة الشاشة أدناه التي تشير إلى وقت الاستجابة من .2 إلى 0 .8 ملي ثانية.

eaa84848c3185fde.png

مرحبًا us-central1 ملخّص المتوقع

ينتج عن مقارنة إجمالي وقت الاستجابة الذي تسجّله أدوات الاختبار وقت استجابة أقل من العميل الغربي بسبب نقطتَي نهاية الحوسبة (العميل المركزي) وVertex (التوقّع على الإنترنت والنموذج) في المنطقة نفسها.

أداة وقت الاستجابة

المدة

تحليل معلومات الشبكة: وقت الاستجابة داخل المنطقة us-central1

من 2.2 إلى 0 .8 ملي ثانية تقريبًا

مراقبة السحابة الإلكترونية: إجمالي وقت الاستجابة للتوقّع [99%]

30.533 ملي ثانية (99p)

إجمالي وقت الاستجابة الذي تم الإبلاغ عنه بواسطة Google

من 30.733 إلى 31.333 ملي ثانية تقريبًا

وقت الاستجابة من جانب العميل HEY

35 ملي ثانية (99p)

18 تهانينا

تهانينا، لقد نجحت في نشر HEY والتحقّق من صحته للحصول على وقت الاستجابة الأساسي للتوقُّع من جهة العميل باستخدام مزيج من Cloud Monitoring وNetwork Intelligence. استنادًا إلى الاختبار الذي توصّلت إليه، تم تحديد نقطة نهاية التوقعات في البيانات المركزية الأمريكية التي يمكن عرضها في المناطق المختلفة، ومع ذلك تم رصد وقت الاستجابة.

يعتبر تطبيق Cosmopup الفيديوهات التعليمية رائعة.

e6d3675ca7c6911f.jpeg

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

99c17044e2f80919.png

من خلال Vertex AI model Registry، يمكنك إلغاء نشر النموذج:

f5b315f089ae6283.png

حذف نقطة النهاية من Vertex AI Online توقع

9b58688a5037de84.png

الخطوات التالية

اطّلع على بعض هذه البرامج التعليمية...

تعزيز القراءة الفيديوهات

المستندات المرجعية