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ẽ chỉ cho bạn cách tạo và đánh giá các chỉ số Dự đoán trực tuyến của giải pháp Giám sát trên đám mây khi thực hiện kiểm thử cơ sở trên us-central1 và us-west1 đến một điểm cuối Dự đoán được triển khai trong us-central1 bằng công cụ đo lường 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 đám mây riêng ảo (VPC) có tên là intentl-vpc, bao gồm các mạng con và phiên bản trong us-west1 và us-central1. Các mạng này sẽ được dùng để tạo lưu lượng truy cập bằng cách sử dụng phương thức nhắm mục tiêu HEY cho một Dự đoán trực tuyến và mô hình được triển khai trong us-central1.

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

Giải pháp Giám sát đám mây và Thông tin mạng sẽ được dùng trong hướng dẫn để xác thực lưu lượng truy cập do HEY tạo ra cho công cụ Dự đoán trực tuyến. Mặc dù các bước nêu trong hướng dẫn được triển khai trong đám mây riêng ảo (VPC), nhưng bạn có thể tận dụng các bước đó để triển khai và lấy nền tảng của Vertex APIS từ môi trường thực tế hoặc nhiều đá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 này:

  1. Truy cập Dự đoán trực tuyến trong us-central1 từ các thực thể 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 cuộn tròn bằng HEY trong 5 phút
  4. Xác thực độ trễ bằng giải pháp Giám sát trên đám mây
  5. Xác thực độ trễ liên khu vực bằng Network Intelligence
  6. Truy cập Dự đoán trực tuyến trong us-central1 từ các 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 cuộn tròn bằng HEY trong 5 phút
  9. Xác thực độ trễ bằng giải pháp Giám sát trên đám mây
  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 điểm cuối Kết nối dịch vụ riêng tư
  • Cách tạo tải cho Dự đoán trực tuyến bằng HEY
  • Cách tạo chỉ số Vertex AI bằng giải pháp Giám sát trên đám mây
  • Cách sử dụng Network Intelligence để xác thực nội bộ & độ trễ liên khu vực

Bạn cần có

  • Dự án trong Google Cloud

Quyền quản lý danh tính và quyền truy cập (IAM)

Quản trị viên mạng điện toán

Quản trị viên mạng điện toán

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

Quản trị viên DNS

Người xem quản lý mạng

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.

Bên trong Cloud Shell, hãy thực hiện như sau:

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

3. Thiết lập intentl-vpc

Tạo tenl-vpc

các dịch vụ gcloud bật networkmanagement.googleapis.com

Bên trong Cloud Shell, hãy thực hiện như sau:

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

Inside Cloud Shell, bật API quản lý mạng cho Network Intelligence

gcloud services enable networkmanagement.googleapis.com

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

Bên trong Cloud Shell, hãy tạo mạng con Workbench.

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

Bên 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

Bên trong Cloud Shell, hãy tạo mạng con us-central1.

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 gói phần mềm xuống vì phiên bản GCE không có địa chỉ IP bên ngoài. Cloud NAT cung cấp chức năng NAT đầu ra, nghĩa là các máy chủ Internet không được phép bắt đầu giao tiếp với sổ tay do người dùng quản lý, nhờ đó tăng cường bảo mật cho sổ tay đó.

Bên 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

Bên trong Cloud Shell, hãy tạo cổng vào đá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

Bên 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

Bên trong Cloud Shell, hãy tạo cổng vào đá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 của Kết nối dịch vụ riêng tư (PSC) dùng để truy cập vào Vertex API qua{/4}l-vpc.

Của 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 hoạt động của 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

Của 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 của Private Service Connect đã định cấu hình

Của Cloud Shell

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

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

Của Cloud Shell

gcloud compute forwarding-rules describe \
    pscvertex --global

5. Tạo tài khoản dịch vụ cho các thực thể GCE

Để cung cấp mức độ kiểm soát chi tiết cho Vertex API, bạn cần phải có 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 phiên bản miền Tây và Trung tâm. Sau khi tạo, bạn có thể sửa đổi các quyền đối với tài khoản dịch vụ dựa trên yêu cầu kinh doanh. 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ẽ áp dụng các vai trò sau:

Bạn phải API Tài khoản dịch vụ trước khi tiếp tục.

Bên 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"

Bên trong Cloud Shell, hãy cập nhật tài khoản dịch vụ có vai trò quản trị viên thực thể đ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"

Bên trong Cloud Shell, hãy cập nhật tài khoản dịch vụ với 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ý. Tài khoản này sẽ liên kết với Vertex Workbench (Sổ tay) mà bạn dùng trong phần hướng dẫn.

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

Bên 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ụ với 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"

Bên trong Cloud Shell, hãy cập nhật tài khoản dịch vụ với 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"

Bên trong Cloud Shell, hãy cập nhật tài khoản dịch vụ với 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 thực thể 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ử cơ sở từ us-west1 và us-central1.

Bên 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"

Bên trong Cloud Shell, tạo khách hàng trung tâm.

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 của bạn, hãy tạo một quy tắc tường lửa:

  • Áp dụng cho tất cả các thực thể máy ảo mà bạn muốn truy cập được bằng cách sử dụ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.

Bên trong Cloud Shell, hãy tạo quy tắc tường lửa cho 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 tài khoản dịch vụ đã tạo trước đó, sổ tay do người dùng quản lý.

Bên trong Cloud Shell, hãy tạo thực thể máy khách riêng tư.

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 bạn đã 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 với Sklearn để xử lý trước và đăng dữ liệu xử lý cho thông tin dự đoán bắt đầu từ Mục 7 vì bạn đã tạo một sổ tay ở bước trước. Sau khi mô hình được triển khai, hãy quay lại phần 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

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 → KHUYẾN CÁO TRỰC TUYẾN → ENDPOINT NAME (kim cương-cpr_endpoint). Tuy nhiên, để thử nghiệm, chúng tôi cần xác định thời gian bắt đầu và thời gian kết thúc, do đó, cần có Trang tổng quan tuỳ chỉnh.

Trong phần sau, bạn sẽ tạo các Chỉ số giám sát trên đám mây để lấy dữ liệu đo lường độ 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 cá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 tại us-west1 và us-central.

Trong hướng dẫn này, chúng tôi sẽ sử dụng chỉ số dự đoán_lat Basics, các chỉ số khác có trong aiplatform

Chỉ số

Mô tả

prediction/online/prediction_latencies

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

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

Từ Cloud Console, chuyển đến trang GIÁM SÁT → Trình khám phá chỉ số

536668ab0b29d77.pngS

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

c1edd34208cb5ee2.png

Cập nhật nhãn Nhóm theo dựa vào tuỳ 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 Trang tổng quan. Chọn Trang tổng quan mới & hãy cung cấp tên.

e29a39dc941c8599.png

Trang tổng quan tuỳ chỉnh 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ị thời gian chính xác.

Chuyển đến phần GIÁM SÁT → Trang tổng quan rồi chọn Vertex Custom Dashboard (Trang tổng quan tuỳ chỉnh) rồi chọn thời gian. Đảm bảo Múi giờ của bạn là chính xác.

f43ebed798ce1147.png

Nhớ mở rộng chú giải để có chế độ xem theo bảng.

61ffeef22e067ca9.pngS

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

9027e8785c023129.pngS

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

Tạo vùng DNS riêng trong{/4}l-vpc để giải quyết tất cả googleapis đến địa chỉ IP điểm cuối PSC 100.100.10.10.

Trên 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 sang 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 thử nghiệm

Ok cho phép người dùng cuối tuỳ chỉnh thử nghiệm 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 tuỳ chọn được nêu chi tiết bên dưới với một chuỗi thực thi mẫu:

c == 1 worker

z == Thời lượng

m == POST của phương thức HTTP

D == Nội dung yêu cầu HTTP từ tệp, hồ sơ.json

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

Ví dụ về chuỗi curl với 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ã dự đoán

Nhận Mã nhận dạng thiết bị đầu cuối dự đoán trực tuyến từ Cloud Console. Mã này sẽ được dùng trong các bước tiếp theo.

Chuyển đến phần VERTEX AI → HIỂN THỊ 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 dựa trên Dự đoán trực tuyến nằm trong us-central1.

Từ Cloud Shell, đă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

Trong hệ điều hành, hãy tải HEY xuống rồi 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

Trong 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 tệpinstance.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.

Trên hệ điều hành west-client, hãy tạo một 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 thử trước

Từ hệ điều hành, hãy thực thi một curl để xác thực mô hình và điểm cuối dự đoán đang hoạt động thành công. Lưu ý 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ụ: ghi lại địa chỉ IP PSC dùng để truy cập vào thông tin 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

Trên hệ điều hành, hãy thực thi HEY để bật bài kiểm thử cơ sở 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. Xác thực Hey (us-west1)

Bây giờ, bạn đã thực thi Hey từ một thực thể điện toán trong us-west1, hãy đánh giá kết quả từ những điều sau:

  • Kết quả của HEY
  • Trang tổng quan tuỳ chỉnh của Vertex
  • Thông tin mạng

Kết quả của 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 với 200 mã trạng thái

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 Vertex

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

4102b1d0438c78e3.pngS

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

  • Tổng khoảng thời gian chờ: Tổng thời gian mà một yêu cầu dành ra trong dịch vụ, là độ trễ của mô hình cộng với độ trễ hao tổn.

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

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

Network Intelligence

Bây giờ, hãy cùng tìm hiểu độ trễ của mạng liên khu vực do Network Intelligence báo cáo để nắm được độ trễ us-west1 đến us-central1 do Google Cloud Platform báo cáo.

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

aade5f757115721.png

Thông tin tóm tắt về đường cơ sở của HEY us-west1

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

Công cụ độ trễ

Thời lượng

Dữ liệu thông minh mạng: độ trễ từ us-west1 đến us-central1

~32 đến 39 mili giây

Giám sát trên đám mây: 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 ms

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

68 mili giây (99p)

16. Tải xuống 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 dựa trên Dự đoán trực tuyến nằm trong us-central1.

Từ Cloud Shell, đăng nhập vào ứng dụng trung tâm và tải HEY xuống

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

Trong hệ điều hành, hãy tải HEY xuống rồi 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

Trong 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 tệpinstance.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.

Trên hệ điều hành west-client, hãy tạo một 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 thử trước

Từ hệ điều hành, hãy thực thi một curl để xác thực mô hình và điểm cuối dự đoán đang hoạt động thành công. Lưu ý 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ụ: ghi lại địa chỉ IP PSC dùng để truy cập vào thông tin 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 thi HEY

Trên hệ điều hành, hãy thực thi HEY để bật bài kiểm thử cơ sở 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. Xác thực Hey (us-central1)

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

  • Kết quả của HEY
  • Trang tổng quan tuỳ chỉnh của Vertex
  • Thông tin mạng

Kết quả của 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 trên mỗi giây

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

26965 phản hồi với 200 mã trạng thái

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 Vertex

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

Thời gian trễ dự đoán cho 10 phút cuối cùng mang lại 30,533 ms.

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

  • Tổng khoảng thời gian chờ: Tổng thời gian mà một yêu cầu dành ra trong dịch vụ, là độ trễ của mô hình cộng với độ trễ hao tổn.

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

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

Network Intelligence

Bây giờ, hãy cùng tìm hiểu độ trễ của mạng nội bộ trong khu vực do Network Intelligence báo cáo để nắm được độ trễ us-central1 do Google Cloud Platform báo cáo.

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

eaa84848c3185fde.png

Thông tin tóm tắt cơ sở về us-central1

Việc so sánh tổng độ trễ do các công cụ kiểm thử báo cáo cho thấy độ trễ thấp hơn so với máy khách phía Tây do các điểm cuối điện toán (máy khách trung tâm) và các điểm cuối Vertex (mô hình và thông tin dự đoán trực tuyến) trong cùng một khu vực.

Công cụ độ trễ

Thời lượng

Tình báo mạng: độ trễ trong khu vực us-central1

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

Giám sát trên đám mây: 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 ms

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

35 mili giây (99p)

18. Xin chúc mừng

Xin chúc mừng! Bạn đã triển khai và xác thực thành công HEY để nhận được độ trễ cơ sở của tính năng Dự đoán phía máy khách bằng cách sử dụng kết hợp giải pháp Giám sát trên đám mây và Thông tin mạng. Dựa trên kết quả thử nghiệm, bạn đã xác định một điểm cuối dự đoán tại us-central có thể được phân phát liên khu vực, tuy nhiên chúng tôi vẫn quan sát thấy độ trễ.

Cosmopup cho rằng các video hướng dẫn rất tuyệt vời!!

e6d3675ca7c6911f.jpeg

19. Dọn dẹp

Trên 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

Trong Cloud Console, các dữ liệu sau đây đã bị xoá:

Thư mục Artifact Registry

99c17044e2f80919.pngS

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

f5b315f089ae6283.png

Trên Vertex AI Online Prediction, hãy xoá điểm cuối

9b58688a5037de84.pngS

Tiếp theo là gì?

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

Tài liệu đọc thêm & Video

Tài liệu tham khảo