솔루션 아이디어
이 문서는 솔루션 아이디어 설명입니다. 클라우드 설계자는 이 지침을 사용하여 이 아키텍처의 일반적인 구현을 위한 주요 구성 요소를 시각화할 수 있습니다. 이 문서를 시작점으로 사용하여 워크로드의 특정 요구 사항에 맞는 잘 설계된 솔루션을 디자인할 수 있습니다.
이 문서에서는 Azure Databricks를 사용하는 MLOps(기계 학습 운영) 아키텍처와 프로세스를 설명합니다. 데이터 과학자와 엔지니어는 이 표준화된 프로세스를 사용하여 기계 학습 모델 및 파이프라인을 개발에서 프로덕션으로 이동할 수 있습니다.
이 솔루션은 전체 자동화, 지속적인 모니터링 및 강력한 협업을 활용할 수 있으므로 MLOps 완성도 수준 4를 대상으로 합니다. 이 아키텍처는 모델 승격 방법 대신 모델 접근 방식을 생성하는 승격 코드를 사용합니다. 모델 접근 방식을 생성하는 승격 코드는 기계 학습 모델을 생성하는 코드를 작성하고 관리하는 데 중점을 둡니다. 이 문서의 권장 사항에는 자동화 또는 수동 프로세스에 대한 옵션이 포함되어 있습니다.
아키텍처
이 아키텍처의 Visio 파일을 다운로드합니다.
워크플로
다음 워크플로는 이전 다이어그램에 해당합니다. 소스 제어 및 스토리지 구성 요소를 사용하여 코드와 데이터를 관리하고 구성합니다.
소스 제어: 이 프로젝트의 코드 리포지토리는 Notebook, 모듈, 파이프라인을 구성합니다. 개발 분기를 만들어 업데이트 및 새 모델을 테스트할 수 있습니다. Azure Databricks 작업 영역과 동기화할 수 있도록 Git 지원 Notebook 또는 Git 폴더와 통합되는 IDE(통합 개발 환경)에서 코드를 개발합니다. 소스 제어는 개발 환경, 스테이징 환경에서 테스트 및 프로덕션 환경의 배포로 기계 학습 파이프라인을 승격합니다.
Lakehouse 프로덕션 데이터: 데이터 과학자로서 개발 환경에서 프로덕션 데이터에 대한 읽기 전용 액세스 권한이 있습니다. 개발 환경에는 미러된 데이터와 수정된 기밀 데이터가 있을 수 있습니다. 개발 및 실험을 위한 개발 스토리지 환경에서 읽기 및 쓰기 액세스 권한도 있습니다. Azure Data Lake Storage에 Delta Lake 형식 데이터를 저장하는 데이터에 레이크하우스 아키텍처를 사용하는 것이 좋습니다. 레이크하우스는 데이터 관리를 위한 강력하고 확장 가능하며 유연한 솔루션을 제공합니다. 액세스 제어를 정의하려면 Microsoft Entra ID 자격 증명 통과 또는 테이블 액세스 제어를 사용합니다.
다음 환경은 기본 워크플로로 구성됩니다.
개발
개발 환경에서는 기계 학습 파이프라인을 개발합니다.
EDA(예비 데이터 분석) 수행: 대화형 반복 프로세스에서 데이터를 탐색합니다. 이 작업을 스테이징 또는 프로덕션에 배포하지 않을 수 있습니다. Databricks SQL, dbutils.data.summarize 명령 및 Databricks AutoML과 같은 도구를 사용합니다.
모델 학습 및 기타 기계 학습 파이프라인 개발: 기계 학습 파이프라인 모듈식 코드를 개발하고 Databricks Notebooks 또는 MLflow 프로젝트를 통해 코드를 오케스트레이션합니다. 이 아키텍처에서 모델 학습 파이프라인은 기능 저장소 및 기타 레이크하우스 테이블에서 데이터를 읽습니다. 파이프라인은 로그 모델 매개 변수 및 메트릭을 MLflow 추적 서버로 학습하고 조정합니다. 기능 저장소 API는 최종 모델을 기록합니다. 이러한 로그에는 모델, 해당 입력 및 학습 코드가 포함됩니다.
커밋 코드: 기계 학습 워크플로를 프로덕션으로 승격하려면 기능화, 학습 및 기타 파이프라인에 대한 코드를 소스 제어에 커밋합니다. 코드 베이스에서 팀 구성원이 동시에 코드를 개발할 수 있도록 기계 학습 코드와 운영 코드를 다른 폴더에 배치합니다. 기계 학습 코드는 모델 및 데이터와 관련된 코드입니다. 운영 코드는 Databricks 작업 및 인프라와 관련된 코드입니다.
코드를 작성하고 테스트할 때 수행하는 이 핵심 활동 주기를 innerloop 프로세스라고 합니다. 개발 단계에 대한 innerloop 프로세스를 수행하려면 개발 컨테이너 CLI 및 Databricks CLI와 함께 Visual Studio Code를 사용합니다. 코드를 작성하고 로컬에서 단위 테스트를 수행할 수 있습니다. 또한 로컬 개발 환경에서 모델 파이프라인을 제출, 모니터링 및 분석해야 합니다.
스테이징
스테이징 환경에서 CI(연속 통합) 인프라는 프로덕션을 모방하는 환경에서 기계 학습 파이프라인에 대한 변경 내용을 테스트합니다.
요청 병합: 소스 제어에서 프로젝트의 스테이징(기본) 분기에 대해 병합 요청 또는 끌어오기 요청을 제출하면 Azure DevOps와 같은 CI/CD(지속적인 통합 및 지속적인 업데이트) 도구가 테스트를 실행합니다.
단위 테스트 및 CI 테스트 실행: 단위 테스트는 CI 인프라에서 실행되고 통합 테스트는 Azure Databricks의 엔드 투 엔드 워크플로에서 실행됩니다. 테스트를 통과하면 코드 변경 내용이 병합됩니다.
릴리스 분기 빌드: 업데이트된 기계 학습 파이프라인을 프로덕션에 배포하려는 경우 새 릴리스를 빌드할 수 있습니다. CI/CD 도구의 배포 파이프라인은 업데이트된 파이프라인을 새로운 워크플로로 다시 배포합니다.
생산
기계 학습 엔지니어는 기계 학습 파이프라인이 최종 애플리케이션을 직접 제공하는 프로덕션 환경을 관리합니다. 프로덕션 새로 고침 기능 테이블의 주요 파이프라인은 새 모델을 학습 및 배포하고, 추론 또는 서비스를 실행하고, 모델 성능을 모니터링합니다.
기능 테이블 새로 고침: 이 파이프라인은 데이터를 읽고, 기능을 계산하고, 기능 저장소 테이블에 씁니다. 스트리밍 모드에서 지속적으로 실행하거나, 일정에 따라 실행하거나, 트리거에서 실행하도록 이 파이프라인을 구성할 수 있습니다.
모델 학습: 프로덕션 환경에서는 최신 프로덕션 데이터에 대한 새 모델을 학습하도록 트리거 또는 일정에 따라 실행되도록 모델 학습 또는 재학습 파이프라인을 구성할 수 있습니다. 모델은 Unity 카탈로그에 자동으로 등록됩니다.
모델 평가 및 승격: 새 모델 버전이 등록되면 CD 파이프라인이 트리거되며, 테스트를 실행하여 모델이 프로덕션 환경에서 잘 수행되는지 확인합니다. 모델이 테스트를 통과하면 Unity 카탈로그는 모델 단계 전환을 통해 진행률을 추적합니다. 테스트에는 규정 준수 검사, 새 모델을 현재 프로덕션 모델과 비교하는 A/B 테스트 및 인프라 테스트가 포함됩니다. Lakehouse 테이블은 테스트 결과 및 메트릭을 기록합니다. 필요에 따라 모델이 프로덕션으로 전환되기 전에 수동 로그오프를 요구할 수 있습니다.
모델 배포: 모델이 프로덕션에 진입하면 점수 매기기 또는 서비스용으로 배포됩니다. 가장 일반적인 배포 모드는 다음과 같습니다.
일괄 처리 또는 스트리밍 점수 매기기: 몇 분 이상의 대기 시간의 경우 일괄 처리 및 스트리밍 이 가장 비용 효율적인 옵션입니다. 점수 매기기 파이프라인은 기능 저장소에서 최신 데이터를 읽고, Unity 카탈로그에서 최신 프로덕션 모델 버전을 로드하고, Databricks 작업에서 유추를 수행합니다. 레이크하우스 테이블, JDBC(Java Database Connectivity) 연결, 플랫 파일, 메시지 큐 또는 기타 다운스트림 시스템에 예측을 게시할 수 있습니다.
온라인 서비스(REST API): 대기 시간이 짧은 사용 사례의 경우 일반적으로 온라인 서비스 제공이 필요합니다. MLflow는 Mosaic AI 모델 서비스, 클라우드 공급자 서비스 시스템 및 기타 시스템에 모델을 배포할 수 있습니다. 모든 경우에 서비스 시스템은 Unity 카탈로그의 최신 프로덕션 모델로 초기화됩니다. 각 요청에 대해 온라인 기능 저장소에서 기능을 가져오고 예측을 합니다.
모니터링: 연속적이거나 주기적인 워크플로는 드리프트, 성능, 기타 메트릭에 대한 입력 데이터와 모델 예측을 모니터링합니다. Delta Live Tables 프레임워크를 사용하여 파이프라인에 대한 모니터링을 자동화하고 레이크하우스 테이블에 메트릭을 저장할 수 있습니다. Databricks SQL, Power BI, 기타 도구는 해당 테이블에서 읽고 대시보드와 경고를 만들 수 있습니다. 애플리케이션 메트릭, 로그 및 인프라를 모니터링하기 위해 Azure Monitor를 Azure Databricks와 통합할 수도 있습니다.
드리프트 검색 및 모델 재학습: 이 아키텍처는 수동 및 자동 재학습을 모두 지원합니다. 모델을 최신 상태로 유지하기 위해 재학습 작업을 예약합니다. 검색된 드리프트가 모니터링 단계에서 설정한 미리 구성된 임계값을 초과하면 재학습 파이프라인은 드리프트를 분석하고 재학습을 트리거합니다. 자동으로 트리거하도록 파이프라인을 구성하거나 알림을 받은 다음 파이프라인을 수동으로 실행할 수 있습니다.
구성 요소
데이터 레이크 하우스 아키텍처는 데이터 레이크 및 데이터 웨어하우스의 요소를 통합합니다. 레이크하우스를 사용하여 데이터 웨어하우스에서 일반적으로 찾을 수 있지만 데이터 레이크에서 제공하는 저렴한 유연한 개체 저장소를 통해 데이터 관리 및 성능 기능을 얻을 수 있습니다.
- Delta Lake 는 레이크하우스에 권장되는 오픈 소스 데이터 형식입니다. Azure Databricks는 Data Lake Storage에 데이터를 저장하고 고성능 쿼리 엔진을 제공합니다.
MLflow는 엔드투엔드 기계 학습 수명 주기를 관리하기 위한 오픈 소스 프로젝트입니다. MLflow에는 다음과 같은 구성 요소가 있습니다.
추적 기능은 실험을 추적하므로 매개 변수, 메트릭 및 모델 아티팩트 기록 및 비교할 수 있습니다.
- Databricks 자동 로깅 은 MLflow 자동 로깅 을 확장하여 기계 학습 실험을 추적하고 모델 매개 변수, 메트릭, 파일 및 계보 정보를 자동으로 기록합니다.
MLflow 모델은 모든 기계 학습 라이브러리에서 다양한 모델 서비스 및 유추 플랫폼으로 모델을 저장하고 배포하는 데 사용할 수 있는 형식입니다.
Unity 카탈로그 는 Azure Databricks 작업 영역에서 중앙 집중식 액세스 제어, 감사, 계보 및 데이터 검색 기능을 제공합니다.
Mosaic AI 모델 서비스 제공 은 MLflow 모델을 REST 엔드포인트로 호스트합니다.
Azure Databricks 는 엔터프라이즈 보안 기능, 고가용성 및 다른 Azure Databricks 작업 영역 기능과의 통합이 있는 관리되는 MLflow 서비스를 제공합니다.
Machine Learning용 Databricks Runtime은 기계 학습 에 최적화된 클러스터 만들기를 자동화하고 TensorFlow, PyTorch 및 XGBoost와 같은 인기 있는 기계 학습 라이브러리를 미리 설치합니다. 또한 AutoML 및 기능 저장소 클라이언트와 같은 Machine Learning용 Azure Databricks 도구를 미리 설치합니다.
기능 저장소는 기능의 중앙 집중식 리포지토리입니다. 기능 저장소를 사용하여 기능을 검색 및 공유하고 모델 학습과 유추 간의 데이터 오차를 방지할 수 있습니다.
Databricks SQL 은 다양한 도구와 통합되므로 새 플랫폼에 적응하지 않고도 즐겨 찾는 환경에서 쿼리 및 대시보드를 작성할 수 있습니다.
Git 폴더는 Azure Databricks 작업 영역에서 Git 공급자와 통합되어 Notebook 또는 코드 공동 작업 및 IDE 통합을 향상시킵니다.
워크플로와 작업은 Azure Databricks 클러스터에서 비대화형 코드를 실행하는 방법을 제공합니다. 기계 학습의 경우 작업은 데이터 준비, 기능화, 학습, 추론, 모니터링을 위한 자동화를 제공합니다.
대안
이 솔루션을 Azure 인프라에 맞게 조정할 수 있습니다. 다음 사용자 지정을 고려합니다.
공통 프로덕션 작업 영역을 공유하는 여러 개발 작업 영역을 사용합니다.
기존 인프라에 대해 하나 이상의 아키텍처 구성 요소를 교환합니다. 예를 들어 Azure Data Factory를 사용하여 Databricks 작업을 오케스트레이션할 수 있습니다.
Git 및 Azure Databricks REST API를 통해 기존 CI/CD 도구와 통합합니다.
기계 학습 기능을 위한 대체 서비스로 Microsoft Fabric 또는 Azure Synapse Analytics를 사용합니다.
시나리오 정보
이 솔루션은 Azure Databricks를 사용하는 강력한 MLOps 프로세스를 제공합니다. 아키텍처의 모든 요소를 바꿀 수 있으므로 필요에 따라 다른 Azure 서비스 및 파트너 서비스를 통합할 수 있습니다. 이 아키텍처와 설명은 eBook The Big Book of MLOps에서 가져왔습니다. 전자책은 이 아키텍처를 자세히 살펴봅니다.
MLOps는 기계 학습 및 AI 시스템의 오류 위험을 줄이고 협업 및 도구의 효율성을 향상시킵니다. MLOps 소개 및 이 아키텍처에 대한 개요는 레이크하우스의 설계자 MLOps를 참조 하세요.
이 아키텍처를 사용하여 다음을 수행합니다.
비즈니스 관련자를 기계 학습 및 데이터 과학 팀과 연결합니다. 이 아키텍처를 사용하여 개발을 위해 Notebook 및 IDE를 통합합니다. 비즈니스 관련자는 모두 동일한 Lakehouse 아키텍처 내에서 Databricks SQL에서 메트릭 및 대시보드를 볼 수 있습니다.
기계 학습 인프라를 데이터 중심으로 만듭니다. 이 아키텍처는 기계 학습 데이터를 다른 데이터와 마찬가지로 처리합니다. 기계 학습 데이터에는 기능 엔지니어링, 학습, 유추 및 모니터링의 데이터가 포함됩니다. 이 아키텍처는 기계 학습 데이터 처리를 위해 프로덕션 파이프라인, 대시보드 및 기타 일반 데이터 처리에 도구를 다시 사용합니다.
모듈과 파이프라인에서 MLOps를 구현합니다. 소프트웨어 애플리케이션과 마찬가지로 이 아키텍처의 모듈화된 파이프라인 및 코드를 사용하여 개별 구성 요소를 테스트하고 향후 리팩터링 비용을 절감할 수 있습니다.
필요에 따라 MLOps 프로세스를 자동화합니다. 이 아키텍처에서는 생산성을 향상시키고 사용자 오류의 위험을 줄이는 단계를 자동화할 수 있지만 모든 단계를 자동화할 필요는 없습니다. Azure Databricks는 자동화를 위한 API 외에도 UI와 수동 프로세스를 허용합니다.
잠재적인 사용 사례
이 아키텍처는 모든 유형의 기계 학습, 딥 러닝, 고급 분석에 적용됩니다. 이 아키텍처의 일반적인 기계 학습 및 AI 기술은 다음과 같습니다.
- 선형 모델, 트리 기반 모델, 부스팅과 같은 고전적인 기계 학습.
- TensorFlow 및 PyTorch와 같은 최신 딥 러닝.
- 통계, Bayesian 메서드, 그래프 분석과 같은 사용자 지정 분석.
아키텍처는 작은 데이터(단일 머신)와 큰 데이터(분산 컴퓨팅과 GPU 가속)를 모두 지원합니다. 아키텍처의 각 단계에서 컴퓨팅 리소스 및 라이브러리를 선택하여 시나리오의 데이터 및 문제 차원에 맞게 조정할 수 있습니다.
아키텍처는 모든 유형의 산업 및 비즈니스 사용 사례에 적용됩니다. 이 아키텍처를 사용하는 Azure Databricks 고객은 다음과 같은 산업 분야의 소규모 및 대규모 조직을 포함합니다.
- 소비재 및 소매 서비스
- 금융 서비스
- 의료 및 생명 과학
- 정보 기술
예를 들어 Databricks 고객을 참조 하세요.
참가자
Microsoft에서 이 문서를 유지 관리합니다. 원래 다음 기여자가 작성했습니다.
주요 작성자:
- Brandon Cowen | 선임 클라우드 솔루션 아키텍트
- Prabal Deb | 주요 소프트웨어 엔지니어
비공개 LinkedIn 프로필을 보려면 LinkedIn에 로그인합니다.