머신 러닝 모델을 실제 환경에 배포하고 운영하는 과정은 생각보다 복잡하고 까다로운데요.
다행히 이러한 복잡함을 단순화하고 자동화하는 프레임워크가 존재합니다. 바로 머신 러닝 운영(MLOps)입니다. 이 글에서는 MLOps의 기본 개념과 실습 프로젝트를 통해 이를 어떻게 수행할 수 있는지 알려드리겠습니다.
MLOps란 무엇인가?
MLOps라는 말을 들어보신 분도 있고, 처음 듣는 분들도 계실 텐데요.
MLOps는 Machine Learning Operations의 약자입니다. MLOps는 머신 러닝 시스템의 전체 과정을 단순화하고 자동화하기 위한 일련의 기법(방법론)입니다. 즉 개발부터 배포까지의 자동화하는 것이죠.
이는 모델을 신뢰성 있고 유지 관리하기 쉽게 만듭니다. 이러한 접근 방식은 시스템 설계 오류를 줄이고, 운영 환경에서 보다 견고하고 정확한 예측을 수행할 수 있게 해줍니다.
MLOps가 왜 필요한가?
갑자기 MLOps를 이야기를 꺼냈다면 이유가 있겠죠? 일반적으로 머신 러닝 프로젝트는 비즈니스 문제 정의로 시작하여 데이터 추출, 데이터 준비, 피처 엔지니어링, 모델 학습 등의 단계를 거칩니다.
이 과정 중 개발과 배포 사이에 구멍(?)이 생기기 쉽습니다. 만약 데이터 과학자와 엔지니어들 간 협업이 부족하다면, 모델은 실제 환경에 맞게 최적화되지 않게 적용될 것입니다.
이런 차이점은 성능 저하, 확장성 부족, 유지보수 어려움 등의 문제가 발생할 수 있습니다. 반면, MLOps는 이러한 문제를 해결해 주는 툴(tools) 입니다.
데이터 분석가가 만든 모델을 확장 가능하고 유지 보수하기 쉽게 만들어 줍니다. 예를 들어, 모델간의 버전 관리, 정확도 성능 비교 등이 가능하죠.
MLOps 구현 테스트
프로젝트를 성공적으로 관리하기 위해선 일정한 프로젝트 구조를 갖추는 것이 중요합니다. 여기서는 데이터 수집, 전처리, 모델 학습, 평가, 배포, 모니터링을 포함한 전 과정을 관리할 기본적인 구조를 사용할 예정입니다.
1. 환경 셋업과 의존성 설치
다음 명령어를 사용해 파이썬 가상 환경을 설정하고 필요한 패키지를 설치하세요:
# 가상 환경 생성
python3 -m venv venv
# 환경 활성화
source venv/bin/activate
# 의존성 설치
pip install -r requirements.txt
2. 데이터 버전 관리(DVC)
데이터 버전 관리는 대규모 데이터 세트를 효율적으로 관리하고, Git 저장소는 코드 관리에 집중할 수 있게끔 합니다.
DVC는 대용량 데이터를 외부 스토리지(S3, Google Cloud 등)에 저장하고, 메타 파일을 통해 데이터를 추적합니다. 이는 데이터 분석팀 간 협업을 쉽게 하며, 보안 문제도 해결해 줍니다.
3. MLflow로 모델 추적과 버전 관리
MLflow이라는 툴을 이용해 모델을 추적하고 버전을 관리할 것입니다. 다운로드 링크를 참고하시기 바랍니다.
매번 모델 학습 결과와 성능을 체계적으로 기록할 수 있습니다. 이는 협업하는 데 효율적이고, 모델 버전 간 성능을 쉽게 비교할 수 있도록 도와줍니다. 다음과 같은 명령어로 MLflow를 설치하고 사용할 수 있습니다
# MLflow 설치
pip install mlflow
# MLflow UI 실행
mlflow ui
4. 모델 배포
FastAPI와 Docker를 사용해 모델 API를 구축하고 컨테이너로 배포하여 앱을 다양한 환경에서 일관성 있게 운영할 수 있습니다. 이러한 컨테이너 기반 접근 방식은 애플리케이션의 이식성과 자원 효율성을 크게 개선하게 됩니다.
5. Docker 이미지를 빌드하고 실행하여 API 테스트하기
# Docker 이미지 빌드
docker build -t <image_name> <path_to_dockerfile>
# Docker 컨테이너 실행
docker run -d -p 80:80 <image_name>
6. AWS ECS를 활용한 스케일링
이제 Docker 이미지를 AWS ECS에 배포하여, 안정적인 환경에서 머신 러닝 모델을 운영할 수 있습니다. AWS ECS는 서버 리소스를 관리하고 자동으로 애플리케이션을 확장할 수 있도록 지원합니다.
7. 모델 모니터링: Evidently AI
모델을 실제 환경에 배포한 후에는 계속해서 성능을 모니터링하는 것이 중요합니다. Evidently AI를 활용하면 데이터 드리프트, 품질 변화 등을 감지하여 모델의 지속적인 성능 유지를 돕습니다.
마치며
위와 같이 MLOps를 통해 머신 러닝 프로젝트를 효율적으로 관리할 수 있습니다. 개발부터 배포까지의 기법을 바탕으로, 향후 추가적인 자동화 및 최적화를 적용할 수도 있습니다.