FraudFinder: De los datos sin procesar a la IA con Vertex AI y BigQuery

1. Descripción general

En este lab, aprenderás a crear un sistema de datos a IA de extremo a extremo para la detección de fraudes en tiempo real en Google Cloud. El objetivo es comprender cómo pasar de los datos sin procesar a una canalización del AA lista para la producción que se ejecuta en Google Cloud. En este lab, se usan los siguientes productos de Google Cloud:

Qué aprenderás

Crear canalizaciones del AA de extremo a extremo puede ser un proceso desafiante. En este lab, aprenderás a crear y escalar canalizaciones del AA de extremo a extremo mediante los servicios de Google Cloud como BigQuery y Vertex AI. Te llevaremos por un viaje en el que descubrirás cómo pasar los datos sin procesar a una IA en producción. Los objetivos de aprendizaje de alto nivel son los siguientes:

  • Aprender las prácticas recomendadas para crear sistemas de datos a IA en Google Cloud
  • Aprender a realizar la ingeniería de atributos con BigQuery mediante SQL (para el procesamiento por lotes) y Apache Beam con Dataflow (procesamiento en tiempo real), y usar Vertex AI Feature Store
  • Cómo realizar análisis de datos mediante las bibliotecas de BigQuery y Python, como Pandas y Plotly
  • Cómo entrenar un modelo de AA con BigQuery ML mediante SQL
  • Cómo aprovechar Vertex AI para almacenar, implementar y supervisar tu modelo
  • Cómo usar Vertex AI Pipelines para formalizar tu flujo de trabajo de datos a IA

IMPORTANTE: El costo de la ejecución de este lab en Google Cloud es de aproximadamente $100.

2. De los datos sin procesar a la IA con Vertex AI y BigQuery

En este lab, se abarcan los productos más recientes de IA y análisis de datos disponibles en Google Cloud, como Vertex AI y BigQuery ML. Vertex AI y BigQuery te permiten pasar de los datos sin procesar a la IA fácilmente, y te ofrecen una experiencia de desarrollo sin complicaciones que te ayudará a potenciar tu productividad cuando pongas tus modelos en producción. Si necesitas ayuda, consulta la página de asistencia.

Vertex AI incluye muchos productos distintos para respaldar flujos de trabajo de datos a IA de extremo a extremo. Aquí tienes una descripción general de todas las capacidades de Vertex AI:

Descripción general del producto Vertex

3. Caso de uso y datos de FraudFinder

FraudFinder consiste en una serie de notebooks que enseñan el recorrido completo de los datos a la IA en Google Cloud mediante un caso de uso relacionado con la detección de fraudes en tiempo real. Con estos notebooks, aprenderás a leer datos históricos de transacciones de pagos almacenados en un almacén de datos, a leer desde un flujo en tiempo real de transacciones nuevas, a realizar análisis exploratorios de datos (EDA), a poner en marcha la ingeniería de atributos, a transferir atributos a un Feature Store, a entrenar un modelo mediante Feature Store, a registrar tu modelo en un registro de modelos, a evaluar el modelo y a implementarlo en un extremo, a realizar inferencias en tiempo real sobre tu modelo con Feature Store y a supervisarlo.

La detección de fraudes incluye la clasificación y la detección de anomalías, dos campos muy amplios dentro del aprendizaje automático. Por eso se constituye como un buen caso de uso aplicado a una historia real fácil de comprender y con potencial para demostrar una arquitectura de datos a IA de extremo a extremo en Google Cloud. No es necesario que tengas experiencia en fraudes para comprender la arquitectura de extremo a extremo. El patrón de la arquitectura se puede aplicar a otros casos de uso.

Aquí tienes una descripción general sobre la arquitectura de FraudFinder:

Arquitectura de FraudFinder

Conjunto de datos

El conjunto de datos se sintetiza mediante el código que se extrae del Manual de proyectos de Kaggle relacionado con el uso del aprendizaje automático para la detección de fraudes de tarjetas de crédito. A nivel de la arquitectura, la detección de fraudes en tiempo real es diferente de la detección de fraudes basada en lotes y tiene las siguientes características:

  • Alta frecuencia (p. ej., 1,000 por segundo) de solicitudes de predicción
  • Baja latencia (p. ej., menos de 1 s) de solicitudes de predicción → respuesta
  • La predicción suele ser de 1 muestra por solicitud de predicción o en “microlotes” (p. ej., 1,000 transacciones enviadas como un lote para realizar inferencias casi en tiempo real)
  • La entrega de ingeniería de atributos por deriva se debe procesar con anticipación o en tiempo real

Conjunto de datos histórico de FraudFinder

Existen tablas públicas de BigQuery con transacciones de pagos históricas para que los usuarios entrenen sus modelos y practiquen la ingeniería de atributos con datos en 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)

¿Por qué en tiempo real?

En este lab, aprenderás a aprovechar los datos en tiempo real y a aplicar ingeniería de atributos e inferencias en tiempo real. Las funciones en tiempo real pueden ayudar a tu modelo a mejorar aprovechando los indicadores que no hubieras podido usar durante la inferencia.

Transmisión de datos en vivo de FraudFinder

Dentro del lab de FraudFinder, se incluyen temas públicos de Pub/Sub con un flujo en tiempo real de transacciones de pagos para que los usuarios puedan probar los extremos de sus modelos y sus funciones de transmisión de forma conveniente. Pub/Sub es un servicio de mensajería escalable y asíncrono. Usarás estos temas para transmitir funciones y realizar inferencias en línea. Los usuarios también pueden alternar entre temas con un porcentaje de fraude bajo un modelo de referencia y otros más elevados para visualizar la supervisión de modelos. Están disponibles los siguientes temas públicos de Pub/Sub:

  • ff-tx
  • ff-txlabels

4. Configura tu instancia de proyecto y de notebook

Para ejecutar este lab, necesitarás un proyecto de Google Cloud Platform que tenga habilitada la facturación. Sigue las instrucciones para crear un proyecto.

IMPORTANTE: Te recomendamos ejecutar este lab en un proyecto nuevo. En este lab, descubrirás muchos productos diferentes, por lo que es más fácil borrar todo el proyecto luego de terminar el lab.

Cuando tengas listo el proyecto, sigue estos pasos que, además, encontrarás en el archivo README.md del repositorio.

Paso 1: Habilita las APIs

Primero, ve al proyecto que acabas de crear y abre Cloud Shell. Este paso puede demorar unos minutos porque aprovisionará un entorno de Cloud Shell nuevo, si es que no lo habilitaste antes.

Cloud Shell

Luego, copia y pega este código en Cloud Shell para ejecutarlo. La secuencia de comandos habilitará las APIs necesarias y creará suscripciones a Pub/Sub para leer transacciones de transmisión desde temas públicos de Pub/Sub. Debes esperar un tiempo para que se ejecuten todos los comandos.

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'

Paso 2: Crea una instancia de Vertex AI Workbench

Navega hasta la sección de Vertex AI en la consola de Cloud. Luego, ve a Workbench de la siguiente forma:

Menú Vertex AI

Habilita la API de Vertex AI Workbench (API de notebook) si no está habilitada.

Notebook_api

Después de habilitarla, selecciona NOTEBOOKS ADMINISTRADOS POR EL USUARIO (USER-MANAGED NOTEBOOKS):

Notebooks_UI

Luego, selecciona NUEVO NOTEBOOK (NEW NOTEBOOK). Puedes elegir Python 3.

new_notebook

Asígnale un nombre al notebook, como fraudfinder y, luego, haz clic en Configuración avanzada (Advanced settings).

create_notebook

Importante: Asegúrate de seleccionar Service Account en Permissions.

Cuenta de servicio

Importante: En Seguridad (Security), selecciona la opción “Habilitar terminal” (Enable terminal) si aún no está habilitada.

enable_terminal

Puedes dejar el resto de la configuración avanzada tal como está.

Luego, haz clic en Crear. La instancia tardará algunos minutos en aprovisionarse.

Una vez que se crea la instancia, selecciona Abrir JupyterLab (Open JupyterLab).

open_jupyterlab

Paso 3: Define los roles de IAM

Para simplificar, imagina que usarás la cuenta de servicio predeterminada de Compute Engine. Aunque esta no es la práctica recomendada para las cargas de trabajo de producción. Recomendamos crear una cuenta de servicio exclusiva para cada aplicación y evitar el uso de cuentas de servicio predeterminadas. Obtén más información sobre las prácticas recomendadas relacionadas con la cuenta de servicio en nuestra documentación. La cuenta de servicio predeterminada para el procesamiento tendrá una apariencia similar a la siguiente: 123456789123-compute@developer.gserviceaccount.com. Ve al Administrador de IAM y haz clic en ADD. En la vista, busca y selecciona la cuenta de servicio predeterminada de Compute Engine y, luego, asigna los siguientes roles:

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

Se debería ver de forma similar a lo siguiente: No olvides guardar los cambios de la nueva configuración.

iam-roles.png

Paso 4: Clona el repositorio de GitHub

Luego de que hayas creado la instancia de notebook y accedido a ella, debes configurar tu entorno. Primero, abre una ventana de terminal.

Abrir terminal

Copia, pega y ejecuta el siguiente comando en la terminal de tu notebook:

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

Cuando ejecutes este comando, se clonará el repositorio de FraudFinder en tu instancia de notebook. Después de ejecutar git clone, encontrarás la carpeta de fraudfinder en tu instancia de notebook a la izquierda. Ahora navega a la carpeta fraudfinder. Aquí encontrarás los notebooks necesarios para el lab.

A partir de las siguientes secciones, se espera que sigas las instrucciones de los notebooks. Sigue con la configuración del entorno.

5. Configuración del entorno

En esta sección, encontrarás los pasos que te ayudarán a configurar el entorno de tu proyecto, además, aprenderás los siguientes objetivos de aprendizaje:

  • Configurar tu entorno, incluidos los paquetes
  • Cargar datos en BigQuery
  • Leer datos de los temas públicos de Pub/Sub

Sigue las instrucciones paso a paso del siguiente notebook:

  • 00_environment_setup.ipynb

6. Análisis de datos exploratorio

En esta sección, aprenderás a realizar análisis de datos exploratorios para comprender mejor los datos fraudulentos. En esta sección, aprenderás los siguientes objetivos de aprendizaje:

  • Extraer y explorar datos de BigQuery mediante SQL
  • Marcar datos de transacciones mediante BigQuery y Plotly
  • Aplicar agregaciones de datos y crear un diagrama de dispersión

Continúa con el próximo notebook y sigue las instrucciones paso a paso:

  • 01_exploratory_data_analysis.ipynb

7. Ingeniería de atributos por lotes y transmisión

En esta sección, trabajarás en la ingeniería de atributos para generar funciones que te permitan entrenar modelos con los datos sin procesar. Usaremos las transmisiones y los lotes. Ambos casos de uso son importantes para la detección de fraudes. En esta sección, aprenderás los siguientes objetivos de aprendizaje:

  • Cómo crear funciones con BigQuery y SQL
  • Insertar datos y crear un Feature Store de Vertex AI
  • Cómo tratar los datos de transmisión y transferirlos al Feature Store

Consulta los siguientes dos notebooks, en este orden, y sigue las instrucciones que aparecen en ellos:

  • 02_feature_engineering_batch.ipynb
  • 03_feature_engineering_streaming.ipynb

8. Entrenamiento de modelos, predicción, formalización y supervisión

En esta sección, entrenarás y, luego, implementarás tu primer modelo de BigQuery para detectar posibles casos de fraude. También aprenderás a tomar tu código de implementación y entrenamiento, y lo formalizarás en una canalización automatizada. Además, aprenderás a realizar predicciones en línea y a supervisar tu modelo en producción. En esta sección, aprenderás los siguientes objetivos de aprendizaje:

  • Cómo entrenar un modelo de AA de BigQuery y registrarlo en Vertex AI Model Registry
  • Implementar el modelo como un extremo en Vertex AI
  • Cómo usar el SDK de Vertex AI
  • Cómo puedes tomar el modelo de AA de BigQuery y crear una canalización de AA de extremo a extremo
  • Cómo usar la supervisión de modelos de Vertex AI

Consulta los siguientes notebooks, en este orden, y sigue las instrucciones que aparecen en ellos: Encontrarás los notebooks en la carpeta BQML. Sigue los procesos de los notebooks paso a paso:

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

Aprendiste a crear una arquitectura de datos a IA en Google Cloud.

9. Realiza una limpieza

Te recomendamos ejecutar este lab en un proyecto nuevo. En este lab, descubrirás muchos productos diferentes, por lo que es más fácil borrar todo el proyecto luego de terminar el lab. En nuestra documentación puedes encontrar más información para borrar el proyecto.

Si, en su lugar, quieres borrar los servicios, sigue las instrucciones de los notebooks o borra los recursos que creaste.