FraudFinder: Vertex AI와 BigQuery를 사용하여 원시 데이터를 AI로 전환

1. 개요

이 실습에서는 Google Cloud에서 실시간 사기 감지를 위해 엔드 투 엔드 데이터-AI 시스템을 빌드하는 방법을 알아봅니다. 여기에서는 원시 데이터로부터 출발하여 Google Cloud에서 실행되는 프로덕션급 ML 파이프라인을 생성하는 방법을 이해할 수 있습니다. 이 실습에서는 다음 Google Cloud 제품을 사용합니다.

학습할 내용

엔드 투 엔드 ML 파이프라인을 빌드하는 것은 어려운 일일 수 있습니다. 이 실습에서는 BigQuery 및 Vertex AI와 같은 Google Cloud 서비스를 사용하여 엔드 투 엔드 ML 파이프라인을 빌드하고 확장하는 방법을 알아봅니다. 여기에서는 원시 데이터부터 시작하여 프로덕션급 AI를 구축하는 여정을 안내합니다. 이 실습의 주요 학습 목표는 다음과 같습니다.

  • Google Cloud에서 데이터-AI 시스템을 빌드하기 위한 권장사항을 알아봅니다.
  • SQL을 사용하는 BigQuery(일괄 처리)와 Dataflow를 사용하는 Apache Beam(실시간 처리)으로 특성 추출을 수행하고 Vertex AI Feature Store를 사용하는 방법을 알아봅니다.
  • BigQuery와 Pandas 및 Plotly와 같은 Python 라이브러리를 사용하여 데이터 분석을 수행합니다.
  • SQL을 통해 BigQuery ML을 사용하여 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)을 수행하고, 특성 추출을 수행하고, Feature Store로 특성을 수집하고, Feature Store를 사용하여 모델을 학습시키고, 모델 레지스트리에 모델을 등록하고, 모델을 평가하고, 모델을 엔드포인트에 배포하고, Feature Store를 사용해서 모델에서 실시간 추론을 수행하고, 모델을 모니터링하는 방법을 알아봅니다.

사기 감지에는 논쟁의 여지가 있지만 머신러닝에서 광범위한 도메인에 해당하는 분류 및 이상 감지가 포함됩니다. 따라서 사기 감지는 이해하기 쉬운 실제 상황에 대한 유용한 사용 사례로 활용되고 Google Cloud에서 엔드 투 엔드 데이터-AI 전환 구조를 보여줄 수 있는 좋은 방법입니다. 사기 전문가가 아니어도 엔드 투 엔드 아키텍처를 이해할 수 있습니다. 이 아키텍처의 패턴은 다른 사용 사례에도 적용될 수 있습니다.

다음은 FraudFinder 아키텍처의 개요를 보여줍니다.

FraudFinder 아키텍처

데이터 세트

데이터 세트는 신용카드 사기 감지를 위한 머신러닝 - Kaggle 실용 핸드북 프로젝트에서 제공되는 코드를 사용하여 조합되었습니다. 실시간 사기 감지는 일괄 처리 기반의 사기 감지와 구조적으로 다르며 다음과 같은 특성을 지닙니다.

  • 높은 빈도(예: 초당 1,000회)의 예측 요청
  • 낮은 지연 시간(예: 1초 미만)의 예측 요청 → 응답
  • 예측은 일반적으로 예측 요청당 샘플 1개로 이뤄지거나 '마이크로 배치'에 포함될 수 있습니다(예: 거의 실시간 추론을 위해 1,000개의 트랜잭션 일괄 전송)
  • 서비스 제공을 위한 특성 추출은 사전에 계산되거나 실시간으로 계산되어야 합니다.

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

사용 설정되었으면 USER-MANAGED NOTEBOOKS를 선택합니다.

Notebooks_UI

그런 다음 NEW NOTEBOOK을 선택합니다. 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로 수집하는 방법

계속해서 아래 순서로 다음 2개의 노트북 작업을 진행하고 노트북 안내를 따릅니다.

  • 02_feature_engineering_batch.ipynb
  • 03_feature_engineering_streaming.ipynb

8. 모델 학습, 예측, 정규화 및 모니터링

이 섹션에서는 가능한 사기 케이스를 감지하기 위해 첫 번째 BigQuery 모델을 학습 및 배포합니다. 또한 학습 및 배포 코드를 가져와서 이를 자동화된 파이프라인으로 형식화하는 방법을 알아봅니다. 또한 온라인 예측을 수행하고 프로덕션에서 모델을 모니터링하는 방법을 알아봅니다. 이 섹션에서 다루는 학습 목표는 다음과 같습니다.

  • BigQuery ML 모델을 학습하고 Vertex AI Model Registry에 등록하는 방법
  • Vertex AI에서 모델을 엔드포인트로 배포
  • Vertex AI SDK 사용 방법
  • BigQuery ML 모델을 가져와서 엔드 투 엔드 ML 파이프라인을 만드는 방법
  • Vertex AI Model Monitoring 사용 방법

계속해서 아래 순서로 다음 노트북 작업을 진행하고 노트북 안내를 따릅니다. 노트북은 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. 정리

이 실습은 새 프로젝트로 실행하는 것이 좋습니다. 이 실습에는 많은 여러 제품들이 포함되어 있습니다. 실습을 완료한 후 전체 프로젝트를 삭제하는 것이 가장 쉽습니다. 프로젝트 삭제 방법에 대한 자세한 내용은 이 문서를 참조하세요.

대신 서비스를 삭제하려면 해당 노트북 안내를 따르거나 생성한 리소스를 삭제하세요.