[MLflow] MLflow란?정보2024. 12. 14. 23:22
Table of Contents
728x90
MLflow란?
MLflow는 머신러닝 모델 실험, 관리, 배포, 모니터링, 재현성을 지원하는 오픈 소스 플랫폼임.
다양한 머신러닝 프레임워크(TensorFlow, PyTorch, Scikit-learn 등)와 호환되며, 실험 기록, 모델 관리, 배포 워크플로우를 간소화함.
특히, 중앙화된 실험 관리와 프로덕션 단계까지의 일관된 프로세스를 제공하여 머신러닝 프로젝트의 생산성을 높이는 데 기여함.
MLflow의 주요 구성 요소
1. MLflow Tracking
- 실험 기록 및 관리.
- 하이퍼파라미터, 모델 메트릭, 결과 등을 체계적으로 관리.
2. MLflow Projects
- 프로젝트 종속성을 명시적으로 정의하여 재현성을 보장.
3. MLflow Models
- 모델 저장 및 배포 표준화.
- 다양한 배포 환경에 적합한 모델 변환 및 호환 제공.
4. MLflow Model Registry
- 모델 버전 관리 및 승인 워크플로우 지원.
- 프로덕션 상태를 관리하며 협업에 유용.
MLflow의 주요 기능
- 다양한 프레임워크와 호환.
- 실험 결과 시각화 및 비교.
- REST API를 통한 모델 배포.
- 중앙화된 서버로 협업 환경 제공.
EC2에서 MLflow를 Docker와 Nginx를 통해 외부에 공개하기
이 가이드는 EC2 인스턴스에서 Docker를 활용해 MLflow 서버를 실행하고, Nginx를 프록시로 설정하여 외부에서 접근 가능하도록 구성하는 방법을 다룸.
준비 사항
EC2 인스턴스
- AWS에서 EC2 인스턴스를 생성.
- Docker 및 Docker Compose 설치 필요.
도메인 이름 (옵션)
- Nginx를 통한 외부 접속을 위해 도메인 설정이 유리.
보안 그룹 설정
- EC2 보안 그룹에서 HTTP(80), HTTPS(443) 및 MLflow 서버 포트(5000) 열기.
단계별 설정
1. EC2 인스턴스에 Docker 설치
# 패키지 업데이트
sudo apt-get update
# Docker 설치
sudo apt-get install -y docker.io
# Docker 서비스 시작 및 활성화
sudo systemctl start docker
sudo systemctl enable docker
# Docker Compose 설치
sudo curl -L "https://github.com/docker/compose/releases/download/2.x/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
2. Docker로 MLflow 서버 실행
Docker를 활용해 MLflow를 실행하는 docker-compose.yml
파일 생성.
version: "3.7"
services:
mlflow:
image: mlflow:latest
ports:
- "5000:5000"
environment:
- MLFLOW_TRACKING_URI=http://0.0.0.0:5000
- BACKEND_STORE_URI=sqlite:///mlflow.db
- ARTIFACT_STORE=s3://<your-s3-bucket>
volumes:
- ./mlflow:/mlflow
# Docker Compose 실행
sudo docker-compose up -d
MLflow 서버가 EC2 인스턴스에서 5000번
포트로 실행됨.
3. Nginx 설치 및 설정
Nginx 설치
sudo apt-get install -y nginx
Nginx 프록시 설정
/etc/nginx/sites-available/mlflow
파일 생성:
server {
listen 80;
server_name <your-domain-or-ip>;
location / {
proxy_pass http://127.0.0.1:5000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
# Nginx 설정 활성화
sudo ln -s /etc/nginx/sites-available/mlflow /etc/nginx/sites-enabled/
# Nginx 재시작
sudo systemctl restart nginx
4. EC2 보안 그룹 설정
- 포트 80(HTTP): 외부에서 Nginx를 통해 접속할 수 있도록 허용.
- 포트 5000(MLflow): 테스트 목적으로 열 수 있으나 Nginx 사용 시 비활성화 가능.
5. 외부에서 접속 테스트
- 브라우저에서
http://<EC2-public-IP>
또는 도메인을 입력해 MLflow UI에 접근 가능.
주의사항
보안 강화:
- HTTPS를 설정하여 통신 암호화.
- Let's Encrypt로 무료 SSL 인증서 발급 가능.
IAM 역할:
- S3와 같은 AWS 리소스를 사용하는 경우 EC2 인스턴스에 적절한 IAM 역할 할당.
백엔드 데이터베이스:
- SQLite는 테스트 용도로 적합하며, 프로덕션에서는 MySQL, PostgreSQL 등을 추천.
결론
이 가이드는 EC2 인스턴스에서 Docker를 사용해 MLflow 서버를 실행하고, Nginx를 프록시로 설정하여 외부 접속을 가능하게 만드는 방법을 다룸.
이 설정은 MLflow를 활용한 머신러닝 실험과 모델 관리 워크플로우를 중앙화하는 데 유용함.
관련 자료 및 참고 링크
'정보' 카테고리의 다른 글
[Linux] 리눅스 파일시스템 기본 명령어 (0) | 2024.12.23 |
---|---|
[네트워크] OSI 7 계층 (2) | 2024.12.22 |
[AWS] ECS(Elastic Container Service) 란? (0) | 2024.12.14 |
[AWS] ECR(Elastic Container Register) 이란? (1) | 2024.12.14 |
[Kubernetes] Kubernetes의 역할과 사용자 역할 비교 (0) | 2024.12.14 |
@maneDataLab :: 마네의 데이터랩
배움에 즐거움을 느끼는 마네의 데이터랩 이미지 출처 : https://www.instagram.com/hoseobiiiiiii._.0410/
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!