본 게시글은 프로그래머스 스쿨, "마키나락스 개발자가 알려주는 MLOps" 강의를 수강한 내용을 기반으로 작성되었습니다.
MLOps란 무엇인가
MLOps란?
MLOps란 무엇일까? MLOps는 'Machine Learning + Operations'를 의미한다. ML 서비스를 배포하고 유지 및 관리 해주는 핵심 기술이라고 볼 수 있다. 그럼 ML 서비스는 기존 서비스랑 어떤 차이가 있을까? 기존 서비스는 크게 Frontend, Backend, Infra의 구조를 갖고 있다. 여기에서 간단한 ML이라면 Backend에 포함하여 표현하기도 하지만, 시간이 흐르며 ML의 몸집이 점차 커지면서 별도로 Frontend, Backend, Machine Learning, Infra의 구조를 갖게 된다. Machine Learning이 Backend, Infra와의 Interaction이 많아지며, 이를 관리하고 효율적으로 사용하기 위한 방법론이 바로 MLOps라고 불린다.
그렇다면, 자주 혼동되는 DevOps와의 차이점은 무엇일까? 사전적 정의는 'Development + Operation'를 의미한다. 개발과 운영이 한 팀으로서 빠르게 운영하고 개선하는데 도움이 될 수 있도록 하는 방법론이다. 전반적인 방향성은 MLOps와 유사하다. 하지만, DevOps는 어디까지나 개발의 지속성과 효율성 측면(CI/CD, Dockerize 등)을 목적으로 하고 있다. 전체 과정(ML 모델의 데이터 처리, 학습, 배포, 모니터링 등 전체 라이프사이클)을 전부 관리하는 MLOps와는 차이점이 있다. 결론적으로 팀 간의 협업이나 효율성 측면에서는 비슷한 목표를 가진 방법론이긴 하지만, 구체적인 적용 영역과 접근 방법에서는 차이가 있기 때문에 MLOps를 'ML + DevOps'라고 부르기에는 한계가 있다고 생각한다.
MLOps의 필요성
MLOps가 왜 필요할까? 앞서 위에서 언급한대로, MLOps는 ML 모델의 라이프사이클을 관리하는 방법론이다. 데이터 처리, 모델의 학습과 배포, 모니터링 전 과정을 자동화하고 효율적으로 사용하기 위해서 MLOps가 필요하다. 이를 통해서, 얻을 수 있는 이점은 무엇이 있을까?
우선, ML 코드는 ML 서비스의 전체 프로세스에 비하면 작은 일부분일 뿐이다. MLOps를 통해 ML 모델의 라이프사이클 전 과정을 관리하기 때문에, Data Scientist, ML engineer 등 개발자들은 전체 프로세스의 반복적인 작업이나 복잡한 운영 과정 등을 신경 쓰지 않고 각자의 문제 풀이와 모델링에 더 집중할 수 있도록 도와준다. 또, MLOps의 도구들을 이용한다면 데이터나 모델의 버전 관리를 지원하고 여러 실험 간의 성능 비교와 분석을 용이하게 만들어 더 정교한 실험 설계나 실험 관리가 가능하게 된다. 그외에도 배포된 모델에서 문제가 발생하는 경우, 빠르게 환경을 재현하여 원인을 분석하고 해결하는데 도움을 준다.
개인적인 의견으로는 데이터, 학습, 배포, 모니터링 등 각 분야는 서로 영향을 주는 관계이다. 이런 상황에서 본인의 업무만 집중해서 수행해도 다른 분야와 효과적으로 협업이 이뤄질 수 있게 도와주는 것이 MLOps라고 생각한다.
MLOps의 구성
MLOps는 ML 모델의 라이프사이클을 관리하는 방법론이라고 언급했다. 그렇다면, MLOps의 구성은 어떻게 될까? 구글에서 MLOps 레벨별 프로세스 각 0단계, 1단계, 2단계로 구분하는데, 각 단계에 따른 구성을 한 번 보자.
0단계: 수동 프로세스
Data Scientist와 ML Engineer가 있지만, 모델을 빌드하고 배포하는 과정이 완전히 수동으로 이루어지는 단계이다. 환경이 일치하지 않거나, 코드가 잘 못 되거나 버전이 다르거나 등 다양한 원인으로 서비스에 문제가 발생할 수 있다. 서로 소통에 번거로움이 있지만, 관리할 모델이 많지 않고 간혈적으로 배포가 이뤄진다면 어느정도 해결이 가능한 수준이다.
1단계: ML 파이프라인 자동화
본 단계에서는, 파이프라인(Pipeline) 자동화가 추가 된다. 이를 통해서, 환경이 달라서 발생하는 문제가 해결된다. 이전 단계보다 데이터를 처리하고, 모델을 학습하고 배포하는 과정이 더 효율적으로 진행된다. 그리고 Continuous Training(CT)의 개념이 추가된다. 실제 환경에서 모델을 서비스하다 보면, 성능이 저하되는 문제가 발생한다. 이를 모니터링하다가 재학습을 하거나, 이전의 모델을 다시 배포하는 등의 밥법으로 성능을 다시 높여 유지하는 기능을 의미한다.
2단계: CI/CD 파이프라인 자동화
본 단계에서는, CI/CD의 자동화가 추가된다. 코드뿐 아니라 학습 파이프라인을 대상으로 각 구성요소들이 대상 환경에 자동으로 빌트, 테스트, 배포할 수 있도록 합니다.
MLOps 하나씩 뜯어보기
ML 학습 및 재현 Virtual Machine / Container
작 성 중
ML 실험 관리 MLFlow / Optuna / 평가
작 성 중
데이터 관리 및 DB 구축 Data Drift / MinIO
작 성 중
ML서비스 배치 서빙 / API 서빙
작 성 중
Reference
'Study > MLOps' 카테고리의 다른 글
AWS Container Support Service (1/3) (0) | 2024.03.07 |
---|---|
근본의 Ansible? (0) | 2024.01.03 |
Slurm과 Kubernetes 정답은? (0) | 2023.12.06 |
pydantic을 사용하여, 안정성 높이기 (0) | 2023.01.26 |
BentoML로 모델 서빙하기 (0) | 2022.11.03 |