모델을 만들었는데, 그 다음은?

머신러닝을 처음 접하면 모델 학습에 집중하게 된다. 데이터를 수집하고, 전처리하고, 모델을 훈련시키고, 정확도를 올리는 데 대부분의 시간을 쓴다. 그런데 정작 모델이 완성된 후에 무엇을 해야 하는지는 잘 다루지 않는다.

현실에서는 모델을 만드는 것보다 운영하는 것이 훨씬 어렵다. 모델을 프로덕션 환경에 배포하고, 성능을 모니터링하고, 데이터가 변할 때 재학습시키는 과정이 필요하다. 이러한 전체 라이프사이클을 체계적으로 관리하는 것이 MLOps이다.

왜 기존 DevOps만으로는 부족한가?

DevOps는 소프트웨어의 빌드, 테스트, 배포를 자동화하는 데 성숙한 방법론이다. 그렇다면 ML 시스템에도 동일한 방법론을 적용하면 되지 않을까?

문제는 ML 시스템이 기존 소프트웨어와 근본적으로 다른 특성을 가진다는 것이다. 일반적인 소프트웨어는 코드가 변경될 때 동작이 변한다. 반면 ML 시스템은 코드가 동일하더라도 데이터가 변하면 동작이 완전히 달라진다. 즉, 코드뿐만 아니라 데이터와 모델이라는 두 가지 추가적인 변수를 관리해야 하는 것이다.

이로 인해 버전 관리의 대상이 확대된다. 코드 버전만 추적하는 것으로는 충분하지 않으며, 어떤 데이터로 어떤 모델이 학습되었는지까지 추적해야 재현 가능한 시스템을 만들 수 있다.

ML 라이프사이클의 현실

ML 프로젝트의 라이프사이클은 크게 네 단계로 나눌 수 있다.

첫째, 데이터 수집 및 전처리 단계이다. 원시 데이터를 수집하고, 정제하고, 학습에 적합한 형태로 변환하는 과정이다. 이 단계에서 데이터의 품질이 모델의 성능을 결정하기 때문에 가장 많은 시간이 소요되는 것이 일반적이다.

둘째, 모델 학습 및 실험 단계이다. 다양한 알고리즘과 하이퍼파라미터 조합을 시도하며 최적의 모델을 찾는 과정이다. 수십에서 수백 번의 실험을 수행하게 되므로, 각 실험의 설정과 결과를 체계적으로 기록하지 않으면 어떤 조합이 최선이었는지 파악하기 어려워진다.

셋째, 모델 배포 단계이다. 학습된 모델을 실제 서비스에 통합하는 과정이다. REST API로 서빙할 것인지, 배치 추론을 사용할 것인지, 엣지 디바이스에 배포할 것인지에 따라 접근 방식이 달라진다.

넷째, 모니터링 및 재학습 단계이다. 프로덕션 환경에서 모델의 성능을 지속적으로 관찰하고, 성능이 저하되면 새로운 데이터로 재학습시키는 과정이다. 시간이 지남에 따라 데이터의 분포가 변하는 현상을 데이터 드리프트라고 부르며, 이를 감지하고 대응하는 것이 MLOps의 핵심 과제 중 하나이다.

MLOps의 성숙도

Google에서는 MLOps의 성숙도를 세 단계로 구분한다.

레벨설명특징
Level 0수동 프로세스모든 과정이 수작업, 노트북에서 모델 학습
Level 1ML 파이프라인 자동화학습 파이프라인이 자동화됨, 지속적 학습 가능
Level 2CI/CD 파이프라인 자동화파이프라인 자체의 빌드, 테스트, 배포까지 자동화

대부분의 조직은 Level 0에 머물러 있다. 데이터 사이언티스트가 주피터 노트북에서 모델을 학습시키고, 결과를 수동으로 엔지니어링 팀에 전달하며, 엔지니어가 이를 서비스에 통합하는 방식이다. 이 과정에서 커뮤니케이션 오류가 발생하고, 재현이 어렵고, 배포 주기가 길어지는 것이다.

MLOps는 이 수동 프로세스를 자동화하고 체계화하여, 모델을 빠르고 안정적으로 프로덕션에 반영할 수 있게 하는 것이 목표이다.

핵심 구성 요소

MLOps를 구현하기 위해서는 여러 구성 요소가 필요하다. 데이터 파이프라인, 실험 추적, 모델 레지스트리, 서빙 인프라, 모니터링 시스템 등이 그것이다. 이 시리즈에서는 각 구성 요소를 하나씩 살펴보며, 왜 필요한지와 어떻게 구축하는지를 다룰 것이다.

다음 포스트에서는 MLOps의 출발점이라 할 수 있는 데이터 파이프라인과 피처 엔지니어링을 살펴본다.