콘텐츠로 이동하기
데이터베이스

Cloud Spanner의 Vertex AI 통합기능으로 손쉽게 머신 러닝 모델 활용하기

2022년 12월 13일
Adrian Wisniewski

Staff Software Engineer

Joe Yong

Senior Product Manager

GCP 사용해 보기

$300의 무료 크레딧과 20개 이상의 항상 무료인 제품으로 Google Cloud 사용을 시작해보세요.

무료 체험

* 본 아티클의 원문은 2022년 11월 19일 Google Cloud 블로그(영문)에 게재되었습니다.

Cloud Spanner 는 어떤 규모에서든 업계 최고의 일관성과 가용성을 제공하는 완전 관리 관계형 데이터베이스입니다. 금융, 유통 및 게임 업계의 다양한 규모의 조직들이 Spanner 기반으로 미션크리티컬 애플리케이션을 운영하지만, 현업 부서 (LOB)의 애플리케이션을 효율적으로 운영하는 것만으로는 부족한 경우가 있습니다. 비즈니스 및 고객 이벤트를 더 빠르고 확장 가능한 방식으로 응대하기 위해, 수동 조치에 의존하는 대신 머신러닝 모델을 활용하길 원합니다.  사기 탐지, 시스템 매매(알고리즘 트레이딩) 및 봇 탐지와 같은 작업은 적시성이 중요하며, 작업부하를 예측하기 어렵습니다. 이제 Google Cloud의 머신러닝 플랫폼인 Vertex AI와의 통합을 통해 Spanner에서 간단한 SQL 쿼리문을 활용하여 Vertex AI의 머신러닝 모델을 활용할 수 있습니다. 기본 제공되는 Vertex AI 통합 기능은 현재 미리보기 상태이며, 운영 데이터베이스와 AI를 통합하여 ML모델을 더 간단하게 사용하고 AI기반 애플리케이션을 더 빠르게 구축할 수 있게 합니다.

애플리케이션 개발자는 ML 서비스를 반영하기 위해, 추가적인 학습이나 유지보수 부담 등으로 어려움을 겪었습니다. 또한 Vertex AI와 같은 ML서비스와 상호작용하기 위해, 애플리케이션 내 별도 모듈 또는 별도의 애플리케이션/서비스를 만들어야 했습니다. 

개념적으로, 이러한 별도 모듈은 Vertex AI의 예측 모델로 데이터를 보내고, 결과를 기반으로 의사결정하는 애플리케이션으로 결과값을 전달해야 합니다. 이와 같은 구현방식은 애플리케이션을 확장해야 하고, 의사결정의 대기시간 및 유지관리 영역을 늘어나게 합니다. 반면, Spanner Vertex AI 통합기능으로 개발자는 데이터 사이언티스트가 구축한 모델을 쉽게 액세스하고, 친숙한 SQL문을 사용하여 데이터베이스 트랜잭션 내에 적용할 수 있습니다. 

이는 BigQuery ML이 애플리케이션 내에서 머신러닝 모델을 쉽게 활용할 수 있도록 지원하는 방식과 유사하지만, 중요한 차이점이 있습니다. BigQuery ML이 트랜잭션이 종료된 BigQuery 데이터를 분석하는 것과 달리, Spanner Vertex AI 통합기능은 실시간 트랜잭션내에서 예측을 가능하게 합니다. 사기 탐지 및 악성 플레이어 감지와 같이, 트랜잭션 또는 이벤트 내에서 가능한 최선의 판단이 필요한 사용 사례에 적합합니다. 

Spanner Vertex AI 통합기능은 애플리케이션에 머신러닝을 적용하기 쉽게 하고, 대기시간 및 트랜잭션 잠금시간을 단축하며 잠금 경합을 줄임으로써, 높은 처리량을 가진 트랜잭션 시스템에 이점을 제공합니다.

Vertex AI 통합 시작하기

이번 Vertex AI 통합 기능은 , Vertex AI에 이미 게시된 기존 모델을 쉽게 사용할 수 있도록 했습니다. Vertex AI에 익숙하지 않은 경우, 유튜브 소개 영상테이블 데이터 모델 학습하기 를 확인하시기 바랍니다. 이제 게임회사가 Spanner의 Vertex AI 통합기능을 활용하여 유해 플레이어로부터 사용자와 회사를 보호하는 방법에 대해 알아봅니다.

사용 사례: 유해 플레이어 감지

가상의 게임 및 소셜미디어 회사인 Cymbal 엔터테인먼트는 포럼의 채팅 및 댓글을 포함하여 모든 사용자 활동 정보를 Spanner에 저장합니다. 유해 활동이 발생하는 즉시, 특히 유해한 채팅/댓글에 대해 시스템이 자동으로 조사를 시작하기 원합니다. 또한 플레이어가 게임 내 작성하는 채팅/메세징의 유해한 내용을 감지하길 원합니다. 신고된 사용자의 댓글의 유해수준을 평가하고, 댓글을 게시할 것인지, 사용자 계정을 정지할지 또는 다른 합당한 조치를 취할 것인지 결정해야 합니다.

https://storage.googleapis.com/gweb-cloudblog-publish/images/1_Cloud_Spanner.max-1100x1100.max-1100x1100.png

이는 거의 즉시 수행되어야 하며, 그렇지 않을 경우 언쟁이 벌어질 수 있으며 더 나아가서는 플레이어가 플랫폼을 완전히 떠나게 됩니다. Cymbal 엔터테인먼트는 온라인 괴롭힘에 대한 무관용 원칙에 자부심을 갖고 있으며, 수백만의 다양한 사용자들이 청정한 플랫폼을 칭찬하고 있습니다. 그러나 유해 사용자는 어렵게 얻은 좋은 평판을 해칠 수 있으며, 하룻밤 사이에 비즈니스에 영향을 미칠 수 있습니다. Cymbal 커뮤니티 규모 및 사용자들의 24시간 연중무휴 활동 수준을 고려한다면, 사람이 개입한 솔루션으로는 이러한 이벤트를 방지하는 것이 불가능합니다.

Spanner용 모델 준비

채팅 및 댓글의 유해성 평가 프로세스를 자동화하기 위해서, Cymbal 엔터테인먼트는 머신러닝을 사용합니다. 시스템 내 기존 데이터나 Kaggle의 Toxicity Comment Classification 공개 데이터를 기반으로 Vertex AI 텍스트 분류 가이드를 따라 모델을 학습합니다. 모델 학습 후 Vertex AI 엔드포인트로 배포되면, Spanner에 등록할 수 있습니다.:

로드 중...

ToxicityClassifier 모델은 댓글 텍스트를 입력받아서 2개의 배열을 출력합니다: 이름(displayNames)과 신뢰도(confidences). 전자는 학습 데이터 세트에서 보여지는 모든 라벨을 포함하고, 후자는 상응하는 라벨의 신뢰도 점수를 의미합니다. 다음 예제는 유해한 댓글을 나타냅니다:

https://storage.googleapis.com/gweb-cloudblog-publish/images/2_Cloud_Spanner.max-2000x2000.max-2000x2000.png

인라인 유해성 예측

Comments 테이블에 댓글 데이터를 입력 시, ToxicityClassifier 모델을 활용하여 유해성 등급을 계산할 수 있습니다. 회사 정책에 따라 인신 공격, 심각한 유해성 또는 위협이 포함된 댓글은 플랫폼에서 허용하지 않을 수 있으며, is_banned 플래그를 지정하여 자동으로 차단할 수 있습니다. 유해 수준이 높은 다른 댓글들의 경우도 is_suspicious 플래그를 표기 후 추가 조사를 위해 별도 처리할 수 있습니다. 설명한 이 모든 작업들은 아래 SQL문을 통해 구현할 수 있습니다:

로드 중...

이러한 방식은 단순하며 전반적인 빠른 쿼리 성능을 제공할 뿐만 아니라, 데이터 및 의사결정과 추론을 모두 동일한 단계에서 데이터베이스에 저장할 수 있습니다. 외부 기능을 사용하여 동일한 작업을 수행하려면, 여러 단계 및 여러 데이터베이스 트랜잭션이 필요합니다.

보시다시피 (그리고 직접 사용해 보시면), 머신러닝 기능으로 Cymbal 엔터테인먼트의 애플리케이션을 보강하는 데 필요한 모든 작업은 기존 코드에 몇개의 SQL문을 추가하는 것 뿐입니다. 구독 및 결제 처리팀 또한 결제 사기 감지를 위한 머신러닝 기능을 같은 방식으로 쉽게 구현할 수 있습니다.

가용성과 가격

Spanner의 Vertex AI 통합기능은 현재 미리보기 로 제공되며, Spanner를 사용할 수 있는 모든 리전에서 활용할 수 있습니다. Vertex AI 통합기능을 사용 시 Spanner에는 추가 비용이 없으며, Vertex AI 모델에 액세스할 수 있어야 하고 사용 유형에 따라 Vertex AI 가격이 적용됩니다.

오늘 바로 시작하세요

머신러닝 기능으로 Spanner 애플리케이션을 향상하는 것이 쉬워졌으니, 지금 바로 사용해보시기 바랍니다.

자세한 내용은 이 블로그의 샘플 사례를 사용하거나 공식 문서를 확인 하시기 바랍니다.

https://storage.googleapis.com/gweb-cloudblog-publish/images/3_Cloud_Spanner.max-1100x1100.max-1100x1100.png

게시 위치