MLflow란 무엇인가
개념
MLflow는 Tracking, Projects, Models, Model Registry 4가지 구성요소로 이루어져있다. MLflow의 핵심 철학은 워크플로우에 가능한 한 제약을 최소화하는 것이다. 모든 머신러닝 라이브러리에서 작동하고, 규칙에 따라 코드에 대한 대부분의 사항을 결정하고, 기존 코드 베이스에 통합하기 위해 최소한의 변경만 요구하도록 설계되었다. 그리고 작성된 ML 코드베이스를 여러 데이터 과학자가 재현하고 재사용할 수 있도록 만드는 것을 목표로 한다.
머신러닝 워크플로우의 어려운 점들을 살펴보자.
-
실험을 추적하는 것은 어렵다.
-
코드를 재현하는 것은 어렵다.
-
모델을 패키징하고 배포하는 표준 방법은 없다.
-
모델(버전 및 단계 전환)을 관리 할 중앙 저장소가 없다.
위 4가지의 어려운 점들을 해결해주는 각 구성요소를 살펴보도록 하자.
구성요소
Tracking
기계학습의 코드를 실행하고 나중에 결과를 시각화 할 때 매개변수, 코드 버전, 메트릭 및 아티팩트를 로깅하기 위한 API 및 UI 이다. 모든 환경(독립실행형 스크립트 또는 노트북)에서 MLflow Tracking을 사용하여 결과를 로컬 파일이나 서버에 기록한 다음 여러 실행을 비교할 수 있다. 또한 다른 사용자의 결과와 비교할 수 있다.
Projects
재사용 가능한 코드를 패키징하기 위한 표준 형식이다. 각 Project는 코드 또는 디렉토리로 구성되어 있을 뿐이고, 디스크립트 파일 또는 단순한 규칙을 사용하여 종속성과 코드 실행 방법을 지정한다. 예를들면 Conda 환경을 지정하기 위한 conda.yml 파일이 포함될 수 있다. 프로젝트에서 MLflow Tracking API를 사용하면 MLflow Project 버전과 모든 매개 변수를 자동으로 기억한다. Github 또는 자체 Git 저장소에서 기존 MLflow Project 를 쉽게 실행하고, 이를 여러 단계의 워크플로우에 연결할 수 있다.
Models
모델을 여러 종류로 패키징하기 위한 규칙과, 이것을 배포하는 데 도움이 되는 다양한 도구를 제공한다.
각 모델은 디렉토리에 임의의 파일이 포함되거고 모델이 사용될 수 있는 여러 “flavors”을 나열하는 디스크립트 파일로 저장된다. 예를들어 TensorFlow 모델은 TensorFlow DAG로 로드하거나, 입력에 적용할 Python 함수로 로드할 수 있다.
MLflow는 다양한 플랫폼에 많은 공통 모델 유형을 배포하는 도구를 제공한다. 예를들어, Python 함수 특징을 지원하는 모든 모델을 Docker 기반 REST 서버, Azure ML 및 AWS SageMaker와 같은 클라우드 플랫폼에 배포할 수 있다. 그리고 클라우드 플랫폼에서 배치 및 스트리밍 추론을 위한 Apache Spark의 사용자 정의 함수의 형태로 배포할 수 있다.
Tracking API를 사용하여 MLflow 모델을 출력하는 경우 MLflow는 자동으로 어떤 프로젝트이며 실행 기억한다.
Registry
중앙화 된 모델 저장소, API 세트 및 UI를 제공하여 MLflow 모델의 전체 수명주기를 함께 관리한다. 모델 계보 (MLflow 실험 및 만들어진 모델의 실행), 모델 버전 관리, 단계 전환(transitions) (예: 스테이징에서 프로덕션 또는 아카이브로) 및 주석을 제공한다.
확장성 및 데이터
- 개별 MLflow는 Apache Spark를 사용하여 분산 클러스터에서 실행 할 수 있다. 선택한 분산 인프라에서 실행을 시작하고 결과를 추적 서버에 보고하여 비교할 수 있다. MLflow includes a built-in API to launch runs on Databricks.
-
MLflow는 하이퍼파라미터 튜닝과 같은 여러 파라미터를 사용하여 병렬로 여러 실행을 시작할 수 있도록 지원한다. Projects API를 사용하여 여러 실행을 시작하고 Tracking API를 사용하여 이를 추적할 수 있다.
-
MLflow 프로젝트는 AWS S3 및 DBFS와 같은 분산 스토리지 시스템에서 입력을 받고 출력을 쓸 수 있다. MLflow는 로컬 파일에서만 실행할 수 있는 프로젝트에 대해서 파일을 로컬에서 자동으로 다운로드 하거나, (지원하는 경우) 프로젝트에 분산 스토리지 URI를 제공할 수 있다. 즉, 100TB 파일 특성화와 같이 대규모 데이터 세트를 빌드하는 프로젝트를 작성할 수 있다.
- MLflow Model Registry는 대규모 조직에 전체 모델 수명주기를 함께 관리할 수 있는 중앙 허브를 제공한다. 조직 내에 많은 데이터 과학 팀은 수백 개의 모델을 개발하며 각 모델에는 실험, 실행, 버전, 아티팩트 및 단계 전환이 포함된다. 중앙 레지스트리는 대규모 조직의 여러 팀에서 모델 검색 및 목적을 용이하게 한다.