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

3. Настройте свою среду.
Для выполнения этого практического задания вам потребуется проект Google Cloud Platform с включенной функцией оплаты. Чтобы создать проект, следуйте инструкциям здесь .
Шаг 1: Включите API Compute Engine.
Перейдите в Compute Engine и выберите «Включить», если эта опция еще не включена. Она понадобится для создания экземпляра ноутбука.
Шаг 2: Включите API Vertex AI
Перейдите в раздел Vertex AI в вашей облачной консоли и нажмите «Включить API Vertex AI» .

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

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

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

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

В поле «Идентификатор набора данных» введите 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, что укажет на время выполнения около минуты. После завершения вы увидите модель в своем наборе данных:

Вы можете щелкнуть по модели, чтобы посмотреть показатели ее обучения и оценки.
5. Экспортируйте вашу модель машинного обучения BigQuery.
Имея обученную BQML-модель, мы можем использовать синтаксис BQML SQL для получения прогнозов или экспортировать модель для развертывания в другом месте. Здесь мы экспортируем нашу модель, чтобы развернуть ее в Vertex AI для масштабируемого обслуживания модели и получения прогнозов.
Шаг 1: Создайте сегмент облачного хранилища для вашей модели.
В сведениях о модели нажмите «Экспорт модели» :

Вам будет предложено ввести местоположение в Google Cloud Storage (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 и нажмите значок удаления:

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