최근에 사이드 프로젝트에 처음으로 참여하게 되면서 ML 모혐 개발과 더불어 ML모형 서빙을 해볼 기회가 생겼다. 기존에 모델링 경험은 많았지만 모델을 서빙한 경험이 없었는데 굉장히 고려해야할 부분이 많았고 이 분야에 대한 지식이 부족함을 스스로 느꼈던 것 같다.
대표적인 예로 자연어 처리를 위해 pre trained 모형을 사용하고 새로운 고객이 들어올 때마다 inference를 해야하는 상황이 었는데 모형의 크기가 너무 커서 로컬에서 모형을 로딩하는데 2분 이상이 소요됐었다. 이 말은 고객이 들어오면 2분을 대기해야하는 것이었다. 기존에는 ML 모형 개발에서 끝났기에 그냥 2분을 기다리고 모델을 불러와 결과값을 냈으면 됐기에 이 부분에 대한 고민을 한 적이 없었는데 이제는 그에 대한 고민이 필요했었다.
또한, 회사에서도 이런 ML모형에 대한 버전 관리나 배포를 위한 고려 등이 전혀되지 않고 단순히 클라우드에서 코드 정도만 공유될 뿐이었다. MLOps에 대한 필요성과 인프라는 어느 정도 갖춰져 있기에 향후 MLOps를 고려한 ML개발과 기존에 개발된 모형 역시 Converting하는 업무가 생길 것으로 예상하고 있는 중이다. 또한, 개인적으로 모델링을 잘하는 사람은 굉장히 많은 반면, MLOps에 대해 깊이 아는 사람은 그에 비해 현저히 적은 것 같다. 이런 측면에서 MLOps라는 분야는 흥미롭게 다가왔고, 공부해야할 필요성을 체감했던 것 같다.
study는 fastcampus에서 제공하는 머신러닝 서비스 구축을 위한 MLOps라는 강의를 기반으로 전반적인 지식을 습득하고, 이를 활용한 실습을 진행하면서 아래에 정리하려고 한다. (강의와 관련된 내용은 저작권이 있으니 general한 내용 정도하고 그와 관련된 나의 생각을 위주로 적으려고 한다.)
강의에서 MLOps가 필요한 이유에 대해서 아래와 같은 상황을 예로 들었는데, 바로 그 필요성에 대해 체감했던 것 같다. 과거에 진행한 프로젝트에서 그때 가장 성능이 좋았던 모형을 가져올 수 있는가? 가능하다면 혹시 3번째로 성능이 좋았던 모형을 가져올 수 있는가?
질문에 대한 답을 생각했을 때 현재 상황에서 답변은 불가능이다. 사실 학부 시절 진행한 프로젝트는 전에 사용하던 노트북에 있기도 하고, 과연 자료가 있다해서 그 코드가 동일하게 작동이 될까도 확실하지 않다. 아마, 현재 다시 코드를 짜서 다시 개발하는 것이 더 빠를 수도 있을 것이다.
MLOps는 이런 문제를 가능하게 해주는데 MLOps는 ML 모형의 개발은 물론 ML 모형 배포 및 운영과 관련된 모든 것을 자동을 다뤄주는 것이다. 이를 제공해주는 서비스는 대표적으로 Aws SageMaker(Aws), GCP Vertext AI(Google), Azure Machine Learning(Microsoft)가 있다.
도커: 컨테이너 기반의 오픈소스 가상화 플랫폼 (내가 local에서 작업한 것들을 os나 환경에 상관없이 어디서는 동일한 결과를 낼 수 있도록 이미지화하는 것)
쿠버네티스 : 도커와 같은 컨테이너들이 다수 존재할 때 실행을 관리 및 조율하는 시스템
VirtualBox
https://www.virtualbox.org/wiki/Download_Old_Builds_6_1 (6.1.26)
Ubuntu
https://www.omgubuntu.co.uk/2021/08/ubuntu-20-04-3-point-release (20.4.3)
계속하기 닫기 버튼이 안보일때
https://www.bearpooh.com/101