Azure에서 실시간 추천 API 빌드

Cosmos DB
Databricks
Kubernetes Service
Machine Learning

이 참조 아키텍처는 Azure Databricks를 사용하여 권장 사항 모델을 학습한 다음, Azure Cosmos DB, Azure Machine Learning 및 AKS(Azure Kubernetes Service)를 사용하여 모델을 API로 배포하는 방법을 보여 줍니다. 이 아키텍처의 참조 구현은 GitHub 에서 실시간 권장 사항 API 빌드 를 참조하세요.

아키텍처

동영상 권장 사항을 학습하기 위한 기계 학습 모델의 아키텍처를 보여 주는 다이어그램

이 아키텍처의 Visio 파일을 다운로드합니다.

이 참조 아키텍처는 사용자에게 상위 10개의 영화 추천을 제공할 수 있는 실시간 추천 서비스 API를 학습하고 배포하기 위한 것입니다.

데이터 흐름

  1. 사용자 동작을 추적합니다. 예를 들어 백 엔드 서비스는 사용자가 영화를 평가하거나 제품 또는 뉴스 기사를 클릭할 때 기록할 수 있습니다.
  2. 사용 가능한 데이터 원본에서 Azure Databricks로 데이터를 로드합니다.
  3. 데이터를 준비하고 학습 및 테스트 집합으로 분할하여 모델을 학습시킵니다. (이 가이드에서는 데이터 분할 옵션을 설명합니다.)
  4. Spark Collaborative Filtering 모델을 데이터에 맞춥니다.
  5. 등급 및 순위 메트릭을 사용하여 모델의 품질을 평가합니다. (이 가이드에서는 추천을 평가하는 데 사용할 수 있는 메트릭에 대한 세부 정보를 제공합니다.)
  6. 사용자별 상위 10개 추천 항목을 미리 계산하고 Azure Cosmos DB에 캐시로 저장합니다.
  7. Machine Learning API를 사용하여 API 서비스를 AKS에 배포하여 API를 컨테이너화하고 배포합니다.
  8. 백 엔드 서비스가 사용자로부터 요청을 받으면 AKS에서 호스트되는 권장 사항 API를 호출하여 상위 10개 권장 사항을 가져오고 사용자에게 표시합니다.

구성 요소

  • Azure Databricks. Databricks는 입력 데이터를 준비하고 추천 모델에게 Spark 클러스터를 학습시키는 데 사용되는 개발 환경입니다. Azure Databricks는 또한 데이터 처리 또는 기계 학습 작업을 위해 노트북에서 실행하고 공동 작업을 수행할 수 있는 대화형 작업 영역을 제공합니다.
  • AKS(Azure Kubernetes Service). AKS는 Kubernetes 클러스터에서 기계 학습 모델 서비스 API를 배포하고 운영하는 데 사용됩니다. AKS는 컨테이너화된 모델을 호스팅하고, 처리량 요구 사항에 맞는 확장성, ID 및 액세스 관리, 로깅 및 상태 모니터링을 제공합니다.
  • Azure Cosmos DB. Azure Cosmos DB는 각 사용자에 대해 추천되는 상위 10개 영화를 저장하는 데 사용되는 전역 분산 데이터베이스 서비스입니다. Azure Cosmos DB는 특정 사용자를 위한 상위 추천 항목을 읽을 때 대기 시간이 짧으므로(99%의 확률로 10ms) 이러한 시나리오에 매우 적합합니다.
  • 기계 학습. 이 서비스는 기계 학습 모델을 추적 및 관리하고, 이러한 모델을 패키징하여 확장 가능한 AKS 환경에 배포하는 데 사용됩니다.
  • Microsoft 추천 시스템. 이 오픈 소스 리포지토리에는 사용자가 추천 시스템 빌드, 평가, 운영을 시작하는 데 도움이 되는 유틸리티 코드와 샘플이 포함되어 있습니다.

시나리오 정보

이 아키텍처는 제품, 동영상, 뉴스 추천 등 대부분의 추천 엔진 시나리오에 맞게 일반화할 수 있습니다.

잠재적인 사용 사례

시나리오: 한 미디어 조직에서 사용자에게 동영상 추천을 제공하려고 합니다. 조직은 개인 설정된 권장 사항을 제공하여 클릭률 증가, 웹 사이트 참여 증가, 사용자 만족도 향상 등 여러 비즈니스 목표를 달성합니다.

이 솔루션은 소매 산업 및 미디어 및 엔터테인먼트 산업에 최적화되어 있습니다.

고려 사항

이러한 고려 사항은 워크로드의 품질을 향상시키는 데 사용할 수 있는 일단의 지침 원칙인 Azure Well-Architected Framework의 핵심 요소를 구현합니다. 자세한 내용은 Microsoft Azure Well-Architected Framework를 참조하세요.

Azure Databricks에서 Spark 모델의 일괄 처리 채점 은 Spark 및 Azure Databricks를 사용하여 예약된 일괄 처리 채점 프로세스를 실행하는 참조 아키텍처를 설명합니다. 새 권장 사항을 생성하려면 이 방법을 사용하는 것이 좋습니다.

성능 효율성

성능 효율성은 사용자가 배치된 요구 사항을 효율적인 방식으로 충족하기 위해 워크로드의 크기를 조정할 수 있는 기능입니다. 자세한 내용은 성능 효율성 핵심 요소 개요를 참조하세요.

권장 사항은 일반적으로 웹 사이트에서 사용자 요청의 중요한 경로에 속하기 때문에 성능은 실시간 권장 사항의 주요 고려 사항입니다.

AKS와 Azure Cosmos DB의 조합은 이러한 아키텍처가 최소한의 오버헤드로 중간 규모 워크로드에 추천 항목을 제공하는 데 좋은 시작점이 되도록 합니다. 동시 사용자가 200명인 부하 테스트에서 이 아키텍처는 약 60ms의 평균 대기 시간으로 추천 항목을 제공하고, 초당 180개 요청을 처리할 수 있습니다. 이 부하 테스트는 기본 배포 구성(Azure Cosmos DB용으로 프로비전된 vCPU 12개, 메모리 42GB, 초당 요청 단위(RU) 11,000개를 지원하는 D3 v2 AKS 클러스터 3개)을 대상으로 실행되었습니다.

성능 그래프

처리량 그래프

Azure Cosmos DB는 턴키 글로벌 배포 및 앱의 모든 데이터베이스 요구 사항을 충족하는 유용성 때문에 권장됩니다. 대기 시간을 약간 줄이려면 Azure Cosmos DB 대신 Azure Cache for Redis 사용하여 조회를 제공하는 것이 좋습니다. Azure Cache for Redis 백 엔드 저장소의 데이터에 크게 의존하는 시스템의 성능을 향상시킬 수 있습니다.

확장성

Spark를 사용할 계획이 없거나 배포가 필요하지 않은 워크로드가 더 작은 경우 Azure Databricks 대신 DSVM(Data Science Virtual Machine)을 사용하는 것이 좋습니다. DSVM은 기계 학습 및 데이터 과학을 위한 딥 러닝 프레임워크 및 도구를 갖춘 Azure 가상 머신입니다. Azure Databricks와 마찬가지로 DSVM에서 만드는 모든 모델은 Machine Learning을 통해 AKS에서 서비스로 운영될 수 있습니다.

학습하는 동안 Azure Databricks에서 더 큰 고정 크기 Spark 클러스터를 프로비전하거나 자동 크기 조정을 구성합니다. 자동 크기 조정을 사용하도록 설정하면 Databricks는 클러스터의 부하를 모니터링하고 필요에 따라 확장 및 축소합니다. 대규모의 데이터가 있고 데이터 준비나 모델링 작업에 걸리는 시간을 줄이려는 경우 대규모 클러스터를 프로비전하거나 확장하세요.

성능 및 처리량 요구 사항에 맞게 AKS 클러스터를 확장하세요. 클러스터를 완전히 활용할 수 있게 Pod 수를 확장하고, 서비스의 필요에 맞게 클러스터의 노드를 확장하도록 유의하세요. AKS 클러스터에서 자동 크기 조정을 설정할 수도 있습니다. 자세한 내용은 Deploy a model to an Azure Kubernetes Service cluster(Azure Kubernetes Service 클러스터에 모델 배포)를 참조하세요.

Azure Cosmos DB 성능을 관리하려면 초당 필요한 읽기 수를 측정하고, 필요한 초당 RU 수(처리량)를 프로비전하세요. 분할 및 수평 확장에 대한 모범 사례를 따르세요.

비용 최적화

비용 최적화는 불필요한 비용을 줄이고 운영 효율성을 높이는 방법을 찾는 것입니다. 자세한 내용은 비용 최적화 핵심 요소 개요를 참조하세요.

이 시나리오의 주요 비용 동인은 다음과 같습니다.

  • 학습에 필요한 Azure Databricks 클러스터 크기.
  • 성능 요구 사항을 충족하는 데 필요한 AKS 클러스터 크기.
  • 성능 요구 사항에 맞게 프로비전된 Azure Cosmos DB RU.

Spark 클러스터를 사용하지 않을 때 자주 재학습시키지 않고 끄는 방법으로 Azure Databricks 비용을 관리하세요. AKS 및 Azure Cosmos DB 비용은 사이트의 처리량 및 성능 요구 사항과 관련이 있으며, 사이트로 들어오는 트래픽의 양에 따라 확장 및 축소됩니다.

시나리오 배포

이 아키텍처를 배포하려면 설치 문서Azure Databricks 지침을 따릅니다. 간단히 설명하면 지침에 따라 다음을 수행해야 합니다.

  1. Azure Databricks 작업 영역 만들기
  2. Azure Databricks에서 다음 구성을 사용하여 새 클러스터를 만듭니다.
    • 클러스터 모드: 표준
    • Databricks 런타임 버전: 4.3(Apache Spark 2.3.1, Scala 2.11 포함)
    • Python 버전: 3
    • 드라이버 유형: Standard_DS3_v2
    • 작업자 유형: Standard_DS3_v2(필요한 경우 최소 및 최대)
    • 자동 종료: (필요에 따라)
    • Spark 구성: (필요한 경우)
    • 환경 변수: (필요에 따라)
  3. Azure Databricks 작업 영역 내에서 개인용 액세스 토큰을 만듭니다. 자세한 내용은 Azure Databricks 인증 설명서를 참조하세요.
  4. 스크립트(예: 로컬 컴퓨터)를 실행할 수 있는 환경에 Microsoft Recommenders 리포지토리를 복제합니다.
  5. 빠른 설치 설치 지침에 따라 Azure Databricks에 관련 라이브러리를 설치합니다.
  6. 빠른 설치 설치 지침에 따라 운영화를 위해 Azure Databricks를 준비합니다.
  7. ALS Movie Operationalization Notebook을 작업 영역으로 가져옵니다. Azure Databricks 작업 영역에 로그인한 후 다음을 수행합니다.
    1. 작업 영역 왼쪽에서 을 클릭합니다.
    2. 홈 디렉터리에서 공백을 마우스 오른쪽 단추로 클릭합니다. 가져오기를 선택합니다.
    3. URL을 선택하고 다음을 https://github.com/Microsoft/Recommenders/blob/master/examples/05_operationalize/als_movie_o16n.ipynb 텍스트 필드에 붙여넣습니다.
    4. 가져오기를 클릭합니다.
  8. Azure Databricks 내에서 Notebook을 열고 구성된 클러스터를 연결합니다.
  9. Notebook을 실행하여 특정 사용자를 위한 상위 10개 동영상 추천 항목을 제공하는 추천 API를 만드는 데 필요한 Azure 리소스를 만듭니다.

다음 단계