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

1. مقدمه

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

چیزی که خواهی ساخت

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

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

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

dd5c102ce1ab0150.png

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

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

چیزی که یاد خواهید گرفت

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

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

  • پروژه Google Cloud

مجوزهای IAM

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

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

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

مدیر DNS

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

2. قبل از شروع

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

این آموزش از $variables برای کمک به پیاده سازی پیکربندی gcloud در Cloud Shell استفاده می کند.

در داخل Cloud Shell موارد زیر را انجام دهید:

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid

3. راه اندازی aiml-vpc

aiml-vpc را ایجاد کنید

خدمات gcloud networkmanagement.googleapis.com را فعال می کند

در داخل Cloud Shell موارد زیر را انجام دهید:

gcloud compute networks create aiml-vpc --project=$projectid --subnet-mode=custom

Inside Cloud Shell، API مدیریت شبکه را برای هوش شبکه فعال کنید

gcloud services enable networkmanagement.googleapis.com

زیرشبکه نوت بوک مدیریت شده توسط کاربر را ایجاد کنید

در داخل Cloud Shell، workbench-subnet را ایجاد کنید.

gcloud compute networks subnets create workbench-subnet --project=$projectid --range=172.16.10.0/28 --network=aiml-vpc --region=us-central1 --enable-private-ip-google-access

در داخل Cloud Shell، زیرشبکه us-west1 را ایجاد کنید.

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

4. نقطه پایانی Private Service Connect را ایجاد کنید

در بخش زیر، یک نقطه پایانی Private Service Connect (PSC) ایجاد می‌کنید که برای دسترسی به Vertex API از aiml-vpc استفاده می‌شود.

از Cloud Shell

gcloud compute addresses create psc-ip \
    --global \
    --purpose=PRIVATE_SERVICE_CONNECT \
    --addresses=100.100.10.10 \
    --network=aiml-vpc

"pscendpointip" را برای مدت زمان آزمایشگاه ذخیره کنید

pscendpointip=$(gcloud compute addresses list --filter=name:psc-ip --format="value(address)")

echo $pscendpointip

نقطه پایانی PSC را ایجاد کنید

از Cloud Shell

gcloud compute forwarding-rules create pscvertex \
    --global \
    --network=aiml-vpc \
    --address=psc-ip \
    --target-google-apis-bundle=all-apis

نقاط پایانی پیکربندی شده Private Service Connect را فهرست کنید

از Cloud Shell

gcloud compute forwarding-rules list  \
--filter target="(all-apis OR vpc-sc)" --global

نقاط پایانی پیکربندی شده Private Service Connect را شرح دهید

از Cloud Shell

gcloud compute forwarding-rules describe \
    pscvertex --global

5. یک حساب سرویس برای نمونه های GCE ایجاد کنید

برای ارائه یک سطح خوب از کنترل به Vertex API یک حساب سرویس مدیریت شده توسط کاربر مورد نیاز است که برای نمونه‌های غربی و مرکزی اعمال خواهد شد. پس از ایجاد، مجوزهای حساب سرویس را می توان بر اساس نیازهای تجاری تغییر داد. در این آموزش، حساب سرویس مدیریت شده توسط کاربر، vertex-sa، نقش های زیر اعمال می شود:

قبل از ادامه، باید 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"

6. ایجاد یک حساب سرویس مدیریت شده توسط کاربر (Notebook)

در بخش زیر، یک حساب کاربری سرویس مدیریت شده توسط کاربر ایجاد می‌کنید که با Vertex Workbench (Notebook) مورد استفاده در آموزش مرتبط می‌شود.

در آموزش، حساب سرویس دارای قوانین زیر اعمال می شود:

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

7. نمونه های تست را ایجاد کنید

در بخش بعدی، نمونه‌های آزمایشی را برای انجام آزمایش‌های پایه از us-west1 و us-central1 ایجاد خواهید کرد.

در داخل Cloud Shell، west-client را ایجاد کنید.

gcloud compute instances create west-client \
    --zone=us-west1-a \
    --image-family=debian-11 \
    --image-project=debian-cloud \
    --subnet=us-west1-subnet \
    --scopes=https://www.googleapis.com/auth/cloud-platform \
    --no-address \
    --shielded-secure-boot --service-account=vertex-gce-sa@$projectid.iam.gserviceaccount.com \
    --metadata startup-script="#! /bin/bash
      sudo apt-get update
      sudo apt-get install tcpdump dnsutils -y"

در داخل Cloud Shell، مرکز-کلینت را ایجاد کنید.

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 اجازه دهید به نمونه های VM شما متصل شود، یک قانون فایروال ایجاد کنید که:

  • برای تمام نمونه های VM که می خواهید با استفاده از IAP در دسترس باشند، اعمال می شود.
  • به ترافیک ورودی از محدوده IP 35.235.240.0/20 اجازه می دهد. این محدوده شامل تمام آدرس های IP است که IAP برای ارسال TCP استفاده می کند.

در داخل Cloud Shell، قانون فایروال IAP را ایجاد کنید.

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

8. یک نوت بوک مدیریت شده توسط کاربر ایجاد کنید

API نوت بوک را

در بخش زیر، یک نوت بوک مدیریت شده توسط کاربر ایجاد کنید که دارای حساب کاربری سرویس قبلی، user-managed-notebook-sa ​​باشد.

Inside Cloud Shell نمونه خصوصی مشتری را ایجاد کنید.

gcloud notebooks instances create workbench-tutorial \
      --vm-image-project=deeplearning-platform-release \
      --vm-image-family=common-cpu-notebooks \
      --machine-type=n1-standard-4 \
      --location=us-central1-a \
      --subnet-region=us-central1 \
      --shielded-secure-boot \
      --subnet=workbench-subnet \
      --no-public-ip    --service-account=user-managed-notebook-sa@$projectid.iam.gserviceaccount.com

برای مشاهده نوت بوک مستقر خود به Vertex AI → Workbench بروید.

b02fcb9b07dca06a.png

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

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

ee68b7ba0cfd2746.png

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

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

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

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

متریک

توضیحات

prediction/online/prediction_latncies

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

نموداری برای متریک prediction_latncies ایجاد کنید

از Cloud Console به MONITORING → Metrics Explorer بروید

536668ab0b29d77.png

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

c1edd34208cb5ee2.png

Update Group by بر اساس گزینه زیر Save Chart را انتخاب کنید.

e180a5d8a044b6e1.png

d2ecd6677a3b34e0.png

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

e29a39dc941c8599.png

داشبورد سفارشی Vertex

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

به MONITORING → Dashboard بروید و Vertex Custom Dashboard را انتخاب کنید و سپس زمان را انتخاب کنید. مطمئن شوید که منطقه زمانی شما درست است.

f43ebed798ce1147.png

برای به دست آوردن نمای جدول، افسانه را گسترش دهید.

61ffeef22e067ca9.png

نمونه نمای گسترده:

9027e8785c023129.png

11. DNS خصوصی برای نقطه پایانی PSC ایجاد کنید

یک منطقه DNS خصوصی در aiml-vpc ایجاد کنید تا تمام googleapis به آدرس IP پایانی PSC 100.100.10.10 حل شود.

از 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"

12. Hey testing متغیرها

Hey به کاربران نهایی امکان سفارشی کردن تست را بر اساس نیازهای شبکه و برنامه می دهد. برای هدف آموزش، از گزینه‌ای که در زیر توضیح داده شده است، با یک رشته اجرای نمونه استفاده می‌کنیم:

c == 1 کارگر

z == مدت

m == روش HTTP POST

D == بدنه درخواست HTTP از فایل، instances.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 دریافت کنید که در مراحل بعدی استفاده خواهد شد.

به VERTEX AI → ONLINE PREDICTION بروید

ce4d4a88a3fa2345.png

14. دانلود و اجرای HEY (us-west1)

در بخش زیر، برای دانلود و اجرای HEY در برابر Online Prediction واقع در us-central1 وارد west-client می شوید.

از Cloud Shell، وارد west-client شوید و HEY را دانلود کنید

gcloud compute ssh west-client --project=$projectid --zone=us-west1-a --tunnel-through-iap

از سیستم عامل، HEY را دانلود کنید و مجوزها را به روز کنید.

wget https://hey-release.s3.us-east-2.amazonaws.com/hey_linux_amd64
chmod +x hey_linux_amd64

از سیستم عامل، متغیرهای زیر را ایجاد کنید:

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
ENDPOINT_ID="insert-your-endpoint-id-here"

مثال:

ENDPOINT_ID="2706243362607857664"

در بخش زیر، یک فایل instances.json با استفاده از ویرایشگر vi یا nano ایجاد می‌کنید و رشته داده‌ای را که برای بدست آوردن پیش‌بینی از مدل مستقر شده استفاده می‌شود، وارد می‌کنید.

از سیستم عامل West-client، یک instances.json f ile با رشته داده زیر ایجاد کنید:

{"instances": [
  [0.23, 'Ideal', 'E', 'VS2', 61.5, 55.0, 3.95, 3.98, 2.43],
  [0.29, 'Premium', 'J', 'Internally Flawless', 52.5, 49.0, 4.00, 2.13, 3.11]]}

مثال:

user@west-client:$ more instances.json 
{"instances": [
  [0.23, 'Ideal', 'E', 'VS2', 61.5, 55.0, 3.95, 3.98, 2.43],
  [0.29, 'Premium', 'J', 'Internally Flawless', 52.5, 49.0, 4.00, 2.13, 3.11]]}

user@west-client:$

پیش آزمون

از سیستم عامل، یک curl را برای اعتبارسنجی مدل اجرا کنید و نقطه پایانی پیش بینی موفقیت آمیز است. به IP نقطه پایانی PSC در گزارش کامل و HTTP/2 200 که نشان دهنده موفقیت است توجه کنید.

curl -v -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/${projectid}/locations/us-central1/endpoints/${ENDPOINT_ID}:predict -d @instances.json

به عنوان مثال، به آدرس IP PSC مورد استفاده برای دسترسی به پیش بینی و نتیجه موفقیت آمیز توجه کنید.

user@west-client:$ curl -v -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/${projectid}/locations/us-central1/endpoints/${ENDPOINT_ID}:predict -d @instances.json
Note: Unnecessary use of -X or --request, POST is already inferred.
*   Trying 100.100.10.10:443...
* Connected to us-central1-aiplatform.googleapis.com (100.100.10.10) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
* ALPN, server accepted to use h2
* Server certificate:
*  subject: CN=upload.video.google.com
*  start date: Jul 31 08:22:19 2023 GMT
*  expire date: Oct 23 08:22:18 2023 GMT
*  subjectAltName: host "us-central1-aiplatform.googleapis.com" matched cert's "*.googleapis.com"
*  issuer: C=US; O=Google Trust Services LLC; CN=GTS CA 1C3
*  SSL certificate verify ok.
* Using HTTP2, server supports multi-use
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* Using Stream ID: 1 (easy handle 0x55a9f38b42c0)
> POST /v1/projects/new-test-project-396322/locations/us-central1/endpoints/2706243362607857664:predict HTTP/2
> Host: us-central1-aiplatform.googleapis.com
> user-agent: curl/7.74.0
> accept: */*
> authorization: Bearer ya29.c.b0Aaekm1LqrcaOlWFFwuEOWX_tZVXXvJgN_K-u5_hFyEAYXAi3AnBEBwwtHS8dweW_P2QGfdyFfa31nMT_6BaKBI0mC9IsfzfIiUwXc8u2yJt01gTUSJpCmGAFKZKidRMgkPYivVYCnuymzdYbRAWacIe__StkRzI9UeQOGN3jNIeESr80AdH12goaxCFXWaNWxoYRfGVhekEgUcsKs7t1OhOM-937gy4YGkXcXa8sGuHWRqF5bnulYlTqlxqQ2aAxMTrQg2lwUWRGCmGhPrym7rXJq7oim0DkAJSbAarl1qFuz0PPfNXeHGbs13zY2r1giV7u8_w4Umj_Q5M7H9fTkq7EiqnLzqRkOHXismYL368P1jOUBYM__krFQt4M3X9RJa0g01tOw3FnOh27BmUqlFQ1J2h14JZpx215Q3xzRvgfJ5iW5YYSkv67uZRQk4V04naOUXyc0plzWuVOjj4nor3fYvkS_oW0IyxJoBjeXR16Vnvln8c04svWX9dt7eobczFvBOm9nVdh4lVp8qxbp__2WtMvc1QVg6y-2i6lRpbvmyp1oadxVRjxV1e0wiQFSe-qqsinJu3bnnaMbxdU2cu5j26o8o8Xpgo0SF1UM0b1WX84iatbWpdFSphZm1llwmRagMzcFBW0aBk-i35_bXSbzwURgMfY6Qbyb9Rv9y0F-Maf34I0WxiMldv2uc57nej7dVl9OSm_Ohnro-i9zcpq9fxo9soYVB8WjaZOUjauk4znstc2_6y4atcVVsQBkeU674biR567Ri3M74Jfv4MrrF02ObfrJRdB7UJ4MU_9kWW-kYeeJzoci15UqYV0f_yJgReBwQa66Supmebee2Sn2nku6xZkRMu5Mz55mXuva0XWrpIbor7WckSsXwUFbf7rj5ipa4mOOyf2hJe1Rq0x6yeBaariRzXrhfm5bBpFBU73-zd-IekvOji0ZJQSkk0o6gpX_794Jny7j14aQJ8VxezcFpZUztimYhMnRhlO2lqms1h0h48
> content-type: application/json
> content-length: 158
> 
* Connection state changed (MAX_CONCURRENT_STREAMS == 100)!
* We are completely uploaded and fine
< HTTP/2 200 
< x-vertex-ai-internal-prediction-backend: harpoon
< content-type: application/json; charset=UTF-8
< date: Sun, 20 Aug 2023 03:51:54 GMT
< vary: X-Origin
< vary: Referer
< vary: Origin,Accept-Encoding
< server: scaffolding on HTTPServer2
< cache-control: private
< x-xss-protection: 0
< x-frame-options: SAMEORIGIN
< x-content-type-options: nosniff
< accept-ranges: none
< 
{
  "predictions": [
    "$479.0",
    "$586.0"
  ],
  "deployedModelId": "3587550310781943808",
  "model": "projects/884291964428/locations/us-central1/models/6829574694488768512",
  "modelDisplayName": "diamonds-cpr",
  "modelVersionId": "1"
}
* Connection #0 to host us-central1-aiplatform.googleapis.com left intact

HEY را اجرا کنید

از سیستم عامل، HEY را اجرا کنید تا یک آزمایش پایه 10 دقیقه ای را فعال کند.

./hey_linux_amd64 -c 1 -z 10m -m POST -D instances.json  -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/$projectid/locations/us-central1/endpoints/${ENDPOINT_ID}:predict

15. Hey Validation (us-west1)

اکنون که Hey را از یک نمونه محاسباتی در us-west1 اجرا کردید، نتایج را از موارد زیر ارزیابی کنید:

  • نتایج HEY
  • داشبورد سفارشی Vertex
  • هوش شبکه

نتایج HEY

از سیستم عامل، اجازه می دهد تا نتایج HEY را بر اساس اجرای 10 دقیقه اعتبار سنجی کنیم،

17.5826 درخواست در هر ثانیه

99% در 0.0686 ثانیه | 68 میلی‌ثانیه

10550 پاسخ با 200 کد وضعیت

user@west-client:$ ./hey_linux_amd64 -c 1 -z 10m -m POST -D instances.json  -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/$projectid/locations/us-central1/endpoints/${ENDPOINT_ID}:predict

Summary:
  Total:        600.0243 secs
  Slowest:      0.3039 secs
  Fastest:      0.0527 secs
  Average:      0.0569 secs
  Requests/sec: 17.5826
  

Response time histogram:
  0.053 [1]     |
  0.078 [10514] |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
  0.103 [16]    |
  0.128 [4]     |
  0.153 [3]     |
  0.178 [1]     |
  0.203 [0]     |
  0.229 [2]     |
  0.254 [1]     |
  0.279 [5]     |
  0.304 [3]     |


Latency distribution:
  10% in 0.0546 secs
  25% in 0.0551 secs
  50% in 0.0559 secs
  75% in 0.0571 secs
  90% in 0.0596 secs
  95% in 0.0613 secs
  99% in 0.0686 secs

Details (average, fastest, slowest):
  DNS+dialup:   0.0000 secs, 0.0527 secs, 0.3039 secs
  DNS-lookup:   0.0000 secs, 0.0000 secs, 0.0116 secs
  req write:    0.0000 secs, 0.0000 secs, 0.0002 secs
  resp wait:    0.0567 secs, 0.0526 secs, 0.3038 secs
  resp read:    0.0001 secs, 0.0001 secs, 0.0696 secs

Status code distribution:
  [200] 10550 responses

داشبورد سفارشی Vertex

به MONITORING → Dashboard بروید و Vertex Custom Dashboard را انتخاب کنید. 10 متر را وارد کنید یا زمان شروع و توقف خود را مشخص کنید. مطمئن شوید که منطقه زمانی شما درست است.

4102b1d0438c78e3.png

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

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

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

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

هوش شبکه

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

به Cloud Console Network Intelligence → Performance Dashboard بروید و گزینه های زیر را که در تصویر زیر توضیح داده شده است را انتخاب کنید که تأخیر بین 32 تا 39 میلی ثانیه را نشان می دهد.

aade5f757115721.png

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

مقایسه گزارش‌های تأخیر کل توسط ابزارهای آزمایش تقریباً همان تأخیر گزارش شده توسط HEY را به دست می‌دهد. تأخیر بین منطقه ای بخش عمده ای از تأخیر است. بیایید ببینیم که سرویس گیرنده مرکزی در سری بعدی آزمایشات چگونه عمل می کند.

ابزار تأخیر

مدت زمان

هوش شبکه: تأخیر us-west1 تا us-central1

~ 32 تا 39 میلی ثانیه

Cloud Monitoring: کل تأخیر پیش‌بینی [۹۹ درصد]

34.58 میلی‌ثانیه (99p)

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

~ 66.58 تا 73.58 ms

توزیع تاخیر سمت مشتری HEY

68 میلی‌ثانیه (99p)

16. دانلود و اجرای HEY (us-central1)

در بخش زیر، برای دانلود و اجرای HEY در برابر Online Prediction واقع در us-central1 وارد مرکز کلاینت خواهید شد.

از Cloud Shell، وارد مرکز مشتری شوید و HEY را دانلود کنید

gcloud compute ssh central-client --project=$projectid --zone=us-central1-a --tunnel-through-iap

از سیستم عامل، HEY را دانلود کنید و مجوزها را به روز کنید.

wget https://hey-release.s3.us-east-2.amazonaws.com/hey_linux_amd64
chmod +x hey_linux_amd64

از سیستم عامل، متغیرهای زیر را ایجاد کنید:

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
ENDPOINT_ID="insert-your-endpoint-id-here"

مثال:

ENDPOINT_ID="2706243362607857664"

در بخش زیر، یک فایل instances.json با استفاده از ویرایشگر vi یا nano ایجاد می‌کنید و رشته داده‌ای را که برای بدست آوردن پیش‌بینی از مدل مستقر شده استفاده می‌شود، وارد می‌کنید.

از سیستم عامل West-client، یک instances.json f ile با رشته داده زیر ایجاد کنید:

{"instances": [
  [0.23, 'Ideal', 'E', 'VS2', 61.5, 55.0, 3.95, 3.98, 2.43],
  [0.29, 'Premium', 'J', 'Internally Flawless', 52.5, 49.0, 4.00, 2.13, 3.11]]}

مثال:

user@west-client:$ more instances.json 
{"instances": [
  [0.23, 'Ideal', 'E', 'VS2', 61.5, 55.0, 3.95, 3.98, 2.43],
  [0.29, 'Premium', 'J', 'Internally Flawless', 52.5, 49.0, 4.00, 2.13, 3.11]]}

user@west-client:$

پیش آزمون

از سیستم عامل، یک curl را برای اعتبارسنجی مدل اجرا کنید و نقطه پایانی پیش بینی موفقیت آمیز است. به IP نقطه پایانی PSC در گزارش کامل و HTTP/2 200 که نشان دهنده موفقیت است توجه کنید.

curl -v -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/${projectid}/locations/us-central1/endpoints/${ENDPOINT_ID}:predict -d @instances.json

به عنوان مثال، به آدرس IP PSC مورد استفاده برای دسترسی به پیش بینی و نتیجه موفقیت آمیز توجه کنید.

user@central-client:~$ curl -v -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/${projectid}/locations/us-central1/endpoints/${ENDPOINT_ID}:predict -d @instances.json
Note: Unnecessary use of -X or --request, POST is already inferred.
*   Trying 100.100.10.10:443...
* Connected to us-central1-aiplatform.googleapis.com (100.100.10.10) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
* ALPN, server accepted to use h2
* Server certificate:
*  subject: CN=upload.video.google.com
*  start date: Jul 31 08:22:19 2023 GMT
*  expire date: Oct 23 08:22:18 2023 GMT
*  subjectAltName: host "us-central1-aiplatform.googleapis.com" matched cert's "*.googleapis.com"
*  issuer: C=US; O=Google Trust Services LLC; CN=GTS CA 1C3
*  SSL certificate verify ok.
* Using HTTP2, server supports multi-use
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* Using Stream ID: 1 (easy handle 0x559b57adc2c0)
> POST /v1/projects/new-test-project-396322/locations/us-central1/endpoints/2706243362607857664:predict HTTP/2
> Host: us-central1-aiplatform.googleapis.com
> user-agent: curl/7.74.0
> accept: */*
> authorization: Bearer ya29.c.b0Aaekm1KWqq-CIXuL6f1cx9d9jHHquQq9tlSV1oVZ1y3TACi82JFFZRwsagVY7MMovycsU4PLkt9MDMkNngxZE5RzXcS-AoaUaQf1tPT9-_JMTlFI6wCcR7Yr9MeRF5AZblr_k52ZZgEZKeYGcrXoGiqGQcAAwFtHiEVAkUhLuyukteXbMoep1JM9E0zFblJj7Z0yOCMJYBH-6XHcIDYnOKpStMVBR2wcTDbnFrCE08HXbvRnQVcENatTBoI9FzSVL1ORwqUiCcdfnTSjpIXcyD-W82d6ZHjGX_RUhfnH7RPfOJqkuU8pOovwoCjq_jvM_wJUfPuQnBKHp5rxbYxPE349DMBql62po2SWFguuFo-a2eoUnb8-FQeBZqan65zgV0lexR73gZlm071y9grlXv3fmJUo7vlj5W-7_-FJXaWWg8iWc6rmjYeO1Wz2h_8qnmojkX9xSUciI6JfmwdgMWwtvwJb63ppSmdwf8oagrYiQlpMzgRI6rekbRzg-1WOBeOf5nRg5vtxUMSc9iRaoarO5XwFX8vt7rxOUBvbXYVWmo3bsdhzsS9VopMwgMlxgcIJg7bq7_F3iapB-nRjfjfhZWpR83cWIkI2Wb9f89inpsxtYjZbbzdWkZvRB8FYSsY8F8tcpiVoWWyQWZiph9z7O59fF9irWY2gtUnbFcJJ_ZcYztjlMQaR45y42ZflkM3Qn668bzge3Y3hmVI1s6ZSmxxq6m27hoMwVn21R07Y613jwljmaFJ5V8MwkR6yvFhYngrh_JrhRUQtSSMh02Rz25wMfv7g8Fiqymr-12viM4btIFjXZBM3XFqzvso_rw1omI1yYWofmbaBYggpegpJBzSeqVUZe791agjVtiMUkyjXFy__9gI0Qk9ZUarI4p25SvS4I1hX4YyBk6ol32Z5zIsVr1Seff__aklm6M2Mlkumd7nurm46hjOIoOhFpfFxrQ6yivnhYapBOJMYirgbZvigvI3dom1fnmt0-ktmRxp69w7Uzzy
> content-type: application/json
> content-length: 158
> 
* Connection state changed (MAX_CONCURRENT_STREAMS == 100)!
* We are completely uploaded and fine
< HTTP/2 200 
< x-vertex-ai-internal-prediction-backend: harpoon
< date: Sun, 20 Aug 2023 22:25:31 GMT
< content-type: application/json; charset=UTF-8
< vary: X-Origin
< vary: Referer
< vary: Origin,Accept-Encoding
< server: scaffolding on HTTPServer2
< cache-control: private
< x-xss-protection: 0
< x-frame-options: SAMEORIGIN
< x-content-type-options: nosniff
< accept-ranges: none
< 
{
  "predictions": [
    "$479.0",
    "$586.0"
  ],
  "deployedModelId": "3587550310781943808",
  "model": "projects/884291964428/locations/us-central1/models/6829574694488768512",
  "modelDisplayName": "diamonds-cpr",
  "modelVersionId": "1"
}
* Connection #0 to host us-central1-aiplatform.googleapis.com left intact

HEY را اجرا کنید

از سیستم عامل، HEY را اجرا کنید تا یک آزمایش پایه 10 دقیقه ای را فعال کند.

./hey_linux_amd64 -c 1 -z 10m -m POST -D instances.json  -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/$projectid/locations/us-central1/endpoints/${ENDPOINT_ID}:predict

17. Hey Validation (us-central1)

اکنون که Hey را از یک نمونه محاسباتی در us-central1 اجرا کردید، نتایج را از موارد زیر ارزیابی کنید:

  • نتایج HEY
  • داشبورد سفارشی Vertex
  • هوش شبکه

نتایج HEY

از سیستم عامل، اجازه می دهد تا نتایج HEY را بر اساس اجرای 10 دقیقه اعتبار سنجی کنیم،

44.9408 درخواست در هر ثانیه

99% در 0.0353 ثانیه | 35 میلی‌ثانیه

26965 پاسخ با 200 کد وضعیت

devops_user_1_deepakmichael_alto@central-client:~$ ./hey_linux_amd64 -c 1 -z 10m -m POST -D instances.json  -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/$projectid/locations/us-central1/endpoints/${ENDPOINT_ID}:predict

Summary:
  Total:        600.0113 secs
  Slowest:      0.3673 secs
  Fastest:      0.0184 secs
  Average:      0.0222 secs
  Requests/sec: 44.9408
  

Response time histogram:
  0.018 [1]     |
  0.053 [26923] |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
  0.088 [25]    |
  0.123 [4]     |
  0.158 [0]     |
  0.193 [1]     |
  0.228 [9]     |
  0.263 [1]     |
  0.298 [0]     |
  0.332 [0]     |
  0.367 [1]     |


Latency distribution:
  10% in 0.0199 secs
  25% in 0.0205 secs
  50% in 0.0213 secs
  75% in 0.0226 secs
  90% in 0.0253 secs
  95% in 0.0273 secs
  99% in 0.0353 secs

Details (average, fastest, slowest):
  DNS+dialup:   0.0000 secs, 0.0184 secs, 0.3673 secs
  DNS-lookup:   0.0000 secs, 0.0000 secs, 0.0079 secs
  req write:    0.0000 secs, 0.0000 secs, 0.0007 secs
  resp wait:    0.0220 secs, 0.0182 secs, 0.3672 secs
  resp read:    0.0002 secs, 0.0001 secs, 0.0046 secs

Status code distribution:
  [200] 26965 responses

داشبورد سفارشی Vertex

به MONITORING → Dashboard بروید و Vertex Custom Dashboard را انتخاب کنید، 10 متر را وارد کنید. یا زمان شروع و توقف شما. مطمئن شوید که منطقه زمانی شما درست است.

تأخیر پیش‌بینی برای 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

مقایسه کل تأخیر گزارش شده توسط ابزارهای آزمایشی به دلیل محاسبه (مرکز مشتری) و نقطه پایانی راس (مدل و پیش بینی آنلاین) در همان منطقه، تأخیر کمتری نسبت به سرویس گیرنده غربی به دست می دهد.

ابزار تأخیر

مدت زمان

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

~.2 تا 0.8 میلی ثانیه

Cloud Monitoring: کل تأخیر پیش‌بینی [۹۹ درصد]

30.533 میلی‌ثانیه (99p)

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

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

تأخیر سمت مشتری HEY

35 میلی‌ثانیه (99p)

18. تبریک می گویم

تبریک می‌گوییم، HEY را برای به دست آوردن تأخیر پایه پیش‌بینی سمت سرویس گیرنده با استفاده از ترکیبی از Cloud Monitoring و Intelligence با موفقیت اجرا و اعتبارسنجی کرده‌اید. براساس آزمایشی که قرار بود یک نقطه پایانی پیش‌بینی را در us-central شناسایی کنید، می‌توان در بین منطقه‌ای ارائه کرد، با این وجود تأخیر مشاهده شد.

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 موارد زیر را حذف کرد:

پوشه آرتیفکت رجیستری

99c17044e2f80919.png

از Vertex AI Model Registry، مدل را undeploy کنید:

f5b315f089ae6283.png

از Vertex AI Online Prediction، نقطه پایانی را حذف کنید

9b58688a5037de84.png

بعدش چی؟

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

ادامه مطلب و ویدیوها

اسناد مرجع