FraudFinder: от необработанных данных к искусственному интеллекту с помощью Vertex AI и BigQuery.

1. Обзор

В этой лабораторной работе вы научитесь создавать комплексную систему обработки данных и искусственного интеллекта для обнаружения мошенничества в режиме реального времени на платформе Google Cloud. Цель — понять, как перейти от необработанных данных к готовому к использованию конвейеру машинного обучения, работающему на Google Cloud. В этой лабораторной работе используются следующие продукты Google Cloud:

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

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

  • Узнайте о лучших практиках создания данных для систем искусственного интеллекта в Google Cloud.
  • Узнайте, как выполнять проектирование признаков с помощью BigQuery, используя SQL (для пакетной обработки), и Apache Beam, используя Dataflow (для обработки в реальном времени), а также как использовать Vertex AI Feature Store.
  • Как проводить анализ данных с помощью BigQuery и библиотек Python, таких как Pandas и Plotly.
  • Как обучить модель машинного обучения с помощью BigQuery ML через SQL.
  • Как использовать Vertex AI для хранения, развертывания и мониторинга вашей модели.
  • Как использовать Vertex AI Pipelines для формализации рабочих процессов обработки данных и искусственного интеллекта.

ВАЖНО : Стоимость запуска этой лабораторной работы в Google Cloud составляет около 100 долларов .

2. От необработанных данных к искусственному интеллекту с помощью Vertex AI и BigQuery.

В этом практическом занятии рассматриваются новейшие продукты для анализа данных и искусственного интеллекта, доступные в Google Cloud, такие как Vertex AI и BigQuery ML . Vertex AI и BigQuery упрощают переход от необработанных данных к ИИ и обеспечивают удобный процесс разработки, помогая вам повысить производительность при внедрении ваших моделей в производство. Если вам потребуется поддержка, пожалуйста, обратитесь к странице поддержки .

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

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

3. Пример использования и данные FraudFinder

FraudFinder — это серия блокнотов, обучающих комплексному подходу к использованию данных и искусственного интеллекта в Google Cloud на примере обнаружения мошенничества в реальном времени. В блокнотах вы научитесь считывать исторические данные о платежных транзакциях, хранящиеся в хранилище данных, считывать данные из потока новых транзакций в реальном времени, выполнять разведочный анализ данных (EDA), проектировать признаки, загружать признаки в хранилище признаков, обучать модель с использованием хранилища признаков, регистрировать модель в реестре моделей, оценивать модель, развертывать модель на конечной точке, выполнять вывод в реальном времени с помощью хранилища признаков и отслеживать работу модели.

Обнаружение мошенничества охватывает классификацию и выявление аномалий — обширные области в машинном обучении. Это делает обнаружение мошенничества хорошим примером применения в реальной, легко понятной ситуации и отличным способом продемонстрировать сквозную архитектуру данных для ИИ в Google Cloud. Для понимания сквозной архитектуры не обязательно быть экспертом по борьбе с мошенничеством. Шаблон архитектуры может быть применен и к другим задачам.

Ниже представлен обзор архитектуры FraudFinder:

Архитектура FraudFinder

Набор данных

Набор данных синтезирован с использованием кода из проекта Machine Learning for Credit Card Fraud Detection - Practical Handbook на Kaggle . Обнаружение мошенничества в реальном времени архитектурно отличается от пакетного обнаружения мошенничества и характеризуется следующими особенностями:

  • Высокая частота (например, 1000 в секунду) запросов на прогнозирование
  • Низкая задержка (например, < 1 сек) между запросом на прогнозирование и ответом.
  • Прогнозирование обычно выполняется для каждого отдельного образца за один запрос на прогнозирование или может осуществляться "микропакетами" (например, 1000 транзакций, отправленных одним пакетом для вывода результатов практически в реальном времени).
  • Разработка признаков для обслуживания должна осуществляться либо предварительно, либо в режиме реального времени.

Исторический набор данных FraudFinder

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

cymbal-fraudfinder (project)
|-`tx` (dataset)  
  |-`tx` (table: transactions without labels)  
  |-`txlabels` (table: transactions with fraud labels (1 or 0))  
|-demographics  
  |-`customers` (table: profiles of customers)  
  |-`terminals` (table: profiles of terminals)  
  |-`customersterminals` (table: profiles of customers and terminals within their radius)  

Почему именно в режиме реального времени?

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

FraudFinder: данные в режиме реального времени, потоковая передача

В рамках лаборатории FraudFinder доступны общедоступные темы Pub/Sub с потоковой передачей платежных транзакций в реальном времени, позволяющие пользователям удобно тестировать конечные точки своих моделей и передавать данные о функциях. Pub/Sub — это асинхронный и масштабируемый сервис обмена сообщениями. Вы будете использовать эти темы для потоковой передачи данных о функциях и выполнения онлайн-вывода. Пользователи также могут переключаться между темами с базовым уровнем и более высокими показателями мошенничества для отображения мониторинга модели. Доступны следующие общедоступные темы Pub/Sub:

  • ff-tx
  • ff-txlabels

4. Настройте свой проект и экземпляр блокнота.

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

ВАЖНО : Мы рекомендуем выполнять это лабораторное задание в новом проекте. В этом задании рассматривается множество различных продуктов, и проще всего будет удалить весь проект после завершения задания.

Когда у вас будет готов проект, пожалуйста, выполните следующие шаги. Эти шаги также описаны в файле README.md , который находится в репозитории.

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

Сначала перейдите к только что созданному проекту и откройте Cloud Shell . Этот шаг может занять несколько минут, поскольку будет создан новый Cloud Shell, если вы его еще не активировали.

Облачная оболочка

Далее выполните следующий код в вашей оболочке Cloud Shell, скопировав и вставив его. Скрипт активирует необходимые API и создаст подписки Pub/Sub для чтения потоковых транзакций из общедоступных тем Pub/Sub. Пожалуйста, подождите некоторое время, пока выполнятся все команды.

gcloud services enable notebooks.googleapis.com
gcloud services enable cloudresourcemanager.googleapis.com
gcloud services enable aiplatform.googleapis.com
gcloud services enable pubsub.googleapis.com
gcloud services enable run.googleapis.com
gcloud services enable cloudbuild.googleapis.com
gcloud services enable dataflow.googleapis.com
gcloud services enable bigquery.googleapis.com

gcloud pubsub subscriptions create "ff-tx-sub" --topic="ff-tx" --topic-project="cymbal-fraudfinder"
gcloud pubsub subscriptions create "ff-txlabels-sub" --topic="ff-txlabels" --topic-project="cymbal-fraudfinder"

# Run the following command to grant the Compute Engine default service account access to read and write pipeline artifacts in Google Cloud Storage.
PROJECT_ID=$(gcloud config get-value project)
PROJECT_NUM=$(gcloud projects list --filter="$PROJECT_ID" --format="value(PROJECT_NUMBER)")
gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:${PROJECT_NUM}-compute@developer.gserviceaccount.com"\
      --role='roles/storage.admin'

Шаг 2: Создайте экземпляр Vertex AI Workbench.

Далее перейдите в раздел Vertex AI в вашей облачной консоли. Затем перейдите в Workbench:

Меню Vertex AI

Включите API Vertex AI Workbench (API для ноутбуков), если он еще не включен.

Notebook_api

После включения выберите «Управляемые пользователем блокноты» :

Notebooks_UI

Затем выберите «Новый блокнот» . Вы можете выбрать Python 3.

новый_ноутбук

Дайте своему блокноту имя, например, fraudfinder , а затем нажмите «Расширенные настройки» .

создать_блокнот

Важно : Убедитесь, что в разделе Permissions выбрана Service Account .

Сервисный аккаунт

Важно : В разделе «Безопасность» выберите «Включить терминал», если он еще не включен.

enable_terminal

Все остальные расширенные настройки можно оставить без изменений.

Далее нажмите «Создать» . Создание экземпляра займет несколько минут.

После создания экземпляра выберите «Открыть JupyterLab» .

open_jupyterlab

Шаг 3: Настройка ролей IAM

Для простоты предположим, что вы будете использовать учетную запись службы Compute Engine по умолчанию. Это не является лучшей практикой для производственных нагрузок. Лучшей практикой является создание отдельных учетных записей служб для каждого приложения и отказ от использования учетных записей служб по умолчанию. Подробнее о лучших практиках использования учетных записей служб можно прочитать в нашей документации . Учетная запись службы Compute Engine по умолчанию будет выглядеть примерно так: 123456789123-compute@developer.gserviceaccount.com . Перейдите в раздел администрирования IAM и нажмите ADD . В представлении найдите и выберите учетную запись службы Compute Engine по умолчанию, а затем назначьте следующие роли:

  • BigQuery Admin
  • Storage Admin
  • Storage Object Admin
  • Vertex AI Administrator
  • Pub/Sub Admin

Это должно выглядеть примерно так. Не забудьте сохранить новые настройки!

iam-roles.png

Шаг 4: Клонируйте репозиторий Github.

После создания и доступа к экземпляру ноутбука пришло время настроить среду. Сначала откройте окно терминала.

Открыть терминал

Скопируйте, вставьте и выполните следующую команду в терминале вашего ноутбука:

git clone https://github.com/GoogleCloudPlatform/fraudfinder.git

Выполнение этой команды клонирует репозиторий FraudFinder в ваш экземпляр Notebook. После выполнения команды git clone вы найдете папку fraudfinder в вашем экземпляре Notebook слева. Теперь перейдите в папку fraudfinder . Здесь вы найдете Notebooks, необходимые для лабораторной работы.

Начиная со следующих разделов, вам необходимо следовать инструкциям в блокнотах. Пожалуйста, продолжайте настройку среды.

5. Настройка среды

В этом разделе будут рассмотрены шаги по настройке среды вашего проекта. В этом разделе вы изучите следующие учебные цели:

  • Настройте свою среду, включая пакеты.
  • Загрузите данные в BigQuery.
  • Прочитайте данные из общедоступных тем Pub/Sub.

Пожалуйста, продолжайте работу с приведенной ниже тетрадью, следуя инструкциям шаг за шагом:

  • 00_environment_setup.ipynb

6. Исследовательский анализ данных

В этом разделе вы научитесь проводить разведочный анализ данных для лучшего понимания информации о мошенничестве. В этом разделе вы достигнете следующих учебных целей:

  • Извлечение и анализ данных из BigQuery с помощью SQL.
  • Построение графиков данных о транзакциях с использованием BigQuery и Plotly.
  • Примените агрегирование данных и постройте диаграмму рассеяния.

Пожалуйста, перейдите к следующему блокноту и следуйте инструкциям шаг за шагом:

  • 01_exploratory_data_analysis.ipynb

7. Пакетная и потоковая обработка данных при разработке признаков.

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

  • Как создавать объекты с помощью BigQuery и SQL
  • Создайте хранилище признаков Vertex AI и вставьте в него данные.
  • Как обрабатывать потоковые данные и загружать их в хранилище признаков (Feature Store)

Пожалуйста, продолжайте работу с двумя следующими тетрадями в указанном порядке, следуя инструкциям в каждой из них:

  • 02_feature_engineering_batch.ipynb
  • 03_feature_engineering_streaming.ipynb

8. Обучение модели, прогнозирование, формализация и мониторинг.

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

  • Как обучить модель машинного обучения BigQuery и зарегистрировать её в реестре моделей Vertex AI.
  • Разверните модель в качестве конечной точки на платформе Vertex AI.
  • Как использовать SDK Vertex AI
  • Как можно использовать модель машинного обучения BigQuery для создания комплексного конвейера машинного обучения
  • Как использовать систему мониторинга моделей Vertex AI

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

  • 04_model_training_and_prediction.ipynb
  • 05_model_training_pipeline_formalization.ipynb
  • 06_model_monitoring.ipynb
  • 07_model_inference.ipynb
🎉 Congratulations! 🎉

Вы научились создавать архитектуру для преобразования данных в искусственный интеллект в Google Cloud!

9. Уборка

Мы рекомендуем вам запустить эту лабораторную работу в новом проекте. Эта лабораторная работа охватывает множество различных продуктов, поэтому проще всего удалить весь проект после завершения работы. В нашей документации вы найдете более подробную информацию о том, как удалить проект.

Если вы хотите удалить службы, следуйте инструкциям в блокнотах или удалите созданные ресурсы.