본문 바로가기



AiDAOps개발/개발 준비

MLOps는 머신러닝 모델의 라이프 사이클을 운영 및 관리하는 것

MLOps(Machine Learning Operations)란 이름 그대로 머신러닝을 운영하기 위한 시스템이며, 머신러닝을 운영한다는 것은 머신러닝의 생애주기(Life Cycle)를 관리, 운영한다는 말이 됩니다.

그리고 생애주기의 관리라는 것은 같은 과정이 지속적으로 반복되는 것이므로, 이 과정을 효율적으로 수행하기 위해서는 프로세스의 표준화, 그리고 불필요한 과정을 제거하는 등의 간소화 작업이 필요합니다.
즉 MLOps의 핵심은 머신러닝의 생애주기의 관리를 표준화 및 간소화하는 것이라고 할 수 있습니다.

그럼 먼저 머신러닝의 생애주기란 어떤 것인가부터 확인해 보아야겠죠.
다양한 기관 또는 업체에서, 그리고 도서 및 기타 자료에서 다루고 있는 머신러닝의 생애주기를 살펴보면 조금씩 다르긴 합니다만 큰 흐름은 비슷하다고 볼 수 있습니다.

 

다음 그림은 Google에서 제시한 MLOps 아키텍처의 예시입니다.

 

Google MLOps Architecture Example (구글 MLOps 아키텍처를 보고 새로 그림)

 

아키텍처에서 라이프사이클에 관련된 프로세스만 따로 떼어보면 다음과 같습니다.

 

Google MLOps Process (구글 MLOps 아키텍처를 보고 새로 그림)

 

다음은 MS Azure에서 제시하고 있는 MLOps의 프로세스입니다.

 

MS Azure MLOps Process (MS Azure 사이트를 보고 새로 그림)

 

다음은 NVIDIA에서 제시하는 MLOps의 프로세스입니다.

 

NVIDIA MLOps Process (NVIDIA 사이트를 보고 새로 그림)

 

위의 예시 외에도 다양한 기업이나 기관에서 제시하는 MLOps의 프로세스, 즉 라이프 사이클이 있습니다. 

 

이런 자료들을 살펴보면 각 기업이나 기관 별로 특징이 있긴 하지만 전반적인 흐름은 거의 동일합니다.

큰 흐름에 따라서 분류해보면 데이터 관리, 모델 개발 및 학습, 모델 관리의 3개 부분으로 나눌 수 있는데, 이 중에서 데이터 관리와 모델 개발 및 학습 부분은 일반적인 머신러닝 작업(또는 공부)에서 사용되는 과정이라고 볼 수 있겠네요.

MLOps는 머신러닝을 운영하는 시스템이다보니 이렇게 만들어진 모델을 관리하는 부분이 포함되어 있다고 생각할 수 있겠습니다.

 

DevOps와 MLOps를 비교해보면 개념적으로는 많이 비슷하지만 DevOps에서는 소프트웨어의 코드를 관리하고 상용 배포하는 과정이 포함되어 있고, MLOps는 머신러닝 모델을 관리, 상용 배포하는 과정이 포함되어 있다는 차이가 있습니다.

그리고 소프트웨어 코드는 데이터가 포함되지 않은 상태이며, 다소 정적인 특징을 가진다고 할 수 있지만 머신러닝 모델은 데이터와 밀접한 관계를 갖고 있기 때문에 항상 변화하는 동적인 특징을 가진다고 볼 수 있습니다.

모델 자체의 스키마? 구조는 고정되어 있지 않느냐..라고 할 수도 있지만 머신러닝에서 데이터가 포함되지 않은 모델 자체는 큰 의미가 없다고 볼 수도 있죠.

또한 소프트웨어 코드도 수시로 업데이트 될 수 있기때문에 동적이다.. 라고 할 수도 있겠지만 소프트웨어의 독립적인 성질과 머신러닝 모델이 가진 성질은 서로 같다고 하기는 어려워 보입니다.

결국 머신러닝 모델은 코드(구조)와 데이터를 모두 포함하고 있고 그 각각의 특징때문에 좀 더 복잡한 형태가 요구된다고 할 수 있겠네요.

 

그리고 이렇게 돌아가는... 반복되는 과정, 즉 라이프 사이클을 운영하고 관리하는 시스템이 바로 MLOps라고 할 수 있겠습니다.

 

그러면 이제 생각해봐야 할 내용은 Personal MLOps를 표방하는 AiDAOps는 어떤 프로세스와 어떤 아키텍처를 가져야 할 것인가.. 그리고 어떤 시스템 구성을 가지고 어떤 목적과 형태로 운영해야 할 것인가... 와 같은 것들이 될 것입니다.

아직 뭔가 확정되거나 설계된 내용이 없기 때문에 지금부터 고민해가면서, 다음 글부터 하나씩.. 차근차근 정리해 보도록 하겠습니다.

 

 

 

 

 

반응형