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

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

О практической работе

subjectПоследнее обновление: мая 18, 2021
account_circleАвтор: сотрудник Google

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 и щелкните значок удаления:

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

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

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