تست خط پایه پیش‌بینی آنلاین Vertex AI با HEY

۱. مقدمه

این آموزش به شما نشان می‌دهد که چگونه می‌توانید معیارهای پیش‌بینی آنلاین مانیتورینگ ابری را هنگام انجام آزمایش پایه در us-central1 و us-west1 به یک نقطه پایانی پیش‌بینی مستقر در us-central1 با استفاده از ابزار عملکرد وب HEY ایجاد و ارزیابی کنید.

آنچه خواهید ساخت

شما یک شبکه VPC به نام aiml-vpc راه‌اندازی خواهید کرد که شامل زیرشبکه‌ها و نمونه‌هایی در us-west1 و us-central1 است که برای تولید ترافیک با استفاده از HEY که یک پیش‌بینی آنلاین و مدل مستقر در us-central1 را هدف قرار می‌دهد، استفاده خواهد شد.

اتصال سرویس خصوصی و DNS خصوصی نیز در این آموزش گنجانده شده‌اند تا نشان دهند که چگونه محیط‌های داخلی و چند ابری می‌توانند از PSC برای دسترسی به googleapis استفاده کنند.

در این آموزش، از مانیتورینگ ابری و هوش شبکه برای اعتبارسنجی ترافیک تولید شده از HEY تا پیش‌بینی آنلاین استفاده خواهد شد. اگرچه مراحل ذکر شده در آموزش در یک VPC مستقر شده‌اند، اما می‌توانید از این مراحل برای استقرار و به دست آوردن یک مبنای اولیه از APIهای Vertex از محیط‌های داخلی یا چند ابری استفاده کنید. معماری شبکه از اجزای زیر تشکیل شده است:

dd5c102ce1ab0150.png

در زیر جزئیات مورد استفاده آمده است:

  1. دسترسی به پیش‌بینی آنلاین در us-central1 از نمونه‌های GCE در us-west1 با استفاده از HEY
  2. تأیید کنید که از PSC برای دسترسی به Vertex API استفاده می‌شود.
  3. با استفاده از HEY به مدت ۵ دقیقه حرکات حلقه زدن را انجام دهید
  4. اعتبارسنجی تأخیر با استفاده از Cloud Monitoring
  5. اعتبارسنجی تأخیر بین منطقه‌ای با استفاده از هوش شبکه
  6. دسترسی به پیش‌بینی آنلاین در us-central1 از نمونه‌های GCE در us-central1 با استفاده از HEY
  7. تأیید کنید که از PSC برای دسترسی به Vertex API استفاده می‌شود.
  8. با استفاده از HEY به مدت ۵ دقیقه حرکات حلقه زدن را انجام دهید
  9. اعتبارسنجی تأخیر با استفاده از Cloud Monitoring
  10. اعتبارسنجی تأخیر درون منطقه‌ای با استفاده از هوش شبکه

آنچه یاد خواهید گرفت

  • نحوه ایجاد یک نقطه پایانی اتصال سرویس خصوصی
  • نحوه تولید بار برای پیش‌بینی آنلاین با استفاده از HEY
  • نحوه ایجاد معیارهای هوش مصنوعی Vertex با استفاده از Cloud Monitoring
  • نحوه استفاده از هوش شبکه برای اعتبارسنجی تأخیر درون و بین منطقه‌ای

آنچه نیاز دارید

  • پروژه ابری گوگل

مجوزهای IAM

مدیر شبکه محاسباتی

مدیر شبکه محاسباتی

ویرایشگر فهرست خدمات

مدیر DNS

نمایشگر مدیریت شبکه

۲. قبل از شروع

پروژه را برای پشتیبانی از آموزش به‌روزرسانی کنید

این آموزش از متغیرها (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

۸. یک دفترچه یادداشت مدیریت‌شده توسط کاربر ایجاد کنید

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

۹. مدل و پیش‌بینی آنلاین را مستقر کنید

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

ee68b7ba0cfd2746.png

۱۰. یک داشبورد نظارتی سفارشی برای پیش‌بینی آنلاین ایجاد کنید

پیش‌بینی آنلاین یک داشبورد مانیتورینگ پیش‌فرض در مسیر VERTEX AI → ONLINE PREDICTION → ENDPOINT NAME (diamonds-cpr_endpoint) ایجاد می‌کند. با این حال، برای آزمایش ما باید زمان شروع و پایان را تعریف کنیم، بنابراین یک داشبورد سفارشی مورد نیاز است.

در بخش بعدی، شما معیارهای نظارت بر ابر را ایجاد خواهید کرد تا اندازه‌گیری‌های تأخیر را بر اساس دسترسی منطقه‌ای به نقطه پایانی پیش‌بینی آنلاین به دست آورید تا تأخیرهای مختلف را هنگام دسترسی به یک نقطه پایانی در us-central1 از نمونه‌های GCE مستقر در us-west1 و us-central اعتبارسنجی کنید.

برای این آموزش، ما از معیارهای prediction_latencies استفاده خواهیم کرد، معیارهای اضافی در aiplatform موجود است.

متریک

توضیحات

پیش‌بینی/آنلاین/پیش‌بینی_تاخیرها

تأخیر پیش‌بینی آنلاین مدل پیاده‌سازی‌شده.

یک نمودار برای معیار prediction_latencies ایجاد کنید

از کنسول ابری به بخش نظارت → کاوشگر معیارها بروید

536668ab0b29d77.png

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

c1edd34208cb5ee2.png

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

e180a5d8a044b6e1.png

d2ecd6677a3b34e0.png

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

e29a39dc941c8599.png

داشبورد سفارشی ورتکس

در بخش بعدی، تأیید کنید که داشبورد سفارشی Vertex زمان صحیح را نمایش می‌دهد.

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

f43ebed798ce1147.png

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

61ffeef22e067ca9.png

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

9027e8785c023129.png

۱۱. ایجاد 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 → پیش‌بینی آنلاین بروید

ce4d4a88a3fa2345.png

۱۴. 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 دقیقه وارد کنید یا زمان شروع و پایان خود را مشخص کنید. مطمئن شوید که منطقه زمانی شما صحیح است.

4102b1d0438c78e3.png

نگاهی به تعریف «تاخیرهای پیش‌بینی» نشان می‌دهد که یک معیار سمت سرور وجود دارد که کل زمان پاسخ به درخواست کلاینت پس از دریافت پاسخ از مدل را اندازه‌گیری می‌کند.

  • مدت زمان کل تأخیر : کل زمانی که یک درخواست در سرویس صرف می‌کند، که برابر با تأخیر مدل به علاوه تأخیر سربار است.

در مقابل، HEY یک معیار سمت کلاینت است که پارامترهای زیر را در نظر می‌گیرد:

درخواست کلاینت + کل تأخیر (شامل تأخیر مدل) + پاسخ کلاینت

هوش شبکه

حال بیایید نگاهی به تأخیر شبکه بین منطقه‌ای گزارش‌شده توسط Network Intelligence بیندازیم تا تصویری از تأخیر گزارش‌شده توسط Google Cloud Platform از us-west1 به us-central1 به دست آوریم.

به Cloud Console Network Intelligence → Performance Dashboard بروید و گزینه‌های زیر را که در تصویر زیر نشان داده شده است و تأخیر را از ۳۲ تا ۳۹ میلی‌ثانیه نشان می‌دهد، انتخاب کنید.

aade5f757115721.png

خلاصه خط پایه هی 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 میلی‌ثانیه نشان می‌دهد، انتخاب کنید.

eaa84848c3185fde.png

خلاصه خط پایه HEY us-central1

مقایسه کل تأخیر گزارش‌شده توسط ابزارهای تست، تأخیر کمتری را نسبت به west-client نشان می‌دهد که به دلیل قرار گرفتن نقاط پایانی محاسبه (central-client) و Vertex (مدل و پیش‌بینی آنلاین) در یک منطقه است.

ابزار تأخیر

مدت زمان

هوش شبکه: تأخیر درون منطقه‌ای us-central1

~.2 تا .8 میلی‌ثانیه

مانیتورینگ ابری: کل تأخیر پیش‌بینی [99%]

۳۰.۵۳۳ میلی‌ثانیه (۹۹ پیکسل)

کل تأخیر گزارش شده توسط گوگل

~30.733 تا 31.333 میلی‌ثانیه

هی، تأخیر سمت کلاینت

۳۵ میلی‌ثانیه (۹۹p)

۱۸. تبریک

تبریک می‌گویم، شما با موفقیت HEY را مستقر و اعتبارسنجی کردید تا با استفاده از ترکیبی از مانیتورینگ ابری و هوش شبکه، تأخیر پایه پیش‌بینی سمت کلاینت را بدست آورید. بر اساس آزمایش، شما یک نقطه پایانی پیش‌بینی در ایالات متحده-مرکزی را شناسایی کردید که می‌تواند بین منطقه‌ای سرویس‌دهی شود، هرچند تأخیر مشاهده شد.

کازموپاپ فکر می‌کند آموزش‌ها فوق‌العاده هستند!!

e6d3675ca7c6911f.jpeg

۱۹. تمیز کردن

از 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 حذف شده‌اند:

پوشه رجیستری مصنوعات

99c17044e2f80919.png

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

f5b315f089ae6283.png

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

9b58688a5037de84.png

بعدش چی؟

به برخی از این آموزش‌ها نگاهی بیندازید...

مطالعه بیشتر و ویدیوها

اسناد مرجع