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

1. Обзор

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

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

Вы узнаете, как:

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

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

2. Знакомство с Vertex AI

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

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

Обзор продукта Vertex

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

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

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

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

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

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

Панель управления Vertex AI

Шаг 3. Создайте экземпляр блокнотов

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

Меню вершинного AI

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

Экземпляр TFE

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

Открыть блокнот CAIP

4. Обучение модели BigQuery ML

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

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

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

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

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

Шаг 2. Запустите запрос CREATE MODEL.

В редакторе запросов BigQuery запустите следующий запрос CREATE MODEL , чтобы создать и обучить модель BigQuery ML на общедоступном наборе данных, который мы будем использовать. Обязательно замените 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 ML.

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

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

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

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

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

Просмотр сегментов GCS

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

Новый сегмент GCS

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

Расположение ковша

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

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

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

Шаг 2. Экспортируйте модель BQML.

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

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

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

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

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

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

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

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

В облачной консоли перейдите в раздел 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. Получение прогнозов по нашей развернутой модели

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

  • Вершинный ИИ-интерфейс
  • API вершин ИИ

Здесь мы покажем, как получать прогнозы через 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 и щелкните значок удаления:

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

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

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