목표

  1. Docker Compose 를 이용하여 실제 서비스 환경과 비슷한 형태로 MLflow 서버를 띄워봅니다.
  2. 서비스 상황을 가정하여 MLflow 의 구성 요소들을 이해합니다.

스펙 명세서

  1. Docker Compose 파일에 MLflow 의 운영 정보, 모델 결과 등을 저장할 물리적인 PostgreSQL DB 서버 스펙을 정의합니다.
  2. Docker Compose 파일에 학습된 모델을 저장할 물리적인 저장 공간인 MinIO 서버 스펙을 정의합니다.
  3. Docker Compose 파일에 모델과 모델의 결과들을 관리할 MLFlow 서버를 정의합니다.
  4. 정의된 스펙에 따라 서비스들을 띄웁니다.

[그림 3-2] MLflow Setup Diagram

1. MLflow Backend Store

1.1 Backend Store

Backend Store 란 수치 데이터와 MLflow 서버의 정보들을 체계적으로 관리하기 위한 DB 입니다. Backend Store 에는 모델의 학습 결과인 accuracy, f1-score, 모델이 학습되면서 생기는 loss, 모델 자체의 정보인 hyperparmameters 등의 수치 데이터와 run_id, run_name, experiment_name 등의 MLflow 의 메타 데이터가 저장됩니다.

이번 파트에서는 Backend Store 로 사용하기 위해 01. Database 파트에서 사용되었던 PostgreSQL DB 를 새롭게 생성하겠습니다.

1.2 PostgreSQL DB Server

PostgreSQL DB 서버의 스펙을 Docker Compose 파일에 서비스 이름, 유저 이름, 비밀번호, DB 이름을 환경변수로 설정합니다.

docker-compose.yaml

version: "3"

services:
  mlflow-backend-store:
    image: postgres:14.0
    container_name: mlflow-backend-store
    environment:
      POSTGRES_USER: mlflowuser
      POSTGRES_PASSWORD: mlflowpassword
      POSTGRES_DB: mlflowdatabase
    healthcheck:
      test: ["CMD", "pg_isready", "-q", "-U", "mlflowuser", "-d", "mlflowdatabase"]
      interval: 10s
      timeout: 5s
      retries: 5