Kiểm thử cơ sở dự đoán trực tuyến cho Vertex AI bằng HEY

1. Giới thiệu

Hướng dẫn này sẽ hướng dẫn bạn cách tạo và đánh giá các chỉ số Dự đoán trực tuyến của Cloud Monitoring khi thực hiện kiểm thử đường cơ sở trên us-central1 và us-west1 cho một điểm cuối Dự đoán được triển khai trong us-central1 bằng công cụ hiệu suất web HEY.

Sản phẩm bạn sẽ tạo ra

Bạn sẽ thiết lập một mạng VPC có tên là aiml-vpc, bao gồm các mạng con và phiên bản trong us-west1 và us-central1. Mạng này sẽ được dùng để tạo lưu lượng truy cập bằng cách sử dụng HEY nhắm đến một Mô hình dự đoán trực tuyến được triển khai trong us-central1.

Private Service Connect và DNS riêng tư cũng được tích hợp trong hướng dẫn để minh hoạ cách môi trường tại chỗ và nhiều đám mây có thể tận dụng PSC để truy cập vào googleapis.

Cloud Monitoring và Network Intelligence sẽ được dùng trong hướng dẫn để xác thực lưu lượng truy cập được tạo từ HEY đến Online Prediction. Mặc dù các bước được nêu trong hướng dẫn này được triển khai trong một VPC, nhưng bạn có thể tận dụng các bước này để triển khai và lấy đường cơ sở của Vertex API từ môi trường tại chỗ hoặc môi trường đa đám mây. Cấu trúc mạng bao gồm các thành phần dưới đây:

dd5c102ce1ab0150.png

Dưới đây là thông tin chi tiết về trường hợp sử dụng:

  1. Truy cập vào tính năng Dự đoán trực tuyến trong us-central1 từ các phiên bản GCE trong us-west1 bằng HEY
  2. Xác minh rằng PSC đang được dùng để truy cập vào Vertex API
  3. Thực hiện curl bằng HEY trong 5 phút
  4. Xác thực độ trễ bằng Cloud Monitoring
  5. Xác thực độ trễ giữa các khu vực bằng Network Intelligence
  6. Truy cập vào tính năng Dự đoán trực tuyến trong us-central1 từ một phiên bản GCE trong us-central1 bằng HEY
  7. Xác minh rằng PSC đang được dùng để truy cập vào Vertex API
  8. Thực hiện curl bằng HEY trong 5 phút
  9. Xác thực độ trễ bằng Cloud Monitoring
  10. Xác thực độ trễ trong khu vực bằng Network Intelligence

Kiến thức bạn sẽ học được

  • Cách thiết lập một điểm cuối Private Service Connect
  • Cách tạo tải cho tính năng Dự đoán trực tuyến bằng HEY
  • Cách tạo chỉ số Vertex AI bằng Cloud Monitoring
  • Cách sử dụng Network Intelligence để xác thực độ trễ trong và giữa các khu vực

Bạn cần có

  • Dự án trên Google Cloud

Quyền IAM

Quản trị viên mạng máy tính

Quản trị viên mạng máy tính

Trình chỉnh sửa danh mục dịch vụ

Quản trị viên DNS

Network Management Viewer

2. Trước khi bắt đầu

Cập nhật dự án để hỗ trợ hướng dẫn

Hướng dẫn này sử dụng $variables để hỗ trợ việc triển khai cấu hình gcloud trong Cloud Shell.

Trong Cloud Shell, hãy thực hiện các bước sau:

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

3. Thiết lập aiml-vpc

Tạo aiml-vpc

gcloud services enable networkmanagement.googleapis.com

Trong Cloud Shell, hãy thực hiện các bước sau:

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

Trong Cloud Shell, hãy bật API quản lý mạng cho Network Intelligence

gcloud services enable networkmanagement.googleapis.com

Tạo mạng con sổ tay do người dùng quản lý

Trong Cloud Shell, hãy tạo 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

Trong Cloud Shell, hãy tạo us-west1-subnet.

gcloud compute networks subnets create us-west1-subnet --project=$projectid --range=192.168.10.0/28 --network=aiml-vpc --region=us-west1

Trong Cloud Shell, hãy tạo us-central1-subnet.

gcloud compute networks subnets create us-central1-subnet --project=$projectid --range=192.168.20.0/28 --network=aiml-vpc --region=us-central1

Cấu hình Cloud Router và NAT

Cloud NAT được dùng trong hướng dẫn để tải các gói phần mềm xuống vì phiên bản GCE không có địa chỉ IP ngoài. Cloud NAT cung cấp các chức năng NAT xuất cảnh, tức là các máy chủ lưu trữ trên Internet không được phép bắt đầu giao tiếp với một sổ tay do người dùng quản lý, giúp tăng cường tính bảo mật.

Trong Cloud Shell, hãy tạo bộ định tuyến đám mây theo khu vực, us-west1.

gcloud compute routers create cloud-router-us-west1-aiml-nat --network aiml-vpc --region us-west1

Trong Cloud Shell, hãy tạo cổng NAT đám mây theo khu vực, 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

Trong Cloud Shell, hãy tạo bộ định tuyến đám mây theo khu vực, us-central1.

gcloud compute routers create cloud-router-us-central1-aiml-nat --network aiml-vpc --region us-central1

Trong Cloud Shell, hãy tạo cổng NAT đám mây theo khu vực, 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. Tạo điểm cuối Private Service Connect

Trong phần sau, bạn sẽ tạo một điểm cuối Private Service Connect (PSC) để truy cập vào Vertex API từ aiml-vpc.

Từ Cloud Shell

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

Lưu trữ "pscendpointip" trong thời gian diễn ra phòng thí nghiệm

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

echo $pscendpointip

Tạo điểm cuối PSC

Từ Cloud Shell

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

Liệt kê các điểm cuối Private Service Connect đã định cấu hình

Từ Cloud Shell

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

Mô tả các điểm cuối Private Service Connect đã định cấu hình

Từ Cloud Shell

gcloud compute forwarding-rules describe \
    pscvertex --global

5. Tạo tài khoản dịch vụ cho các phiên bản GCE

Để cung cấp mức độ kiểm soát chi tiết cho Vertex API, bạn cần có một tài khoản dịch vụ do người dùng quản lý. Tài khoản này sẽ được áp dụng cho các thực thể ở miền tây và miền trung. Sau khi được tạo, bạn có thể sửa đổi các quyền của tài khoản dịch vụ dựa trên yêu cầu của doanh nghiệp. Trong hướng dẫn này, tài khoản dịch vụ do người dùng quản lý (vertex-sa) sẽ được áp dụng các vai trò sau:

Bạn phải Service Account API trước khi tiếp tục.

Trong Cloud Shell, hãy tạo tài khoản dịch vụ.

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

Trong Cloud Shell, hãy cập nhật tài khoản dịch vụ bằng vai trò quản trị viên phiên bản điện toán

gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:vertex-gce-sa@$projectid.iam.gserviceaccount.com" --role="roles/compute.instanceAdmin.v1"

Trong Cloud Shell, hãy cập nhật tài khoản dịch vụ bằng vai trò Người dùng Vertex AI

gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:vertex-gce-sa@$projectid.iam.gserviceaccount.com" --role="roles/aiplatform.user"

6. Tạo tài khoản dịch vụ do người dùng quản lý (Sổ tay)

Trong phần sau, bạn sẽ tạo một tài khoản dịch vụ do người dùng quản lý và được liên kết với Vertex Workbench (Notebook) dùng trong hướng dẫn.

Trong hướng dẫn này, tài khoản dịch vụ sẽ áp dụng các quy tắc sau:

Trong Cloud Shell, hãy tạo tài khoản dịch vụ.

gcloud iam service-accounts create user-managed-notebook-sa \
    --display-name="user-managed-notebook-sa"

Trong Cloud Shell, hãy cập nhật tài khoản dịch vụ bằng vai trò Quản trị viên bộ nhớ.

gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/storage.admin"

Trong Cloud Shell, hãy cập nhật tài khoản dịch vụ bằng vai trò Người dùng Vertex AI.

gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/aiplatform.user"

Trong Cloud Shell, hãy cập nhật tài khoản dịch vụ bằng vai trò Quản trị viên Artifact Registry.

gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/artifactregistry.admin"

Trong Cloud Shell, hãy liệt kê tài khoản dịch vụ và ghi lại địa chỉ email sẽ được dùng khi tạo sổ tay do người dùng quản lý.

gcloud iam service-accounts list

7. Tạo các phiên bản kiểm thử

Trong phần sau, bạn sẽ tạo các thực thể kiểm thử để thực hiện kiểm thử đường cơ sở từ us-west1 và us-central1.

Trong Cloud Shell, hãy tạo 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"

Tạo central-client trong 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"

Để cho phép IAP kết nối với các phiên bản máy ảo, hãy tạo một quy tắc tường lửa có:

  • Áp dụng cho tất cả các phiên bản máy ảo mà bạn muốn có thể truy cập bằng IAP.
  • Cho phép lưu lượng truy cập vào từ dải IP 35.235.240.0/20. Dải này chứa tất cả địa chỉ IP mà IAP sử dụng để chuyển tiếp TCP.

Trong Cloud Shell, hãy tạo quy tắc tường lửa IAP.

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

8. Tạo sổ tay do người dùng quản lý

API sổ tay

Trong phần sau, hãy tạo một sổ tay do người dùng quản lý kết hợp với tài khoản dịch vụ đã tạo trước đó, user-managed-notebook-sa.

Tạo thực thể ứng dụng khách riêng tư trong 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

Chuyển đến Vertex AI → Workbench để xem sổ tay đã triển khai.

b02fcb9b07dca06a.png

9. Triển khai Mô hình và Dự đoán trực tuyến

Trong phần sau, hãy sử dụng lớp học lập trìnhđược cung cấp,Vertex AI:Sử dụng các quy trình dự đoán tuỳ chỉnh bằng Sklearn để tiền xử lý và hậu xử lý dữ liệu cho các dự đoán bắt đầu từ Phần 7 vì bạn đã tạo một sổ tay ở bước trước. Sau khi triển khai mô hình, hãy quay lại hướng dẫn để bắt đầu phần tiếp theo.

ee68b7ba0cfd2746.png

10. Tạo trang tổng quan giám sát tuỳ chỉnh cho Dự đoán trực tuyến

Tính năng Dự đoán trực tuyến sẽ tạo một Trang tổng quan giám sát mặc định trong VERTEX AI → DỰ ĐOÁN TRỰC TUYẾN → TÊN ĐIỂM CUỐI (diamonds-cpr_endpoint). Tuy nhiên, để kiểm thử, chúng ta cần xác định thời gian bắt đầu và thời gian dừng, do đó, cần có một Trang tổng quan tuỳ chỉnh.

Trong phần sau, bạn sẽ tạo Chỉ số Cloud Monitoring để thu thập các phép đo độ trễ dựa trên quyền truy cập theo khu vực vào Điểm cuối dự đoán trực tuyến nhằm xác thực độ trễ khác nhau khi truy cập vào một điểm cuối trong us-central1 từ các thực thể GCE được triển khai trong us-west1 và us-central.

Trong hướng dẫn này, chúng ta sẽ sử dụng chỉ số prediction_latencies. Bạn có thể xem các chỉ số khác trong aiplatform

Chỉ số

Mô tả

prediction/online/prediction_latencies

Độ trễ dự đoán trực tuyến của mô hình được triển khai.

Tạo biểu đồ cho Chỉ số prediction_latencies

Trên Cloud Console, hãy chuyển đến mục GIÁM SÁT → Trình khám phá chỉ số

536668ab0b29d77.png

Chèn Chỉ số prediction/online/prediction_latencies và chọn các lựa chọn sau, sau đó chọn Áp dụng.

c1edd34208cb5ee2.png

Cập nhật bộ lọc nhóm theo dựa trên lựa chọn sau đây, chọn Lưu biểu đồ.

e180a5d8a044b6e1.png

d2ecd6677a3b34e0.png

Chọn Lưu, bạn sẽ được nhắc chọn một Trang tổng quan. Chọn Trang tổng quan mới rồi đặt tên.

e29a39dc941c8599.png

Trang tổng quan tuỳ chỉnh của Vertex

Trong phần sau, hãy xác thực rằng Trang tổng quan tuỳ chỉnh của Vertex đang hiển thị đúng thời gian.

Chuyển đến mục GIÁM SÁT → Trang tổng quan rồi chọn Trang tổng quan tuỳ chỉnh của Vertex, sau đó chọn thời gian. Đảm bảo bạn chọn đúng múi giờ.

f43ebed798ce1147.png

Hãy nhớ mở rộng chú thích để xem chế độ xem bảng.

61ffeef22e067ca9.png

Ví dụ về chế độ xem mở rộng:

9027e8785c023129.png

11. Tạo DNS riêng tư cho điểm cuối PSC

Tạo một Vùng DNS riêng tư trong aiml-vpc để phân giải tất cả googleapis thành Địa chỉ IP điểm cuối PSC 100.100.10.10.

Trong Cloud Shell, hãy tạo một vùng DNS riêng tư.

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"

Trong Cloud Shell, hãy tạo bản ghi A liên kết *. googleapis.com với IP PSC.

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

12. Biến kiểm thử Hey

Hey cho phép người dùng cuối tuỳ chỉnh hoạt động kiểm thử dựa trên các yêu cầu về mạng và ứng dụng. Trong hướng dẫn này, chúng ta sẽ sử dụng lựa chọn được trình bày chi tiết bên dưới cùng với một chuỗi thực thi mẫu:

c == 1 worker

z == Thời lượng

m == HTTP method POST

D == Nội dung yêu cầu HTTP từ tệp, instances.json

n == Số yêu cầu cần chạy. Giá trị mặc định là 200.

Ví dụ về chuỗi curl có HEY (không bắt buộc phải thực thi)

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. Lấy mã nhận dạng dự đoán

Lấy Mã nhận dạng điểm cuối dự đoán trực tuyến từ Cloud Console để dùng trong các bước tiếp theo.

Chuyển đến VERTEX AI → ONLINE PREDICTION (Vertex AI → Dự đoán trực tuyến)

ce4d4a88a3fa2345.png

14. Tải xuống và thực thi HEY (us-west1)

Trong phần sau, bạn sẽ đăng nhập vào west-client để tải xuống và thực thi HEY đối với tính năng Dự đoán trực tuyến nằm ở us-central1.

Từ Cloud Shell, hãy đăng nhập vào west-client và tải HEY xuống

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

Tải HEY xuống từ hệ điều hành và cập nhật các quyền.

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

Từ hệ điều hành, hãy tạo các biến sau:

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

Ví dụ:

ENDPOINT_ID="2706243362607857664"

Trong phần sau, bạn sẽ tạo một tệp instances.json bằng trình chỉnh sửa vi hoặc nano và chèn chuỗi dữ liệu dùng để lấy thông tin dự đoán từ mô hình đã triển khai.

Từ hệ điều hành west-client, hãy tạo một tệp instances.json bằng chuỗi dữ liệu bên dưới:

{"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]]}

Ví dụ:

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:$

Kiểm tra trước

Từ hệ điều hành, hãy thực thi một lệnh curl để xác thực rằng mô hình và điểm cuối dự đoán đang hoạt động thành công. Ghi lại IP điểm cuối PSC trong nhật ký chi tiết và HTTP/2 200 cho biết thành công.

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

Ví dụ: lưu ý địa chỉ IP PSC được dùng để truy cập vào kết quả dự đoán và kết quả thành công.

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

Thực thi HEY

Từ hệ điều hành, hãy thực thi HEY để bật kiểm thử cơ sở trong 10 phút.

./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)

Giờ đây, khi bạn đã thực thi lệnh Hey từ một phiên bản điện toán trong us-west1, hãy đánh giá kết quả từ những nội dung sau:

  • Kết quả HEY
  • Trang tổng quan tuỳ chỉnh của Vertex
  • Network Intelligence

Kết quả HEY

Từ hệ điều hành, hãy xác thực kết quả HEY dựa trên thời gian thực thi 10 phút,

17.5826 yêu cầu mỗi giây

99% trong 0,0686 giây | 68 mili giây

10.550 phản hồi có mã trạng thái 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

Trang tổng quan tuỳ chỉnh của Vertex

Chuyển đến phần GIÁM SÁT → Trang tổng quan rồi chọn Trang tổng quan tuỳ chỉnh của Vertex. Nhập 10m hoặc chỉ định thời gian bắt đầu và kết thúc. Đảm bảo bạn chọn đúng múi giờ.

4102b1d0438c78e3.png

Xem xét định nghĩa về Độ trễ dự đoán cho thấy một chỉ số Phía máy chủ đo tổng thời gian phản hồi yêu cầu của máy khách sau khi nhận được phản hồi từ mô hình.

  • Tổng thời lượng độ trễ: Tổng thời gian mà một yêu cầu dành cho dịch vụ, là độ trễ của mô hình cộng với độ trễ của hệ thống.

Ngược lại, HEY là một chỉ số phía máy khách có tính đến các tham số sau:

Yêu cầu của ứng dụng + Tổng độ trễ (bao gồm cả độ trễ của mô hình) + Phản hồi của ứng dụng

Thông tin mạng

Bây giờ, hãy xem độ trễ mạng giữa các khu vực do Network Intelligence báo cáo để biết độ trễ từ us-west1 đến us-central1 do Google Cloud Platform báo cáo.

Chuyển đến Cloud Console Network Intelligence → Performance Dashboard (Thông tin chi tiết về mạng trên Cloud Console → Trang tổng quan về hiệu suất) rồi chọn các lựa chọn sau đây (như trong ảnh chụp màn hình bên dưới) cho biết độ trễ từ 32 đến 39 mili giây.

aade5f757115721.png

HEY us-west1 baseline summary

Khi so sánh báo cáo Tổng độ trễ theo các công cụ kiểm thử, bạn sẽ thấy độ trễ mà HEY báo cáo là gần như giống nhau. Độ trễ giữa các khu vực chiếm phần lớn độ trễ. Hãy xem hiệu suất của ứng dụng trung tâm trong loạt thử nghiệm tiếp theo.

Công cụ đo độ trễ

Thời lượng

Thông tin tình báo về mạng: độ trễ từ us-west1 đến us-central1

~32 đến 39 mili giây

Cloud Monitoring: Tổng độ trễ dự đoán [99%]

34,58 mili giây (99p)

Tổng độ trễ do Google báo cáo

~ 66,58 đến 73,58 mili giây

Phân phối độ trễ phía máy khách HEY

68 mili giây (99p)

16. Tải và thực thi HEY (us-central1)

Trong phần sau, bạn sẽ đăng nhập vào central-client để tải xuống và thực thi HEY đối với Dự đoán trực tuyến nằm ở us-central1.

Từ Cloud Shell, hãy đăng nhập vào central-client và tải HEY xuống

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

Tải HEY xuống từ hệ điều hành và cập nhật các quyền.

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

Từ hệ điều hành, hãy tạo các biến sau:

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

Ví dụ:

ENDPOINT_ID="2706243362607857664"

Trong phần sau, bạn sẽ tạo một tệp instances.json bằng trình chỉnh sửa vi hoặc nano và chèn chuỗi dữ liệu dùng để lấy thông tin dự đoán từ mô hình đã triển khai.

Từ hệ điều hành west-client, hãy tạo một tệp instances.json bằng chuỗi dữ liệu bên dưới:

{"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]]}

Ví dụ:

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:$

Kiểm tra trước

Từ hệ điều hành, hãy thực thi một lệnh curl để xác thực rằng mô hình và điểm cuối dự đoán đang hoạt động thành công. Ghi lại IP điểm cuối PSC trong nhật ký chi tiết và HTTP/2 200 cho biết thành công.

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

Ví dụ: lưu ý địa chỉ IP PSC được dùng để truy cập vào kết quả dự đoán và kết quả thành công.

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

Thực hiện lệnh HEY

Từ hệ điều hành, hãy thực thi HEY để bật kiểm thử cơ sở trong 10 phút.

./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)

Giờ đây, khi bạn đã thực thi lệnh Hey từ một phiên bản điện toán trong us-central1, hãy đánh giá kết quả từ những nội dung sau:

  • Kết quả HEY
  • Trang tổng quan tuỳ chỉnh của Vertex
  • Network Intelligence

Kết quả HEY

Từ hệ điều hành, hãy xác thực kết quả HEY dựa trên thời gian thực thi 10 phút,

44,9408 yêu cầu mỗi giây

99% trong 0,0353 giây | 35 mili giây

26965 phản hồi có mã trạng thái 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

Trang tổng quan tuỳ chỉnh của Vertex

Chuyển đến MONITORING (GIÁM SÁT) → Dashboard (Trang tổng quan) rồi chọn Vertex Custom Dashboard (Trang tổng quan tuỳ chỉnh của Vertex), nhập 10m. Hoặc thời gian bắt đầu và kết thúc. Đảm bảo bạn chọn đúng múi giờ.

Độ trễ dự đoán trong 10 phút qua là 30,533 mili giây.

Xem xét định nghĩa về Độ trễ dự đoán cho thấy một chỉ số Phía máy chủ đo tổng thời gian phản hồi yêu cầu của máy khách sau khi nhận được phản hồi từ mô hình.

  • Tổng thời lượng độ trễ: Tổng thời gian mà một yêu cầu dành cho dịch vụ, là độ trễ của mô hình cộng với độ trễ của hệ thống.

Ngược lại, HEY là một chỉ số phía máy khách có tính đến các tham số sau:

Yêu cầu của ứng dụng + Tổng độ trễ (bao gồm cả độ trễ của mô hình) + Phản hồi của ứng dụng

Thông tin mạng

Bây giờ, hãy xem độ trễ mạng trong khu vực do Network Intelligence báo cáo để biết độ trễ us-central1 do Google Cloud Platform báo cáo.

Chuyển đến Cloud Console Network Intelligence → Performance Dashboard (Thông tin chi tiết về mạng trên Cloud Console → Trang tổng quan về hiệu suất) rồi chọn các lựa chọn sau đây (như trong ảnh chụp màn hình bên dưới) cho biết độ trễ từ 0,2 đến 0,8 mili giây.

eaa84848c3185fde.png

HEY us-central1 baseline summary

Việc so sánh tổng độ trễ do các công cụ kiểm thử báo cáo sẽ cho thấy độ trễ thấp hơn so với west-client do các điểm cuối tính toán (central-client) và Vertex (mô hình và dự đoán trực tuyến) nằm trong cùng một khu vực.

Công cụ đo độ trễ

Thời lượng

Thông tin tình báo về mạng: độ trễ trong khu vực us-central1

~0,2 đến 0,8 mili giây

Cloud Monitoring: Tổng độ trễ dự đoán [99%]

30.533 mili giây (99p)

Tổng độ trễ do Google báo cáo

~30.733 đến 31.333 mili giây

Độ trễ phía máy khách HEY

35 mili giây (phân vị thứ 99)

18. Xin chúc mừng

Chúc mừng bạn đã triển khai và xác thực thành công HEY để có được độ trễ đường cơ sở Dự đoán phía máy khách bằng cách kết hợp Giám sát trên đám mây và Thông tin chi tiết về mạng. Dựa trên quy trình kiểm thử, bạn phải xác định một điểm cuối dự đoán ở khu vực trung tâm Hoa Kỳ có thể được phân phát giữa các khu vực, tuy nhiên, độ trễ đã được ghi nhận.

Cosmopup cho rằng các hướng dẫn rất hữu ích!!

e6d3675ca7c6911f.jpeg

19. Dọn dẹp

Trong Cloud Shell, hãy xoá các thành phần hướng dẫn.

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

Đã xoá những nội dung sau đây khỏi Cloud Console:

Thư mục Artifact Registry

99c17044e2f80919.png

Trong Vertex AI Model Registry, hãy huỷ triển khai mô hình:

f5b315f089ae6283.png

Xoá điểm cuối khỏi Vertex AI Online Prediction

9b58688a5037de84.png

Tiếp theo là gì?

Hãy xem một số hướng dẫn này...

Tài liệu đọc thêm và video

Tài liệu tham khảo