MLOps 파이프라인을 구축하여 영화 평점을 예측하는 모델을 개발하고 배포하는 프로젝트입니다. CI/CD 자동화를 통해 신속한 모델 업데이트가 가능하도록 구성하였으며, 데이터 수집부터 모델 모니터링까지 전 과정을 자동화하는 것이 목표입니다.
- 프로젝트 기간: 2025.01.16 ~ 2025.02.03
- 주제 : 영화 평점 예측 프로젝트
- 배포 링크: [서비스 바로가기]\
이름 | 역할 | GitHub | 담당 기능 |
---|---|---|---|
강병무 | 팀장/MLOps 엔지니어 | kingkangkr | github 레포 구축, 배포 관리, performance monitoring 구축 |
박정은 | MLOps 엔지니어 | gkwjdtk09 | Automated pipeline 구축, CI/CD 파이프라인 구축, 자료 수집 |
손봉교 | MLOps 엔지니어 | imsonn94 | 데이터 수집, 서버 구축, Automated pipeline 구축, CI/CD 파이프라인 구축, Docker 컨테이너 관리, 모델 코드 리뷰 |
이해울 | MLOps 엔지니어 | haeul | 데이터 전처리, Automated pipeline 구축, API 개발, db 구축 |
정혜린 | MLOps 엔지니어 | jhyerin31 | 데이터 전처리, Automated pipeline 구축, CI/CD 파이프라인 구축 |
구축된 MLOps 파이프라인의 전반적인 워크플로우를 아래와 같이 설명합니다.
- 영화 평점 예측 모델을 통해 사용자에게 보다 신뢰성 높은 영화 평가 정보를 제공하는 것이 목표입니다.
- 기존의 영화 추천 시스템과 달리, 사용자가 특정 영화를 입력하면 해당 영화의 예상 평점을 즉각적으로 예측하여 응답합니다.
- 사용자의 선호도를 고려한 영화 추천과 더불어, 영화 제작 및 배급사에서도 영화의 시장 반응을 예측하는 데 활용할 수 있습니다.
- 최신 데이터 수집 및 정제, 모델 재학습, 그리고 모델 성능 모니터링이 자동화된 MLOps 파이프라인을 통해 이루어집니다.
-
데이터 수집
- IMDB API에서 영화 관련 데이터를 수집하고 서버에 저장
-
데이터 탐색
- 결측치, 이상치 탐색 및 시각화를 통한 패턴 분석
-
데이터 전처리
- 결측값 처리, 이상치 제거, 피처 엔지니어링, 스케일링 진행
-
Airflow 기반 자동화된 학습 파이프라인 구축
- 데이터 준비 → 모델 학습 → 검증 → 평가 → 저장 과정을 자동화
-
모델 버전 관리
- 학습된 모델과 feature names를 저장하고 관리
- 검증 메트릭 정의
- RMSE 성능 평가 지표 활용
-
Docker 컨테이너화
- Dockerfile을 활용하여 각 구성 요소(웹서버, 스케줄러, 모델 서비스, 모니터링, DB)를 개별 컨테이너로 분리
- docker run을 쉘 스크립트로 실행하여 컨테이너 간의 의존성을 관리
- 데이터 저장 및 공유를 위해 적절한 Volume 및 네트워크 설정 적용
-
컨테이너별 역할 및 연동
- Autopipeline Webserver: 모델 학습 및 평가 스케줄링 관리
- Scheduler: Airflow 기반 DAG 실행 및 데이터 파이프라인 관리
- 모델 Service: 학습된 모델을 로드하여 예측 API 제공
- 모니터링: Wandb 및 로그 관리 시스템을 통해 모델 성능 추적
- DB: 예측 요청 및 학습 데이터를 저장하는 데이터베이스 운영
-
배포 프로세스
- GitHub Actions를 활용하여 CI/CD 자동화
- 컨테이너 로그를 수집하여 실시간 배포 상태 및 모델 성능 모니터링
-
모델 성능 모니터링
- Wandb(Weights & Biases)를 활용하여 실시간 로그 및 모델 성능 모니터링
-
자동 재학습 트리거
- 새로운 데이터가 누적되면 자동으로 모델을 재학습
-
로그 관리 및 배포 모니터링
- Docker 컨테이너 로그를 관리하여 배포 후 모델 예측 성능을 모니터링
- Airflow에서 모델 학습 및 배포 과정을 트래킹하여 재학습 시점 판단
구분 | 사용 툴 |
---|---|
CI/CD | GitHub Actions |
모델 학습 및 배포 | Airflow, Pickle, Docker, Flask |
모니터링 | Wandb, Airflow DAGs |
API 개발 | Flask, Docker |
- 서버 장비: AWS EC2 t3.large
- 개발 환경: Ubuntu 22.04
- 테스트 장비: RTX 3090 24GB
- 소스 관리: GitHub
- 프로젝트 관리: Notion
- 커뮤니케이션: 카카오톡, Slack
- 버전 관리: Git