MLOps: Azure Machine Learning을 통한 모델 관리, 배포, 모니터링
적용 대상:Azure CLI ml 확장 v2(현재)
Python SDK azure-ai-ml v2(현재)
이 문서에서는 모델의 수명 주기를 관리하기 위해 Azure Machine Learning에서 MLOps(Machine Learning Operations) 사례를 적용하는 방법을 알아봅니다. MLOps 사례를 적용하면 기계 학습 솔루션의 품질과 일관성을 향상시킬 수 있습니다.
MLOps란?
MLOps는 워크플로의 효율성을 향상시키는 DevOps 원칙 및 사례를 기반으로 합니다. 예를 들어 연속 통합, 지속적인 업데이트 및 지속적인 배포가 있습니다. MLOps는 다음과 같은 목표에 따라 해당 원칙을 기계 학습 프로세스에 적용합니다.
- 모델의 실험 및 개발 속도 향상
- 프로덕션 단계로의 모델 배포 속도 향상
- 품질 보증 및 엔드투엔드 계보 추적
Machine Learning의 MLOps
Machine Learning에서 제공하는 MLOps 기능은 다음과 같습니다.
- 재현 가능한 기계 학습 파이프라인을 만듭니다. 기계 학습 파이프라인을 사용하여 데이터 준비, 학습, 채점 프로세스에 대해 반복 가능하고 재사용 가능한 단계를 정의합니다.
- 재사용 가능한 소프트웨어 환경을 만듭니다. 이러한 환경은 모델을 학습시키고 배포하는 데 사용합니다.
- 어디에서나 모델을 등록, 패키징, 배포합니다. 또한 모델을 사용하는 데 필요한 연결된 메타데이터를 추적할 수 있습니다.
- 엔드투엔드 기계 학습 수명 주기에 대한 거버넌스 데이터를 캡처합니다. 로그된 계보 정보에는 모델을 게시하는 주체와 변경한 이유가 포함될 수 있습니다. 또한 프로덕션에서 모델이 배포되거나 사용된 시간도 포함될 수 있습니다.
- 기계 학습 수명 주기의 이벤트를 알리고 경고합니다. 이벤트 예로 실험 완료, 모델 등록, 모델 배포 및 데이터 드리프트 검색이 있습니다.
- 운영 및 기계 학습 관련 문제에 대해 기계 학습 애플리케이션을 모니터링합니다. 학습과 유추 간의 모델 입력을 비교합니다. 모델 관련 메트릭을 살펴봅니다. 기계 학습 인프라에 대한 모니터링 및 경고를 제공합니다.
- Machine Learning 및 Azure Pipelines를 사용하여 엔드투엔드 기계 학습 수명 주기를 자동화합니다. 파이프라인을 사용하면 모델을 자주 업데이트할 수 있습니다. 새 모델을 테스트할 수도 있습니다. 다른 애플리케이션 및 서비스와 함께 새 기계 학습 모델을 지속적으로 롤아웃할 수 있습니다.
MLOps에 대한 자세한 내용은 Machine Learning DevOps를 참조하세요.
재현 가능한 기계 학습 파이프라인 만들기
Machine Learning의 기계 학습 파이프라인을 사용하여 모델 학습 프로세스의 모든 단계를 연결합니다.
기계 학습 파이프라인에는 데이터 준비에서 기능 추출, 하이퍼 매개 변수 튜닝, 모델 평가에 이르는 단계가 포함될 수 있습니다. 자세한 내용은 Machine Learning 파이프라인을 참조하세요.
디자이너를 사용하여 기계 학습 파이프라인을 만드는 경우 언제든지 디자이너 페이지의 오른쪽 위 모서리에서 ... 아이콘을 선택할 수 있습니다. 그런 다음, 복제를 선택합니다. 파이프라인을 복제하면 이전 버전을 잃지 않고 파이프라인 디자인을 반복할 수 있습니다.
재사용 가능한 소프트웨어 환경 만들기
Machine Learning 환경을 사용하면 프로젝트의 소프트웨어 종속성이 진화함에 따라 추적하고 재현할 수 있습니다. 환경을 사용하여 수동 소프트웨어 구성 없이 빌드를 재현할 수 있습니다.
환경에서는 프로젝트에 대한 pip 및 conda 종속성을 설명합니다. 이 환경은 모델 학습 및 배포에 사용할 수 있습니다. 자세한 내용은 Machine Learning 환경이란을 참조하세요.
어디에서나 모델 등록, 패키징, 배포
다음 섹션에서는 모델을 등록, 패키지 및 배포하는 방법에 대해 설명합니다.
기계 학습 모델 등록 및 추적
모델 등록을 사용하면 Azure 클라우드의 작업 영역에서 모델을 저장하고 버전을 관리할 수 있습니다. 모델 레지스트리에서는 학습된 모델을 쉽게 구성하고 추적할 수 있습니다.
팁
등록된 모델은 모델을 구성하는 하나 이상의 파일에 대한 논리적 컨테이너입니다. 예를 들어 여러 파일에 저장된 모델이 있는 경우 Machine Learning 작업 영역에서 단일 모델로 등록할 수 있습니다. 등록 후에 등록된 모델을 다운로드하거나 배포하고 등록된 모든 파일을 받을 수 있습니다.
등록된 모델은 이름 및 버전으로 식별됩니다. 모델을 기존 이름과 동일한 이름으로 등록할 때마다 레지스트리에서 버전을 증가시킵니다. 등록하는 동안 더 많은 메타데이터 태그를 제공할 수 있습니다. 그런 다음, 이러한 태그는 모델을 검색할 때 사용됩니다. Machine Learning은 Python 3.5.2 이상을 사용하여 로드할 수 있는 모든 모델을 지원합니다.
팁
Machine Learning 외부에서 학습된 모델을 등록할 수도 있습니다.
중요
- Azure Machine Learning Studio의 모델 페이지에서 필터링 기준
Tags
옵션을 사용하는 경우TagName : TagValue
을 사용하는 대신 공백 없이TagName=TagValue
를 사용합니다. - 활성 배포에서 사용하고 있는 등록된 모델은 삭제할 수 없습니다.
자세한 내용은 Azure Machine Learning에서 모델을 사용합니다.
모델 패키징 및 디버그
모델은 프로덕션에 배포하기 전에 Docker 이미지로 패키지됩니다. 대부분의 경우 이미지 생성은 배포 중에 백그라운드에서 자동으로 수행됩니다. 이미지를 수동으로 지정할 수 있습니다.
배포에 문제가 발생하는 경우 문제 해결 및 디버깅을 위해 로컬 개발 환경에 배포할 수 있습니다.
자세한 내용은 온라인 엔드포인트 문제 해결 방법을 참조하세요.
모델 변환 및 최적화
모델을 ONNX(Open Neural Network Exchange)로 변환하면 성능이 향상될 수 있습니다. ONNX로 변환하면 평균적으로 성능이 두 배로 향상될 수 있습니다.
Machine Learning이 포함된 ONNX에 대한 자세한 내용은 기계 학습 모델 만들기 및 가속화를 참조하세요.
모델 사용
학습된 기계 학습 모델은 클라우드 또는 로컬에서 엔드포인트로 배포됩니다. 배포는 유추를 위해 CPU, GPU를 사용합니다.
모델을 엔드포인트로 배포할 때 다음 항목을 제공합니다.
- 서비스 또는 디바이스에 제출된 데이터의 점수를 매기는 데 사용되는 모델입니다.
- 항목 스크립트. 이 스크립트는 요청을 수락하고, 모델을 사용하여 데이터의 점수를 매기고, 응답을 반환합니다.
- 모델 및 항목 스크립트에 필요한 pip 및 conda 종속성을 설명하는 Machine Learning 환경
- 모델 및 항목 스크립트에 필요한 텍스트 및 데이터와 같은 기타 자산
또한 대상 배포 플랫폼의 구성도 제공합니다. 예를 들어 VM 제품군 형식, 사용 가능한 메모리 및 코어 수입니다. 이미지를 만들 때 Azure Machine Learning에 필요한 구성 요소도 추가됩니다. 예를 들어, 웹 서비스를 실행하는 데 필요한 자산이 있습니다.
일괄 처리 점수 매기기
일괄 처리 점수는 일괄 처리 엔드포인트를 통해 지원됩니다. 자세한 내용은 엔드포인트를 참조하세요.
온라인 엔드포인트
온라인 엔드포인트와 함께 모델을 사용할 수 있습니다. 온라인 엔드포인트는 다음 컴퓨팅 대상을 사용할 수 있습니다.
- 관리형 온라인 엔드포인트
- Azure Kubernetes Service
- 로컬 개발 환경
모델을 엔드포인트에 배포하려면 다음 항목을 제공해야 합니다.
- 모델 또는 모델의 앙상블입니다.
- 모델을 사용하려면 종속성이 필요합니다. 예를 들어 요청을 수락하고 모델 및 conda 종속성을 호출하는 스크립트입니다.
- 모델을 배포하는 방법 및 위치를 설명하는 배포 구성입니다.
자세한 내용은 온라인 엔드포인트 배포를 참조하세요.
제어된 롤아웃
온라인 엔드포인트에 배포할 때 제어된 롤아웃을 사용하여 다음 시나리오를 사용하도록 설정할 수 있습니다.
- 배포에 대해 엔드포인트의 여러 버전을 만듭니다.
- 엔드포인트 내의 다른 배포로 트래픽을 라우팅하여 A/B 테스트를 수행합니다.
- 엔드포인트 구성에서 트래픽 비율을 업데이트하여 엔드포인트 배포 간에 전환합니다.
자세한 내용은 기계 학습 모델의 제어된 롤아웃을 참조하세요.
분석
Microsoft Power BI는 데이터 분석을 위해 기계 학습 모델을 사용할 수 있도록 지원합니다. 자세한 내용은 Power BI의 Machine Learning 통합(미리 보기)을 참조하세요.
MLOps에 필요한 거버넌스 데이터 캡처
Machine Learning은 메타데이터를 사용하여 모든 기계 학습 자산의 엔드투엔드 감사 내역을 추적할 수 있는 기능을 제공합니다. 다음은 그 예입니다.
- Machine Learning 데이터 세트는 데이터를 추적, 프로파일링 및 버전 관리하는 데 도움이 됩니다.
- 해석력을 사용하면 모델을 설명하고, 규정 준수를 충족하며, 모델이 특정 입력에 대한 결과에 도달하는 방법을 이해할 수 있습니다.
- Machine Learning 작업 기록은 모델 학습에 사용된 코드, 데이터 및 컴퓨팅에 대한 스냅샷을 저장합니다.
- Machine Learning 모델 레지스트리는 모델과 연결된 모든 메타데이터를 캡처합니다. 예를 들어 메타데이터에는 학습된 실험, 배포되는 위치 및 배포의 정상 상태 여부가 포함됩니다.
- Azure와 통합하면 기계 학습 수명 주기의 이벤트에 대한 작업을 수행할 수 있습니다. 예를 들어 모델 등록, 배포, 데이터 드리프트 및 학습(작업) 이벤트가 있습니다.
팁
모델 및 데이터 세트에 대한 일부 정보는 자동으로 캡처되지만 태그를 사용하여 더 많은 정보를 추가할 수 있습니다. 작업 영역에서 등록된 모델 및 데이터 세트를 찾을 때 태그를 필터로 사용할 수 있습니다.
기계 학습 수명 주기의 이벤트 알림, 자동화 및 경고
Machine Learning은 기계 학습 수명 주기의 이벤트를 알리고 자동화하는 데 사용할 수 있는 주요 이벤트를 Azure Event Grid에 게시합니다. 자세한 내용은 Event Grid 사용을 참조하세요.
기계 학습 수명 주기 자동화
GitHub 및 Azure Pipelines를 사용하여 모델을 학습하는 연속 통합 프로세스를 만들 수 있습니다. 일반적인 시나리오에서는 데이터 과학자가 프로젝트의 Git 리포지토리에 대한 변경을 확인할 때 Azure Pipelines에서 학습 작업을 시작합니다. 그런 다음, 작업 결과를 검사하여 학습된 모델의 성능 특성을 확인할 수 있습니다. 모델을 웹 서비스로 배포하는 파이프라인을 만들 수도 있습니다.
Machine Learning 확장을 사용하면 Azure Pipelines를 더 쉽게 사용할 수 있습니다. Azure Pipelines가 다음과 같이 개선됩니다.
- 서비스 연결을 정의할 때 작업 영역 선택을 사용하도록 설정합니다.
- 학습 파이프라인에서 생성된 학습된 모델이 릴리스 파이프라인을 트리거할 수 있습니다.
Machine Learning에서 Azure Pipelines를 사용하는 방법에 대한 자세한 내용은 다음을 참조하세요.
다음 단계
다음 리소스를 읽고 탐구하여 자세히 알아보세요.