ML을 Service 화하기 위한 기술, MLops
우리(나)는 머신러닝을 배우고 실험하고 실제 데이터에 적용하는 데이터 사이언티스트입니다.
그렇다면 내가 만든 모델에 대해 어떤 버전에서 얼마만큼의 정확도를 가지고 있으며, 하이퍼 파라미터값은 어떤지
혹은 3번째, 10번째로 정확했던 모델은 어떤 값을 가지고 있는지를 알고 있을까요 ?
누군가 물어봤다면, 저는 쉽게 대답하기 어려웠을거 같아요.
실제로 서비스에 ML을 적용하다보면 성능이 좋지 않거나 개선해야하는 문제들이 발생하기 때문이죠.
(Validation Dataset과 Test DataSet의 환경은 같지 않기 때문이겠죠)
배포 환경에서 성능이 좋지 않아 개선하려고 하는 순간 내가 만든 모델의 버전과 여러 변수들의 값을 정확하게 알고 있지 않다면 원인을 찾기 쉽지 않습니다. 그러면 모델을 만들었던 A-Z까지의 과정을 다시 해야 개선하고 서비스할 수 있다는 뜻이기도 합니다.
모델이 작거나, 혼자서 연습했다면 엑셀이나 노션, Code 관리 툴을 이용하여 관리하고 쉽게 찾을 수 있을 것입니다.
다만, 여러 명의 DS가 동시에 모델을 개발하고 작업한다면 사용하는 환경과 버전이 다르겠죠. (우분투, 코랩..) 아니면 컴퓨팅 파워가 제한적이여서 순서대로 하나의 컴퓨터를 공유하여 사용할 때도 있을 것입니다.
실제로 데이터사이언스(AI)가 서비스까지 가지 못하는 이유 중에 큰 이유라고도 합니다.
아래는 구글에서 발표한 'Hidden Technical Debt in Machine Learning Systems - 2015' 논문입니다.
ml 모델을 서비스화 하기 위해선 단순히 좋은 모델을 사용하는 것 뿐만 아니라 성능이 떨어지지 않는지, 시스템 문제, 데이터 체크 등의 검증이 필요하다 라는 내용입니다.
소프트웨어 개발자들도 이와 유사한 고민을 했었고 이를 해결하기 위한 Devops 방법론이 떠오르게 됩니다.
* Devops란 개발 배포 모니터링이 유기적이며 지속적으로 흘러가는 프로세스를 말합니다.
이와 유사하게 DS파트 Devops 방법론을 따라 MLops를 만들게 되는데,
Devops와 MLops의 아주 큰 차이점이 있습니다.
바로 'Data의 유무' 입니다. (ML파트에선 Data가 존재하기 때문이죠)
결론입니다. ML의 서비스화가 어려운 이유를 분석해보니 모델 개발 외에 필요한 모든 업무의 중요성과
이들을 자동화하는 것에 대한 필요성을 인식하게 되었고 그 의견들이 모아지면서 ML의 모델의 개발, 서비스화 그리고 운영과정에 필요한 여러구성요소들을 MLops 안에서 정의하고 있습니다.
[머신러닝 서비스 구축을 위한 실전 MLOps 올인원 패키지 Online - 패스트캠퍼스] 강의를 참조했습니다.