주요 컨텐츠로 이동
Engineering blog

데이터브릭스 Feature Serving 정식 출시(GA)

이 포스트 공유하기

(번역: Youngkyong Ko) Original Post

오늘, 피처 서빙(Feature Serving)의 정식 출시를 발표하게 되어 기쁩니다. 피처는 AI 애플리케이션에서 중추적인 역할을 담당하며, 정확하게 계산하고 짧은 지연 시간으로 액세스할 수 있도록 하기 위해 일반적으로 상당한 노력이 필요합니다. 이러한 복잡성으로 인해 프로덕션 환경에서 애플리케이션의 품질을 개선하기 위한 새로운 기능을 도입하기가 더 어려워집니다. 이제 피처 서빙을 사용하면 번거로운 인프라 관리 없이도 단일 REST API를 사용하여 AI 애플리케이션에 사전 계산된 피처를 쉽게 제공할 뿐만 아니라 온디맨드 피처를 실시간으로 계산할 수 있습니다!

우리는 빠르고 안전하며 사용하기 쉽게 피처 서빙을 설계하였으며, 이는 다음과 같은 이점을 제공합니다:

  • 낮은 TCO로 빠르게 피처 제공 - 피처 서빙은 낮은 TCO로 고성능을 제공하도록 설계되어 밀리초의 지연 시간 내에 피처를 제공할 수 있습니다.
  • 피처 체인 - 사전 계산된 피처와 온디맨드 계산의 체인을 지정하여 복잡한 실시간 피처의 계산을 더 쉽게 지정할 수 있습니다.
  • 통합 거버넌스 - 사용자는 기존 보안 및 거버넌스 정책을 사용하여 데이터와 ML 자산을 관리하고 통제할 수 있습니다.
  • 서버리스 - 피처 서빙은 온라인 테이블을 활용하므로, 별도의 리소스를 관리하거나 프로비저닝할 필요가 없습니다.
  • 학습-서빙 왜곡 감소 - 학습과 추론에 사용되는 피처가 정확히 동일한 변환을 거쳤는지 보장하여 흔히 발생하는 오류 유형을 제거합니다.

이 블로그에서는 피처 서빙의 기본 사항을 살펴보고, 데이터브릭스 온라인 테이블로 간소화된 사용자 여정에 대한 자세한 내용을 공유하며, 고객들이 다양한 AI 사용 사례에서 이를 어떻게 사용하고 있는지 살펴 보겠습니다.

피처 서빙이란?

피처 서빙은 개인화된 추천, 고객 서비스 챗봇, 사기 탐지, 복합 생성형 AI 시스템과 같은 실시간 AI 애플리케이션을 구축하기 위해 사전 계산 또는 온디맨드로 ML 피처를 제공하도록 설계된 저지연 실시간 서비스입니다. 피처는 머신러닝 모델에 의미 있는 신호를 생성하는데 사용할 목적으로 원시 데이터를 변환한 것입니다.

이전 블로그 게시물에서는 세 가지 유형의 피처 연산 아키텍처에 대해 설명했습니다: 배치, 스트리밍, 온디맨드입니다. 이러한 피처 연산 아키텍처는 두 가지 범주의 피처로 이어집니다:

  • 사전 계산된 피처 - 일괄 처리 또는 스트리밍 방식으로 사전 계산된 피처는 예측 요청이 발생하기 전에 계산되어 Unity Catalog의 오프라인 델타 테이블에 저장되어 모델 훈련에 사용되고 추론을 위해 온라인으로 제공될 수 있습니다.
  • 온디맨드 피처 - 추론 시점에만, 즉 모델에 대한 요청과 동시에 계산할 수 있는 피처의 경우 "즉시" 계산이 필요합니다. 이러한 피처들은 일반적으로 사용자의 실시간 위치와 같은 요청 시점의 컨텍스트, 사전 계산된 피처 또는 이 두 가지의 연쇄 계산을 사용하여 생성됩니다.

피처 서빙(AWS | Azure)을 사용하면 실시간 AI 애플리케이션에서 두 가지 유형의 피처를 모두 밀리초 단위의 지연 시간으로 사용할 수 있습니다. 피처 서빙은 다양한 사용 사례에서 활용할 수 있습니다:

  • 추천 - 실시간 컨텍스트 인식(context-aware) 피처를 통해 개인화된 추천 제공
  • 사기 탐지 - 실시간 신호로 사기 거래를 식별하고 추적
  • RAG 애플리케이션 - RAG 애플리케이션에 컨텍스트 신호 제공

피처 서빙을 사용하는 고객은 피처 제공을 위한 운영 부담을 걱정할 필요 없이, 더 많은 피처들을 실험하여 AI 애플리케이션의 품질을 개선하는 데 더 집중할 수 있게 되었습니다.

데이터브릭스 피처서빙의 간편한 온라인 서비스 환경 덕분에 고객을 위한 추천 시스템을 쉽게 구현할 수 있었습니다. 모델 학습에서 모든 고객을 위한 개인화된 추천 배포로 신속하게 전환할 수 있었습니다. 피처 서빙을 통해 고객에게 관련성이 높은 추천을 제공하고, 확장성 요건을 손쉽게 처리하며, 프로덕션 수준의 안정성을 확보할 수 있었습니다. 덕분에 우리의 주요 전문 분야인 개인화된 추천에 집중할 수 있었습니다!
— 미리나 곤잘레스 로드리게스, Yape Peru의 데이터 운영 기술 책임자

데이터브릭스 데이터 인텔리전스 플랫폼과 자연스럽게 통합

피처 서빙은 데이터브릭스 데이터 인텔리전스 플랫폼과 자연스럽게 통합되어, ML 개발자가 데이터브릭스 온라인 테이블(AWS | Azure)(현재 공개 프리뷰 중)을 사용하여 모든 델타 테이블에 저장된 사전 계산된 피처들을 밀리초의 지연 시간으로 쉽게 액세스할 수 있게 해줍니다. 이는 피처를 온라인으로 제공하고 지속적으로 업데이트하기 위해 별도의 데이터 수집 파이프라인 세트를 유지 관리할 필요가 없는 간단한 솔루션을 제공합니다.

데이터브릭스 자동 피처 조회와 모델 서빙의 실시간 계산을 통해 유동성 데이터 관리를 혁신하여 수많은 고객의 결제 경험을 개선했습니다. 온라인 테이블과의 통합을 통해 실시간 시장 데이터 포인트를 기반으로 계정 유동성 수요를 정확하게 예측할 수 있게 되어 Databricks 에코시스템 내에서 운영을 간소화할 수 있게 되었습니다. 데이터브릭스 온라인 테이블은 자체 인프라를 관리할 필요 없이 통합된 경험을 제공할 뿐만 아니라 실시간 예측을 위한 대기 시간을 단축해 주었습니다! 
— 존 웨드로고스키, Ripple 응용과학 선임 매니저

간단한 4단계로 피처 서빙 엔드포인트를 만들고 이를 사용하여 실시간 필터링을 수행하는 호텔 추천 챗봇의 예를 살펴보겠습니다.

RAG

이 예제에서는 사전 계산된 오프라인 피처들이 있는 main.travel.hotel_prices라는 델타 테이블, 그리고 할인이 적용된 총 가격을 계산하는 main.travel.compute_hotel_total_prices라는 함수가 Unity Catalog에 등록되어 있다고 가정합니다. 온디맨드 함수를 등록하는 방법에 대한 자세한 내용은 여기에서 확인할 수 있습니다(AWS|Azure).

1단계. UI 또는 REST API/SDK를 사용하여 main.travel.hotel_prices에 저장된 사전 계산된 피처를 쿼리할 온라인 테이블을 생성합니다(AWS|Azure).

create online table

from databricks.sdk import WorkspaceClient

from databricks.sdk.service.catalog import *

w = WorkspaceClient()

# Create an online table

spec = OnlineTableSpec(

       primary_key_columns = ["hotel_id"],

       source_table_full_name = "main.travel.hotel_prices",

       run_triggered=OnlineTableSpecTriggeredSchedulingPolicy.from_dicr({'triggered': 'true'}),

       perform_full_copy=True)

w.online_tables.create(name='main.travel.hotel_prices_online', spec=spec)

2단계. 피처 서빙 엔드포인트(AWS | Azure)에서 제공하려는 ML 신호를 지정하는 FeatureSpec을 생성합니다.

FeatureSpec은 다음과 같이 구성할 수 있습니다:

  • 사전 계산된 데이터를 조회
  • 온디맨드 피처 계산
  • 사전 계산된 피처와 온디맨드 피처를 모두 사용한 연쇄 피처 생성(chained featurization)

여기서는 먼저 사전 계산된 호텔 가격을 조회한 다음, 사용자의 위치와 숙박 일수에 대한 할인을 기반으로 총 가격을 계산하여 연쇄 피처를 계산하고자 합니다.

Calculate Total Price

from databricks.feature_engineering import FeatureLookup, FeatureFunction

features=[
   FeatureLookup(
      table_name="main.travel.hotel_prices",
      lookup_key="hotel_id"
   ),

   FeatureFunction(
   udf_name="main.travel.compute_hotel_total_prices",
      output_name="distance",
      input_bindings={
         "hotel_price": "hotel_price",
         "num_days": "num_days",
         "user_latitude": "user_latitude",
         "user_longitude": "user_longitude"
      },
   ),
]

feature_spec_name = "main.travel.hotel_price_spec"
fe.create_feature_spec(name=feature_spec_name, features=features, exclude_columns=None)

3단계. UI 또는 REST API/SDK (AWS | Azure)를 사용하여 피처 서빙 엔드포인트를 생성합니다.

서버리스 인프라는 호텔 피처 엔드포인트를 위한 서버를 관리할 필요 없이 워크플로에 맞게 자동으로 확장됩니다. 이 엔드포인트는 2단계의 FeatureSpec과 1단계에서 설정한 온라인 테이블에서 가져온 데이터를 기반으로 피처들을 반환합니다.

ReturnFeatures

from databricks.sdk import WorkspaceClient
from databricks.sdk.service.serving import EndpointCoreConfigInput, ServedEntityInput

# Wait until the endpoint is ready
workspace.serving_endpoints.create_and_wait(
   name="hotel-price-endpoint",
   config = EndpointCoreConfigInput(
      served_entities=[
      ServedEntityInput(
         entity_name="main.travel.hotel_price_spec",
         scale_to_zero_enabled=True,
         workload_size="Small"
      )]
   )
)

4단계. 피처 서빙 엔드포인트가 준비되면 UI 또는 REST API/SDK를 사용하여 기본 키(primary key)와 컨텍스트 데이터를 사용하여 쿼리할 수 있습니다.

import mlflow.deployments

client = mlflow.deployments.get_deploy_client("databricks")
response = client.predict(
   endpoint=endpoint_name,
   inputs={ 
      "dataframe_records": [
         {"hotel_id": 1, "num_days": 10, "user_latitude": 598, "user_longitude": 280},
         {"hotel_id": 2, "num_days": 10, "user_latitude": 598, "user_longitude": 280},
      ]
   },
)

이제 챗봇이 사용자에게 개인화된 결과를 추천할 수 있도록, 총 가격에 대한 신호를 검색하여 복합 AI 시스템을 구축하는 데 새로운 피처 서빙 엔드포인트를 사용할 수 있습니다.

데이터브릭스 피처 서빙 시작하기

  • 노트북 예제를 사용하여 AI 애플리케이션에 실시간 피처를 활용하세요.

  • 정식 버전으로 제공되는 피처 서빙 (AWS)(Azure) 문서를 자세히 살펴 보시고, 직접 사용해 보세요! REST API로 ML 피처를 쿼리해 보세요.

  • 이제 데이터브릭스 온라인 테이블(AWS)(Azure)을 공개 프리뷰로 사용할 수 있습니다.

  • 데이터브릭스와 공유하고 싶은 사용 사례가 있으신가요? [email protected] 으로 알려 주세요.

3월 14일에 열리는 온라인 이벤트 "2024 GenAI Payoff: Build and deploy production-quality Gen AI apps" 에도 많은 관심과 참여 바랍니다.