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은 Git과 통합하여 코드를 제공한 리포지토리, 분기 및 커밋에 대한 정보를 추적합니다.
  • Machine Learning 데이터 세트는 데이터를 추적, 프로파일링 및 버전 관리하는 데 도움이 됩니다.
  • 해석력을 사용하면 모델을 설명하고, 규정 준수를 충족하며, 모델이 특정 입력에 대한 결과에 도달하는 방법을 이해할 수 있습니다.
  • Machine Learning 작업 기록은 모델 학습에 사용된 코드, 데이터 및 컴퓨팅에 대한 스냅샷을 저장합니다.
  • Machine Learning 모델 레지스트리는 모델과 연결된 모든 메타데이터를 캡처합니다. 예를 들어 메타데이터에는 학습된 실험, 배포되는 위치 및 배포의 정상 상태 여부가 포함됩니다.
  • Azure와 통합하면 기계 학습 수명 주기의 이벤트에 대한 작업을 수행할 수 있습니다. 예를 들어 모델 등록, 배포, 데이터 드리프트 및 학습(작업) 이벤트가 있습니다.

모델 및 데이터 세트에 대한 일부 정보는 자동으로 캡처되지만 태그를 사용하여 더 많은 정보를 추가할 수 있습니다. 작업 영역에서 등록된 모델 및 데이터 세트를 찾을 때 태그를 필터로 사용할 수 있습니다.

등록된 모델을 사용하여 데이터 세트를 연결하는 단계는 선택 사항입니다. 모델을 등록할 때 데이터 세트를 참조하는 방법에 대한 자세한 내용은 Model 클래스 참조를 참조하세요.

기계 학습 수명 주기의 이벤트 알림, 자동화 및 경고

Machine Learning은 기계 학습 수명 주기의 이벤트를 알리고 자동화하는 데 사용할 수 있는 주요 이벤트를 Azure Event Grid에 게시합니다. 자세한 내용은 Event Grid 사용을 참조하세요.

운영 및 기계 학습 문제 모니터링

모니터링을 사용하면 모델에 전송되는 데이터 및 모델이 반환하는 예측을 이해할 수 있습니다.

이 정보는 모델이 사용되는 방식을 이해하는 데 도움이 됩니다. 수집된 입력 데이터는 모델의 향후 버전을 학습시키는 데에도 유용할 수 있습니다.

자세한 내용은 모델 데이터 수집 사용을 참조하세요.

새 데이터에 대한 모델 재학습

새로운 정보를 수신하면 모델의 유효성을 검사하거나, 모델을 업데이트하거나, 처음부터 다시 학습해야 하는 경우가 많습니다. 도메인에서 새로운 데이터 수신을 예상하는 경우도 있습니다. 다른 경우에는 데이터 세트에서 데이터 드리프트 검색(미리 보기)에서 설명한 대로 다음과 같은 이유로 모델 성능이 저하될 수 있습니다.

  • 특정 센서에 대한 변경
  • 계절 효과와 같은 자연 데이터 변경
  • 다른 기능과 관련하여 변하는 기능

"재학습을 받아야 하는지 알려면 어떻게 할까요?"에 대한 일반적인 대답은 없습니다. 앞에서 설명한 Machine Learning 이벤트 및 모니터링 도구는 자동화에 대한 좋은 시작점입니다. 재학습이 결정되면 다음을 수행해야 합니다.

  • 반복 가능하고 자동화된 프로세스를 사용하여 데이터를 전처리합니다.
  • 새 모델을 학습시킵니다.
  • 새 모델의 출력을 이전 모델의 출력과 비교합니다.
  • 미리 정의된 조건을 사용하여 이전 모델을 바꿀지 여부를 선택합니다.

이전 단계에서 중요한 점은 재학습을 임시로 만드는 것이 아니라 자동화해야 한다는 것입니다. Machine Learning 파이프라인은 데이터 준비, 학습, 유효성 검사 및 배포와 관련된 워크플로를 만드는 데 적합합니다. Machine Learning 디자이너에서 모델 재학습을 참조하여 파이프라인과 기계 학습 디자이너가 재학습 시나리오에 맞추는 방법을 알아보세요.

기계 학습 수명 주기 자동화

GitHub 및 Azure Pipelines를 사용하여 모델을 학습하는 연속 통합 프로세스를 만들 수 있습니다. 일반적인 시나리오에서는 데이터 과학자가 프로젝트의 Git 리포지토리에 대한 변경을 확인할 때 Azure Pipelines에서 학습 작업을 시작합니다. 그런 다음, 작업 결과를 검사하여 학습된 모델의 성능 특성을 확인할 수 있습니다. 모델을 웹 서비스로 배포하는 파이프라인을 만들 수도 있습니다.

Machine Learning 확장을 사용하면 Azure Pipelines를 더 쉽게 사용할 수 있습니다. Azure Pipelines가 다음과 같이 개선됩니다.

  • 서비스 연결을 정의할 때 작업 영역 선택을 사용하도록 설정합니다.
  • 학습 파이프라인에서 생성된 학습된 모델이 릴리스 파이프라인을 트리거할 수 있습니다.

Machine Learning에서 Azure Pipelines를 사용하는 방법에 대한 자세한 내용은 다음을 참조하세요.

또한 Azure Data Factory를 사용하여 학습에 사용할 데이터를 준비하는 데이터 수집 파이프라인을 만들 수 있습니다. 자세한 내용은 데이터 수집 파이프라인을 참조하세요.

다음 단계

다음 리소스를 읽고 탐구하여 자세히 알아보세요.