MLflow 실무 스터디 가이드

데이터 엔지니어 · AI 엔지니어를 위한 핵심 요약

⚡ MLOps 🧪 Experiment Tracking 📦 Model Registry 2026.03
#mlops #experiment-tracking #model-registry

1. MLflow란?

MLflow는 머신러닝 라이프사이클 전반을 관리하는 오픈소스 플랫폼입니다. Databricks에서 시작되었으며, 실험 추적, 재현 가능한 실행, 모델 패키징, 모델 레지스트리 기능을 통합 제공합니다.

3대 핵심 능력

🧪 실험 추적 (Tracking)

파라미터, 메트릭, 아티팩트를 자동/수동 로깅. UI로 비교 및 검색.

📦 프로젝트 (Projects)

코드와 환경을 재현 가능한 형태로 패키징. Docker, Conda 등 지원.

🏛️ 모델 레지스트리 (Model Registry)

모델 버전 관리, 스테이징/프로덕션 승인 워크플로, 메타데이터 태깅.

MLflow는 언어/프레임워크에 중립적이며, Python, R, Java, REST API 등을 지원합니다.

2. 왜 써야 하는가?

ML 실험 관리 도구는 많지만, MLflow는 경량성 · 확장성 · 커뮤니티에서 강점을 보입니다. 아래는 주요 대안과의 비교입니다.

기능MLflowWeights & BiasesNeptuneTensorBoard
오픈소스✅ Apache 2.0❌ 부분 유료❌ 유료✅ Apache 2.0
온프레미스✅ 완전 지원❌ 클라우드❌ 클라우드✅ 로컬
모델 레지스트리✅ 내장❌ 별도❌ 별도❌ 없음
멀티 프레임워크✅ PyTorch, TF, sklearn...✅✅❌ TF 중심
아티팩트 저장✅ S3, GCS, HDFS, 로컬✅ 자체 저장소✅ 자체 저장소❌ 제한적

💡 팁: 팀 단위로 비용 없이 시작하려면 MLflow가 가장 확장성 좋은 선택입니다. Kubernetes 위에 Tracking Server를 띄우고 PostgreSQL + S3로 구성하면 프로덕션에도 적합합니다.

3. 핵심 개념

MLflow는 네 가지 주요 컴포넌트로 구성됩니다. 아래 ASCII 다이어그램은 전체 아키텍처를 시각화합니다.

┌──────────────────────────────────────────────────┐ │ MLflow Tracking Server │ │ (REST API / UI) ──── SQLite / PostgreSQL │ └────────────┬─────────────────┬───────────────────┘ │ │ ┌────────────────────┼─────────────────┼─────────────────────┐ │ │ │ │ ┌───────▼───────┐ ┌───────▼───────┐ ┌─────▼───────┐ ┌─────────▼────────┐ │ Experiments │ │ Runs │ │ Artifacts │ │ Model Registry │ │ (grouping) │ │ (params, │ │ (files, │ │ (versions, │ │ │ │ metrics, │ │ models) │ │ stages) │ └────────────────┘ └───────────────┘ └─────────────┘ └──────────────────┘ │ ┌────────────────────────────┼──────────────────────────────────────────┐ │ ┌───────▼───────┐ │ │ │ MLflow │ │ │ │ Project │ (conda.yaml, Docker, entry point)│ │ └───────────────┘ │ │ ┌───────▼───────┐ │ │ │ MLflow │ │ │ │ Model │ (flavors: sklearn, pytorch, ...) │ │ └───────────────┘ │ └────────────────────────────────────────────────────────────────────────┘

⚠️ 주의: Tracking Server를 원격 백엔드(PostgreSQL)와 연결하지 않으면 기본 SQLite를 사용하며, 동시 접속 시 문제가 발생할 수 있습니다. 프로덕션에서는 반드시 PostgreSQL 또는 MySQL을 사용하세요.

4. 퀵스타트

4.1 설치

pip install mlflow

또는 추가 확장 포함:

pip install mlflow[extras]

4.2 Tracking Server 실행

# 기본 SQLite 사용 (개발용)
mlflow ui --port 5000

# 원격 백엔드 + 아티팩트 (프로덕션 예시)
mlflow server \
    --backend-store-uri postgresql://user:pass@host/mlflow \
    --default-artifact-root s3://my-bucket/mlflow-artifacts \
    --host 0.0.0.0 --port 5000

4.3 첫 번째 실험 예제

import mlflow
import mlflow.sklearn
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split

mlflow.set_tracking_uri("http://localhost:5000")
mlflow.set_experiment("iris-classification")

with mlflow.start_run(run_name="rf-baseline"):
    # 파라미터 로깅
    mlflow.log_param("n_estimators", 100)
    mlflow.log_param("max_depth", 5)

    # 학습
    X, y = load_iris(return_X_y=True)
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
    model = RandomForestClassifier(n_estimators=100, max_depth=5)
    model.fit(X_train, y_train)

    # 메트릭 로깅
    acc = model.score(X_test, y_test)
    mlflow.log_metric("accuracy", acc)

    # 모델 저장 (자동으로 아티팩트에 저장)
    mlflow.sklearn.log_model(model, "model")

    # 태그
    mlflow.set_tag("dataset", "iris")
    mlflow.set_tag("model_type", "random_forest")

print("Run ID:", mlflow.active_run().info.run_id)

실행 후 http://localhost:5000에서 결과를 확인할 수 있습니다.

4.4 CLI로 실험 실행

mlflow run . --experiment-name iris-cli -P n_estimators=200

MLproject 파일이 정의된 디렉토리에서 실행합니다.

5. 핵심 설정 레퍼런스

자주 사용하는 환경 변수 및 설정값을 표로 정리했습니다.

설정환경변수 / 파라미터설명예시
Tracking URIMLFLOW_TRACKING_URITracking 서버 주소http://localhost:5000
ExperimentMLFLOW_EXPERIMENT_NAME실험 이름 지정my-experiment
Artifact RootMLFLOW_ARTIFACT_ROOT아티팩트 저장 위치s3://bucket/artifacts
백엔드 저장소--backend-store-uri메타데이터 DB (PostgreSQL 등)postgresql://user:pass@host/db
Autologmlflow.autolog()자동 로깅 활성화framework별 지원 (sklearn, pytorch 등)
Model Registry URIMLFLOW_REGISTRY_URI레지스트리 백엔드 (기본 tracking URI)databricks://workspace

💡 팁: mlflow.autolog()를 학습 코드 시작 부분에 추가하면 파라미터, 메트릭, 모델이 자동으로 로깅됩니다. 초보자에게 매우 편리합니다.

6. 실무 팁 & 트러블슈팅

자주 겪는 문제와 해결책

문제원인해결
Run이 UI에 보이지 않음 tracking_uri가 서버와 일치하지 않음 mlflow.set_tracking_uri()로 명시적 지정
Artifact 업로드 실패 S3 권한 또는 엔드포인트 설정 누락 MLFLOW_S3_ENDPOINT_URL 환경변수 설정 (MinIO 등)
동시성 문제 (SQLite locked) 기본 SQLite는 동시 쓰기 불가 PostgreSQL 또는 MySQL로 전환
모델 배포 시 flavor 오류 모델 저장 시 사용한 라이브러리 버전 불일치 conda.yaml에 정확한 의존성 명시
Autolog이 일부 메트릭을 누락 특정 프레임워크 버전 지원 범위 확인 수동 로깅으로 대체하거나 mlflow.autolog(log_models=False) 후 직접 로깅

실무 팁

7. 참고 자료

📚 추가 학습: Databricks의 “MLflow: The Missing Guide” 시리즈와 공식 예제 노트북을 추천합니다.