안녕하세요!
패스트캠퍼스 Upstage AI Lab 5기 수강생 '예스잇(YES-IT)'입니다.
이번 프로젝트는 데이터 전처리부터 모델 서빙 경험할 수 있는 MLOps 프로젝트였어요.
우리 팀이 선택한 주제는 영화 추천 시스템 프로젝트로 단순한 기술 구현을 넘어, 협업 경험과 MLOps 프로세스를 배우는 정말 값진 시간이었어요.
우리 팀 이름인 "Avengers"처럼, 각자 맡은 역할에서 최선을 다하며 멋진 결과를 만들어냈는데요.
기획부터 서비스 배포까지 단계별로 차근차근 이야기해볼게요.
MLOps란 무엇인가요?
MLOps(Machine Learning Operations)는 머신러닝 모델을 더 쉽고 효율적으로 개발하고 배포하며, 운영할 수 있게 도와주는 프로세스와 도구들을 말해요. 소프트웨어 개발에서 DevOps가 애플리케이션 개발과 운영을 연결하는 역할을 한다면, MLOps는 머신러닝 모델을 만드는 과정부터 운영 환경에 배포하는 과정까지 이어주는 역할을 한다고 보면 돼요.
쉽게 말해, MLOps는 데이터 과학자와 IT 운영 팀이 협력해서 머신러닝 모델을 더 체계적으로 관리할 수 있도록 도와주는 거예요. 데이터 수집부터 모델 배포, 그리고 이후에 성능을 꾸준히 관리하는 전체 과정을 자동화하고 최적화하는 게 MLOps의 핵심이에요. 덕분에 머신러닝 워크플로가 훨씬 더 매끄럽게 진행될 수 있죠! 😊
영화 추천 시스템이란?
영화 추천 시스템은 사용자가 어떤 영화를 좋아할지 예측하고, 그에 맞는 영화를 추천해주는 기술이에요. 예를 들어, 넷플릭스나 왓챠를 이용하다 보면, 내가 본 영화나 평점을 준 영화에 따라 "이런 영화는 어떠세요?" 하고 추천을 해주는 기능이 있잖아요? 그게 바로 추천 시스템이에요.
추천 시스템은 주로 사용자 데이터와 영화 데이터를 분석해서 만들어지는데요:
- 사용자 데이터: 사용자가 어떤 영화를 보고, 얼마나 높은 점수를 줬는지 등의 정보를 분석
- 영화 데이터: 영화의 장르, 감독, 개봉 연도, 러닝타임, 평점, 수익 등 다양한 메타데이터를 활용
이 프로젝트에서 우리는 이런 추천 시스템을 만들어서, 사용자가 관심 있어 할 영화를 추천해주는 실제 서비스를 개발하고 배포하는 걸 목표로 했어요. 단순히 "좋아 보이는 영화"를 추천하는 게 아니라, 사용자 취향에 맞는 영화를 더 정교하게 추천하는 시스템을 만드는 거예요.
이제 본격적으로 프로젝트 개요를 설명해 볼게요! 😊
1. 프로젝트 개요: 영화 추천 시스템의 목표와 추진방향
이번 프로젝트는 AI 부트캠프 과정의 일환으로 진행되었어요. 이 과정은 단순히 이론에 머무는 것이 아니라, 실제 서비스 배포를 경험하며 AI 부트캠프에서 배운 내용을 실전에 적용할 수 있었던 소중한 기회였어요. 그래서 우리 팀은 "실제 사용자가 사용할 수 있는 영화 추천 시스템"을 만드는 것이 가장 큰 목표였어요. 단순히 머신러닝 모델을 개발하는 데 그치지 않고, FastAPI와 Streamlit을 활용해 사용자 친화적인 인터페이스와 API까지 완성하는 데 중점을 두었답니다. 사용자 입장에서 쉽게 사용할 수 있는 서비스를 제공하고 싶었거든요.
프로젝트는 단계적으로 진행되었어요. 먼저 전체적인 아키텍처 설계를 시작으로, 데이터를 정리하고 분석하는 데이터 전처리, 추천 모델을 설계하고 구현하는 추천 시스템(RecSys) 모델 개발, 그리고 최종적으로 결과물을 배포하는 서비스 배포까지 하나씩 나아갔죠. 특히 각 단계마다 팀원들이 맡은 역할을 효율적으로 분배하고, 서로 진행 상황을 공유하면서 협업의 힘을 제대로 느낄 수 있었어요.
이 프로젝트는 단순히 기술적인 학습에 그치지 않고, 실제 실무에서 중요한 MLOps의 개념과 프로세스를 경험해볼 수 있는 좋은 기회였어요. 데이터 준비부터 모델 배포까지의 모든 과정을 경험하면서 MLOps가 얼마나 중요한지 체감할 수 있었답니다. 특히 팀원들과 함께 협력하며 성장할 수 있어서 더 의미 있는 시간이었어요.
다만, 프로젝트를 진행하면서 MLflow와 Airflow 같은 MLOps 도구들을 제대로 활용하지 못했던 점이 조금 아쉬웠어요. 이런 툴들을 더 잘 활용했더라면 실험 관리나 워크플로 자동화를 더욱 체계적으로 할 수 있었을 텐데, 아직 익숙하지 않아서 많이 활용하지 못했던 것 같아요. 다음 프로젝트에서는 꼭 더 익혀서 활용해보고 싶어요!
2. 데이터 전처리와 추천 시스템 개발: TMDB와 Movielens 데이터 활용
이번 프로젝트에서는 TMDB와 Movielens 데이터를 활용해 영화 추천 시스템을 개발했어요. TMDB는 영화의 장르, 개봉일 같은 메타데이터를 제공하고, Movielens는 사용자의 영화 평가 데이터를 담고 있어서 두 데이터를 조합하면 다양한 분석이 가능했답니다.
먼저, 데이터를 전처리하면서 결측값을 제거하고 1980년 이후 개봉한 영화와 주요 언어(영어, 한국어)로 대상을 제한했어요. 그 결과 223,450개의 영화 데이터와 35만 개 이상의 사용자 데이터를 정리할 수 있었죠. 이 과정에서 "좋은 데이터가 좋은 모델을 만든다"는 사실을 실감했어요. 데이터를 정리하니 모델 성능이 훨씬 좋아졌거든요.
추천 시스템 모델은 사용자 관점에서 데이터를 이해하고, 대중적인 선호도를 반영하는 데 중점을 뒀어요. 처음에는 예술 영화가 주로 추천되는 경향이 있었지만, 수익성과 평점 같은 조건을 고려해 알고리즘을 개선했어요. 덕분에 사용자 취향에 더 잘 맞는 결과를 제공할 수 있었답니다.
데이터 전처리는 단순히 데이터를 정리하는 작업이 아니라, 딥러닝 모델의 성능을 좌우할 수 있는 중요한 단계라는 점을 배웠어요. 특히 AI 부트캠프 강의를 통해 배운 데이터 전처리 기술을 적극 활용해, 데이터 품질을 높이는 데 성공했답니다. 이 과정을 통해 데이터를 다루는 방법에 대한 이해도를 한층 더 높일 수 있었어요. 다만, MLflow를 활용해 실험 관리를 체계적으로 하지 못했던 점은 아쉬웠어요. 결과를 비교하거나 추적하는 데 도움이 됐을 텐데, 다음 프로젝트에서는 꼭 더 잘 활용해보고 싶어요.
3. 프론트엔드 UI 개발과 Streamlit 배포
이번 프로젝트에서 제가 맡은 작업은 프론트엔드 UI 개발과 Streamlit을 활용한 서비스 배포였어요. 사용자들이 쉽게 접근할 수 있는 인터페이스를 만드는 게 목표였기 때문에, 디자인부터 기능 구현까지 사용자 경험(UX)을 최우선으로 고려했답니다.
먼저, UI 개발에서는 영화 추천 결과를 직관적으로 보여줄 수 있도록 레이아웃을 구성했어요. 추천 영화 목록을 정리해 카드 형식으로 출력하고, 영화의 기본 정보(제목, 장르, 평점 등)를 한눈에 볼 수 있도록 시각적으로 정돈했어요. 특히 사용자 친화적인 디자인을 위해 색상과 버튼 배치를 신경 썼고, 추천 결과를 깔끔하게 정리하기 위해 여러 번 테스트하며 UI를 다듬었답니다.
이번 작업을 통해 느낀 점은, 사용자에게 직접 보여지는 부분을 설계하는 일이 정말 중요하다는 거였어요. 아무리 좋은 모델과 데이터가 있어도, 사용자가 직관적으로 이해할 수 있는 UI가 없다면 의미가 반감될 수 있거든요. 덕분에 사용자 관점에서 생각하며 개발하는 태도의 중요성을 배울 수 있었어요. 앞으로도 이런 경험을 바탕으로 더 나은 서비스를 설계해 보고 싶습니다!
4. 최종 배포와 결과물: 영화 추천 시스템의 서비스화
프로젝트의 마지막 단계는 완성된 영화 추천 시스템을 실제 서비스로 배포하는 일이었어요. 저는 Streamlit을 활용해 사용자 인터페이스(UI)를 개발하고, 팀원이 구축한 FastAPI 백엔드와 데이터를 연결해 사용자들이 추천 시스템을 직접 체험할 수 있는 웹 애플리케이션을 완성했답니다.
Streamlit은 간단한 코드로 빠르게 웹 애플리케이션을 만들 수 있어서 사용하기 편리했어요. 저는 API에서 데이터를 받아와 UI에 표시하는 작업을 맡았고, 이를 통해 추천 결과를 직관적이고 깔끔하게 보여줄 수 있도록 했어요. 최종적으로, 사용자들은 장르, 평점, 개봉 시기, 수익 등 다양한 기준을 기반으로 추천된 영화 목록을 확인할 수 있는 시스템을 경험할 수 있었죠.
배포 과정을 통해 사용자 관점에서 서비스가 얼마나 직관적이고 편리한지를 고민해볼 수 있었던 점이 의미 있었어요. 다만, 데이터와 모델 배포 과정에서 Airflow 같은 워크플로 관리 도구를 활용하지 못했던 점은 아쉬움으로 남았어요. 이런 도구를 활용했다면 더 효율적이고 체계적으로 작업을 진행할 수 있었을 텐데, 이 부분은 다음 프로젝트에서 꼭 보완해보고 싶어요!
이제 머신러닝에 이어 딥러닝을 배우는 시점에서 얼마나 많은 것을 습득하고 구현하게 될지 벌써부터 기대가 커요. 물론 그만큼 시간과 노력이 필요하겠지만요. 앞으로는 딥러닝 모델링과 MLOps 기술을 더 깊이 익히고 싶어요. 특히, Airflow와 MLflow를 활용해 이번 프로젝트에서 부족했던 워크플로와 실험 관리를 보완할 계획이에요. 추천 시스템뿐만 아니라 NLP나 컴퓨터 비전 등 다른 분야에서도 실제 문제를 해결하며 성장하고 싶습니다. 앞으로의 도전이 기대돼요! 😊
'YES - 개발일지' 카테고리의 다른 글
[Upstage AI Lab 5기 부트캠프] 문서 타입 분류 CV 경진대회에서 1위 도전 (1) | 2025.01.02 |
---|---|
딥러닝과 파이토치: 기초부터 실전까지 ─ Upstage AI Lab 12주차 (2) | 2024.12.18 |
[Upstage AI Lab 5기 부트캠프] 첫번째 피어세션 (0) | 2024.11.23 |
'서울시 아파트 가격 예측' 경진대회 ─ Upstage AI Lab 5 (2) | 2024.11.15 |
[Upstage AI Lab 5기부트캠프] 부트캠프 지원 과정 (2) | 2024.11.03 |
댓글