MLflow 에서 제공하는 기능 중 Project와 Model의 정확한 차이를 이해하지 못하는 분들이 간혹 있다. 처음 접하게 되면 차이가 어려울 수 있다.
Project와 Model 모두 패키징을 제공하는 방법 같은데 왜 나뉘어져 있는지 의문이 들 수 있을 것 이다. 그래서 간략하게 정리해 보려고 한다.
MLflow Project는 재사용 가능한 데이터 사이언스 코드의 패키징을 위한 표준 포맷이다. 이해하기 어려운 설명 같다. 좀 더 상세히 설명해 보면, 각 Project는 단순히 코드 또는 Git repository가 있는 디렉토리이며, 디스크립터 파일 또는 단순한 규칙을 사용하여 종속성과 코드 실행방법을 지정한다.
특정 데이터 과학 또는 기계학습 프로젝트와 관련된 코드를 패키징하는 표준화된 방법이다. 예를 들어 데이터를 전처리하고 모델을 훈련하는 워크플로우(예를 들어 파이썬 Conda 환경을 지정하기 위한 conda.yaml 파일 등)가 있는 경우 이를 MLProject 파일에 명세하여 패키징할 수 있다.
또한 프로젝트에서 MLflow Tracking API를 사용하는 경우 MLflow는 프로젝트 버전 및 모든 매개 변수를 자동으로 저장한다. Github 또는 자체 Git repository에서 기존 MLflow 프로젝트를 쉽게 실행하고 다단계의 워크플로우에 연결할 수 있다.
MLflow Model은 머신 러닝 모델을 다양한 방식으로 패키징하는 규칙과 이를 배포하는데 도움이 되는 다양한 도구를 제공한다. 머신 러닝 모델을 다양한 방식으로 패키징하는 규칙과 이를 배포하는 데 도움이 되는 다양한 도구를 제공한다. 각 모델은 임의의 파일과 모델을 사용할 수 있는 여러 Flavors을 나열하는 디스크립션 파일을 포함하는 디렉토리로 저장된다.
예를 들어 TensorFlow 모델은 TensorFlow DAG로 로드하거나 Python 함수로 로드하여 입력에 적용할 수 있다. MLflow는 다양한 플랫폼에 많은 공통된 모델 유형을 배포할 수 있는 도구를 제공한다. 예를 들어 "Python 기능"을 지원하는 모든 모델을 Docker 기반 REST 서버, Azure ML 및 AWS SageMaker와 같은 클라우드 플랫폼에 배포할 수 있다. 배치 및 스트리밍 추론을 위한 Apache Spark의 사용자 정의 함수. 추적 API를 사용하여 MLflow 모델을 출력하는 경우 MLflow는 자동으로 해당 모델이 어떤 프로젝트 및 실행에서 왔는지 저장한다.
PyToach 와 같은 ML 프레임워크를 사용하고 싶지만 이 모델을 어떻게 배포해야할지 어려운 상황이라 하면, Model을 이용하여 모델을 쉽게 배포할 수 있다.
조금 복잡한가? 좀 더 정리를 해보자.
MLflow Model:
MLflow Model은 기계 학습 모델을 패키징하고 관리하는 데 사용되는 표준 형식입니다. MLflow Model은 모델 아티팩트와 모델 메타데이터로 구성됩니다. 모델 아티팩트는 학습된 모델 자체를 나타내며, 여러 형식(flavor)으로 저장될 수 있습니다. 각 flavor는 다른 하위 도구에서 모델을 이해하고 실행할 수 있도록 지원합니다. 예를 들어, TensorFlow, PyTorch, Scikit-learn 등과 같은 다양한 머신 러닝 라이브러리와 배포 환경에서 사용할 수 있는 형식으로 변환할 수 있습니다.
MLflow Project:
MLflow Project는 코드, 데이터 및 환경 설정을 포함하는 기계 학습 프로젝트의 논리적 단위입니다. MLflow Project는 반복 가능하고 재현 가능한 학습과 추론을 위한 프로젝트 디렉토리 구조를 정의합니다. 일반적으로 프로젝트 디렉토리에는 코드 파일, 학습에 사용되는 데이터 파일, 모델을 빌드하고 학습시키는 데 필요한 환경 설정 파일 등이 포함됩니다. 이러한 프로젝트 디렉토리를 MLflow에 등록하면, 다른 사용자가 동일한 환경에서 프로젝트를 재현하고 실행할 수 있습니다. MLflow Project는 로컬 환경에서 실행될 수도 있고, 클라우드나 클러스터 환경에서 실행될 수도 있습니다.
요약하자면,
MLflow Model은 학습된 모델을 패키징하고 관리하는 데 사용되는 형식이며, 다양한 하위 도구에서 실행할 수 있는 모델 "flavor"로 저장됩니다. 반면에, MLflow Project는 코드, 데이터 및 환경 설정을 포함하는 기계 학습 프로젝트의 논리적 단위로, 프로젝트를 재현하고 실행하기 위한 디렉토리 구조와 설정을 정의합니다.
'AI > MLOps' 카테고리의 다른 글
[Poetry] requirements.txt 파일로 Poetry에 import 하기 (0) | 2024.05.17 |
---|---|
[MLflow] #5. MLflow Model Registry (0) | 2023.04.07 |
[MLflow] #4. MLflow Projects 정리하기 (0) | 2023.04.05 |
[MLflow] #3. MLflow Model 정리하기 (0) | 2023.04.01 |
[MLflow] #2. Tracking 기능 사용해보기 (0) | 2023.03.30 |