Backend Store
개념
- MLflow의 핵심 구성 요소로, Run, Model, Experiment에 대한 메타데이터를 저장한다.
- 저장하는 데이터는 실행(Run)의 ID, 시작 및 종료 시각, 파라미터, 메트릭(평가지표) 등
- 주로 구조화된 데이터들이므로 RDB 형태로 저장된다.
- Model Registry 기능을 사용하려면 RDB 기반 저장소가 필요함
- ※ 모델 가중치 파일과 같은 대용량 모델 아티팩트는 아티팩트 저장소에 저장됨
| 저장되는 데이터 | 한글명 | 설명 |
|---|---|---|
| Run ID | 실행 식별자 | 각 실험 실행을 구분하는 고유한 UUID. 모든 메타데이터와 아티팩트의 기준점이 됨. |
| Model ID | 모델 식별자 | 특정 실행 내에서 저장된 모델을 가리키는 ID. 모델 레지스트리에 등록될 때 참조됨. |
| Trace ID | 추적 식별자 | LLM 추론 과정 등 복잡한 워크플로우의 흐름(Trace)을 추적하기 위한 ID. |
| Tags | 태그 | 실행에 부여하는 사용자 정의 키-값 쌍. 실험의 목적, 실행자, 환경(운영/개발) 등을 필터링할 때 사용. |
| Start & end time | 시작/종료 시각 | 실험이 시작된 시각과 완료된 시각. 실험의 소요 시간을 계산하거나 시계열로 정렬할 때 활용. |
| Parameters | 매개변수 | 모델 학습에 사용된 하이퍼파라미터(예: Learning Rate, Batch Size). 문자열 형태의 키-값 쌍으로 저장. |
| Metrics | 측정 기준 | 실험 결과로 도출된 숫자 지표(예: Accuracy, Loss). 시간에 따른 변화를 기록하여 그래프로 시각화 가능. |
지원되는 Backend Store
- MLflow는 SQLAlchemy를 통해 이하의 다양한 데이터베이스를 지원한다.
| 지원되는 Backend Store | 구분 | 설명 |
|---|---|---|
| sqlite | RDB | 가볍고 설정이 필요 없는 파일 기반 DB. 주로 개인 개발 및 테스트용으로 사용됨. 기본값. |
| postgresql | RDB | MLflow에서 가장 권장하는 운영용 DB. 확장성이 뛰어나고 대규모 트래킹에 적합함. |
| mysql | RDB | 널리 사용되는 오픈소스 DB. 안정적인 메타데이터 관리가 가능함. |
| mssql | RDB | 기업 환경에서 주로 사용되는 SQL Server 지원. SQLAlchemy를 통해 연결됨. |
| local file system | file | 서버 없이 ./mlruns 폴더 내에 JSON/YAML 형태로 저장하는 방식. |
설치해보기
Docker Compose 를 이용해 PostgreSQL Backend Store를 구동해보자.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# docker-compose.mlflow-postgres.yml
volumes:
mlflow-pgdata:
services:
mlflow-postgres:
image: postgres:15
container_name: mlflow-postgres
environment:
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: ${POSTGRES_DB}
volumes:
- mlflow-pgdata:/var/lib/postgresql/data
ports:
- "${POSTGRES_PORT}:5432"
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
interval: 5s
timeout: 3s
retries: 10
환경변수 파일은 다음과 같다.
1
2
3
4
5
6
# .env
# PostgreSQL
POSTGRES_USER=mlflow
POSTGRES_PASSWORD=mlflow
POSTGRES_DB=mlflow
POSTGRES_PORT=5432
Docker Compose 명령을 통해 컨테이너와 서비스를 실행한 뒤, DB에 접속해보자.
1
sudo docker compose -f docker-compose.mlflow-postgres.yml up -d
아직 별다른 테이블은 생성되지 않았다. 추후 MLflow Tracking Server 와 연결하면 관련 테이블들이 생길 것이다.

MLflow Tracking Server 와의 연결
- Tracking Server에서 백엔드 스토어를 별도 지정하지 않으면 sqlite 가 생성되고, 이게 사용됨
- Tracking Server를 시작할 때
--backend-store-uri옵션을 통해 지정 가능
1
--backend-store-uri postgresql://...
Reference
https://mlflow.org/docs/latest/self-hosting/architecture/backend-store/
Comments