MLOps 공부하기 [1] - MLOps란?

김진성·2021년 9월 22일
0

MLOps

목록 보기
1/1
post-thumbnail

인공지능을 공부하기 시작하면서 Tensorflow, Keras Framework를 공부하기 되고 다양한 전처리 과정에 필요한 Pandas, Numpy와 같은 Python Library를 공부하게 되었다. 보통 인공지능 모델링은 Jupyter Notebook을 이용해 사용하기 마련이다. 근데 만약 내가 생성한 모델들을 실제 서비스에 적용한다면? 어떻게 할 것인가?라는 어려움에 부딪히게 되었다. 실제 모델을 배포하는데 있어 Flask와 AWS, Colab Pro를 사용해 Colab에서 모델을 생성하고 Flask로 통신하며 Frontend와 통신을 해봤다. 근데 결과는 별로 좋지 않았다. 모델이 돌아가는 속도는 느릴뿐만 아니라 실시간 오류를 확인하기가 어려웠고 서비스에 적용은 테스트할 때만 사용할 수 있기 때문이다. 개발은 실제 사용자의 경험을 증진시켜주고 어려움을 해결해주는데 필요한 도구이다. 실생활에서 적용을 못한다면 필요하지 않다. 내가 만든 ML 모델을 실제 서비스에 사용한다면 어떻게 배포하고 어떻게 관리할 것인가? 라는 의문이 생기는데 이것을 해결해주는 것이 바로 MLOps 이다.

MLOps

MLOps = ML + Dev + Ops의 합성어이면서 Machine Learning Operations의 줄임말이기도 하다. 기존 DevOps가 서비스에서 발생하는 로그나 오류를 관리하는 것이라면 MLOps는 DevOps보다 더 깊은 영역에서 ML 과정에서 발생하는 오류나 데이터를 관리해 자동화해주는 것이다. MLOps는 2018년~2019년 ML 모델 적용과정에서 점점 사용되고 인용된 단어이다. AIOps/DLOps라는 말도 있지만 MLOps가 더 큰 개념으로 적용된다. 또한, 실제 ML 모델 작성은 서비스 적용과정에서 매우 적게 차지하는 과정이다. 머신러닝 말고 소프트웨어 설계에 들어가는 시간만큼이나 ML을 적용하는데에도 많이 차지한다. 머신러닝 자동화 설계가 필요하다.

ML Life cycle을 관리하는 과정에서는 3가지의 중요한 요소가 있다.

1. 모델 적용의 어려움 : 데이터가 계속 변하는 것뿐만 아니라 사업 변화가 끊임없이 일어나고 있다. 또한, 기존 목표를 달성하기 위한 기대값이나 생산지표가 바뀔 수 있기 때문이다.

2. 협업의 어려움 : 소프트웨어 서비스를 만들어가는 과정에서 Frontend/Backend/Data Scientist/DevOps 등 많은 사람들이 일을 하는데 MLOps는 이러한 사람들이 서로 소통할 수 있는 기본적 스킬이나 도구들이 다 다르다.

3. 데이터 과학자 != 소프트웨어 개발자 : 데이터 과학자들은 지표를 세우고 모델을 만든 모델로 지표를 만들어가는 사람이지 실제 서비스의 배포나 개발에 대해서 모르는 경우가 많기 때문이다.

MLOps는 위에서 발생한 3가지의 문제점을 해결하고자 나왔다. How? MLOps의 통합으로 위 도표와 같이 데이터 변형, 학습, 평가, 재학습 주기, 모니터링 지표 설정 등 실제 서비스 운영환경으로 통합하고 해결하는 것이다. 이러한 MLOps를 도입한다는 것을 요약하자면 아래와 같이 정리할 수 있다.

  1. 개발, 통합, 테스트, 운영, 모니터링 파이프라인을 운영 Infrastructure 적용
  2. 학습 데이터와 모델, 운영 데이터의 통합적인 관리
  3. 서로 다른 개발 툴에서 발생하는 Risk Management를 하는 것

실제 서비스 환경에서 MLOps를 적용할 수 있는 툴들에는 무엇이 있는지 한번 살펴보자

profile
https://medium.com/@jinsung1048 미디엄으로 이전하였습니다.

0개의 댓글