MLflow를 사용한 ML 수명 주기 관리

이 문서에서는 기계 학습 수명 주기 관리를 위해 Databricks에서 MLflow를 사용하는 방법을 설명합니다. 또한 각 MLflow 구성 요소를 소개하는 예제와 이러한 구성 요소가 Azure Databricks 내에서 호스트되는 방법을 설명하는 콘텐츠에 대한 링크를 포함합니다.

Databricks의 ML 수명 주기 관리는 관리 되는 MLflow에서 제공합니다. Azure Databricks는 엔터프라이즈 보안 기능, 고가용성 및 실험 및 실행 관리 및 Notebook 수정 캡처와 같은 다른 Azure Databricks 작업 영역 기능과 통합된 완전히 관리되고 호스트된 버전의 MLflow를 제공합니다.

처음 사용자는 기본 MLflow 추적 API를 보여 주는 MLflow 실험 시작부터 시작해야 합니다.

MLflow란?

MLflow는 엔드투엔드 기계 학습 수명 주기를 관리하기 위한 오픈 소스 플랫폼입니다. 다음과 같은 기본 구성 요소가 있습니다.

  • 추적: 실험을 추적하여 매개 변수와 결과를 기록하고 비교할 수 있습니다.
  • 모델: 다양한 ML 라이브러리에서 다양한 모델 서비스 및 유추 플랫폼으로 모델을 관리하고 배포할 수 있습니다.
  • 프로젝트: 다른 데이터 과학자와 공유하거나 프로덕션으로 전송하기 위해 재사용 가능한 재현 가능한 형식으로 ML 코드를 패키지할 수 있습니다.
  • 모델 레지스트리: 모델의 전체 수명 주기 단계 전환을 관리하기 위해 모델 저장소를 중앙 집중화할 수 있습니다( 스테이징에서 프로덕션으로, 버전 관리 및 주석 처리 기능 사용). Databricks는 Unity 카탈로그에서 모델 레지스트리의 관리되는 버전을 제공합니다.
  • 모델 서비스: MLflow 모델을 REST 엔드포인트로 호스트할 수 있습니다. Databricks는 제공된 AI 모델을 배포, 관리 및 쿼리하는 통합 인터페이스를 제공합니다.

MLflow는 Java, Python, R 및 REST API를 지원합니다.

MLflow 데이터는 플랫폼 관리형 키를 사용하여 Azure Databricks에 의해 암호화됩니다. 관리되는 서비스에 고객 관리형 키를 사용하는 암호화는 지원되지 않습니다.

MLflow 추적

Azure Databricks의 MLflow는 기계 학습 및 딥 러닝 모델을 위한 학습 실행을 추적하고 보호하기 위한 통합 환경을 제공합니다.

모델 수명 주기 관리

MLflow 모델 레지스트리는 중앙 집중식 모델 리포지토리이며, MLflow 모델의 전체 수명 주기를 관리할 수 있는 API의 UI 및 집합입니다. Databricks는 Unity 카탈로그에서 MLflow 모델 레지스트리의 호스트된 버전을 제공합니다. Unity 카탈로그는 중앙 집중식 모델 거버넌스, 작업 영역 간 액세스, 계보 및 배포를 제공합니다. Unity 카탈로그에서 모델 수명 주기를 관리하는 방법에 대한 자세한 내용은 Unity 카탈로그에서 모델 수명 주기 관리를 참조 하세요.

Unity 카탈로그에 작업 영역을 사용하도록 설정하지 않은 경우 작업 영역 모델 레지스트리사용할 수 있습니다.

모델 레지스트리 개념

  • 모델: 모델 버전의 mlflow.<model-flavor>.log_model 메서드 중 하나를 사용하여 로깅된 실행 또는 실험에서 로깅된 MLflow 모델입니다. 모델이 기록되면 모델 레지스트리에 등록할 수 있습니다.
  • 등록된 모델: 모델 레지스트리에 등록된 MLflow 모델입니다. 등록된 모델에는 고유한 이름, 버전, 모델 계보 및 기타 메타데이터가 있습니다.
  • 모델 버전: 등록된 모델의 버전입니다. 새 모델이 모델 레지스트리에 추가되면 버전 1로 추가됩니다. 동일한 모델 이름에 등록된 각 모델은 버전 번호가 증가합니다.
  • 모델 별칭: 별칭은 등록된 모델의 특정 버전에 대한 변경 가능한 명명된 참조입니다. 별칭의 일반적인 용도는 모델 학습 워크플로의 지정된 환경에 배포되는 모델 버전을 지정하거나 특정 별칭을 대상으로 하는 유추 워크로드를 작성하는 것입니다. 예를 들어 대부분의 프로덕션 트래픽을 제공해야 하는 모델 버전에 "사기 감지" 등록된 모델의 "챔피언" 별칭을 할당한 다음 해당 별칭을 대상으로 하는 유추 워크로드를 작성할 수 있습니다(즉, "챔피언" 버전을 사용하여 예측).
  • 모델 단계 (작업 영역 모델 레지스트리에만 해당): 모델 버전에 하나 이상의 스테이지를 할당할 수 있습니다. MLflow는 일반적인 사용 사례에 대해 미리 정의된 단계(없음, 스테이징, 프로덕션보관됨)를 제공합니다. 적절한 사용 권한을 사용하여 단계 간에 모델 버전을 전환하거나 모델 단계 전환을 요청할 수 있습니다. 모델 버전 단계는 Unity 카탈로그에서 사용되지 않습니다.
  • 설명: 알고리즘 설명, 사용되는 데이터 세트 또는 방법론과 같은 팀에 유용한 설명 및 관련 정보를 포함하여 모델의 의도에 주석을 달 수 있습니다.

예제 Notebook

Model Registry를 사용하여 풍력 발전 단지의 일일 전력 출력을 예측하는 기계 학습 애플리케이션을 빌드하는 방법을 보여 주는 예제는 다음을 참조하세요.

모델 배포

Databricks Model Serving 는 AI 모델을 배포, 관리 및 쿼리하는 통합 인터페이스를 제공합니다. 서비스하는 각 모델은 웹 또는 클라이언트 애플리케이션에 통합할 수 있는 REST API로 사용할 수 있습니다.

모델 서비스 제공은 다음 서비스를 지원합니다.

  • 사용자 지정 모델. MLflow 형식으로 패키지된 Python 모델입니다. Unity 카탈로그 또는 작업 영역 모델 레지스트리에 등록할 수 있습니다. 예를 들어 scikit-learn, XGBoost, PyTorch 및 Hugging Face 변환기 모델이 있습니다.
  • 파운데이션 모델 API에서 사용할 수 있는 최첨단 오픈 모델 이러한 모델은 최적화된 유추를 지원하는 큐레이팅된 기본 모델 아키텍처입니다. Llama-2-70B-chat, BGE-Large 및 Mistral-7B와 같은 기본 모델은 토큰당 종량제 가격 책정에 즉시 사용할 수 있으며, 성능 보장 및 미세 조정된 모델 변형이 필요한 워크로드는 프로비전된 처리량으로 배포할 수 있습니다.
  • 외부 모델. Databricks 외부에서 호스트되는 모델입니다. 예를 들어 OpenAI의 GPT-4, Anthropic's Claude 등의 기본 모델이 있습니다. 외부 모델을 제공하는 엔드포인트는 중앙에서 제어할 수 있으며 고객은 속도 제한 및 액세스 제어를 설정할 수 있습니다.

오프라인 유추를 위해 MLflow 모델을 배포할 수도 있습니다. 일괄 처리 유추에 대한 모델 배포를 참조하세요.