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 از محیطهای داخلی یا چند ابری به کار بگیرید. معماری شبکه از اجزای زیر تشکیل شده است:
در زیر جزئیات مربوط به مورد استفاده آمده است:
- به پیشبینی آنلاین در us-central1 از نمونههای GCE در us-west1 با استفاده از HEY دسترسی پیدا کنید
- بررسی کنید که از PSC برای دسترسی به Vertex API استفاده می شود
- فر کردن را با استفاده از HEY به مدت 5 دقیقه انجام دهید
- تأخیر را با استفاده از Cloud Monitoring تأیید کنید
- تأخیر بین منطقه ای را با استفاده از هوش شبکه تأیید کنید
- به پیشبینی آنلاین در us-central1 از نمونههای GCE در us-central1 با استفاده از HEY دسترسی پیدا کنید
- بررسی کنید که از PSC برای دسترسی به Vertex API استفاده می شود
- فر کردن را با استفاده از HEY به مدت 5 دقیقه انجام دهید
- تأخیر را با استفاده از Cloud Monitoring تأیید کنید
- تأخیر درون منطقه ای را با استفاده از هوش شبکه تأیید کنید
چیزی که یاد خواهید گرفت
- نحوه ایجاد یک نقطه پایانی اتصال سرویس خصوصی
- نحوه تولید بار برای پیش بینی آنلاین با استفاده از HEY
- نحوه ایجاد معیارهای Vertex AI با استفاده از Cloud Monitoring
- نحوه استفاده از هوش شبکه برای تأیید تأخیر درون و بین منطقه ای
آنچه شما نیاز دارید
- پروژه Google Cloud
مجوزهای IAM
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. یک نوت بوک مدیریت شده توسط کاربر ایجاد کنید
در بخش زیر، یک نوت بوک مدیریت شده توسط کاربر ایجاد کنید که دارای حساب کاربری سرویس قبلی، 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 بروید.
9. مدل و پیش بینی آنلاین را مستقر کنید
در بخش زیر، از نرمافزار کد ارائهشده، Vertex AI: استفاده از روتینهای پیشبینی سفارشی با Sklearn برای پیشپردازش و ارسال دادههای فرآیند برای پیشبینیها با بخش 7 شروع میشود، زیرا قبلاً یک دفترچه در مرحله قبل ایجاد کردهاید. پس از استقرار مدل، برای شروع بخش بعدی به آموزش بازگردید.
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 بروید
Metric prediction/online/prediction_latencies را وارد کنید و گزینه های زیر را انتخاب کنید، Apply را انتخاب کنید.
Update Group by بر اساس گزینه زیر Save Chart را انتخاب کنید.
ذخیره را انتخاب کنید، از شما خواسته می شود تا داشبورد را انتخاب کنید. داشبورد جدید را انتخاب کنید و یک نام ارائه کنید.
داشبورد سفارشی Vertex
در بخش زیر، بررسی کنید داشبورد سفارشی Vertex زمان صحیح را نشان میدهد.
به MONITORING → Dashboard بروید و Vertex Custom Dashboard را انتخاب کنید و سپس زمان را انتخاب کنید. مطمئن شوید که منطقه زمانی شما درست است.
برای به دست آوردن نمای جدول، افسانه را گسترش دهید.
نمونه نمای گسترده:
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 بروید
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 متر را وارد کنید یا زمان شروع و توقف خود را مشخص کنید. مطمئن شوید که منطقه زمانی شما درست است.
نگاهی به تعریف تاخیرهای پیشبینی نشاندهنده یک متریک سمت سرور است که کل زمان پاسخگویی به درخواست مشتری را پس از دریافت پاسخ از مدل اندازهگیری میکند.
- مدت زمان تأخیر کل : کل زمانی که یک درخواست در سرویس صرف می کند، که تأخیر مدل به اضافه تأخیر سربار است.
در مقابل HEY یک معیار سمت مشتری است که پارامترهای زیر را در نظر می گیرد:
درخواست مشتری + تاخیر کل (شامل تاخیر مدل) + پاسخ مشتری
هوش شبکه
بیایید اکنون نگاهی به تأخیر شبکه بین منطقه ای گزارش شده توسط Network Intelligence بیندازیم تا ایده ای از تأخیر us-west1 به us-central1 که توسط Google Cloud Platform گزارش شده است، بدست آوریم.
به Cloud Console Network Intelligence → Performance Dashboard بروید و گزینه های زیر را که در تصویر زیر توضیح داده شده است را انتخاب کنید که تأخیر بین 32 تا 39 میلی ثانیه را نشان می دهد.
خلاصه خط پایه 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 میلی ثانیه را نشان می دهد.
خلاصه خط پایه 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 فکر می کند آموزش ها عالی هستند!!
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 موارد زیر را حذف کرد:
پوشه آرتیفکت رجیستری
از Vertex AI Model Registry، مدل را undeploy کنید:
از Vertex AI Online Prediction، نقطه پایانی را حذف کنید
بعدش چی؟
برخی از این آموزش ها را ببینید...
ادامه مطلب و ویدیوها
- نمای کلی اتصال سرویس خصوصی
- Private Service Connect چیست؟
- چگونه از یک مدل ML پیش بینی کنیم
- Vertex AI چیست؟