1. Введение
В этом руководстве показано, как создавать и оценивать метрики онлайн-прогнозирования Cloud Monitoring при проведении базового тестирования на серверах us-central1 и us-west1 для конечной точки прогнозирования, развернутой на сервере us-central1, с использованием инструмента HEY web performance tool.
Что вы построите
Вам предстоит настроить сеть VPC под названием aiml-vpc, состоящую из подсетей и экземпляров в us-west1 и us-central1, которая будет использоваться для генерации трафика с помощью HEY, нацеленного на модель онлайн-прогнозирования, развернутую в us-central1.
В руководство также включены Private Service Connect и Private DNS, чтобы продемонстрировать, как локальные и мультиоблачные среды могут использовать PSC для доступа к API Google.
В данном руководстве для проверки трафика, генерируемого HEY и поступающего в систему онлайн-прогнозирования, будут использоваться облачный мониторинг и сетевой интеллект. Хотя описанные в руководстве шаги выполняются в VPC, вы можете использовать их для развертывания и получения базового уровня API Vertex из локальной или мультиоблачной среды. Сетевая архитектура состоит из следующих компонентов:

Ниже приведены подробности сценария использования:
- Получите доступ к онлайн-прогнозированию в регионе us-central1 из экземпляров GCE в регионе us-west1, используя HEY.
- Убедитесь, что для доступа к API Vertex используется PSC.
- Выполняйте упражнения на бицепс с использованием HEY в течение 5 минут.
- Проверьте задержку с помощью облачного мониторинга.
- Проверка межрегиональной задержки с помощью сетевого анализа
- Доступ к онлайн-прогнозированию в us-central1 осуществляется с помощью экземпляров GCE в us-central1, используя HEY.
- Убедитесь, что для доступа к API Vertex используется PSC.
- Выполняйте упражнения на бицепс с использованием HEY в течение 5 минут.
- Проверьте задержку с помощью облачного мониторинга.
- Проверьте внутрирегиональную задержку с помощью сетевого анализа.
Что вы узнаете
- Как настроить конечную точку Private Service Connect
- Как создать нагрузку для онлайн-прогнозирования с помощью HEY
- Как создавать метрики Vertex AI с помощью облачного мониторинга
- Как использовать сетевой интеллект для проверки внутри- и межрегиональной задержки
Что вам понадобится
- Проект Google Cloud
Разрешения IAM
Администратор вычислительной сети
2. Прежде чем начать
Обновите проект, чтобы он соответствовал учебному пособию.
В этом руководстве переменные `$variables` используются для упрощения настройки gcloud в Cloud Shell.
Внутри Cloud Shell выполните следующие действия:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
3. Настройка aiml-vpc
Создайте aiml-vpc
gcloud services enable 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 создайте подсеть workbench-subnet.
gcloud compute networks subnets create workbench-subnet --project=$projectid --range=172.16.10.0/28 --network=aiml-vpc --region=us-central1 --enable-private-ip-google-access
Внутри Cloud Shell создайте подсеть us-west1-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-адреса. Cloud NAT обеспечивает возможности исходящего NAT, что означает, что интернет-хостам не разрешается инициировать связь с управляемым пользователем ноутбуком, что повышает безопасность.
Внутри Cloud Shell создайте региональный облачный маршрутизатор us-west1.
gcloud compute routers create cloud-router-us-west1-aiml-nat --network aiml-vpc --region us-west1
Внутри Cloud Shell создайте региональный шлюз NAT облака, us-west1.
gcloud compute routers nats create cloud-nat-us-west1 --router=cloud-router-us-west1-aiml-nat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-west1
Внутри Cloud Shell создайте региональный облачный маршрутизатор us-central1.
gcloud compute routers create cloud-router-us-central1-aiml-nat --network aiml-vpc --region us-central1
Внутри Cloud Shell создайте региональный шлюз NAT облака, us-central1.
gcloud compute routers nats create cloud-nat-us-central1 --router=cloud-router-us-central1-aiml-nat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-central1
4. Создайте конечную точку Private Service Connect.
В следующем разделе вы создадите конечную точку Private Service Connect (PSC), которая будет использоваться для доступа к API Vertex из aiml-vpc.
Из Cloud Shell
gcloud compute addresses create psc-ip \
--global \
--purpose=PRIVATE_SERVICE_CONNECT \
--addresses=100.100.10.10 \
--network=aiml-vpc
Сохраните значение 'pscendpointip' на время выполнения лабораторной работы.
pscendpointip=$(gcloud compute addresses list --filter=name:psc-ip --format="value(address)")
echo $pscendpointip
Создайте конечную точку PSC.
Из Cloud Shell
gcloud compute forwarding-rules create pscvertex \
--global \
--network=aiml-vpc \
--address=psc-ip \
--target-google-apis-bundle=all-apis
Перечислите настроенные конечные точки Private Service Connect.
Из Cloud Shell
gcloud compute forwarding-rules list \
--filter target="(all-apis OR vpc-sc)" --global
Опишите настроенные конечные точки Private Service Connect.
Из Cloud Shell
gcloud compute forwarding-rules describe \
pscvertex --global
5. Создайте учетную запись службы для экземпляров GCE.
Для обеспечения точного управления 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 (блокнотом), используемой в этом руководстве.
В данном руководстве к учетной записи службы будут применяться следующие правила:
Внутри 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. Создайте записную книжку, управляемую пользователем.
В следующем разделе создайте управляемый пользователем блокнот, который будет включать ранее созданную учетную запись службы 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, чтобы просмотреть развернутый ноутбук.

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

10. Создайте пользовательскую панель мониторинга для онлайн-прогнозирования.
Функция онлайн-прогнозирования создает панель мониторинга по умолчанию в разделе VERTEX AI → ONLINE PREDICTION → ENDPOINT NAME (diamonds-cpr_endpoint). Однако для нашего тестирования нам необходимо задать время начала и окончания, поэтому требуется пользовательская панель мониторинга.
В следующем разделе вы создадите метрики облачного мониторинга для получения измерений задержки на основе регионального доступа к конечной точке онлайн-прогнозирования, чтобы проверить разницу в задержке при доступе к конечной точке в регионе us-central1 с экземпляров GCE, развернутых в регионах us-west1 и us-central.
Для этого урока мы будем использовать метрику prediction_latencies; дополнительные метрики доступны на платформе aiplatform.
Метрика | Описание |
прогнозирование/онлайн/задержки_прогнозирования | Задержка онлайн-прогнозирования развернутой модели. |
Создайте диаграмму для метрики prediction_latencies.
Из облачной консоли перейдите в раздел МОНИТОРИНГ → Обозреватель метрик

Вставьте метрику prediction/online/prediction_latencies и выберите следующие параметры, затем нажмите «Применить».

Для обновления группировки по следующему параметру выберите «Сохранить диаграмму».


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

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

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

Пример расширенного просмотра:

11. Создайте частную DNS-систему для конечной точки PSC.
Создайте частную DNS-зону в aiml-vpc, чтобы все IP-адреса 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 предоставляет конечным пользователям возможность настраивать тестирование в соответствии с требованиями сети и приложения. В рамках данного руководства мы будем использовать описанный ниже вариант с примером строки выполнения:
c == 1 работник
z == Длительность
m == Метод HTTP POST
D == Тело HTTP-запроса из файла instances.json
n == Количество запросов для выполнения. Значение по умолчанию — 200.
Пример строки curl с символом 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. Получите идентификатор прогноза.
Получите идентификатор конечной точки онлайн-прогнозирования в облачной консоли, который будет использоваться на последующих этапах.
Перейдите в VERTEX AI → ОНЛАЙН-ПРОГНОЗИРОВАНИЕ

14. Загрузите и запустите HEY (us-west1)
В следующем разделе вам нужно будет войти в систему west-client, чтобы загрузить и запустить HEY для онлайн-прогнозирования, расположенного в us-central1.
В Cloud Shell войдите в west-client и скачайте HEY.
gcloud compute ssh west-client --project=$projectid --zone=us-west1-a --tunnel-through-iap
Загрузите HEY из операционной системы и обновите права доступа.
wget https://hey-release.s3.us-east-2.amazonaws.com/hey_linux_amd64
chmod +x hey_linux_amd64
В операционной системе создайте следующие переменные:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
ENDPOINT_ID="insert-your-endpoint-id-here"
Пример:
ENDPOINT_ID="2706243362607857664"
В следующем разделе вы создадите файл instances.json с помощью редактора vi или nano и вставите в него строку данных, используемую для получения прогноза от развернутой модели.
В операционной системе west-client создайте файл instances.json со следующей строкой данных:
{"instances": [
[0.23, 'Ideal', 'E', 'VS2', 61.5, 55.0, 3.95, 3.98, 2.43],
[0.29, 'Premium', 'J', 'Internally Flawless', 52.5, 49.0, 4.00, 2.13, 3.11]]}
Пример:
user@west-client:$ more instances.json
{"instances": [
[0.23, 'Ideal', 'E', 'VS2', 61.5, 55.0, 3.95, 3.98, 2.43],
[0.29, 'Premium', 'J', 'Internally Flawless', 52.5, 49.0, 4.00, 2.13, 3.11]]}
user@west-client:$
Предварительный тест
В операционной системе выполните команду curl, чтобы убедиться в успешной работе модели и конечной точки прогнозирования. Обратите внимание на IP-адрес конечной точки PSC в подробном журнале и код HTTP/2 200, указывающий на успех.
curl -v -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/${projectid}/locations/us-central1/endpoints/${ENDPOINT_ID}:predict -d @instances.json
Например, обратите внимание на IP-адрес PSC, использованный для доступа к прогнозу и успешному результату.
user@west-client:$ curl -v -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/${projectid}/locations/us-central1/endpoints/${ENDPOINT_ID}:predict -d @instances.json
Note: Unnecessary use of -X or --request, POST is already inferred.
* Trying 100.100.10.10:443...
* Connected to us-central1-aiplatform.googleapis.com (100.100.10.10) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
* CAfile: /etc/ssl/certs/ca-certificates.crt
* CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
* ALPN, server accepted to use h2
* Server certificate:
* subject: CN=upload.video.google.com
* start date: Jul 31 08:22:19 2023 GMT
* expire date: Oct 23 08:22:18 2023 GMT
* subjectAltName: host "us-central1-aiplatform.googleapis.com" matched cert's "*.googleapis.com"
* issuer: C=US; O=Google Trust Services LLC; CN=GTS CA 1C3
* SSL certificate verify ok.
* Using HTTP2, server supports multi-use
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* Using Stream ID: 1 (easy handle 0x55a9f38b42c0)
> POST /v1/projects/new-test-project-396322/locations/us-central1/endpoints/2706243362607857664:predict HTTP/2
> Host: us-central1-aiplatform.googleapis.com
> user-agent: curl/7.74.0
> accept: */*
> authorization: Bearer ya29.c.b0Aaekm1LqrcaOlWFFwuEOWX_tZVXXvJgN_K-u5_hFyEAYXAi3AnBEBwwtHS8dweW_P2QGfdyFfa31nMT_6BaKBI0mC9IsfzfIiUwXc8u2yJt01gTUSJpCmGAFKZKidRMgkPYivVYCnuymzdYbRAWacIe__StkRzI9UeQOGN3jNIeESr80AdH12goaxCFXWaNWxoYRfGVhekEgUcsKs7t1OhOM-937gy4YGkXcXa8sGuHWRqF5bnulYlTqlxqQ2aAxMTrQg2lwUWRGCmGhPrym7rXJq7oim0DkAJSbAarl1qFuz0PPfNXeHGbs13zY2r1giV7u8_w4Umj_Q5M7H9fTkq7EiqnLzqRkOHXismYL368P1jOUBYM__krFQt4M3X9RJa0g01tOw3FnOh27BmUqlFQ1J2h14JZpx215Q3xzRvgfJ5iW5YYSkv67uZRQk4V04naOUXyc0plzWuVOjj4nor3fYvkS_oW0IyxJoBjeXR16Vnvln8c04svWX9dt7eobczFvBOm9nVdh4lVp8qxbp__2WtMvc1QVg6y-2i6lRpbvmyp1oadxVRjxV1e0wiQFSe-qqsinJu3bnnaMbxdU2cu5j26o8o8Xpgo0SF1UM0b1WX84iatbWpdFSphZm1llwmRagMzcFBW0aBk-i35_bXSbzwURgMfY6Qbyb9Rv9y0F-Maf34I0WxiMldv2uc57nej7dVl9OSm_Ohnro-i9zcpq9fxo9soYVB8WjaZOUjauk4znstc2_6y4atcVVsQBkeU674biR567Ri3M74Jfv4MrrF02ObfrJRdB7UJ4MU_9kWW-kYeeJzoci15UqYV0f_yJgReBwQa66Supmebee2Sn2nku6xZkRMu5Mz55mXuva0XWrpIbor7WckSsXwUFbf7rj5ipa4mOOyf2hJe1Rq0x6yeBaariRzXrhfm5bBpFBU73-zd-IekvOji0ZJQSkk0o6gpX_794Jny7j14aQJ8VxezcFpZUztimYhMnRhlO2lqms1h0h48
> content-type: application/json
> content-length: 158
>
* Connection state changed (MAX_CONCURRENT_STREAMS == 100)!
* We are completely uploaded and fine
< HTTP/2 200
< x-vertex-ai-internal-prediction-backend: harpoon
< content-type: application/json; charset=UTF-8
< date: Sun, 20 Aug 2023 03:51:54 GMT
< vary: X-Origin
< vary: Referer
< vary: Origin,Accept-Encoding
< server: scaffolding on HTTPServer2
< cache-control: private
< x-xss-protection: 0
< x-frame-options: SAMEORIGIN
< x-content-type-options: nosniff
< accept-ranges: none
<
{
"predictions": [
"$479.0",
"$586.0"
],
"deployedModelId": "3587550310781943808",
"model": "projects/884291964428/locations/us-central1/models/6829574694488768512",
"modelDisplayName": "diamonds-cpr",
"modelVersionId": "1"
}
* Connection #0 to host us-central1-aiplatform.googleapis.com left intact
Выполнить HEY
В операционной системе запустите HEY, включив 10-минутный базовый тест.
./hey_linux_amd64 -c 1 -z 10m -m POST -D instances.json -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/$projectid/locations/us-central1/endpoints/${ENDPOINT_ID}:predict
15. Проверка подлинности (us-west1)
После выполнения команды "Hey" с вычислительного экземпляра в регионе us-west1 оцените результаты следующей команды:
- Результаты HEY
- Пользовательская панель управления Vertex
- Сетевой интеллект
Результаты HEY
Давайте проверим результаты 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 минут или укажите время начала и окончания. Убедитесь, что ваш часовой пояс указан правильно.

Если взглянуть на определение задержки прогнозирования, то станет ясно, что это метрика на стороне сервера, измеряющая общее время ответа на запрос клиента после получения ответа от модели.
- Общая продолжительность задержки : общее время, которое запрос проводит в сервисе, которое включает в себя задержку модели плюс задержку накладных расходов.
В отличие от этого, HEY — это метрика на стороне клиента, которая учитывает следующие параметры:
Запрос клиента + Общая задержка (включая задержку модели) + Ответ клиента
Сетевой интеллект
Теперь давайте посмотрим на задержку в сети между регионами, сообщаемую Network Intelligence, чтобы получить представление о задержке между регионами us-west1 и us-central1, сообщаемой Google Cloud Platform.
Перейдите в Cloud Console Network Intelligence → Performance Dashboard и выберите параметры, указанные на скриншоте ниже, которые показывают задержку от 32 до 39 мс.

HEY us-west1 базовое резюме
Сравнивая отчеты о суммарной задержке, полученные с помощью тестовых инструментов, получаем примерно одинаковые значения задержки, зафиксированные HEY. Основная часть задержки приходится на межрегиональную задержку. Давайте посмотрим, как покажет себя центральный клиент в следующей серии тестов.
Инструмент задержки | Продолжительность |
Анализ сетевых данных: задержка между регионом us-west1 и регионом us-central1 | ~32–39 мс |
Мониторинг облачных вычислений: общая задержка прогнозирования [99-й процентиль] | 34,58 мс (99p) |
Общая задержка, о которой сообщила компания Google. | ~ 66,58–73,58 мс |
HEY распределение задержки на стороне клиента | 68 мс (99 п) |
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 и вставите в него строку данных, используемую для получения прогноза от развернутой модели.
В операционной системе west-client создайте файл 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:$
Предварительный тест
В операционной системе выполните команду curl, чтобы убедиться в успешной работе модели и конечной точки прогнозирования. Обратите внимание на IP-адрес конечной точки PSC в подробном журнале и код HTTP/2 200, указывающий на успех.
curl -v -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/${projectid}/locations/us-central1/endpoints/${ENDPOINT_ID}:predict -d @instances.json
Например, обратите внимание на IP-адрес PSC, использованный для доступа к прогнозу и успешному результату.
user@central-client:~$ curl -v -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/${projectid}/locations/us-central1/endpoints/${ENDPOINT_ID}:predict -d @instances.json
Note: Unnecessary use of -X or --request, POST is already inferred.
* Trying 100.100.10.10:443...
* Connected to us-central1-aiplatform.googleapis.com (100.100.10.10) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
* CAfile: /etc/ssl/certs/ca-certificates.crt
* CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
* ALPN, server accepted to use h2
* Server certificate:
* subject: CN=upload.video.google.com
* start date: Jul 31 08:22:19 2023 GMT
* expire date: Oct 23 08:22:18 2023 GMT
* subjectAltName: host "us-central1-aiplatform.googleapis.com" matched cert's "*.googleapis.com"
* issuer: C=US; O=Google Trust Services LLC; CN=GTS CA 1C3
* SSL certificate verify ok.
* Using HTTP2, server supports multi-use
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* Using Stream ID: 1 (easy handle 0x559b57adc2c0)
> POST /v1/projects/new-test-project-396322/locations/us-central1/endpoints/2706243362607857664:predict HTTP/2
> Host: us-central1-aiplatform.googleapis.com
> user-agent: curl/7.74.0
> accept: */*
> authorization: Bearer ya29.c.b0Aaekm1KWqq-CIXuL6f1cx9d9jHHquQq9tlSV1oVZ1y3TACi82JFFZRwsagVY7MMovycsU4PLkt9MDMkNngxZE5RzXcS-AoaUaQf1tPT9-_JMTlFI6wCcR7Yr9MeRF5AZblr_k52ZZgEZKeYGcrXoGiqGQcAAwFtHiEVAkUhLuyukteXbMoep1JM9E0zFblJj7Z0yOCMJYBH-6XHcIDYnOKpStMVBR2wcTDbnFrCE08HXbvRnQVcENatTBoI9FzSVL1ORwqUiCcdfnTSjpIXcyD-W82d6ZHjGX_RUhfnH7RPfOJqkuU8pOovwoCjq_jvM_wJUfPuQnBKHp5rxbYxPE349DMBql62po2SWFguuFo-a2eoUnb8-FQeBZqan65zgV0lexR73gZlm071y9grlXv3fmJUo7vlj5W-7_-FJXaWWg8iWc6rmjYeO1Wz2h_8qnmojkX9xSUciI6JfmwdgMWwtvwJb63ppSmdwf8oagrYiQlpMzgRI6rekbRzg-1WOBeOf5nRg5vtxUMSc9iRaoarO5XwFX8vt7rxOUBvbXYVWmo3bsdhzsS9VopMwgMlxgcIJg7bq7_F3iapB-nRjfjfhZWpR83cWIkI2Wb9f89inpsxtYjZbbzdWkZvRB8FYSsY8F8tcpiVoWWyQWZiph9z7O59fF9irWY2gtUnbFcJJ_ZcYztjlMQaR45y42ZflkM3Qn668bzge3Y3hmVI1s6ZSmxxq6m27hoMwVn21R07Y613jwljmaFJ5V8MwkR6yvFhYngrh_JrhRUQtSSMh02Rz25wMfv7g8Fiqymr-12viM4btIFjXZBM3XFqzvso_rw1omI1yYWofmbaBYggpegpJBzSeqVUZe791agjVtiMUkyjXFy__9gI0Qk9ZUarI4p25SvS4I1hX4YyBk6ol32Z5zIsVr1Seff__aklm6M2Mlkumd7nurm46hjOIoOhFpfFxrQ6yivnhYapBOJMYirgbZvigvI3dom1fnmt0-ktmRxp69w7Uzzy
> content-type: application/json
> content-length: 158
>
* Connection state changed (MAX_CONCURRENT_STREAMS == 100)!
* We are completely uploaded and fine
< HTTP/2 200
< x-vertex-ai-internal-prediction-backend: harpoon
< date: Sun, 20 Aug 2023 22:25:31 GMT
< content-type: application/json; charset=UTF-8
< vary: X-Origin
< vary: Referer
< vary: Origin,Accept-Encoding
< server: scaffolding on HTTPServer2
< cache-control: private
< x-xss-protection: 0
< x-frame-options: SAMEORIGIN
< x-content-type-options: nosniff
< accept-ranges: none
<
{
"predictions": [
"$479.0",
"$586.0"
],
"deployedModelId": "3587550310781943808",
"model": "projects/884291964428/locations/us-central1/models/6829574694488768512",
"modelDisplayName": "diamonds-cpr",
"modelVersionId": "1"
}
* Connection #0 to host us-central1-aiplatform.googleapis.com left intact
Выполнить HEY
В операционной системе запустите HEY, включив 10-минутный базовый тест.
./hey_linux_amd64 -c 1 -z 10m -m POST -D instances.json -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/$projectid/locations/us-central1/endpoints/${ENDPOINT_ID}:predict
17. Проверка подлинности (us-central1)
После выполнения команды Hey с вычислительного экземпляра в us-central1 оцените результаты следующих действий:
- Результаты HEY
- Пользовательская панель управления Vertex
- Сетевой интеллект
Результаты HEY
Давайте проверим результаты HEY на основе 10-минутного выполнения, исходя из операционной системы.
44,9408 запросов в секунду
99% за 0,0353 сек | 35 мс
26965 ответов со статусом 200
devops_user_1_deepakmichael_alto@central-client:~$ ./hey_linux_amd64 -c 1 -z 10m -m POST -D instances.json -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/$projectid/locations/us-central1/endpoints/${ENDPOINT_ID}:predict
Summary:
Total: 600.0113 secs
Slowest: 0.3673 secs
Fastest: 0.0184 secs
Average: 0.0222 secs
Requests/sec: 44.9408
Response time histogram:
0.018 [1] |
0.053 [26923] |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
0.088 [25] |
0.123 [4] |
0.158 [0] |
0.193 [1] |
0.228 [9] |
0.263 [1] |
0.298 [0] |
0.332 [0] |
0.367 [1] |
Latency distribution:
10% in 0.0199 secs
25% in 0.0205 secs
50% in 0.0213 secs
75% in 0.0226 secs
90% in 0.0253 secs
95% in 0.0273 secs
99% in 0.0353 secs
Details (average, fastest, slowest):
DNS+dialup: 0.0000 secs, 0.0184 secs, 0.3673 secs
DNS-lookup: 0.0000 secs, 0.0000 secs, 0.0079 secs
req write: 0.0000 secs, 0.0000 secs, 0.0007 secs
resp wait: 0.0220 secs, 0.0182 secs, 0.3672 secs
resp read: 0.0002 secs, 0.0001 secs, 0.0046 secs
Status code distribution:
[200] 26965 responses
Пользовательская панель управления Vertex
Перейдите в раздел МОНИТОРИНГ → Панель управления и выберите Vertex Custom Dashboard, введите 10m. Или время начала и окончания. Убедитесь, что ваш часовой пояс указан правильно.
Задержка прогнозирования за последние 10 минут составляет 30,533 мс.
Если взглянуть на определение задержки прогнозирования, то станет ясно, что это метрика на стороне сервера, измеряющая общее время ответа на запрос клиента после получения ответа от модели.
- Общая продолжительность задержки : общее время, которое запрос проводит в сервисе, которое включает в себя задержку модели плюс задержку накладных расходов.
В отличие от этого, HEY — это метрика на стороне клиента, которая учитывает следующие параметры:
Запрос клиента + Общая задержка (включая задержку модели) + Ответ клиента
Сетевой интеллект
Теперь давайте посмотрим на задержку внутрирегиональной сети, сообщаемую Network Intelligence, чтобы получить представление о задержке между регионом США и центральным регионом (us-central1), сообщаемой Google Cloud Platform.
Перейдите в Cloud Console Network Intelligence → Performance Dashboard и выберите следующие параметры, подробно описанные на скриншоте ниже, указывающие на задержку от 0,2 до 0,8 мс.

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 считает, что обучающие материалы — это здорово!!

19. Уборка
В Cloud Shell удалите компоненты учебного пособия.
gcloud compute instances delete central-client --zone=us-central1-a -q
gcloud compute instances delete west-client --zone=us-west1-a -q
gcloud compute instances delete workbench-tutorial --zone=us-central1-a -q
gcloud compute forwarding-rules delete pscvertex --global --quiet
gcloud compute addresses delete psc-ip --global --quiet
gcloud compute networks subnets delete workbench-subnet --region=us-central1 --quiet
gcloud compute networks subnets delete us-west1-subnet --region=us-west1 --quiet
gcloud compute networks subnets delete us-central1-subnet --region=us-central1 --quiet
gcloud compute routers delete cloud-router-us-west1-aiml-nat --region=us-west1 --quiet
gcloud compute routers delete cloud-router-us-central1-aiml-nat --region=us-central1 --quiet
gcloud compute firewall-rules delete ssh-iap-vpc --quiet
gcloud dns record-sets delete *.googleapis.com. --zone=psc-googleapis --type=A --quiet
gcloud dns managed-zones delete psc-googleapis --quiet
gcloud compute networks delete aiml-vpc --quiet
gcloud storage rm -r gs://$projectid-cpr-bucket
В консоли Cloud Console было удалено следующее:
Папка реестра артефактов

В реестре моделей Vertex AI удалите модель:

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

Что дальше?
Посмотрите эти обучающие материалы...
- Private Service Connect для API Google
- Vertex AI создает защищенный ноутбук с пользовательским управлением.
Дополнительная литература и видеоматериалы
- Обзор Private Service Connect
- Что такое Private Service Connect?
- Как получить прогнозы от модели машинного обучения
- Что такое Vertex AI?