Ubuntu 24.04에 오픈 소스 머신러닝 실험 추적 도구인 MLflow 배포하기
요약
Ubuntu 24.04 환경에서 Docker Compose를 사용하여 오픈 소스 ML lifecycle 관리 도구인 MLflow를 배포하는 가이드를 제공합니다. PostgreSQL, S3 호환 저장소, Traefik을 활용해 보안이 강화된 HTTPS 환경을 구축하고 실험을 기록하는 과정을 다룹니다.
핵심 포인트
- Docker Compose를 이용한 MLflow 스택(PostgreSQL, S3, Traefik) 구축
- Traefik을 활용한 자동 HTTPS 및 도메인 연결 설정
- basic-auth를 통한 MLflow 서버 보안 인증 적용
- scikit-learn 샘플을 이용한 실제 실험 데이터 기록 및 검증
MLflow는 머신러닝 생명주기(machine learning lifecycle)를 관리하기 위한 오픈 소스 플랫폼으로, 실험 추적(experiment tracking), 모델 레지스트리(model registry), 그리고 재현 가능한 실행(reproducible runs)을 지원합니다. 이 가이드에서는 Docker Compose를 사용하여 PostgreSQL 백엔드, S3 호환 아티팩트 저장소(artifact storage), 기본 인증(basic-auth), 그리고 자동 HTTPS를 처리하는 Traefik을 활용해 MLflow를 배포한 후, scikit-learn 샘플 실행을 기록하는 과정을 다룹니다. 이 과정을 마치면 HTTPS를 통해 사용자의 도메인에서 실험을 기록하는 MLflow를 갖게 됩니다.
전제 조건: 액세스 키(access key), 비밀 키(secret key), 리전(region), 엔드포인트 URL(endpoint URL)을 포함한 S3 호환 버킷(예: Vultr Object Storage).
디렉토리 구조 설정
1. 프로젝트 디렉토리 생성:
$ mkdir -p ~/mlflow
$ cd ~/mlflow
2. 환경 파일 생성:
$ nano .env
DOMAIN=mlflow.example.com
LETSENCRYPT_EMAIL=admin@example.com
...
3. 기본 인증(basic-auth) 설정 생성:
$ nano basic_auth.ini
[mlflow]
default_permission = READ
database_uri = sqlite:///basic_auth.db
...
4. 공식 이미지에 인증 서버(auth-server) 추가 기능과 Postgres/S3 클라이언트를 추가하는 Dockerfile 생성:
$ nano Dockerfile
FROM ghcr.io/mlflow/mlflow:v3.10.1
RUN pip install --no-cache-dir psycopg2-binary boto3 'mlflow[auth]'
Docker Compose로 배포하기
1. Compose 매니페스트(manifest) 생성:
$ nano docker-compose.yml
services:
traefik:
image: traefik:v3.6
...
2. 스택 빌드 및 시작:
$ docker compose up -d --build
3. 서비스 확인 및 로그 출력:
$ docker compose ps
$ docker compose logs
로그인 및 샘플 실험 기록
1. https://mlflow.example.com을 열고 admin과 basic_auth.ini에 설정된 비밀번호로 인증합니다.
2. 워크스테이션에서 가상 환경(virtualenv)을 생성하고 의존성을 설치합니다:
$ sudo apt install python3-venv -y
$ python3 -m venv mlflow-env
$ source mlflow-env/bin/activate
...
3. 데모 실험 스크립트 저장:
$ nano mlflow_demo.py
import mlflow
import mlflow.sklearn
from sklearn.model_selection import train_test_split
...
4. 자격 증명(Credentials) 내보내기 및 스크립트 실행:
$ export MLFLOW_TRACKING_USERNAME=admin
$ export MLFLOW_TRACKING_PASSWORD=ADMIN_PASSWORD
$ export AWS_ACCESS_KEY_ID=YOUR_ACCESS_KEY
...
MLflow UI를 새로고침하면, 기록된 파라미터(parameters), 메트릭(metrics) 및 저장된 모델 아티팩트(artifact)와 함께 official_demo_experiment 아래에 실행(run) 결과가 나타납니다.
다음 단계
MLflow가 PostgreSQL 영속성(persistence) 및 S3 아티팩트(artifacts)와 함께 실행 중입니다. 이제 다음과 같은 작업을 수행할 수 있습니다:
- 단계별 승격(staged promotion)을 위해 상위 실행 결과들을 **모델 레지스트리 (Model Registry)**에 등록
- 수동 작업 없는 추적을 위해 학습 코드에
mlflow.autolog()연결 - 기본 인증(basic-auth) 데이터베이스에서 팀 사용자 및 실험별 권한 추가
추가적인 팁이 포함된 전체 가이드는 **Vultr Docs**의 원문 기사를 방문하여 확인하세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기