Vertex AI: экспорт и развертывание модели машинного обучения BigQuery для прогнозирования

1. Обзор

В этой лабораторной работе вы обучите модель с помощью BigQuery Machine Learning , а затем экспортируете и развернете эту модель в Vertex AI . Это новейший продукт в области искусственного интеллекта, предлагаемый Google Cloud.

Чему вы научитесь

Вы научитесь:

  • Обучение модели с помощью BigQuery Machine Learning (BQML)
  • Экспортируйте вашу BQML-модель в облачное хранилище.
  • Разверните обученный BQML-файл в Vertex AI.
  • Получайте прогнозы на основе развернутой модели.

Общая стоимость запуска этой лабораторной работы в Google Cloud составляет около 2 долларов .

2. Введение в Vertex AI

В этой лабораторной работе используется новейший продукт для искусственного интеллекта, доступный в Google Cloud. Vertex AI интегрирует предложения машинного обучения в Google Cloud в единый процесс разработки. Ранее модели, обученные с помощью AutoML, и пользовательские модели были доступны через отдельные сервисы. Новое предложение объединяет оба варианта в единый API, а также включает другие новые продукты. Вы также можете перенести существующие проекты в Vertex AI. Если у вас есть какие-либо замечания, пожалуйста, посетите страницу поддержки .

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

Обзор продукции Vertex

3. Настройте свою среду.

Для выполнения этого практического задания вам потребуется проект Google Cloud Platform с включенной функцией оплаты. Чтобы создать проект, следуйте инструкциям здесь .

Шаг 1: Включите API Compute Engine.

Перейдите в Compute Engine и выберите «Включить», если эта опция еще не включена. Она понадобится для создания экземпляра ноутбука.

Шаг 2: Включите API Vertex AI

Перейдите в раздел Vertex AI в вашей облачной консоли и нажмите «Включить API Vertex AI» .

Панель мониторинга Vertex AI

Шаг 3: Создайте экземпляр Notebooks.

После развертывания модели мы будем использовать блокноты для получения прогнозов. В разделе Vertex AI вашей облачной консоли нажмите на «Блокноты»:

Меню Vertex AI

Затем выберите «Создать экземпляр» . После этого выберите тип экземпляра TensorFlow Enterprise 2.3 без графических процессоров :

экземпляр TFE

Используйте параметры по умолчанию, а затем нажмите «Создать ». После создания экземпляра выберите «Открыть JupyterLab» :

Откройте блокнот CAIP

4. Обучение модели машинного обучения BigQuery.

BigQuery ML позволяет обучать собственные модели машинного обучения, используя данные, хранящиеся в BigQuery. Вы можете обучать модели и получать от них прогнозы, используя SQL. В этой лабораторной работе мы будем использовать общедоступный набор данных в BigQuery для прогнозирования вероятности невыполнения обязательств по платежу по кредитной карте.

Шаг 1: Создайте набор данных BigQuery в своем проекте.

Для обучения модели в BigQuery ML вам потребуется создать набор данных в вашем проекте для хранения этой модели. Щелкните по своему проекту в левой панели меню, а затем выберите «Создать набор данных» :

Создать набор данных BQ

В поле «Идентификатор набора данных» введите cc_default . Остальные поля оставьте без изменений и нажмите «Создать набор данных» .

Шаг 2: Выполните запрос CREATE MODEL.

В редакторе запросов BigQuery выполните следующий запрос CREATE MODEL , чтобы создать и обучить модель машинного обучения BigQuery на общедоступном наборе данных, который мы будем использовать. Обязательно замените your-project на имя вашего облачного проекта:

CREATE OR REPLACE MODEL
  `your-project.cc_default.logistic_model` OPTIONS(model_type='LOGISTIC_REG',
    input_label_cols=['default_payment_next_month']) AS
SELECT
  limit_balance,
  sex,
  education_level,
  marital_status,
  age,
  pay_0,
  pay_2,
  pay_3,
  pay_4,
  pay_5,
  pay_6,
  bill_amt_1,
  bill_amt_2,
  bill_amt_3,
  bill_amt_4,
  bill_amt_5,
  bill_amt_6,
  pay_amt_1,
  pay_amt_2,
  pay_amt_3,
  pay_amt_4,
  pay_amt_5,
  pay_amt_6,
  default_payment_next_month
FROM
  `bigquery-public-data.ml_datasets.credit_card_default`

Это создаст модель логистической регрессии , которая выдаст числовое значение от 0 до 1, что укажет на время выполнения около минуты. После завершения вы увидите модель в своем наборе данных:

Подробности модели BQML

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

5. Экспортируйте вашу модель машинного обучения BigQuery.

Имея обученную BQML-модель, мы можем использовать синтаксис BQML SQL для получения прогнозов или экспортировать модель для развертывания в другом месте. Здесь мы экспортируем нашу модель, чтобы развернуть ее в Vertex AI для масштабируемого обслуживания модели и получения прогнозов.

Шаг 1: Создайте сегмент облачного хранилища для вашей модели.

В сведениях о модели нажмите «Экспорт модели» :

Экспорт модели BQML

Вам будет предложено ввести местоположение в Google Cloud Storage (GCS), куда вы хотите экспортировать ресурсы вашей модели. Если у вас еще нет хранилища GCS, не волнуйтесь! Мы сейчас его создадим. Сначала нажмите «Обзор» :

Просмотрите корзины GCS

Затем нажмите значок «+» , чтобы создать новый сегмент:

Новый ковш GCS

Присвойте ему уникальное имя (имена сегментов хранилища должны быть уникальными во всем мире). Нажмите «Продолжить» . На следующем шаге в разделе «Тип местоположения» выберите «Регион» и выберите любой из регионов из раскрывающегося списка:

Местоположение ведра

Используйте класс хранения по умолчанию, и в разделе управления доступом убедитесь, что выбран параметр «Uniform» :

Единый контроль доступа

Нажмите «Продолжить» и используйте значения по умолчанию для остальных параметров. Затем нажмите «Создать» .

Шаг 2: Экспорт модели BQML

После создания нового хранилища введите model-assets (или любое другое название) в поле «Имя» , а затем нажмите « Выбрать» :

Путь экспорта модели

Затем нажмите «Экспорт» . Это создаст задание в BigQuery для экспорта вашей модели в формате TensorFlow SavedModel в указанный вами новый сегмент GCS. Экспорт займет около минуты.

Пока ваша модель экспортируется, перейдите в раздел «Хранилище» в консоли Cloud. После завершения процесса вы увидите, что ресурсы вашей модели экспортированы в созданный вами сегмент в подкаталоге model-assets :

Экспортированные модельные активы

6. Импортируйте модель в Vertex AI.

На этом этапе мы будем использовать в качестве ссылки место хранения GCS, куда мы только что экспортировали ресурсы нашей модели, чтобы создать и импортировать модель в Vertex AI.

Шаг 1: Импортируйте модель

В консоли Cloud перейдите в раздел Vertex AI Models . Там выберите «Импорт» :

Импорт модели

На первом шаге дайте вашей модели имя predict_default . Выберите тот же регион, где вы создали свой сегмент (либо us-central1 , europe-west4 , либо asia-east1 ). Затем нажмите « Продолжить» . В настройках модели оставьте выбранным параметр «Импортировать артефакты модели в новый предварительно созданный контейнер».

В раскрывающемся списке «Модельная структура» выберите TensorFlow . Затем выберите версию фреймворка 2.3 .

В поле «Расположение артефактов модели» нажмите «Обзор» , выберите только что созданный сегмент GCS и перейдите в каталог model-assets :

Путь к ресурсам модели

Затем нажмите «Импорт» . Импорт вашей модели займет несколько минут. После создания вы увидите ее в разделе моделей вашей облачной консоли:

Раздел «Модели»

7. Разверните модель на конечной точке.

Теперь, когда мы загрузили нашу модель, следующим шагом будет создание конечной точки в Vertex. Ресурс модели в Vertex может иметь несколько связанных с ним конечных точек, и вы можете распределять трафик между ними.

Шаг 1: Создание конечной точки

На странице вашей модели перейдите на вкладку «Развертывание и тестирование» и нажмите «Развернуть на конечную точку» :

Развертывание и тестирование

Присвойте вашей конечной точке имя, например, default_pred_v1 , оставьте настройки разделения трафика без изменений, а затем выберите тип машины для развертывания вашей модели. Мы использовали здесь n1-highcpu-2 , но вы можете выбрать любой тип машины по своему усмотрению.

Затем выберите «Готово» и нажмите «Продолжить» . Оставьте выбранные параметры местоположения без изменений и нажмите «Развернуть» . Развертывание вашей конечной точки займет несколько минут. После завершения рядом с ней появится зеленая галочка:

Развернутая конечная точка

Вы близки к цели! Теперь вы готовы получать прогнозы от развернутой модели.

8. Получение прогнозов на основе развернутой модели.

Существует несколько вариантов получения прогнозов модели:

  • Пользовательский интерфейс Vertex AI
  • API Vertex AI

Здесь мы покажем, как получать прогнозы через API.

Шаг 1: Получите прогнозы модели с помощью API Vertex AI.

Чтобы показать вам, как получать прогнозы модели, мы будем использовать экземпляр Vertex Notebook, который вы создали в начале этой лабораторной работы.

Далее откройте созданный вами экземпляр блокнота и откройте блокнот Python 3 из панели запуска:

Откройте блокнот

В своей записной книжке выполните в ячейке следующий код, чтобы записать тестовый пример в JSON-файл с именем default-pred.json . Мы отправим этот пример нашей модели для прогнозирования:

%%writefile default-pred.json
{
  "instances": [
    {"age": 39,
    "bill_amt_1": 47174,
    "bill_amt_2": 47974,
    "bill_amt_3": 48630,
    "bill_amt_4": 50803,
    "bill_amt_5": 30789,
    "bill_amt_6": 15874,
    "education_level": "1",
    "limit_balance": 50000,
    "marital_status": "2",
    "pay_0": 0,
    "pay_2":0,
    "pay_3": 0,
    "pay_4": 0,
    "pay_5": "0",
    "pay_6": "0",
    "pay_amt_1": 1800,
    "pay_amt_2": 2000,
    "pay_amt_3": 3000,
    "pay_amt_4": 2000,
    "pay_amt_5": 2000,
    "pay_amt_6": 2000,
    "sex": "1"}
  ]
}

Далее в пользовательском интерфейсе Vertex нажмите кнопку «Пример запроса» для только что развернутой конечной точки:

Пример запроса

Скопируйте код из шага 4 на вкладке REST в свой блокнот и запустите ячейку:

Запрос переменных

Затем добавьте переменную для региона, где вы создали свой сегмент и модель. Замените your-region в строке ниже:

REGION="your-region" # either us-central1, europe-west4, or asia-east1

Наконец, отправьте запрос на прогнозирование к вашей конечной точке с помощью curl , скопировав следующий код в свой блокнот:

!curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://us-central1-prediction-aiplatform.googleapis.com/v1alpha1/projects/$PROJECT_ID/locations/$REGION/endpoints/$ENDPOINT_ID:predict \
-d "@default-pred.json"

Вы должны увидеть что-то подобное (точные значения прогноза могут немного отличаться):

{
  "predictions": [
    {
      "default_payment_next_month_values": [
        "1",
        "0"
      ],
      "default_payment_next_month_probs": [
        0.180815295299778,
        0.819184704700222
      ],
      "predicted_default_payment_next_month": [
        "0"
      ]
    }
  ],
  "deployedModelId": "your-model-id"
}

Значения в default_payment_next_month_probs показывают вероятность для каждого класса. В этом примере наша модель предсказывает, что вероятность того, что этот человек не допустит просрочки платежа при следующей выплате, составляет 81%. Значение .819 соответствует классу 0 (не просрочка).

🎉 Поздравляем! 🎉

Вы научились:

  • Обучение модели в BQML
  • Экспортируйте вашу BQML-модель в облачное хранилище.
  • Импортируйте модель BQML в Vertex AI для прогнозирования.
  • Создайте модель Vertex AI и разверните её на конечной точке.
  • Получайте прогнозы для развернутой конечной точки с помощью Vertex Notebooks и curl.

Чтобы узнать больше о различных компонентах Vertex AI, ознакомьтесь с документацией .

9. Уборка

Если вы хотите продолжить использование созданного в этой лабораторной работе блокнота, рекомендуется выключать его, когда он не используется. В интерфейсе блокнотов в вашей облачной консоли выберите блокнот, а затем выберите «Остановить» :

Остановить экземпляр

Если вы хотите полностью удалить блокнот, просто нажмите кнопку «Удалить» в правом верхнем углу.

Чтобы удалить развернутую вами конечную точку, перейдите в раздел «Конечные точки» в консоли Vertex AI и нажмите значок удаления:

Удалить конечную точку

Чтобы удалить сегмент хранилища, воспользуйтесь меню навигации в облачной консоли, перейдите в раздел «Хранилище», выберите свой сегмент и нажмите «Удалить».

Удалить хранилище