본문 바로가기

MLops

MLOps 란 무엇인가? (1)

이번 포스팅에서는 MLOps에 대한 기본적인 설명부터 작성해보고, 제가 공부했던 내용들을 포스팅에 적을 계획입니다.
DevOps에 대해서는 많이들 들어보시고, 잘 아실거라 생각합니다.

하지만 MLOps에 대해서 들어는 보셨지만 막상 어떤 일을 하는지 어떤 것들이 있는지에 대해서 조사를 따로 해야할 정도로 잘 알려진 것 같지도 않습니다.

물론 DevOps와 마찬가지로 다양한 Open Source나 AWS, GCP 같은 제공되는 서비스를 통해 쉽게 접하고, 사용할 수도 있습니다. 다만, MLOps는 ML, 빅데이터 특성상 고성능의 컴퓨팅파워가 필요하기 때문에 돈을 내고 사용하기엔 부담스러운것도 사실이죠.

다른 포스팅들과 마찬가지로 제 개인적인 견해가 많이 들어가겠지만, 참고가 될 부분이 조금이라도 있다면 도움이 되길 바랍니다.

MLOps의 필요성

MLOps에 대해서 들어보셨나요? 만약 들어보셨다면, 취업을 위해 여러 사이트를 돌아다니는 중이거나, ML을 공부한지 시간이 지나다보니 자연스럽게 들었을 거라고 생각합니다. 물론, 회사에서 인공지능팀이 있어서 해당 팀을 통해서 들어보신적이 있을 수도 있죠.

MLOps는 DevOps와 마찬가지로 지속적인 배포, 지속적인 통합 또 관리에 목적을 두고 있습니다.
만약 딥러닝 경험자라면, 딥러닝이 어떤 과정을 지나쳐서 만들어지는지 알고 계실거라고 생각합니다.

완벽하진 않지만, 예를 들어보자면 이런 과정을 통해 만들어 질것이라 생각합니다.

  1. 데이터 확인 - 이미 가지고 있거나, 공개된 데이터일 수 있습니다.
  2. 모델 역할 수립 - 1번의 데이터를 통해 해당 모델이 어떤 역할을 할 것이며, 어떤 역할을 했으면 좋겠다~ 라는 계획을 세웁니다.
  3. 데이터 Labeling - 모델 역할에 맞게 데이터를 라벨링하고, 모델의 목표를 데이터에 정해줍니다. (비지도 학습이라면 생략)
    3-1. 데이터 추가수집 - Labeling을 위해 또는 훈련을 위해 또 다른 데이터가 필요하다면 수집합니다.
          (Negative 데이터라던가, 말뭉치 사전등이 될 수 있습니다.)
  4. 데이터 검증 - 데이터가 원하는대로 설계되어있고, 작성되어 있는지 검증합니다.
  5. 데이터 전처리 - 훈련을 위해, 훈련 성능을 위해 등 프레임워크에 들어가기전 필요한 전처리 단계입니다.
  6. 모델 훈련
  7. 모델 tuning - 모델의 훈련 결과에 따라, 하이퍼 파라미터를 수정하며, 모델의 성능을 높힙니다.
  8. 모델 분석 - 모델이 올바른 결과에 도달하는지 확인합니다.
  9. 모델 검증 - 모델 분석에 대한 내용을 확인하며 A/B 테스트나 완전히 격리된 데이터를 통해 모델의 성능을 검증합니다.
  10. 모델 배포 - 검증이된 모델은 REST API, gRPC 등 통신을 통해 접근 가능한 형태로 배포합니다.

10단계로 나누어서 모델이 만들어 지는 과정을 작성해봤습니다.
하지만, 모든 프로그램이 그렇듯 한번 만들면 끝이 아니라,반드시 업데이트가 필요해지는 시점이 오게됩니다.
신조어들, 밈들이 계속 나오거나, 자동차를 인식하는 모델을 만들었는데 인식하지 못하는 새로운 차종들이 생길 수 있기 때문이죠.

즉, 우리는 10단계의 과정을 Jupyter Notebook에서 쉬프트엔터를 마구 누르면서 다시 개발하게 될지도 모릅니다.

MLOps는 어렵다.

앞에서는 반드시 필요하다고 설명을 했지만, 사실 MLOps를 만들어 내는일은 상당히 어렵다고 생각합니다.
데이터 분야, 모델 훈련, 모델 배포, 관리, 자동화까지 많은 영역의 기술들이 필요하고 또 알아야 잘 만들 수 있습니다.
간단하게 위키피디아에 있는 사진을 볼까요?

출처 : 위키피디아

MLOps는 DevOps, ML, DataEngineering 세 분야 가운데에 위치한 벤다이어 그램이네요. DevOps와도 겹쳐져 있는 걸 확인할 수 있습니다.

그럼.. 이렇게 되버리는 건가...

위 그림들을 봐도 그렇듯 끔찍한 혼종이 MLOps입니다. ML에 대한 기본 지식들, 데이터를 위한 데이터 엔지니어링 기술, Docker, AWS, K8s, 네트워크 지식, 모니터링 tool 등등 굉장히 많은 분야를 접하고, 경험해야 합니다.

그러다보니, 당연하게도 다양한 분야의 사람들이 뭉쳐서 만들 수 밖에 없으면서도, 서로의 분야를 모르니 소통하기는 더욱 힘들고 결국 기술의 어려움 뿐만 아니라, 인간적인 부분에서도 어려울 수 밖에 없는 시스템이죠.

이 부분이 DevOps와의 가장 큰 차이라고 생각합니다. (인간적인 부분..)

그럼 MLOps는 만들수가 없나?

하지만, 역시 AWS나 GCP를 통해 이미 잘 구축된 MLOps를 사용만 해도 되게끔 서비스 받을 수도 있고, 또 다양한 OpenSource들이 있어서 어떻게든 구축해낼 수 있습니다.

안정적으로 잘 돌아가고 Product에 잘 접합할수 있는지는 음.. 어려워 지겠지만 운영하다 보면 나름의 노하우를 얻으실 수 있을거고, 사실 그렇지 않아도 대부분 고객과 직접 대응해야하는 백엔드적인 부분이 가장 문제가 많이 발생하기 때문에 서버 운영의 고수들에게 도움을 받아 해결할 수 있는 부분이 많이 있습니다.

마치며..

MLOps를 본격적으로 글을 작성하기전에 어떠한 부분들이 MLOps에 담겨져 있는지를 조금 끄적끄적 적어 봤습니다.. 

다음 포스팅에서는 MLOps에 대해 좀 더 본격적으로 파헤쳐보고, 주요 내용들을 작성해보겠습니다.

P.S.여기까지 읽어주신 분이 있다면, 다음 포스팅도 읽어주실거라고 기대해봅니다ㅜㅜ 감사합니다!

'MLops' 카테고리의 다른 글

MLOps 란 무엇인가? (2)  (1) 2022.01.05