편집

다음을 통해 공유


Spark를 통해 Azure에서 대규모로 ML(기계 학습)을 수행하는 많은 모델

Azure Data Factory
Azure 데이터 레이크
Azure Databricks
Azure Machine Learning
Azure Synapse Analytics

이 문서에서는 Azure Databricks 또는 Azure Synapse Analytics에서 Apache Spark를 사용하는 여러 모델에 대한 아키텍처를 설명합니다. Spark는 일부 솔루션에 필요한 크고 복잡한 데이터 변환을 위한 강력한 도구입니다.

참고

많은 모델 애플리케이션에 Spark 버전 3.0 이상을 사용합니다. Python 및 pandas에 대한 데이터 변환 기능 및 지원은 이전 버전보다 훨씬 좋습니다.

Azure Machine Learning을 사용하여 대규모 기계 학습을 모델하는 많은 도우미 문서에서 는 Machine Learning 및 컴퓨팅 클러스터를 사용합니다.

아키텍처

Spark를 사용하여 Azure에서 대규모 기계 학습을 하는 여러 모델에 대한 아키텍처 다이어그램

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

데이터 흐름

  1. 데이터 수집: Azure Data Factory는 원본 데이터베이스에서 데이터를 가져와 Azure Data Lake Storage에 복사합니다.
  2. 모델 학습 파이프라인:
    1. 데이터 준비: 학습 파이프라인은 Data Lake Storage에서 데이터를 가져와 Spark를 사용하여 모델을 학습하기 위한 데이터 세트로 그룹화합니다.
    2. 모델 학습: 파이프라인은 데이터 준비 중에 만들어진 모든 데이터 세트의 모델을 학습합니다. pandas 함수 API를 사용하여 여러 모델을 병렬로 학습합니다. 모델을 학습한 후 파이프라인에서 테스트 메트릭과 함께 Machine Learning에 이를 등록합니다.
  3. 모델 승격 파이프라인:
    1. 모델 평가: 승격 파이프라인은 학습된 모델을 프로덕션으로 이동하기 전에 평가합니다. DevOps 파이프라인은 비즈니스 논리를 적용하여 모델이 배포 기준을 충족하는지 여부를 결정합니다. 예를 들면 테스트 데이터의 정확도가 80% 이상인지 확인할 수 있습니다.
    2. 모델 등록: 승격 파이프라인은 프로덕션 Machine Learning 작업 영역의 기준에 부합하는 모델을 등록합니다.
  4. 모델 일괄 처리-채점 파이프라인:
    1. 데이터 준비: 일괄 처리-채점 파이프라인은 Data Lake Storage에서 데이터를 가져와 Spark를 사용하여 채점하기 위한 데이터 세트로 그룹화합니다.
    2. 모델 채점: 파이프라인은 pandas 함수 API를 사용해 여러 데이터 세트를 병렬로 채점합니다. 모델 태그를 검색하여 Machine Learning의 각 데이터 세트에 적합한 모델을 찾습니다. 그런 다음 모델을 다운로드한 후 이를 사용해 데이터 세트를 채점합니다. Synapse SQL에 Spark 커넥터를 사용하여 결과를 유지합니다.
  5. 실시간 채점: 필요한 경우 AKS(Azure Kubernetes Service)에서 실시간으로 채점할 수 있습니다. 모델 수가 많기 때문에 미리 로드되지 않고 요청 시 로드해야 합니다.
  6. Results:
    1. 예측: 일괄 처리-채점 파이프라인은 Synapse SQL에 예측을 저장합니다.
    2. 메트릭: Power BI는 모델 예측에 연결하여 프레젠테이션 결과를 검색하고 집계합니다.

구성 요소

  • Azure Machine Learning은 모델을 신속하게 빌드하고 배포할 수 있는 한 엔터프라이즈급 기계 학습 서비스입니다. 모든 기술 수준의 사용자에게 낮은 코드 디자이너, AutoML(자동화된 ML) 및 다양한 IDE를 지원하는 호스트된 Jupyter Notebook 환경을 제공합니다.
  • Azure Synapse Analytics는 데이터 통합, 엔터프라이즈 데이터 웨어하우징 및 빅 데이터 분석을 통합하는 분석 서비스입니다.
  • Synapse SQL은 데이터 웨어하우징 및 데이터 가상화 시나리오를 지원하고 T-SQL을 확장하여 스트리밍 및 기계 학습 시나리오를 처리하는 T-SQL용 분산 쿼리 시스템입니다. 여기에서는 서버리스 및 전용 리소스 모델을 모두 제공합니다.
  • Azure Data Lake Storage는 고성능 분석 워크로드에 적합한, 대규모로 확장 가능하고 안전한 스토리지 서비스입니다.
  • AKS(Azure Kubernetes Service)는 컨테이너화된 애플리케이션을 배포 및 관리하기 위한 완전 관리형 Kubernetes 서비스입니다. AKS는 운영 오버헤드를 Azure로 오프로드하여 Azure에서 관리 AKS 클러스터의 배포를 간소화합니다.
  • Azure DevOps는 포괄적인 애플리케이션/인프라 수명 주기 관리 기능을 제공하는 일련의 개발자 서비스입니다. DevOps에는 작업 추적, 소스 제어, 빌드 및 CI/CD, 패키지 관리, 테스트 솔루션이 포함됩니다.
  • Microsoft Power BI는 소프트웨어 서비스, 앱 및 커넥터의 컬렉션으로, 함께 작동하여 무관한 데이터 원본을 일관되고 시각적으로 몰입도 높은 대화형 인사이트로 변환합니다.

대안

  • 모델 학습 및 채점을 위해 Azure Databricks의 Spark 대신 Azure Synapse의 Spark를 사용할 수 있습니다.
  • 원본 데이터는 모든 데이터베이스에서 가져올 수 있습니다.
  • 관리형 온라인 엔드포인트 또는 AKS를 사용하여 실시간 추론을 배포할 수 있습니다.

시나리오 정보

많은 기계 학습 문제가 너무 복잡하여 단일 기계 학습 모델이 해결할 수 없습니다. 모든 매장의 모든 항목에 대한 판매를 예측하든, 수백 개의 유정에 대한 유지 관리를 모델링하든, 각 인스턴스에 대한 모델을 사용하면 많은 기계 학습 문제에 대한 결과가 향상될 수 있습니다. 이 많은 모델 패턴은 다양한 산업에서 매우 일반적으로 나타나며 많은 실제 사용 사례에 적용됩니다. Azure Machine Learning을 사용하는 많은 엔드투엔드 모델 파이프라인에는 모델 학습, 일괄 처리 추론 배포 및 실시간 배포가 포함될 수 있습니다.

많은 모델 솔루션을 사용하려면 학습/채점하는 동안 모든 모델용으로 알맞은 다양한 데이터 세트가 필요합니다. 예를 들어 작업이 모든 매장에 있는 모든 품목의 판매를 예측하는 일인 경우 모든 데이터 세트는 고유한 품목-매장 조합에 대한 것입니다.

잠재적인 사용 사례

  • 소매: 식료품점 체인은 매장/품목별로 별도의 수익 예측 모델을 만들어야 하며, 매장당 총 1,000여 개의 모델이 필요합니다.
  • 공급망: 각각의 창고와 제품을 결합하려면 유통 회사에서 재고를 최적화해야 합니다.
  • 레스토랑: 프랜차이즈가 수천 개 있는 체인은 각각에 대한 수요를 예측해야 합니다.

고려 사항

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

  • 데이터 파티션 데이터 분할은 많은 모델 패턴을 구현하는 데 반드시 필요합니다. 매장당 하나의 모델이 필요한 경우 데이터 세트는 한 매장에 대한 모든 데이터로 구성되고 매장수만큼 데이터 세트가 존재합니다. 매장별로 제품을 모델링하려는 경우 제품과 매장의 모든 조합에 대한 데이터 세트가 존재합니다. 원본 데이터 형식에 따라 데이터를 쉽게 분할할 수도 있고, 광범위한 데이터를 섞어 변환해야 할 수 있습니다. Spark 및 Synapse SQL에서는 이러한 작업에 대한 확장성이 매우 좋지만, Python pandas는 하나의 노드 및 프로세스에서만 실행되므로 그렇지 않습니다.
  • 모델 관리: 학습 및 채점 파이프라인은 각 데이터 세트에 적합한 모델을 식별하고 호출합니다. 이를 위해 데이터 세트를 특징화하는 태그를 계산한 후 태그를 사용하여 일치하는 모델을 찾습니다. 태그는 데이터 파티션 키와 모델 버전을 식별하고, 다른 정보도 제공할 수 있습니다.
  • 올바른 아키텍처 선택:
    • Spark는 학습 파이프라인에 복잡한 데이터 변환/그룹화 요구 사항이 있는 경우에 적합합니다. 제품-매장 또는 위치-제품 같은 특성을 조합하여 데이터를 그룹화하는 유연한 분할/그룹화 기술을 제공합니다. 결과를 후속 단계에서 사용하기 위해 Spark DataFrame에 배치할 수 있습니다.
    • 기계 학습 학습 및 채점 알고리즘이 간단할 경우 scikit-learn과 같은 라이브러리를 사용하여 데이터를 분할할 수 있습니다. 이러한 경우 Spark가 필요하지 않을 수 있으므로, Azure Synapse 또는 Azure Databricks를 설치할 때 발생할 수 있는 복잡성을 방지할 수 있습니다.
    • 학습 데이터 세트가 이미 만들어진 경우(예: 별도의 파일 또는 별도의 행 또는 열에 있는 경우) 복잡한 데이터 변환을 위해 Spark가 필요하지 않습니다.
    • Machine Learning 및 컴퓨팅 클러스터 솔루션은 복잡한 설정이 필요한 상황에 알맞은 다양한 기능을 제공합니다. 예를 들어 사용자 지정 Docker 컨테이너를 사용하거나, 파일을 다운로드하거나, 미리 학습된 모델을 다운로드할 수 있습니다. 컴퓨터 비전 및 NLP(자연어 처리) 딥 러닝이 이처럼 다양한 기능이 필요할 수 있는 애플리케이션의 예에 해당합니다.
  • Spark 학습 및 채점: Spark 아키텍처를 사용하는 경우 병렬 학습/채점용 Spark pandas 함수 API를 사용할 수 있습니다.
  • 개별 모델 리포지토리: 배포된 모델을 보호하려면 학습/테스트 파이프라인이 작용하지 않는 자체 리포지토리에 저장하는 것이 좋습니다.
  • 온라인 추론: 파이프라인이 시작할 때 모든 모델을 로드 및 캐시하는 경우 모델이 컨테이너의 메모리를 소모할 수 있습니다. 따라서 대기 시간이 약간 증가할 수도 있지만 필요에 따라 실행 메서드에서 모델을 로드합니다.
  • 학습 확장성: Spark를 사용하면 수십만 개의 모델을 병렬로 학습할 수 있습니다. Spark는 클러스터의 모든 VM에서 여러 학습 프로세스를 작동합니다. 각 코어는 별도의 프로세스를 실행할 수 있습니다. 이는 리소스를 잘 활용한다는 것을 의미하지만, 특히 학습 프로세스가 비용이 많이 들고 오래 실행되는 경우 클러스터 크기를 정확하게 조정하고 올바른 SKU를 선택하는 것이 중요합니다.

비용 최적화

비용 최적화는 불필요한 비용을 줄이고 운영 효율성을 높이는 방법을 찾는 것입니다. 자세한 내용은 비용 최적화를 위한 디자인 검토 검사 목록을 참조하세요.

Azure에서 이 시나리오를 실행하는 비용을 더 잘 이해하려면 가격 계산기를 사용합니다. 좋은 시작 가정은 다음과 같습니다.

  • 최신 상태를 유지하기 위해 서비스 모델을 매일 학습합니다.
  • 매장과 제품의 조합이 10,000개 있는 행 4천만 개의 데이터 세트는 Ls16_v2 인스턴스를 사용하는 VM 12대로 프로비전된 클러스터를 통해 Azure Databricks에서 학습하는 데 약 30분이 걸립니다.
  • 동일한 데이터 세트를 사용하여 일괄 처리 채점하는 데에는 약 20분이 걸립니다.
  • Machine Learning을 사용하여 실시간 추론을 배포할 수 있습니다. 요청 볼륨에 따라 적절한 VM 유형과 클러스터 크기를 선택합니다.
  • AKS 클러스터는 필요에 따라 자동으로 크기가 조정되어 매달 평균적으로 두 개의 노드가 활성화됩니다.

사용 사례에 대한 가격 책정이 어떻게 다른지 확인하려면 예상 데이터 크기와 서비스 부하 요구 사항에 맞게 변수를 변경합니다. 학습 데이터 크기가 크거나 작을 경우 Azure Databricks 클러스터의 크기를 늘리거나 줄입니다. 모델을 제공하는 동안 더 많은 동시 사용자를 처리하려면 AKS 클러스터 크기를 늘입니다.

참가자

Microsoft에서 이 문서를 유지 관리합니다. 원래 다음 기여자가 작성했습니다.

보안 주체 작성자:

다음 단계