Azure에서 Python 모델 일괄 채점

Azure Container Registry
Azure Event Hubs
Azure Machine Learning
Azure SQL Database
Azure Stream Analytics

이 아키텍처 가이드는 Azure Machine Learning을 사용하여 일괄 채점 모델을 위한 스케일링 가능한 솔루션을 구축하는 방법을 보여 줍니다. 솔루션은 템플릿으로 사용할 수 있으며 여러 문제에 맞게 일반화할 수 있습니다.

아키텍처

Azure에서 Python 모델의 일괄 처리 채점을 보여 주는 아키텍처 다이어그램

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

워크플로

이 아키텍처 가이드는 수집 프로세스가 데이터 형식에 맞게 조정되는 경우 스트리밍 데이터와 정적 데이터 모두에 적용할 수 있습니다. 다음 단계 및 구성 요소는 이러한 두 가지 유형의 데이터 수집에 대해 설명합니다.

스트리밍 데이터:

  1. 스트리밍 데이터는 새 이벤트가 자주 스트림되는 IoT 센서에서 시작됩니다.
  2. 들어오는 스트리밍 이벤트는 Azure Event Hubs를 사용하여 큐에 대기한 다음 Azure Stream Analytics를 사용하여 사전 처리됩니다.
    • Azure Event Hubs - 이 메시지 수집 서비스는 초당 수백만 개의 이벤트 메시지를 수집할 수 있습니다. 이 아키텍처에서 센서는 데이터 스트림을 이벤트 허브로 보냅니다.
    • Azure Stream Analytics - 이벤트 처리 엔진입니다. Stream Analytics 작업은 이벤트 허브에서 데이터 스트림을 읽고 스트림 처리를 수행합니다.

고정 데이터:

  1. 정적 데이터 세트는 Azure Data Lake Storage 내에 파일로 저장하거나 Azure Synapse 또는 Azure SQL Database에 테이블 형식으로 저장할 수 있습니다.
  2. Azure Data Factory는 저장된 데이터 세트를 집계하거나 사전 처리하는 데 사용할 수 있습니다.

데이터 수집 후 나머지 아키텍처는 스트리밍 데이터와 정적 데이터 모두에 대해 동일하며 다음 단계와 구성 요소로 구성됩니다.

  1. 수집, 집계 또는 사전 처리된 데이터는 Azure Data Lake Storage 내의 문서 또는 Azure Synapse 또는 Azure SQL Database의 테이블 형식으로 저장할 수 있습니다. 그러면 이 데이터는 Azure Machine Learning에서 사용됩니다.
  2. Azure Machine Learning은 기계 학습 모델을 대규모로 학습, 배포, 관리하는 데 사용됩니다. 일괄 처리 채점 컨텍스트에서 Azure Machine Learning은 자동 스케일링 옵션을 사용하여 가상 머신 클러스터를 만듭니다. 여기서 작업은 Python 스크립트를 기준으로 병렬로 실행됩니다.
  3. 모델은 관리형 일괄 처리 엔드포인트로 배포되며 일정 기간 동안 대량의 데이터에 대한 일괄 처리 추론을 수행하는 데 사용됩니다. 일괄 처리 엔드포인트는 데이터에 대한 포인터를 수신하고 작업을 비동기적으로 실행하여 컴퓨팅 클러스터에서 데이터를 병렬로 처리합니다.
  4. 추론 결과는 Azure Data Lake Storage 내에 문서로 저장하거나 Azure Synapse 또는 Azure SQL Database에 테이블 형식으로 저장할 수 있습니다.
  5. 시각화: 저장된 모델 결과는 Power BI 대시보드와 같은 사용자 인터페이스 또는 사용자 지정 웹 애플리케이션을 통해 사용할 수 있습니다.

구성 요소

고려 사항

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

성능

표준 Python 모델의 경우 일반적으로 워크로드를 처리할 CPU가 충분하다고 여겨집니다. 이 아키텍처에서는 CPU를 사용합니다. 그러나 딥 러닝 워크로드의 경우 GPU(그래픽 처리 장치)는 일반적으로 CPU를 상당한 양만큼 능가합니다. 대개 비슷한 성능을 얻으려면 CPU의 크기가 큰 클러스터가 필요합니다.

VM과 코어 간 병렬화

일괄 처리 모드로 여러 모델의 채점 프로세스를 실행하는 경우 VM 전반에서 작업을 병렬로 처리해야 합니다. 두 가지 방법이 가능합니다.

  • 저비용 VM을 사용하여 대규모 클러스터를 만듭니다.
  • 각각 추가 코어가 제공되는 고성능 VM을 사용하여 소규모 클러스터를 만듭니다.

일반적으로 표준 Python 모델을 채점하는 작업은 딥 러닝 모델을 채점하는 것만큼 까다롭지 않으며, 소규모 클러스터가 큐에 대기하고 있는 많은 모델을 효율적으로 처리할 수 있어야 합니다. 데이터 세트 크기가 증가함에 따라 클러스터 노드 수를 늘릴 수 있습니다.

이 시나리오에서는 편의상 단일 Azure Machine Learning 파이프라인 단계 내에서 하나의 채점 작업이 제출됩니다. 그러나 동일한 파이프라인 단계 내에서 여러 데이터 청크를 채점하는 것이 더 효율적일 수 있습니다. 이러한 경우 사용자 지정 코드를 작성하여 여러 데이터 세트를 읽고 단일 단계 실행 중에 채점 스크립트를 실행합니다.

관리

  • 작업 모니터링. 실행 중인 작업의 진행 상황을 모니터링하는 것이 중요합니다. 그러나 활성 노드의 클러스터를 모니터링할 경우 어려움이 있을 수 있습니다. 클러스터의 노드 상태를 검사하려면 Azure Portal을 사용하여 Machine Learning 작업 영역을 관리하세요. 노드가 비활성 상태이거나 작업이 실패한 경우 오류 로그가 Blob Storage에 저장되며 Pipelines 섹션에서도 액세스할 수 있습니다. 모니터링을 추가로 보완하려면 Application Insights에 로그를 연결하거나 클러스터 및 해당 작업의 상태를 폴링하기 위한 별도의 프로세스를 실행합니다.
  • 로깅 Machine Learning은 모든 stdout/stderr을 관련 Azure Storage 계정에 기록합니다. 로그 파일을 손쉽게 보려면 Azure Storage Explorer와 같은 스토리지 탐색 도구를 사용합니다.

비용 최적화

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

컴퓨팅 리소스는 이 아키텍처 가이드에서 가장 비용이 많이 드는 구성 요소입니다. 컴퓨팅 클러스터 크기는 큐의 작업에 따라 확장 및 축소됩니다. 컴퓨팅의 프로비전 구성을 수정하여 Python SDK를 통해 자동 크기 조정을 프로그래밍 방식으로 활성화합니다. 또는 Azure CLI를 사용하여 클러스터의 자동 스케일링 매개 변수를 설정합니다.

즉각적인 처리가 필요하지 않은 작업의 경우, 기본 상태(최소)가 0 노드의 클러스터가 되도록 자동 크기 조정 수식을 구성합니다. 이 구성을 사용하면 클러스터는 0개 노드로 시작하고 큐에서 작업을 감지할 때만 규모가 확장됩니다. 일괄 채점 프로세스가 하루에 몇 번 또는 그 이하로만 발생할 경우 이 설정을 통해 비용을 크게 절감할 수 있습니다.

서로 너무 가까이에서 발생하는 일괄 작업에는 자동 스케일링이 적합하지 않을 수 있습니다. 클러스터가 스핀 업 및 스핀 다운되는 데 걸리는 시간으로 인해 비용이 발생하므로 일괄 처리 워크로드가 이전 작업이 종료된 후 몇 분 안에 시작되는 경우 작업 사이에 클러스터를 계속 실행하는 것이 더 비용 효율적일 수 있습니다. 이 전략은 채점 프로세스가 매우 자주(예: 매 시간) 실행되도록 예약되었는지, 아니면 가끔(예: 매달) 실행되도록 예약되었는지에 따라 달라집니다.

참가자

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

주요 작성자:

비공개 LinkedIn 프로필을 보려면 LinkedIn에 로그인합니다.

다음 단계

제품 설명서:

Microsoft Learn 모듈: