FraudFinder:通过 Vertex AI 和 BigQuery 将原始数据用于 AI。

1. 概览

在本实验中,您将学习如何在 Google Cloud 中构建从端到端数据到 AI 的系统,以实现实时欺诈检测。学习的目标是了解如何基于原始数据设计可在 Google Cloud 上运行的生产型机器学习流水线。本实验使用以下 Google Cloud 产品:

您将学到的内容

构建端到端机器学习流水线可能颇具挑战性。在本实验中,您将学习如何使用 BigQuery 和 Vertex AI 等 Google Cloud 服务来构建和扩缩端到端机器学习流水线。我们将带您了解如何在生产环境中基于原始数据设计 AI。本实验的大致学习目标如下:

  • 了解在 Google Cloud 上构建基于数据的 AI 系统的最佳实践。
  • 了解如何通过使用 SQL 的 BigQuery(用于批处理)和使用 Dataflow 的 Apache Beam(用于实时处理)实现特征工程,以及如何使用 Vertex AI Feature Store。
  • 如何使用 BigQuery 和 Python 库(如 Pandas 和 Plotly)进行数据分析。
  • 如何通过 SQL 使用 BigQuery ML 训练机器学习模型。
  • 如何利用 Vertex AI 存储、部署和监控模型。
  • 如何使用 Vertex AI Pipelines 将数据标准化为 AI 工作流。

重要提示:在 Google Cloud 上运行此实验的费用约为 100 美元

2. 通过 Vertex AI 和 BigQuery 将原始数据用于 AI

本实验涵盖 Vertex AIBigQuery ML 等 Google Cloud 上提供的最新数据分析和 AI 产品。Vertex AI 和 BigQuery 可让您更轻松地基于原始数据设计 AI,并提供无缝的开发体验,帮助您更高效地将模型投入生产环境。如需任何支持,请参阅支持页面

Vertex AI 包含许多不同的产品,可支持端到端数据到 AI 工作流。下面简要介绍了所有 Vertex AI 功能:

Vertex 产品概览

3. FraudFinder 使用场景和数据

FraudFinder 是一系列笔记本,它们通过实时欺诈检测用例来教导 Google Cloud 上的 AI 历程。在整个笔记本中,您将学习如何读取存储在数据仓库中的历史付款交易数据、从新交易的实时流中读取数据、执行探索性数据分析 (EDA)、执行特征工程、将特征注入到特征存储区中、使用特征存储区训练模型、在模型注册表中注册模型、评估模型、将模型部署到端点、使用特征存储区对模型进行实时推断,以及监控模型。

欺诈检测涵盖分类和异常值检测,可以说是机器学习中的广泛领域。这使得欺诈检测成为了易于理解的真实案例的一个好用例,也是在 Google Cloud 上向 AI 架构展示和端到端数据的绝佳方式。您无需成为欺诈专家,即可了解端到端架构。此架构模式可应用于其他用例。

下面概述了 FraudFinder 架构:

FraudFinder 架构

数据集

数据集通过使用信用卡欺诈检测机器学习 - Kaggle 的实践手册中的代码合成。实时欺诈检测在架构上与基于批量的欺诈检测不同,其特征如下:

  • 高频(例如每秒 1000 个)预测请求
  • 预测请求与响应之间的延迟时间较短(例如不到 1 秒)
  • 通常,每个预测请求会有 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

接下来,通过复制和粘贴在您的 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 实例

接下来,前往 Cloud 控制台的 Vertex AI 部分。然后,转到 Workbench:

Vertex AI 菜单

启用 Vertex AI Workbench (Notebook API) API(如果尚未启用)。

Notebook_api

启用后,选择用户管理的笔记本

Notebooks_UI

然后选择新建笔记本。 您可以选择 Python 3。

new_notebook

为您的笔记本命名(例如 fraudfinder),然后点击高级设置

create_notebook

重要提示:请务必在 Permissions 下选择 Service Account

服务帐号

重要提示:在“安全性”下,选择“启用终端”(如果尚未启用)。

enable_terminal

您可以保留所有其他高级设置。

接下来,点击创建。预配实例需要几分钟时间。

创建实例后,选择打开 JupyterLab

open_jupyterlab

第 3 步:设置 IAM 角色

为简单起见,假设您将使用 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 代码库克隆到笔记本实例中。运行 git clone 后,在左侧的笔记本实例中,您会看到 fraudfinder 文件夹。现在,转到 fraudfinder 文件夹。您可以在此处找到本实验所需的笔记本。

在接下来的部分中,您应该按照笔记本中的说明操作。请继续设置环境。

5. 环境设置

本部分介绍了帮助您设置项目环境的步骤。在本部分中,您将了解以下学习目标:

  • 设置您的环境,包括软件包。
  • 将数据加载到 BigQuery 中。
  • 从公共 Pub/Sub 主题读取数据。

请继续使用以下笔记本,并按照说明逐步操作:

  • 00_environment_setup.ipynb

6. 探索性数据分析

本部分将介绍如何执行探索性数据分析,以更好地了解欺诈数据。在本部分中,您将了解以下学习目标:

  • 使用 SQL 从 BigQuery 中提取和探索数据
  • 使用 BigQuery 和 Plotly 绘制交易数据图表
  • 应用数据汇总并创建一个散点图

请继续使用下一个笔记本,并按照说明逐步操作:

  • 01_exploratory_data_analysis.ipynb

7. 特征工程批量处理和流式处理

在本部分中,您将处理特征工程,以根据原始数据生成用于模型训练的特征。我们将使用批量处理和流式处理。在欺诈检测方面,这两种使用场景都很重要。在本部分中,您将了解以下学习目标:

  • 如何使用 BigQuery 和 SQL 创建特征
  • 创建 Vertex AI Feature Store 并插入数据
  • 如何处理流式数据并将其注入 Feature Store

请继续依次使用以下两个笔记本,并按照笔记本中的说明操作:

  • 02_feature_engineering_batch.ipynb
  • 03_feature_engineering_streaming.ipynb

8. 模型训练、预测、形式化和监控

在本部分中,您将训练和部署您的第一个 BigQuery Model 模型,以检测可能出现的欺诈情形。您还将学习如何获取训练和部署代码,并将其正式化为一个自动化流水线。您还将学习如何在生产环境中执行在线预测和监控模型。在本部分中,您将了解以下学习目标:

  • 如何训练 BigQuery ML 模型并在 Vertex AI 模型注册表中注册该模型
  • 在 Vertex AI 上将模型部署为端点
  • 如何使用 Vertex AI SDK
  • 如何使用 BigQuery ML 模型和创建端到端机器学习流水线
  • 如何使用 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 上构建 AI 架构数据!

9. 清理

我们建议您针对新项目运行此实验。本实验涵盖许多不同的产品,完成实验后删除整个项目很简单。您可以参阅我们的文档,详细了解如何删除项目。

如果您想删除服务,请按照笔记本中的说明操作或者删除所创建的资源。