۱. مقدمه
این آموزش به شما نشان میدهد که چگونه میتوانید معیارهای پیشبینی آنلاین مانیتورینگ ابری را هنگام انجام آزمایش پایه در us-central1 و us-west1 به یک نقطه پایانی پیشبینی مستقر در us-central1 با استفاده از ابزار عملکرد وب HEY ایجاد و ارزیابی کنید.
آنچه خواهید ساخت
شما یک شبکه VPC به نام aiml-vpc راهاندازی خواهید کرد که شامل زیرشبکهها و نمونههایی در us-west1 و us-central1 است که برای تولید ترافیک با استفاده از HEY که یک پیشبینی آنلاین و مدل مستقر در us-central1 را هدف قرار میدهد، استفاده خواهد شد.
اتصال سرویس خصوصی و DNS خصوصی نیز در این آموزش گنجانده شدهاند تا نشان دهند که چگونه محیطهای داخلی و چند ابری میتوانند از PSC برای دسترسی به googleapis استفاده کنند.
در این آموزش، از مانیتورینگ ابری و هوش شبکه برای اعتبارسنجی ترافیک تولید شده از HEY تا پیشبینی آنلاین استفاده خواهد شد. اگرچه مراحل ذکر شده در آموزش در یک VPC مستقر شدهاند، اما میتوانید از این مراحل برای استقرار و به دست آوردن یک مبنای اولیه از APIهای Vertex از محیطهای داخلی یا چند ابری استفاده کنید. معماری شبکه از اجزای زیر تشکیل شده است:

در زیر جزئیات مورد استفاده آمده است:
- دسترسی به پیشبینی آنلاین در us-central1 از نمونههای GCE در us-west1 با استفاده از HEY
- تأیید کنید که از PSC برای دسترسی به Vertex API استفاده میشود.
- با استفاده از HEY به مدت ۵ دقیقه حرکات حلقه زدن را انجام دهید
- اعتبارسنجی تأخیر با استفاده از Cloud Monitoring
- اعتبارسنجی تأخیر بین منطقهای با استفاده از هوش شبکه
- دسترسی به پیشبینی آنلاین در us-central1 از نمونههای GCE در us-central1 با استفاده از HEY
- تأیید کنید که از PSC برای دسترسی به Vertex API استفاده میشود.
- با استفاده از HEY به مدت ۵ دقیقه حرکات حلقه زدن را انجام دهید
- اعتبارسنجی تأخیر با استفاده از Cloud Monitoring
- اعتبارسنجی تأخیر درون منطقهای با استفاده از هوش شبکه
آنچه یاد خواهید گرفت
- نحوه ایجاد یک نقطه پایانی اتصال سرویس خصوصی
- نحوه تولید بار برای پیشبینی آنلاین با استفاده از HEY
- نحوه ایجاد معیارهای هوش مصنوعی Vertex با استفاده از Cloud Monitoring
- نحوه استفاده از هوش شبکه برای اعتبارسنجی تأخیر درون و بین منطقهای
آنچه نیاز دارید
- پروژه ابری گوگل
مجوزهای IAM
۲. قبل از شروع
پروژه را برای پشتیبانی از آموزش بهروزرسانی کنید
این آموزش از متغیرها (variables) برای کمک به پیادهسازی پیکربندی gcloud در Cloud Shell استفاده میکند.
درون Cloud Shell، موارد زیر را انجام دهید:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
۳. تنظیمات aiml-vpc
ایجاد aiml-vpc
سرویسهای gcloud، networkmanagement.googleapis.com را فعال میکنند.
درون Cloud Shell، موارد زیر را انجام دهید:
gcloud compute networks create aiml-vpc --project=$projectid --subnet-mode=custom
درون Cloud Shell، API مدیریت شبکه را برای هوش شبکه فعال کنید
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 را ایجاد کنید.
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
پیکربندی روتر ابری و NAT
در این آموزش از Cloud NAT برای دانلود بستههای نرمافزاری استفاده میشود زیرا نمونه GCE آدرس IP خارجی ندارد. Cloud NAT قابلیتهای egress 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
۴. نقطه پایانی اتصال سرویس خصوصی را ایجاد کنید
در بخش بعدی، یک نقطه پایانی Private Service Connect (PSC) ایجاد خواهید کرد که برای دسترسی به Vertex API از aiml-vpc استفاده خواهد شد.
از پوسته ابری
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
از پوسته ابری
gcloud compute forwarding-rules create pscvertex \
--global \
--network=aiml-vpc \
--address=psc-ip \
--target-google-apis-bundle=all-apis
نقاط پایانی پیکربندیشدهی Private Service Connect را فهرست کنید
از پوسته ابری
gcloud compute forwarding-rules list \
--filter target="(all-apis OR vpc-sc)" --global
نقاط پایانی پیکربندی شده Private Service Connect را شرح دهید
از پوسته ابری
gcloud compute forwarding-rules describe \
pscvertex --global
۵. یک حساب کاربری سرویس برای نمونههای GCE ایجاد کنید
برای ارائه سطح مناسبی از کنترل بر API ورتکس، یک حساب کاربری مدیریتشده توسط کاربر مورد نیاز است که به نمونههای غربی و مرکزی اعمال خواهد شد. پس از ایجاد، مجوزهای حساب کاربری را میتوان بر اساس الزامات تجاری تغییر داد. در این آموزش، حساب کاربری مدیریتشده توسط کاربر، vertex-sa، نقشهای زیر را اعمال خواهد کرد:
قبل از ادامه، باید API حساب سرویس (Service Account API) را .
در داخل 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 User بهروزرسانی کنید.
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:vertex-gce-sa@$projectid.iam.gserviceaccount.com" --role="roles/aiplatform.user"
۶. یک حساب کاربری مدیریتشده توسط کاربر (Notebook) ایجاد کنید
در بخش بعدی، یک حساب کاربری مدیریتشده توسط کاربر ایجاد خواهید کرد که با Vertex Workbench (نوتبوک) مورد استفاده در آموزش مرتبط خواهد بود.
در این آموزش، قوانین زیر روی حساب سرویس اعمال خواهد شد:
در داخل Cloud Shell، حساب کاربری سرویس را ایجاد کنید.
gcloud iam service-accounts create user-managed-notebook-sa \
--display-name="user-managed-notebook-sa"
در داخل 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"
در داخل 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"
در داخل 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، حساب سرویس را فهرست کنید و آدرس ایمیلی را که هنگام ایجاد دفترچه مدیریتشده توسط کاربر استفاده خواهد شد، یادداشت کنید.
gcloud iam service-accounts list
۷. نمونههای آزمایشی را ایجاد کنید
در بخش بعدی، نمونههای آزمایشی را برای انجام آزمایش پایه از 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"
برای اینکه به IAP اجازه دهید به ماشینهای مجازی شما متصل شود، یک قانون فایروال ایجاد کنید که:
- برای تمام نمونههای ماشین مجازی که میخواهید با استفاده از 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
۸. یک دفترچه یادداشت مدیریتشده توسط کاربر ایجاد کنید
در بخش بعدی، یک دفترچه یادداشت مدیریتشده توسط کاربر ایجاد کنید که حساب سرویس قبلاً ایجاد شده، یعنی 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 بروید.

۹. مدل و پیشبینی آنلاین را مستقر کنید
در بخش بعدی، از codelab ارائه شده، Vertex AI:Use custom prediction routine with Sklearn، برای پیشپردازش و پسپردازش دادهها برای پیشبینیها استفاده کنید، زیرا شما در مرحله قبل یک دفترچه یادداشت ایجاد کردهاید. پس از استقرار مدل، برای شروع بخش بعدی به آموزش برگردید.

۱۰. یک داشبورد نظارتی سفارشی برای پیشبینی آنلاین ایجاد کنید
پیشبینی آنلاین یک داشبورد مانیتورینگ پیشفرض در مسیر VERTEX AI → ONLINE PREDICTION → ENDPOINT NAME (diamonds-cpr_endpoint) ایجاد میکند. با این حال، برای آزمایش ما باید زمان شروع و پایان را تعریف کنیم، بنابراین یک داشبورد سفارشی مورد نیاز است.
در بخش بعدی، شما معیارهای نظارت بر ابر را ایجاد خواهید کرد تا اندازهگیریهای تأخیر را بر اساس دسترسی منطقهای به نقطه پایانی پیشبینی آنلاین به دست آورید تا تأخیرهای مختلف را هنگام دسترسی به یک نقطه پایانی در us-central1 از نمونههای GCE مستقر در us-west1 و us-central اعتبارسنجی کنید.
برای این آموزش، ما از معیارهای prediction_latencies استفاده خواهیم کرد، معیارهای اضافی در aiplatform موجود است.
متریک | توضیحات |
پیشبینی/آنلاین/پیشبینی_تاخیرها | تأخیر پیشبینی آنلاین مدل پیادهسازیشده. |
یک نمودار برای معیار prediction_latencies ایجاد کنید
از کنسول ابری به بخش نظارت → کاوشگر معیارها بروید

Metric prediction/online/prediction_latencies را وارد کنید و گزینههای زیر را انتخاب کنید، سپس Apply را انتخاب کنید.

برای بهروزرسانی گروه بر اساس گزینه زیر، گزینه ذخیره نمودار را انتخاب کنید.


ذخیره را انتخاب کنید، از شما خواسته میشود یک داشبورد انتخاب کنید. داشبورد جدید را انتخاب کنید و یک نام وارد کنید.

داشبورد سفارشی ورتکس
در بخش بعدی، تأیید کنید که داشبورد سفارشی Vertex زمان صحیح را نمایش میدهد.
به بخش نظارت → داشبورد بروید و داشبورد سفارشی ورتکس را انتخاب کنید و سپس زمان را انتخاب کنید. مطمئن شوید که منطقه زمانی شما صحیح است.

برای نمایش جدول، حتماً راهنما را باز کنید.

مثال نمای گسترش یافته:

۱۱. ایجاد DNS خصوصی برای نقطه پایانی PSC
یک DNS Zone خصوصی در aiml-vpc ایجاد کنید تا همه googleapis ها به آدرس IP نقطه پایانی PSC، یعنی ۱۰۰.۱۰۰.۱۰.۱۰، متصل شوند.
از Cloud Shell، یک DNS Zone خصوصی ایجاد کنید.
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"
۱۲. هی متغیرها را آزمایش کنید
هی به کاربران نهایی این امکان را میدهد که تست را بر اساس نیازهای شبکه و برنامه سفارشیسازی کنند. برای اهداف آموزشی، از گزینهای که در زیر به همراه یک رشته اجرایی نمونه توضیح داده شده است، استفاده خواهیم کرد:
c == 1 کارگر
z == مدت زمان
m == متد HTTP POST
D == بدنه درخواست HTTP از فایل، instances.json
n == تعداد درخواستها برای اجرا. مقدار پیشفرض ۲۰۰ است.
مثال curl string با 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
۱۳. شناسه پیشبینی را بدست آورید
شناسه نقطه پایانی پیشبینی آنلاین خود را از Cloud Console دریافت کنید که در مراحل بعدی استفاده خواهد شد.
به VERTEX AI → پیشبینی آنلاین بروید

۱۴. 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"
در بخش بعدی، با استفاده از ویرایشگر vi یا nano یک فایل instances.json ایجاد خواهید کرد و رشته داده مورد استفاده برای به دست آوردن پیشبینی از مدل پیادهسازی شده را در آن وارد خواهید کرد.
از سیستم عامل 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 در لاگ verbose و 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_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
۱۵. اعتبارسنجی هی (us-west1)
حالا که Hey را از یک نمونه محاسباتی در us-west1 اجرا کردید، نتایج زیر را ارزیابی کنید:
- نتایج هی
- داشبورد سفارشی ورتکس
- هوش شبکه
نتایج هی
از طریق سیستم عامل، بیایید نتایج HEY را بر اساس اجرای 10 دقیقهای اعتبارسنجی کنیم،
۱۷.۵۸۲۶ درخواست در هر ثانیه
۹۹٪ در ۰.۰۶۸۶ ثانیه | ۶۸ میلیثانیه
۱۰۵۵۰ پاسخ با ۲۰۰ کد وضعیت
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
داشبورد سفارشی ورتکس
به بخش نظارت → داشبورد بروید و داشبورد سفارشی ورتکس را انتخاب کنید. 10 دقیقه وارد کنید یا زمان شروع و پایان خود را مشخص کنید. مطمئن شوید که منطقه زمانی شما صحیح است.

نگاهی به تعریف «تاخیرهای پیشبینی» نشان میدهد که یک معیار سمت سرور وجود دارد که کل زمان پاسخ به درخواست کلاینت پس از دریافت پاسخ از مدل را اندازهگیری میکند.
- مدت زمان کل تأخیر : کل زمانی که یک درخواست در سرویس صرف میکند، که برابر با تأخیر مدل به علاوه تأخیر سربار است.
در مقابل، HEY یک معیار سمت کلاینت است که پارامترهای زیر را در نظر میگیرد:
درخواست کلاینت + کل تأخیر (شامل تأخیر مدل) + پاسخ کلاینت
هوش شبکه
حال بیایید نگاهی به تأخیر شبکه بین منطقهای گزارششده توسط Network Intelligence بیندازیم تا تصویری از تأخیر گزارششده توسط Google Cloud Platform از us-west1 به us-central1 به دست آوریم.
به Cloud Console Network Intelligence → Performance Dashboard بروید و گزینههای زیر را که در تصویر زیر نشان داده شده است و تأخیر را از ۳۲ تا ۳۹ میلیثانیه نشان میدهد، انتخاب کنید.

خلاصه خط پایه هی us-west1
مقایسه گزارشهای کل تأخیر توسط ابزارهای تست، تقریباً همان تأخیر گزارش شده توسط HEY را نشان میدهد. تأخیر بین منطقهای بخش عمدهای از تأخیر را تشکیل میدهد. بیایید ببینیم که کلاینت مرکزی در سری بعدی تستها چگونه عمل میکند.
ابزار تأخیر | مدت زمان |
هوش شبکه: تأخیر us-west1 تا us-central1 | حدود ۳۲ تا ۳۹ میلیثانیه |
مانیتورینگ ابری: کل تأخیر پیشبینی [99%] | ۳۴.۵۸ میلیثانیه (۹۹p) |
کل تأخیر گزارش شده توسط گوگل | ~ ۶۶.۵۸ تا ۷۳.۵۸ میلیثانیه |
توزیع تأخیر سمت کلاینت هی | ۶۸ میلیثانیه (۹۹ پیپیام) |
۱۶. دانلود و اجرای 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"
در بخش بعدی، با استفاده از ویرایشگر vi یا nano یک فایل instances.json ایجاد خواهید کرد و رشته داده مورد استفاده برای به دست آوردن پیشبینی از مدل پیادهسازی شده را در آن وارد خواهید کرد.
از سیستم عامل 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 در لاگ verbose و 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_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
۱۷. اعتبارسنجی هی (us-central1)
حالا که Hey را از یک نمونه محاسباتی در us-central1 اجرا کردید، نتایج زیر را ارزیابی کنید:
- نتایج هی
- داشبورد سفارشی ورتکس
- هوش شبکه
نتایج هی
از طریق سیستم عامل، بیایید نتایج HEY را بر اساس اجرای 10 دقیقهای اعتبارسنجی کنیم،
۴۴.۹۴۰۸ درخواست در هر ثانیه
۹۹٪ در ۰.۰۳۵۳ ثانیه | ۳۵ میلیثانیه
۲۶۹۶۵ پاسخ با کد وضعیت ۲۰۰
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
داشبورد سفارشی ورتکس
به بخش نظارت → داشبورد بروید و داشبورد سفارشی ورتکس را انتخاب کنید، ۱۰ دقیقه یا زمان شروع و پایان خود را وارد کنید. مطمئن شوید که منطقه زمانی شما صحیح است.
تأخیرهای پیشبینی برای 10 دقیقه آخر، 30.533 میلیثانیه را نشان میدهد.
نگاهی به تعریف «تاخیرهای پیشبینی» نشان میدهد که یک معیار سمت سرور وجود دارد که کل زمان پاسخ به درخواست کلاینت پس از دریافت پاسخ از مدل را اندازهگیری میکند.
- مدت زمان کل تأخیر : کل زمانی که یک درخواست در سرویس صرف میکند، که برابر با تأخیر مدل به علاوه تأخیر سربار است.
در مقابل، HEY یک معیار سمت کلاینت است که پارامترهای زیر را در نظر میگیرد:
درخواست کلاینت + کل تأخیر (شامل تأخیر مدل) + پاسخ کلاینت
هوش شبکه
حال بیایید نگاهی به تأخیر شبکه درون منطقهای گزارششده توسط 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 (مدل و پیشبینی آنلاین) در یک منطقه است.
ابزار تأخیر | مدت زمان |
هوش شبکه: تأخیر درون منطقهای us-central1 | ~.2 تا .8 میلیثانیه |
مانیتورینگ ابری: کل تأخیر پیشبینی [99%] | ۳۰.۵۳۳ میلیثانیه (۹۹ پیکسل) |
کل تأخیر گزارش شده توسط گوگل | ~30.733 تا 31.333 میلیثانیه |
هی، تأخیر سمت کلاینت | ۳۵ میلیثانیه (۹۹p) |
۱۸. تبریک
تبریک میگویم، شما با موفقیت HEY را مستقر و اعتبارسنجی کردید تا با استفاده از ترکیبی از مانیتورینگ ابری و هوش شبکه، تأخیر پایه پیشبینی سمت کلاینت را بدست آورید. بر اساس آزمایش، شما یک نقطه پایانی پیشبینی در ایالات متحده-مرکزی را شناسایی کردید که میتواند بین منطقهای سرویسدهی شود، هرچند تأخیر مشاهده شد.
کازموپاپ فکر میکند آموزشها فوقالعاده هستند!!

۱۹. تمیز کردن
از 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 حذف شدهاند:
پوشه رجیستری مصنوعات

از رجیستری مدل Vertex AI، مدل را از حالت استقرار خارج کنید:

از پیشبینی آنلاین Vertex AI، نقطه پایانی را حذف کنید

بعدش چی؟
به برخی از این آموزشها نگاهی بیندازید...
- اتصال سرویس خصوصی برای API های گوگل
- هوش مصنوعی ورتکس یک دفترچه یادداشت امن با مدیریت کاربر ایجاد میکند
مطالعه بیشتر و ویدیوها
- نمای کلی اتصال سرویس خصوصی
- سرویس خصوصی کانکت چیست؟
- چگونه از یک مدل یادگیری ماشینی پیشبینی بگیریم
- هوش مصنوعی ورتکس چیست؟