Базовое тестирование онлайн-прогнозирования Vertex AI с помощью HEY

1. Введение

В этом руководстве показано, как создавать и оценивать метрики онлайн-прогнозирования облачного мониторинга при выполнении базового тестирования в us-central1 и us-west1 на конечной точке прогнозирования, развернутой в us-central1, с помощью веб-инструмента производительности HEY .

Что ты построишь

Вы настроите сеть VPC под названием aiml-vpc, состоящую из подсетей и экземпляров в us-west1 и us-central1, которая будет использоваться для генерации трафика с использованием HEY, ориентированного на онлайн-прогнозирование и модель, развернутую в us-central1.

Private Service Connect и Private DNS также включены в руководство, чтобы продемонстрировать, как локальные и мультиоблачные среды могут использовать преимущества PSC для доступа к googleapis.

Облачный мониторинг и сетевой интеллект будут использоваться в руководстве для проверки трафика, генерируемого из HEY, в онлайн-прогнозирование. Хотя шаги, описанные в руководстве, развертываются в VPC, вы можете использовать эти шаги для развертывания и получения базовой версии Vertex APIS из локальной или мультиоблачной среды. Сетевая архитектура состоит из следующих компонентов:

dd5c102ce1ab0150.png

Ниже приведены подробности варианта использования:

  1. Доступ к онлайн-прогнозу в us-central1 из экземпляров GCE в us-west1 с помощью HEY
  2. Убедитесь, что PSC используется для доступа к API Vertex.
  3. Выполните скручивание с помощью HEY в течение 5 минут.
  4. Проверьте задержку с помощью Cloud Monitoring
  5. Проверка межрегиональной задержки с помощью Network Intelligence
  6. Доступ к онлайн-прогнозированию в us-central1 из экземпляров GCE в us-central1 с помощью HEY
  7. Убедитесь, что PSC используется для доступа к API Vertex.
  8. Выполните скручивание с помощью HEY в течение 5 минут.
  9. Проверьте задержку с помощью Cloud Monitoring
  10. Проверка задержки внутри региона с помощью Network Intelligence

Что вы узнаете

  • Как установить конечную точку Private Service Connect
  • Как сгенерировать нагрузку на онлайн-прогнозирование с помощью HEY
  • Как создать метрики Vertex AI с помощью Cloud Monitoring
  • Как использовать Network Intelligence для проверки внутри- и межрегиональной задержки

Что вам понадобится

  • Облачный проект Google

IAM-разрешения

Администратор вычислительной сети

Администратор вычислительной сети

Редактор каталога услуг

DNS-администратор

Средство просмотра сетевого управления

2. Прежде чем начать

Обновите проект для поддержки руководства.

В этом руководстве переменные $variables используются для упрощения реализации конфигурации gcloud в Cloud Shell.

Внутри Cloud Shell выполните следующие действия:

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

3. Настройка aiml-vpc

Создайте aiml-vpc

Службы gcloud включают networkmanagement.googleapis.com

Внутри Cloud Shell выполните следующие действия:

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

В Cloud Shell включите API управления сетью для Network Intelligence.

gcloud services enable networkmanagement.googleapis.com

Создайте подсеть блокнотов, управляемую пользователем.

Внутри Cloud Shell создайте подсеть рабочей среды.

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

Внутри Cloud Shell создайте подсеть us-west1-subnet.

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-subnet.

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-адреса. Облачный NAT обеспечивает возможности исходящего NAT. Это означает, что интернет-узлам не разрешается инициировать связь с ноутбуком, управляемым пользователем, что делает его более безопасным.

Внутри Cloud Shell создайте региональный облачный маршрутизатор us-west1.

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

В Cloud Shell создайте региональный облачный шлюз 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 создайте региональный облачный шлюз 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), которая будет использоваться для доступа к API Vertex из target-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.

Для обеспечения высокого уровня управления API Vertex требуется учетная запись службы, управляемая пользователем, которая будет применяться к западному и центральному экземплярам. После создания разрешения учетной записи службы можно изменить в зависимости от бизнес-требований. В этом руководстве к учетной записи службы, управляемой пользователем, 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.

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

6. Создайте учетную запись службы, управляемую пользователем (ноутбук).

В следующем разделе вы создадите управляемую пользователем учетную запись службы, которая будет связана с Vertex Workbench (Notebook), используемым в руководстве.

В этом руководстве к учетной записи службы будут применены следующие правила:

В Cloud Shell создайте учетную запись службы.

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

В Cloud Shell обновите учетную запись службы, указав роль администратора хранилища.

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.

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

В Cloud Shell обновите учетную запись службы, указав роль администратора реестра артефактов.

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 создайте западный клиент.

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

Внутри Cloud Shell создайте центральный клиент.

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

Чтобы разрешить IAP подключаться к вашим экземплярам виртуальных машин, создайте правило брандмауэра, которое:

  • Применяется ко всем экземплярам виртуальных машин, доступ к которым вы хотите сделать с помощью IAP.
  • Разрешает входящий трафик из диапазона IP 35.235.240.0/20. Этот диапазон содержит все IP-адреса, которые IAP использует для пересылки TCP.

В Cloud Shell создайте правило брандмауэра IAP.

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

8. Создайте блокнот, управляемый пользователем.

API блокнота

В следующем разделе создайте управляемый пользователем блокнот, включающий ранее созданную учетную запись службы user-managed-notebook-sa.

Внутри Cloud Shell создайте экземпляр частного клиента.

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

Перейдите в Vertex AI → Workbench, чтобы просмотреть развернутый блокнот.

b02fcb9b07dca06a.png

9. Развертывание модели и онлайн-прогнозирование

В следующем разделе используйте предоставленную кодовую лабораторию Vertex AI: используйте пользовательские процедуры прогнозирования со Sklearn для предварительной обработки и последующей обработки данных для прогнозов, начиная с раздела 7, поскольку вы уже создали блокнот на предыдущем шаге. После развертывания модели вернитесь к руководству, чтобы перейти к следующему разделу.

ee68b7ba0cfd2746.png

10. Создайте собственную панель мониторинга для онлайн-прогнозирования.

Онлайн-прогнозирование создает панель мониторинга по умолчанию в разделе VERTEX AI → ОНЛАЙН-ПРЕДИКЦИЯ → ИМЯ КОНЕЧНОЙ ТОЧКИ (diamonds-cpr_endpoint). Однако для нашего тестирования нам необходимо определить время начала и окончания, поэтому требуется специальная панель мониторинга.

В следующем разделе вы создадите метрики облачного мониторинга для получения измерений задержки на основе регионального доступа к конечной точке онлайн-прогнозирования, чтобы проверить различную задержку при доступе к конечной точке в us-central1 из экземпляров GCE, развернутых в us-west1 и us-central.

Для урока мы будем использовать метрики предсказания_латентности, дополнительные метрики доступны в aiplatform.

Метрика

Описание

предсказание/онлайн/prediction_latency

Задержка онлайн-прогноза развернутой модели.

Создайте диаграмму для метрики предсказания_латентности.

Из облачной консоли перейдите в раздел МОНИТОРИНГ → Обозреватель метрик.

536668ab0b29d77.png

Вставьте метрику предсказание/онлайн/prediction_latency и выберите следующие параметры, нажмите Применить.

c1edd34208cb5ee2.png

Обновить группу, используя следующую опцию: выберите «Сохранить диаграмму».

e180a5d8a044b6e1.png

d2ecd6677a3b34e0.png

Выберите «Сохранить», вам будет предложено выбрать панель мониторинга. Выберите «Новая панель мониторинга» и укажите имя.

e29a39dc941c8599.png

Пользовательская панель управления Vertex

В следующем разделе убедитесь, что на пользовательской панели Vertex отображается правильное время.

Перейдите в «МОНИТОРИНГ» → «Панель мониторинга» и выберите «Пользовательская панель Vertex», а затем выберите время. Убедитесь, что ваш часовой пояс правильный.

f43ebed798ce1147.png

Обязательно разверните легенду, чтобы получить представление в виде таблицы.

61ffeef22e067ca9.png

Пример расширенного представления:

9027e8785c023129.png

11. Создайте частный DNS для конечной точки PSC.

Создайте частную зону DNS в aiml-vpc, чтобы разрешить все GoogleAPI IP-адресу конечной точки PSC 100.100.10.10.

В Cloud Shell создайте частную зону DNS.

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 предлагает конечным пользователям возможность настраивать тестирование в зависимости от требований сети и приложения. Для целей руководства мы будем использовать опцию, подробно описанную ниже, с примером строки выполнения:

с == 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 Console, который будет использоваться на последующих шагах.

Перейдите в VERTEX AI → ОНЛАЙН-ПРОГНОЗИРОВАНИЕ.

ce4d4a88a3fa2345.png

14. Загрузите и запустите HEY (us-west1)

В следующем разделе вы войдете в западный клиент, чтобы загрузить и выполнить HEY для онлайн-прогноза, расположенного в us-central1.

Из Cloud Shell войдите в западный клиент и загрузите HEY.

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

Из ОС скачайте HEY и обновите разрешения.

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

В ОС создайте следующие переменные:

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

Пример:

ENDPOINT_ID="2706243362607857664"

В следующем разделе вы создадите файл instances.json с помощью редактора vi или nano и вставите строку данных, используемую для получения прогноза на основе развернутой модели.

В ОС западного клиента создайте файл instances.json со следующей строкой данных:

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

Пример:

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

user@west-client:$

Предварительное тестирование

В ОС выполните закручивание, чтобы убедиться, что модель и конечная точка прогнозирования работают успешно. Обратите внимание на 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, включив 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. Привет, проверка (us-west1)

Теперь, когда вы выполнили Hey из вычислительного экземпляра в us-west1, оцените следующие результаты:

  • ЭЙ результаты
  • Пользовательская панель управления Vertex
  • Сетевой интеллект

ЭЙ результаты

Из ОС давайте проверим результаты HEY на основе 10-минутного выполнения:

17,5826 запросов в секунду

99% за 0,0686 секунды | 68 мс

10 550 ответов с 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

Перейдите в МОНИТОРИНГ → Панель инструментов и выберите Пользовательскую панель Vertex. Введите 10 м или укажите время начала и остановки. Убедитесь, что ваш часовой пояс правильный.

4102b1d0438c78e3.png

Взглянув на определение задержек прогнозирования, вы увидите метрику на стороне сервера, которая измеряет общее время ответа на запрос клиента после получения ответа от модели.

  • Общая продолжительность задержки : общее время, которое запрос проводит в службе, которое представляет собой задержку модели плюс задержку накладных расходов.

Напротив, HEY — это метрика на стороне клиента, которая учитывает следующие параметры:

Запрос клиента + общая задержка (включая задержку модели) + ответ клиента

Сетевой интеллект

Давайте теперь посмотрим на задержку в межрегиональной сети, о которой сообщает Network Intelligence, чтобы получить представление о задержке от us-west1 до us-central1, о которой сообщает Google Cloud Platform.

Перейдите в Cloud Console Network Intelligence → Панель мониторинга производительности и выберите следующие параметры, подробно описанные на снимке экрана ниже, с указанием задержки от 32 до 39 мс.

aade5f757115721.png

Базовый обзор HEY us-west1

Сравнение отчетов об общей задержке с помощью инструментов тестирования дает примерно ту же задержку, о которой сообщает HEY. Межрегиональная задержка составляет основную часть задержки. Посмотрим, как поведет себя центральный клиент в следующей серии тестов.

Инструмент задержки

Продолжительность

Сетевой интеллект: задержка от us-west1 до us-central1

~32–39 мс

Облачный мониторинг: общая задержка прогнозирования [99%]

34,58 мс (99p)

Общая задержка, указанная Google

~ 66,58–73,58 мс

Распределение задержки на стороне клиента HEY

68 мс (99p)

16. Загрузите и запустите HEY (us-central1)

В следующем разделе вы войдете в центральный клиент, чтобы загрузить и выполнить HEY для онлайн-прогноза, расположенного в us-central1.

Из Cloud Shell войдите в центральный клиент и скачайте HEY.

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

Из ОС скачайте HEY и обновите разрешения.

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

В ОС создайте следующие переменные:

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

Пример:

ENDPOINT_ID="2706243362607857664"

В следующем разделе вы создадите файл instances.json с помощью редактора vi или nano и вставите строку данных, используемую для получения прогноза на основе развернутой модели.

В ОС западного клиента создайте файл instances.json со следующей строкой данных:

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

Пример:

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

user@west-client:$

Предварительное тестирование

В ОС выполните закручивание, чтобы убедиться, что модель и конечная точка прогнозирования работают успешно. Обратите внимание на 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, включив 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. Привет, проверка (us-central1)

Теперь, когда вы выполнили Hey из вычислительного экземпляра в us-central1, оцените следующие результаты:

  • ЭЙ результаты
  • Пользовательская панель управления Vertex
  • Сетевой интеллект

ЭЙ результаты

Из ОС давайте проверим результаты 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

Перейдите в МОНИТОРИНГ → Панель инструментов и выберите Vertex Custom Dashboard, введите 10 м. Или время начала и окончания. Убедитесь, что ваш часовой пояс правильный.

Прогнозируемая задержка для последних 10 м дает 30,533 мс.

Взглянув на определение задержек прогнозирования, вы увидите метрику на стороне сервера, которая измеряет общее время ответа на запрос клиента после получения ответа от модели.

  • Общая продолжительность задержки : общее время, которое запрос проводит в службе, которое представляет собой задержку модели плюс задержку накладных расходов.

Напротив, HEY — это метрики на стороне клиента, которые учитывают следующие параметры:

Запрос клиента + общая задержка (включая задержку модели) + ответ клиента

Сетевой интеллект

Давайте теперь посмотрим на задержку в сети внутри региона, о которой сообщает Network Intelligence, чтобы получить представление о задержке us-central1, о которой сообщает Google Cloud Platform.

Перейдите в Cloud Console Network Intelligence → Панель мониторинга производительности и выберите следующие параметры, подробно описанные на снимке экрана ниже, с указанием задержки от 0,2 до 0,8 мс.

eaa84848c3185fde.png

HEY us-central1 базовый обзор

Сравнение общей задержки, сообщаемой инструментами тестирования, дает меньшую задержку, чем у западного клиента, поскольку вычисления (центральный клиент) и конечные точки Vertex (модель и онлайн-прогнозирование) находятся в одном и том же регионе.

Инструмент задержки

Продолжительность

Сетевой интеллект: задержка внутри региона us-central1

~ от 0,2 до 0,8 мс

Облачный мониторинг: общая задержка прогнозирования [99%]

30,533 мс (99p)

Общая задержка, указанная Google

От ~30,733 до 31,333 мс

ЭЙ, задержка на стороне клиента

35 мс (99p)

18. Поздравления

Поздравляем, вы успешно развернули и проверили HEY, чтобы получить базовую задержку прогнозирования на стороне клиента с помощью комбинации облачного мониторинга и сетевого интеллекта. На основе тестирования вы должны были определить конечную точку прогнозирования в us-central, которая может обслуживаться между регионами, однако наблюдалась задержка.

Cosmopup считает, что уроки потрясающие!!

e6d3675ca7c6911f.jpeg

19. Уборка

Из Cloud Shell удалите компоненты учебника.

gcloud compute instances delete central-client --zone=us-central1-a -q

gcloud compute instances delete west-client --zone=us-west1-a -q

gcloud compute instances delete workbench-tutorial --zone=us-central1-a -q

gcloud compute forwarding-rules delete pscvertex --global --quiet 

gcloud compute addresses delete psc-ip --global --quiet

gcloud compute networks subnets delete workbench-subnet --region=us-central1 --quiet 

gcloud compute networks subnets delete us-west1-subnet --region=us-west1 --quiet

gcloud compute networks subnets delete us-central1-subnet --region=us-central1 --quiet

gcloud compute routers delete cloud-router-us-west1-aiml-nat --region=us-west1 --quiet

gcloud compute routers delete cloud-router-us-central1-aiml-nat --region=us-central1 --quiet

gcloud compute firewall-rules delete  ssh-iap-vpc --quiet

gcloud dns record-sets delete *.googleapis.com. --zone=psc-googleapis --type=A --quiet

gcloud dns managed-zones delete psc-googleapis --quiet

gcloud compute networks delete aiml-vpc --quiet

gcloud storage rm -r gs://$projectid-cpr-bucket

Из Cloud Console удалено следующее:

Папка реестра артефактов

99c17044e2f80919.png

Из реестра моделей Vertex AI отмените развертывание модели:

f5b315f089ae6283.png

В Vertex AI Online Prediction удалите конечную точку.

9b58688a5037de84.png

Что дальше?

Посмотрите некоторые из этих уроков...

Дальнейшее чтение и видео

Справочная документация