1. Обзор
В этой лабораторной работе вы будете использовать Vertex AI для обучения и развертывания модели с использованием табличных данных. Это новейший продукт в области искусственного интеллекта в Google Cloud, который в настоящее время находится в режиме предварительного просмотра.
Чему вы научитесь
Вы научитесь:
- Загрузите управляемый набор данных в Vertex AI.
- Обучите модель с помощью AutoML.
- Разверните обученную модель AutoML на конечной точке и используйте эту конечную точку для получения прогнозов.
Общая стоимость запуска этой лабораторной работы в Google Cloud составляет около 22 долларов .
2. Введение в Vertex AI
В этой лабораторной работе используется новейший продукт для искусственного интеллекта, доступный в Google Cloud. Vertex AI интегрирует предложения машинного обучения в Google Cloud в единый процесс разработки. Ранее модели, обученные с помощью AutoML, и пользовательские модели были доступны через отдельные сервисы. Новое предложение объединяет оба варианта в единый API, а также включает другие новые продукты. Вы также можете перенести существующие проекты в Vertex AI. Если у вас есть какие-либо замечания, пожалуйста, посетите страницу поддержки .
Vertex AI предлагает множество различных продуктов для поддержки комплексных рабочих процессов машинного обучения. В этой лабораторной работе мы сосредоточимся на продуктах, перечисленных ниже: AutoML для табличных данных, Prediction и Workbench.

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

Шаг 3: Создайте экземпляр Vertex AI Workbench.
В разделе Vertex AI вашей облачной консоли нажмите на Workbench:

Затем в разделе «Управляемые пользователем блокноты» нажмите «Создать блокнот» :

Затем выберите последнюю версию экземпляра TensorFlow Enterprise (с LTS) без графических процессоров :

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

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

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

В Vertex существует несколько вариантов импорта данных в управляемые наборы данных:
- Загрузка локального файла с вашего компьютера.
- Выбор файлов из облачного хранилища
- Выборка данных из BigQuery
Здесь мы будем загружать данные из общедоступной таблицы BigQuery.
Шаг 2: Импорт данных из BigQuery
Выберите метод импорта «Выберите таблицу или представление из BigQuery», а затем скопируйте следующее в поле для таблицы BigQuery : bigquery-public-data.ml_datasets.ulb_fraud_detection . После этого нажмите «Продолжить ».

После импорта набора данных вы должны увидеть примерно следующее:

При желании вы можете нажать кнопку «Сгенерировать статистику» , чтобы просмотреть дополнительную информацию об этом наборе данных, но это не обязательно перед переходом к следующему шагу. Этот набор данных содержит реальные транзакции по кредитным картам. Большинство названий столбцов скрыты, поэтому они называются V1 , V2 и т. д.
5. Обучите модель с помощью AutoML.
После загрузки управляемого набора данных мы готовы обучить модель на этих данных. Мы будем обучать модель классификации для прогнозирования того, является ли конкретная транзакция мошеннической или нет. Vertex AI предоставляет два варианта обучения моделей:
- AutoML : Обучение высококачественных моделей с минимальными усилиями и без специальных знаний в области машинного обучения.
- Обучение на заказ : запускайте свои собственные обучающие приложения в облаке, используя один из предварительно созданных контейнеров Google Cloud, или используйте свой собственный.
В этой лабораторной работе мы будем использовать AutoML для обучения.
Шаг 1: Начало обучения.
На странице с подробными сведениями о наборе данных, где вы остановились на предыдущем шаге, выберите «Обучить новую модель» в правом верхнем углу. Выберите «Классификация» в качестве целевой функции, оставьте выбранным AutoML для обучения модели, а затем нажмите « Продолжить ».

Присвойте вашей модели имя или используйте имя по умолчанию. В столбце «Цель» выберите «Класс» . Это целое число, указывающее, была ли конкретная транзакция мошеннической ( 0 — нет мошенничества, 1 — мошенничество).
Затем выберите «Продолжить» :

На этом шаге прокрутите вниз и щелкните, чтобы развернуть «Расширенные параметры» . Поскольку этот набор данных сильно несбалансирован (менее 1% данных содержат мошеннические транзакции), выберите параметр AUC PRC , который максимизирует точность и полноту для менее распространенного класса :

Выберите «Продолжить» , а затем перейдите к последнему шагу (Вычисления и ценообразование). Здесь введите 1 в качестве количества вычислительных часов для вашего бюджета и оставьте включенной функцию ранней остановки. Обучение модели AutoML в течение 1 вычислительного часа обычно является хорошим началом для понимания того, существует ли взаимосвязь между выбранными вами признаками и меткой. После этого вы можете изменить свои признаки и увеличить время обучения, чтобы улучшить производительность модели. Далее выберите «Начать обучение» .
Вы получите электронное письмо, когда ваше обучение завершится. Обучение займет немного больше часа, чтобы учесть время на запуск и удаление ресурсов.
6. Изучите метрики оценки модели.
На этом этапе мы посмотрим, как показала себя наша модель.
После завершения обучения модели перейдите на вкладку «Модели» в Vertex. Щелкните по только что обученной модели и посмотрите вкладку «Оценка» . Здесь много метрик оценки — мы сосредоточимся на двух: матрице ошибок и важности признаков .
Шаг 1: Разберитесь в матрице ошибок.
Матрица ошибок показывает процент примеров из каждого класса в нашем тестовом наборе, которые наша модель предсказала правильно. В случае несбалансированного набора данных, с которым мы имеем дело, это лучший показатель производительности нашей модели, чем общая точность.
Помните, что менее 1% примеров в нашем наборе данных представляли собой мошеннические транзакции, поэтому, если точность нашей модели составляет 99%, велика вероятность, что она просто случайным образом определяет немошеннический класс в 99% случаев. Именно поэтому оценка точности модели для каждого класса является здесь более точным показателем.
Если вы прокрутите вниз вкладку «Оценка» , вы увидите матрицу ошибок, которая выглядит примерно так (точные процентные значения могут отличаться):

Матрица ошибок показывает, что наша первоначальная модель способна правильно классифицировать 85% мошеннических примеров в нашем тестовом наборе. Это довольно хороший результат, особенно учитывая значительный дисбаланс в нашем наборе данных. Далее мы могли бы попробовать обучить нашу модель с большим количеством вычислительных часов, чтобы посмотреть, сможем ли мы улучшить этот показатель с 85%.
Шаг 2: Анализ важности признаков
Ниже матрицы ошибок вы должны увидеть диаграмму важности признаков, которая выглядит следующим образом:

Это показывает нам признаки, которые дали нашей модели наибольший сигнал при построении прогнозов. Важность признаков — это один из типов объяснимого ИИ — область, которая включает в себя различные методы получения более глубокого понимания того, как модель машинного обучения строит прогнозы. Представленная здесь диаграмма важности признаков рассчитана как агрегированный результат на основе всех прогнозов нашей модели на тестовом наборе данных. Она показывает нам наиболее важные признаки для группы примеров.
Этот график был бы гораздо интереснее, если бы большинство характеристик нашего набора данных не были скрыты. Например, мы могли бы узнать, что тип транзакции (перевод, депозит и т. д.) является наиболее важным индикатором мошенничества.
В реальных условиях эти значения важности признаков можно использовать для улучшения модели и повышения уверенности в её прогнозах. Мы можем решить удалить наименее важные признаки при следующем обучении модели или объединить два наиболее значимых признака в кросс-признак, чтобы проверить, улучшит ли это производительность модели.
Здесь мы рассматриваем важность признаков в рамках всего пакета данных, но в Vertex AI также можно получить важность признаков для отдельных прогнозов. Мы увидим, как это сделать, после развертывания нашей модели.
7. Развертывание модели на конечной точке
Теперь, когда у нас есть обученная модель, следующим шагом является создание конечной точки в Vertex. Ресурс модели в Vertex может иметь несколько связанных с ним конечных точек, и вы можете распределять трафик между ними.
Шаг 1: Создание конечной точки
На странице вашей модели перейдите на вкладку «Развертывание и тестирование» и нажмите «Развернуть на конечную точку» :

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

Вы близки к цели! Теперь вы готовы получать прогнозы от развернутой модели.
8. Получение прогнозов на основе развернутой модели.
Существует несколько вариантов получения прогнозов модели:
- Пользовательский интерфейс Vertex AI
- API Vertex AI
Мы покажем оба варианта здесь.
Шаг 1: Получите прогнозы модели в пользовательском интерфейсе.
На странице вашей модели, где отображается конечная точка (с того места, где мы остановились на предыдущем шаге), прокрутите вниз до раздела «Протестируйте свою модель» :

Здесь Vertex AI выбрала случайные значения для каждого из признаков нашей модели, которые мы можем использовать для получения тестового прогноза. Вы можете изменить эти значения, если хотите. Прокрутите страницу вниз и выберите «Прогнозировать» .
В разделе «Результаты прогнозирования» на странице вы должны увидеть процентное значение прогнозов вашей модели для каждого класса. Например, показатель достоверности 0.99 для класса 0 означает, что ваша модель считает, что вероятность того, что данный пример не является мошенническим, составляет 99%.
Шаг 2: Получите прогнозы модели с помощью API Vertex AI.
Пользовательский интерфейс — отличный способ убедиться в том, что развернутая вами конечная точка работает должным образом, но, скорее всего, вам потребуется получать прогнозы динамически через вызов REST API. Чтобы показать, как получать прогнозы модели, мы будем использовать экземпляр Vertex Workbench, который вы создали в начале этой лабораторной работы.
Далее откройте созданный вами экземпляр блокнота и откройте блокнот Python 3 из панели запуска:

Для установки Vertex SDK в вашей записной книжке выполните в ячейке следующую команду:
!pip3 install google-cloud-aiplatform --upgrade --user
Затем добавьте в свою записную книжку ячейку для импорта SDK и создания ссылки на только что развернутую конечную точку:
from google.cloud import aiplatform
endpoint = aiplatform.Endpoint(
endpoint_name="projects/YOUR-PROJECT-NUMBER/locations/us-central1/endpoints/YOUR-ENDPOINT-ID"
)
Вам нужно заменить два значения в строке endpoint_name выше на номер вашего проекта и конечную точку. Номер вашего проекта можно найти, перейдя на панель управления проектом и получив значение «Номер проекта».
Идентификатор конечной точки можно найти в разделе «Конечные точки» консоли здесь:

Наконец, сделайте прогноз для вашей конечной точки, скопировав и запустив приведенный ниже код в новой ячейке:
test_instance={
'Time': 80422,
'Amount': 17.99,
'V1': -0.24,
'V2': -0.027,
'V3': 0.064,
'V4': -0.16,
'V5': -0.152,
'V6': -0.3,
'V7': -0.03,
'V8': -0.01,
'V9': -0.13,
'V10': -0.18,
'V11': -0.16,
'V12': 0.06,
'V13': -0.11,
'V14': 2.1,
'V15': -0.07,
'V16': -0.033,
'V17': -0.14,
'V18': -0.08,
'V19': -0.062,
'V20': -0.08,
'V21': -0.06,
'V22': -0.088,
'V23': -0.03,
'V24': 0.01,
'V25': -0.04,
'V26': -0.99,
'V27': -0.13,
'V28': 0.003
}
response = endpoint.predict([test_instance])
print('API response: ', response)
Для класса 0 вы должны увидеть прогноз примерно в .67 , что означает, что модель считает, что существует 67% вероятность того, что эта транзакция не является мошеннической.
🎉 Поздравляем! 🎉
Вы научились использовать Vertex AI для:
- Загрузите управляемый набор данных.
- Обучить и оценить модель на табличных данных с помощью AutoML.
- Разверните модель на конечной точке.
- Получайте прогнозы на конечной точке модели с помощью SDK для Vertex.
Чтобы узнать больше о различных компонентах Vertex AI, ознакомьтесь с документацией .
9. Уборка
Если вы хотите продолжить использовать созданный в этой лабораторной работе блокнот, рекомендуется выключать его, когда он не используется. В пользовательском интерфейсе Workbench в вашей облачной консоли выберите блокнот, а затем нажмите «Остановить» .
Если вы хотите полностью удалить блокнот, просто нажмите кнопку «Удалить» в правом верхнем углу.
Чтобы удалить развернутую вами конечную точку, перейдите в раздел «Конечные точки» в консоли Vertex AI и удалите модель с этой конечной точки:

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