1. MLflow Server의 구조

주요 구성 요소

  • MLflow Tracking Server : 실행(Run) 및 실험(Experiment)에 대한 정보를 수신하고, 이를 각 저장소에 알맞게 저장하는 중앙 관제탑. 그리고 사용자가 실행 이력 등을 볼 수 있는 UI.
  • Backend Store : 각 실행(Run)과 실험(Experiment)에 대한 정보를 저장하는 RDB
  • Artifact Stroe : 학습된 모델 가중치 파일, 데이터, 이미지와 같은 Run의 결과물(Artifact)을 저장하는 저장소

(1) MLflow Server

  • 모델 학습과 같은 실행(Run)이나 실험(Experiment) 에 대한 정보를 수신하는 서버
  • 수신한 정보를 각 저장소(Backend Store나 Artifact Store)에 저장하는 중앙 관제탑
  • 사용자가 실행과 실험 이력, 그리고 저장된 모델에 대한 정보를 볼 수 있는 UI 제공

(2) Backend Store

  • 실행에 대한 메타데이터 저장 : 실행(Run)의 ID, 시작 및 종료 시각, 파라미터, 메트릭(평가지표) 등
  • 주로 구조화된 데이터들이므로 RDB 형태로 저장된다.
지원되는
Backend Store
구분 설명
sqlite RDB 가볍고 설정이 필요 없는 파일 기반 DB.
주로 개인 개발 및 테스트용으로 사용됨.
기본값.
postgresql RDB MLflow에서 가장 권장하는 운영용 DB.
확장성이 뛰어나고 대규모 트래킹에 적합함.
mysql RDB 널리 사용되는 오픈소스 DB.
안정적인 메타데이터 관리가 가능함.
mssql RDB 기업 환경에서 주로 사용되는 SQL Server 지원.
SQLAlchemy를 통해 연결됨.
local file system file 서버 없이 ./mlruns 폴더 내에 JSON/YAML 형태로 저장하는 방식.

(3) Artifact Store

  • 결과물 저장 : 학습된 모델 가중치 파일, 데이터, 이미지 등
  • 각 실행(Run)에 대한 결과물(Artifact)를 저장하며, 이들은 일반적으로 대용량이다.
  • 기본적으로 로컬 파일(mlruns)에 아티팩트를 저장하지만, Amazon S3 및 호환 저장소에도 저장 가능
  • MLflow에 Artifact로 기록된 모델에 대해 models:/<model_id> 형식의 URI로 모델을 참조할 수 있음
  • MLflow Model Registry에 등록된 모델은 models:/<model-name>/<model-version> 형식의 URI로 참조 가능
지원되는 Artifact Store 구분 설명
local file system file 로컬 디렉토리에 아티팩트를 저장.
서버와 클라이언트가 동일한 물리적 경로를 공유해야 함.
기본값.
Amazon S3 및 호환 저장소 object AWS S3 및 RustFS, MinIO 등
S3 API를 사용하는 모든 오브젝트 스토리지 지원.
Azure Blob Storage object Microsoft Azure의 저장소(WASBS).
대규모 엔터프라이즈 환경에서 선호됨.
Google Cloud Storage object GCP의 오브젝트 스토리지(GCS).
gs:// URI를 통해 접근 가능함.
Backblaze B2 object 저비용 오브젝트 스토리지 솔루션.
S3 호환 API를 통해 연동 가능.
SFTP 서버 network SSH 파일 전송 프로토콜을 이용한 원격 서버 저장 방식.
NFS network 네트워크 공유 파일 시스템.
여러 노드에서 공통 경로로 마운트하여 사용.

구조 설계 방안

세 가지 구조 설계 방안

(이미지 출처 : MLflow DOC https://mlflow.org/docs/latest/self-hosting/architecture/overview/)

  • (1) Localhost
  • (2) Local Tracking with Local Database
  • (3) Remote Tracking with MLflow Tracking Server
구분 1. Localhost (기본값) 2. Local Tracking with Local DB 3. Remote Tracking with Server
권장 상황 개인 개발 / 입문 단계 개인 개발 (데이터 관리 중심) 팀 단위 협업 / 운영 환경
사용 사례 별도의 서버, DB 설정 없이 mlruns 폴더에 메타데이터와 아티팩트를 기록. SQLite, PostgreSQL 등 DB를 백엔드로 연결하여 실험 데이터를 체계적으로 관리. 아티팩트 HTTP 프록시를 통해 서버가 모든 기록과 파일 전송을 대행.
핵심 장점 설정 없이 즉시 시작 가능 서버 없이도 깔끔한 데이터 관리 보안성, 공유 가능, 중앙 제어
스토리지 로컬 파일 시스템 로컬 DB + 로컬 파일 시스템 원격 DB + 오브젝트 스토리지(S3 등)

(1) Localhost

  • 가장 단순한 형태로, 별도의 설정 없이 import mlflow를 사용하는 경우
  • Backend Store: 로컬 디렉토리 (./mlruns)
  • Artifact Store: 로컬 디렉토리 (./mlruns)
  • 혼자서 빠르게 테스트할 때 좋지만, 협업은 어려움

(2) Local Tracking with Local Database

  • 트래킹 서버 프로세스를 띄우지는 않고, 메타데이터 관리를 위한 DB만 연결한 형태
  • Backend Store: SQLAlchemy 호환 DB (예: SQLite, MySQL)
  • Artifact Store: 로컬 디렉토리 (./mlruns)
  • 실험 결과(Metric, Parameter)을 RDB 형태로 체계적으로 관리 가능, 결과 조회 쉬움
  • 실험 결과물(Artifact)에 대한 공유와 접근이 어려움

(3) Remote Tracking with MLflow Tracking Server

요약

  • 실험 결과를 저장하는 RDB 저장소와, 실험 결과물을 저장하고 공유하는 Artifact 저장소가 존재
  • 저장 및 조회 등 다양한 API를 담당하는 서버(Tracking Server 존재)
  • 머신러닝 서비스와 관련된 다양한 이해관계자 간 협업이 가능한 구조
  • 운영환경에 적용 가능한 Production-ready 구조

구성 요소

  • Tracking Server: 모든 요청의 중앙 관제탑 (MLflow Server)
  • Backend Store: 원격 데이터베이스 (postgres 서비스)
  • Artifact Store: 원격 오브젝트 스토리지 (storage/rustfs 서비스)

각 이해관계자 관점에서

  • 클라이언트(모델러와 서비스제공자측 모두)는 MLflow 서버 주소만 알면 됨
  • 모델러는 코드가 실행되는 위치에 상관 없이 학습시킨 모델을 모델 저장소에 등록이 가능함
  • 서비스 제공자는 원격 서버에서 학습된 모델을 이용할 수 있음
  • 모델 관리자는 실험의 이력과 등록 모델 현황을 Tracking Server를 통해 모니터링 가능

Outro

  • 다음 포스팅들에서는 mlflow tracking server 및 저장소들에 대해 더 자세히 알아볼 것임
  • 환경 구성(설치)의 관점에 맞게 Backend Store 부터 Artifact Store, Tracking Server 순으로 진행할 예정
  • (설치는 docker compose 방식을 기준으로 함)

Reference

https://mlflow.org/docs/latest/ml/tracking/#tracking-server
https://mlflow.org/docs/latest/ml/docker/
https://github.com/mlflow/mlflow/pkgs/container/mlflow
https://mlflow.org/docs/latest/self-hosting/architecture/backend-store/
https://mlflow.org/docs/latest/self-hosting/architecture/artifact-store/
https://mlflow.org/docs/latest/self-hosting/architecture/artifact-store/#artifacts-store-supported-storages

Comments