제로부터 시작하는 MLOps 도구와 활용 - 1. MLOps 개요

제로부터 시작하는 MLOps 도구와 활용 - 1. MLOps 개요

Tags
MLOps
Published
February 26, 2023
Author
김태훈, ChatGPT
MLOps(Machine Learning Opeartions)는 머신러닝 프로젝트의 전체 수명 주기를 관리하는데 사용되는 도구와 방법론입니다. MLOps를 사용하면 머신러닝 모델의 배포 및 유지 관리를 자동화하고, 머신러닝 서비스를 신속하게 출시할 수 있습니다. MLOps를 적용하여 머신러닝 모델의 품질과 안정성을 향상시키고, 데이터 과학자와 운영팀 간의 협업을 개선할 수 있습니다.
이번 장에서는 MLOps의 개념과 중요성에 대해 알아보겠습니다. 또한, DevOps와 AIOps와의 차이점도 설명합니다. 그리고, MLOps를 적용한 머신러닝 프로젝트 프로세스와 각 단계에서 대해서도 살펴보겠습니다. 마지막으로, MLOps 시스템의 구성 요소에 대해 설명하면서, 어떤 구성 요소들이 MLOps 시스템을 구성할 수 있는지도 살펴보겠습니다.

1.1 MLOps란?

MLOps는 DevOps의 사례 및 도구를 ML의 고유한 요구 사항과 결합하는 ML 모델 관리에 대한 접근 방식입니다. 머신러닝 모델 개발, 테스트, 배포 및 유지 관리하는 종단간 프로세스를 자동화하는 동시에 모델이 안정적이고 확장 가능하며 안전한지 검증하는 것을 목표로 합니다.

1.1.2 MLOps 역사

MLOps는 머신러닝 모델을 프로덕션 환경에서 관리하고 배포하는 어려움에 대응하여 등장한 비교적 새로운 분야입니다. MLOps라는 용어는 2015년에 Algorithmia라는 회사에서 만들어졌다고 알려져 있지만, 이 분야는 머신러닝 모델의 개발과 배포를 단순화하려는 초기 노력에서 비롯되었습니다.
이러한 문제를 해결하기 위한 초기 성과 중 하나는 2018년 Databricks에서 출시된 MLflow라는 도구였습니다. MLflow는 데이터 준비 및 실험에서 배포 및 모니터링에 이르기까지 머신러닝 모델의 수명 주기를 관리하기 위한 플랫폼을 제공했습니다. 이는 머신러닝 모델이 개발되고 배포되는 방식을 표준화하는 데 도움이 되었으며 대규모 머신러닝 프로젝트에서 좀 더 쉽게 협업할 수 있도록 도움을 주었습니다.
MLOps 역사의 중요한 터닝 포인트에는 컨테이너 오케스트레이션 도구인 쿠버네티스의 발전이 있습니다. 쿠버네티스는 기업이 대규모로 머신러닝 모델을 관리하는데 널리 채택되어 왔습니다. 또한 클라우드 컴퓨팅 및 서버리스 컴퓨팅의 활용으로 머신러닝 워크로드를 확장하고 인프라를 관리하는 것이 쉬워졌습니다.
오늘날 MLOps는 데이터 버전 관리 및 모델 학습부터 배포 및 모니터링까지 다양한 도구와 관행을 포괄하는 빠르게 성장하는 분야입니다. 이는 조직이 머신러닝 모델을 신속하게 개발하고 배포하며, 데이터 및 비즈니스 요구사항이 변화해도 정확하고 효과적인 모델을 유지할 필요성에서 기인합니다.

1.1.3 MLOps가 중요한 이유

MLOps는 조직이 ML 모델 개발 및 유지 관리와 관련된 문제를 극복하는 데 도움이 되기 때문에 중요합니다. 이러한 과제에는 다음이 포함됩니다.
  • 데이터 과학자와 운영 팀 간의 협업 부족: 데이터 과학자와 운영 팀 간의 협업 부족으로 인해 프로덕션 환경에 모델 배포와 운영에 어려움이 발생할 수 있습니다.
  • 느린 출시: 머신러닝 모델 개발 및 배포에 오랜 시간이 걸리면 출시가 늦어져 기회를 놓칠 수 있습니다.
  • 확장성 부족: 머신러닝 모델은 리소스 집약적이므로 확장이 어렵습니다.
  • 신뢰성 부족: 머신러닝 모델을 신뢰 할 수 있도록 엄격한 테스트 및 검증을 해야 합니다.
MLOps는 데이터 과학자와 운영 팀 간의 협업을 개선하고 시장 출시 시간을 단축하며 ML 모델의 확장성과 안정성을 높여 이러한 문제를 극복하는 데 도움이 됩니다.

1.1.4 MLOps와 DevOps

그림 1-1. MLOps = ML + Dev + Ops (출처> https://www.phdata.io/blog/mlops-vs-devops-whats-the-difference)
그림 1-1. MLOps = ML + Dev + Ops (출처> https://www.phdata.io/blog/mlops-vs-devops-whats-the-difference)
MLOps는 DevOps 철학과 도구를 가져와 머신러닝 고유한 요구 사항을 추가하여 적용한 것 입니다. 이는 머신러닝 모델 개발의 속도와 안정성을 개선하는 동시에 안전하고 확장 가능하도록 하는 데 도움이 됩니다.
MLOps와 DevOps의 공통점은 다음과 같습니다:
  • 지속적 통합/지속적 배포 (CI/CD): 개발, 테스트, 운영 환경에서의 지속적인 모델/소프트웨어 빌드, 배포 및 테스트를 자동화합니다.
  • 모니터링: 모델/소프트웨어 성능, 사용량, 데이터 분포, 시스템 로그 등을 모니터링합니다.
DevOps는 개발 및 운영의 통합을 위해 개발, 운영, 보안, 테스트 등의 역할을 협업적으로 수행합니다. MLOps는 이와 달리 머신러닝 모델의 특성상 데이터, 모델, 하드웨어, 소프트웨어 등의 다양한 부분에서 특화된 프로세스가 필요합니다. MLOps는 머신 러닝 모델의 생명주기를 관리하기 위해 모델 버전 관리, 모델 메타데이터 관리, 모델 배포, 모델 성능 모니터링, 데이터 관리 등의 프로세스를 추가로 수행합니다. 또한, 데이터 거버넌스를 위한 추가적인 요구 사항이 있습니다.
 
💡
데이터 거버넌스(Data Governance) 데이터 거버넌스는 조직이 보유한 데이터를 효율적으로 관리하고 보호하기 위한 정책과 프로세스를 수립하는 것으로, 데이터의 생명주기 전반을 관리하며, 데이터의 정확성, 신뢰성, 보안 등 다양한 측면을 고려합니다. 이를 통해 데이터의 중복과 부정확한 데이터 등을 방지하고, 데이터의 가치를 최대화하기 위한 정책 및 프로세스를 수립합니다. 데이터 거버넌스는 조직의 규정 준수, 위험 관리, 비즈니스 요구를 충족시키기 위한 효율적인 데이터 관리, 데이터 불일치 해결 등의 목적을 가지고 있습니다.
 

1.1.5 MLOps와 AIOps

MLOps와 AIOps는 복잡한 데이터 기반의 시스템 관리에 중점을 둔다는 점에서 몇 가지 유사점이 있지만 별개의 분야입니다.
MLOps는 데이터 준비 및 모델 학습에서 배포 및 모니터링에 이르기까지 프로덕션 환경에서 머신러닝 모델의 수명 주기를 관리하는 데 중점을 둡니다. 여기에는 데이터 버전 관리, 모델 테스트 및 유효성 검사, 배포 관리, 지속적인 통합과 배포 및 모니터링 비롯한 광범위한 활동이 포함됩니다. MLOps의 목표는 머신러닝 모델이 시기 적절하고 효율적인 방식으로 개발 및 배포되고 변화하는 데이터 및 비즈니스 요구 사항에 직면하여 정확하고 효과적으로 유지되도록 하는 것입니다.
반면 AIOps는 인공 지능(AI) 및 머신러닝 기술을 사용하여 IT 운영의 관리 및 자동화에 중점을 둡니다. 여기에는 비즈니스에 영향을 미치기 전에 IT 문제를 식별하고 해결하기 위해 데이터 분석 및 자동화를 사용하는 것이 포함됩니다. AIOps는 인프라 모니터링, 이벤트 상관 관계, 로그 분석 및 서비스 데스크 관리를 포함하여 광범위한 IT 운영을 관리하는 데 사용할 수 있습니다.
MLOps와 AIOps 사이에는 몇 가지 유사점이 있지만 목표와 애플리케이션이 다른 근본적으로 다른 분야입니다. MLOps는 프로덕션에서 머신러닝 모델을 관리하는 데 중점을 두는 반면 AIOps는 AI 및 ML을 사용하여 IT 운영을 관리하는 데 중점을 둡니다. 그러나 두 분야 모두 최신 데이터 기반 비즈니스 환경에서 중요하며 MLOps와 AIOps의 기능을 모두 활용할 수 있는 조직은 더 경쟁력 있고 성공할 가능성이 높습니다.
 

1.2 MLOps 프로세스

그림 1-2. MLOps 프로세스
그림 1-2. MLOps 프로세스
<그림 1-2>는 MLOps를 고려한 전체 머신러닝 프로젝트의 프로세스의 일반적인 과정을 보여줍니다. 이 프로세스는 문제 정의 및 기획, 데이터 수집/탐색/가공/검증, 모델 개발/학습/검증/배포/서빙, A/B 테스트, 로깅, 모니터링의 순서로 이루어집니다. 편의를 위해 각 단계를 순차적인 단방향 싸이클로 표현하였지만, 동시에 수행되는 단계들도 있습니다. 또한, 각 단계는 프로젝트를 진행하면서 언제든지 이전 단계로 되돌아갈 수 있습니다.
머신러닝 프로젝트는 문제 정의부터 시작하여 데이터를 수집하고 가공하는 등의 작업을 수행하여 최종적으로 머신러닝 모델을 개발하고 평가하게 됩니다.
운영 단계에서 개발된 모델을 배포하고 서빙하며, A/B 테스트를 수행하여 모델의 성능 확인하고 개선합니다. 이를 위해 로깅과 모니터링으로 모델 성능을 지속적으로 확인하고, 필요한 조치를 취하며서 모델의 유지보수를 수행합니다.

1.2.1 문제 정의 및 기획

모든 머신러닝 프로젝트의 시작점 입니다. 이 단계에서는 프로젝트의 목적과 범위를 결정하고, 문제를 명확하게 이해하는 것이 중요합니다.
데이터 과학자는 비즈니스 문제를 머신러닝 문제로 변환합니다. 비즈니스 요구사항을 수집하고, 프로젝트의 목적을 명확히 정의합니다. 또한 데이터 수집, 전처리, 모델링, 평가, 배포 등의 작업을 수행하기 위한 일정과 예산을 계획합니다.
문제 정의는 머신러닝을 적용할 수 있는 비지니스 문제를 정의하고, 해당 문제를 해결하기 위한 목표를 설정합니다. 이 과정에서는 문제를 이해하기 위해 도메인 전문가와 협력하고, 문제 해결에 필요한 데이터 수집 및 가공 절차를 수립합니다.
기획은 문제 정의를 바탕으로 프로젝트 일정과 예산, 데이터 수집 및 전처리 계획, 모델 선택과 평가 계획을 수립합니다. 이를 통해 프로젝트를 성공적으로 수행하기 위한 계획을 수립합니다.
이 단계는 문제를 명확하게 이해하고, 필요한 데이터와 모델을 선택하여 최종 목표를 달성하기 위한 계획을 수립합니다. MLOps 인프라 및 도구와의 연관성은 적지만 머신러닝 프로젝트를 성공적으로 수행하기 위해 매우 중요한 단계입니다.

1.2.2 데이터 수집

MLOps 프로세스에서 데이터 수집 단계는 프로젝트에서 사용할 데이터를 수집하고, 데이터의 품질을 검증하여 문제 해결에 적합한 데이터를 선별하는 단계입니다. 이 단계에서는 데이터 수집을 위한 계획을 수립하고, 계획에 따라 데이터를 수집합니다. 이때 데이터의 종류, 수집 방법, 수집 주기 등을 고려하여 계획을 수립하고, 데이터의 크기, 형태, 구조 등을 고려하여 수집 방법을 결정합니다.
수집한 데이터는 적절한 데이터 저장소에 저장됩니다. 이때 데이터의 크기와 형식, 데이터 액세스 제어 등을 고려하여 적절한 저장소를 선택합니다. 수집한 데이터의 품질을 검증하는 작업은 프로젝트에서 사용할 데이터가 적합한지를 판단하기 위해 중요한 작업입니다. 이때 데이터의 완전성, 일관성, 정확성 등을 평가합니다.
데이터 수집 과정에서는 데이터의 품질을 검증하여 문제 해결에 적합한 데이터를 수집하는 것이 중요합니다. 또한, 수집한 데이터를 적절하게 저장하여 다음 단계인 데이터 탐색 및 가공 단계에서 원활한 데이터 활용을 위한 기반을 마련해야 합니다. 데이터 수집 단계에서 데이터의 품질이나 수집된 데이터의 양과 형태 등에 문제가 있으면 이후의 MLOps 프로세스에서 문제가 발생할 수 있으므로, 이 단계에서 높은 품질의 데이터를 수집하고 저장하는 것이 중요합니다.

1.2.3 데이터 탐색

데이터 탐색 단계는 수집된 데이터를 살펴보고 분석하여 데이터의 피처과 문제를 이해하는 단계입니다. 이 단계에서는 데이터 시각화, 기초 통계 분석, 상관 관계 및 패턴 분석 등을 수행하여 데이터의 품질을 평가하고, 데이터의 결측치, 이상치, 중복 등을 처리합니다.
또한, 데이터의 피처(Feature)을 파악하고, 모델링을 위한 적절한 피처를 선택하거나 추출하기 위해 피처 엔지니어링(Feature Engineering)을 수행합니다. 이 단계에서는 모델링에 유용한 새로운 피처를 생성하는 것이 가능합니다.
데이터 탐색 단계에서 데이터에 대한 이해도가 높아지므로, 모델링에 필요한 데이터의 종류와 피처을 더욱 명확하게 파악할 수 있습니다. 이를 토대로 데이터 가공 단계에서 데이터를 변환하거나, 정제하여 모델의 학습에 적합한 데이터셋을 준비할 수 있습니다.
따라서 데이터 탐색 단계에서 수행한 작업은 이후 데이터 가공 및 모델 개발에 활용되어 모델의 품질을 결정하는데 큰 영향을 미칩니다.
 
💡
피처 엔지니어링(Feature Engineering) 머신러닝 모델을 구축하기 위한 입력 데이터의 피처(Feature)을 추출하거나 변환하는 과정으로, 모델의 성능을 결정하는데 매우 중요한 역할을 합니다. 피처 엔지니어링을 통해 추출된 피처는 모델이 패턴을 인식하고 예측하는 데 사용되므로, 입력 데이터의 품질과 피처 추출 방법에 따라 모델의 성능이 크게 달라질 수 있습니다.
피처 엔지니어링은 여러 가지 방법으로 수행될 수 있습니다. 가장 기본적인 방법은 입력 데이터의 피처 중요도(Feature Importance)를 파악하여 피처를 선택하는 것입니다. 이를 위해 입력 데이터에서 유용한 피처을 선택하고, 필요한 경우 새로운 피처를 생성할 수 있습니다. 예를 들어, 이미지 분류 모델에서는 색상 정보나 모양, 텍스처 등 다양한 피처을 활용하여 모델 성능을 개선할 수 있습니다.
현업에서는 한국어 번역 용어인 '특성'보다는 'Feature(피처)'라는 영어 용어를 그대로 사용하고 있습니다. 마찬가지로 'Feature Engineering'은 '특성 공학'이 아닌 '피처 엔지니어링'으로 많이 부르고 있습니다.
 

1.2.4 데이터 가공

데이터 가공 단계는 데이터 수집과 탐색 이후, 데이터를 사전 처리하는 과정입니다. 이 과정에서는 머신러닝 모델이 학습하기에 적합한 형태로 데이터를 변환하거나 정제하는 작업을 수행합니다. 예를 들어, 이상치를 제거하거나 누락된 값에 대해 보간하는 등의 작업이 이루어질 수 있습니다.
데이터 가공 작업은 데이터 파이프라인이나 ETL(Extract, Transform, Load)을 구축하여 자동화되는 경우가 많습니다. ETL과 데이터 파이프라인은 데이터의 품질을 유지하면서 일관된 방식으로 데이터를 가공하는 등의 여러 가지 이점을 가지고 있습니다. 이는 더 많은 데이터를 더 빠르게 처리할 수 있으며, 인간의 실수를 줄일 수 있습니다.
데이터 가공 과정에서는 데이터를 전처리하거나 피처를 추출하는데 있어 다양한 방법과 기술이 사용됩니다. 예를 들어, 범주형 데이터를 수치형 데이터로 변환하거나, 텍스트 데이터를 정규화하고 벡터화하는 등의 변환 작업이 이루어질 수 있습니다. 이러한 데이터 변환 작업을 통해, 모델 학습에 필요한 입력 데이터를 만들어낼 수 있습니다.

1.2.5 데이터 검증

데이터 검증 단계에서는 수집한 데이터가 머신러닝 모델 개발에 적합한지, 깨끗하게 처리되었는지, 라벨링이 올바르게 이루어졌는지 등을 확인합니다.
이 단계에서는 모든 데이터가 모델 개발에 사용될 수 있는 상태인지 확인해야 합니다. 이를 위해 이상치, 중복 데이터, 결측값 등을 식별하고 처리해야 합니다. 또한 데이터 분포를 확인하고 샘플링 편향 문제를 해결하는 것이 필요합니다.
데이터 검증 단계에서는 데이터의 품질을 확인하고 이에 따른 데이터 처리 방법을 결정합니다. 이를 통해 데이터 분석 및 모델 개발에 필요한 최적의 데이터를 얻을 수 있습니다.

1.2.6 모델 개발

모델 개발은 MLOps 프로세스에서 가장 기술적인 작업 단계 중 하나입니다. 이 단계에서는 머신러닝 모델의 아키텍처와 하이퍼파라미터를 설계하고, 모델 학습을 최적화합니다. 데이터 과학자와 엔지니어는 이 단계에서 다양한 모델 아키텍처와 하이퍼파라미터를 실험하고, 여러 번 반복하여 모델을 개선하여 최적의 모델을 찾습니다. 모델 개발 단계에서는 또한 모델의 성능을 향상시키기 위해 피처 엔지니어링과 모델 앙상블 등 다양한 기술이 적용됩니다.
모델 개발 단계에서는 모델 코드와 모델 아티팩트를 버전 관리 시스템에 저장하고, 모델의 라이프사이클을 관리하기 위한 메타데이터를 생성합니다. 생성된 모델 아티팩트는 다음 단계인 모델 검증, 평가 및 배포에서 사용됩니다. 모델 아티팩트가 관리되는 방식에 따라 모델의 재현성과 추적성이 결정되므로, 모델 개발 단계에서는 모델 아티팩트의 버전 관리와 추적성 확보가 매우 중요합니다.
모델 개발 단계에서는 모델 학습에 필요한 컴퓨팅 자원을 확보하고 모니터링하는 방법을 결정해야 합니다. 대규모 데이터셋이나 복잡한 모델을 학습할 경우, 클라우드 리소스를 사용하는 것이 좋은 선택일 수 있습니다.

1.2.7 모델 학습

모델 학습은 모델 개발 단계에서 선택된 알고리즘을 기반으로 데이터 세트를 사용하여 모델을 학습시키는 과정입니다. 이 과정에서는 모델의 하이퍼파라미터를 조정하고 교차 검증을 수행하여 모델의 일반화 성능을 향상시킬 수 있습니다. 모델 학습이 완료되면 검증 단계를 거쳐 모델의 성능을 평가하고 필요한 경우 다시 학습 단계로 돌아갈 수 있습니다.
딥러닝 모델의 경우 GPU 리소스를 활용하여 학습 시간을 단축하는 경우가 많습니다. GPU를 사용하면 대용량 데이터셋을 빠르게 처리하고 CPU보다 빠른 속도로 병렬 처리할 수 있습니다. 또한 분산 학습(Distributed Learning)을 사용하여 여러 대의 컴퓨터를 사용해 모델을 학습시키는 경우도 있습니다. 분산 학습은 데이터셋을 여러 개의 작은 배치(batch)로 분할하고, 각 배치를 병렬 처리하면서 모델을 학습시킵니다. 이를 통해 대용량 데이터셋을 보다 효율적으로 학습할 수 있습니다.

1.2.8 모델 평가

모델 평가 단계는 개발한 머신러닝 모델의 성능을 정량적으로 평가하고, 모델을 개선하기 위한 방법을 찾는 과정입니다. 이 단계에서는 모델이 실제 데이터에서 얼마나 정확하게 예측하는지 측정하고, 모델의 예측력을 개선하기 위한 다양한 실험을 수행합니다.
모델 평가는 모델 학습 단계에서 생성한 검증 데이터셋을 사용하여 수행됩니다. 이 검증 데이터셋은 모델이 학습한 데이터와는 다른 데이터로 구성되어 있으며, 모델이 훈련할 때 본 적이 없는 데이터로 구성됩니다. 이를 통해 모델이 새로운 데이터에서 얼마나 잘 동작하는지 평가할 수 있습니다.
모델 평가는 일반적으로 정확도(Accuracy), 정밀도(Precision), 재현율(Recall), F1 점수(F1 Score) 등과 같은 지표를 사용하여 수행됩니다. 이러한 지표는 모델이 얼마나 잘 예측하는지를 측정하는 데 도움이 되며, 이를 기반으로 모델이 개선되도록 하는 방법을 결정합니다.
모델 평가 결과가 만족스러우면 모델을 배포 단계로 이동시킵니다. 그러나 모델 평가 결과가 만족스럽지 않으면 다양한 실험을 수행하여 모델을 개선해야 합니다. 이를 위해 하이퍼파라미터 최적화(Hyperparameter Tuning), 모델 구조 변경, 데이터 추가 또는 변경 등의 다양한 방법을 사용하여 모델을 개선합니다. 이 과정은 반복적으로 수행될 수 있으며, 모델이 최종적으로 사용자의 요구 사항을 충족시키도록 보장합니다.
 
💡
데이터셋 분할 (Dataset Splitting)
그림 1-3. 데이터셋 분할 (출처> https://itwiki.kr/w/데이터_분할)
그림 1-3. 데이터셋 분할 (출처> https://itwiki.kr/w/데이터_분할)
 
머신러닝 모델의 학습, 검증, 테스트에 사용할 데이터셋을 나누는 것은 중요한 과정입니다. 일반적으로 데이터셋을 학습, 검증, 테스트 데이터셋으로 분할합니다.
  1. 학습 데이터셋 (Training Dataset) 학습 데이터셋은 모델이 학습할 때 사용되는 데이터셋입니다. 모델은 학습 데이터셋의 특징과 패턴을 파악하고, 이를 바탕으로 예측 모델을 생성합니다. 학습 데이터셋은 일반적으로 전체 데이터셋 중 60-80% 정도를 할당합니다.
  1. 검증 데이터셋 (Validation Dataset) 검증 데이터셋은 모델이 학습하면서 일반화 오차를 평가하고 하이퍼파라미터를 조정하기 위한 용도로 사용되는 데이터셋입니다. 모델이 학습 데이터셋에 과적합되는 것을 방지하기 위해 사용됩니다. 검증 데이터셋은 일반적으로 전체 데이터셋 중 10-20%를 할당합니다.
  1. 테스트 데이터셋 (Test Dataset) 테스트 데이터셋은 모델이 최종적으로 평가될 때 사용되는 데이터셋입니다. 모델이 학습과 검증 데이터셋에서 성능이 좋았더라도, 테스트 데이터셋에서 잘 동작하지 않는다면 모델은 일반화되지 않은 것입니다. 테스트 데이터셋은 일반적으로 전체 데이터셋 중 10-20%를 할당합니다.
데이터셋 분할은 일반적으로 무작위로 이루어집니다. 하지만, 데이터셋에서 편향성이 발견될 경우, 층화추출법을 사용하여 클래스 비율이 일정하게 분할되도록 할 수 있습니다. 또한, 교차 검증(Cross Validation)을 사용하여 더욱 정확한 모델 평가를 수행할 수 있습니다.
 

1.2.9 모델 배포

모델 배포 단계에서는 학습된 모델을 실제 운영 환경에서 제공하기 위해 최적화하고 변환하는 작업이 수행됩니다. 모델 최적화는 모델의 성능을 유지하면서, 크기나 연산 속도 등을 개선하는 작업을 의미합니다. 최적화 기법으로는 가중치 수 줄이기, 부동 소수점 연산을 정수 연산으로 변환하기, 연산에 필요한 메모리 크기 줄이기, 훈련 중 학습률을 동적으로 조정하기 등이 있습니다. 최적화 기법을 적용하여 모델의 성능을 개선하는 것은 모델 배포의 성공에 중요한 역할을 합니다.
또한, 모델 변환은 모델을 다양한 환경에서 사용할 수 있도록 형식을 변환하는 과정을 의미합니다. ONNX는 다양한 딥 러닝 프레임워크에서 모델을 이식하거나 공유할 수 있도록 지원하는 오픈 소스 프로젝트입니다. ONNX 변환을 통해 모델을 간단히 변환하여 사용할 수 있어, 다양한 환경에서 모델을 활용할 수 있습니다.
모델 최적화 및 변환 작업은 모델 성능에 영향을 미칠 수 있기 때문에, 이 과정에서 예측 성능 감소가 없는지 확인해야 합니다. 이를 위해 최종 배포 모델을 다시 평가하여 성능을 확인하고, 비지니스 요구 사항을 충족하는지 검증해야 합니다. 이 과정에서는 모델의 예측 성능뿐만 아니라, 모델 배포 후 운영 환경에서 발생할 수 있는 여러 가지 문제에 대한 대비책도 마련해야 합니다.

1.2.10 모델 서빙

모델 서빙 단계는 모델을 사용할 수 있는 형태로 제공하는 단계입니다. 이 단계에서는 배포된 모델을 사용하여 추론을 수행하고, 그 결과를 사용자에게 제공합니다. 모델 서빙은 실시간으로 예측을 제공하는 서비스로 구현될 수 있습니다.
모델 서빙을 위해서는 클라우드 서비스나 물리적인 서버 등에 배포된 모델을 배포 환경에 맞게 구성해야 합니다. 이를 위해 다양한 프레임워크와 툴킷이 개발되어 있으며, 이러한 도구를 활용하여 모델을 배포할 수 있습니다. 예를 들어, TensorFlow Serving, PyTorch Serving, ONNX Runtime 등이 있습니다.
모델 서빙에서는 실시간 예측을 위해 데이터를 처리하는 작업이 중요합니다. 이를 위해 배치 처리나 스트리밍 처리 등 다양한 방법을 사용할 수 있습니다. 모델을 사용하는 클라이언트는 예측을 요청하면, 모델 서빙 시스템은 해당 요청을 처리하여 예측 결과를 클라이언트에게 반환합니다. 이러한 요청 처리를 위해 모델 서빙 시스템은 대규모의 데이터를 실시간으로 처리할 수 있도록 최적화되어야 합니다.
모바일 기기나 IoT 장비와 같이 저사양 장치에서 모델 추론 작업을 수행할 수 있는 온-디바이스 AI(On-device AI) 기술도 활용되고 있습니다. 이를 통해 네트워크 대역폭을 줄이고, 지연 시간을 최소화하며, 개인 정보 보호에 대한 우려도 완화할 수 있습니다. 모델을 온-디바이스로 서빙하기 위해서는 모델 크기와 추론 속도를 최적화하는 작업이 필요합니다. 이를 위해 가벼운 모델 구조나 모델 양자화 기술 등이 활용되고 있습니다. 모델을 TFLite, CoreML, TensorRT등의 포맷으로 변환하여 장치에서 직접 추론을 수행 합니다.

1.2.11 A/B 테스트

A/B 테스트 단계는 모델을 실제 운영 환경에서 모델의 성능과 비즈니스 효과를 검증하기 위한 단계입니다. 이 단계에서는 새로 개발된 모델과 기존 모델(혹은 다른 대안 모델)을 비교하여 비교 실험을 수행합니다.
A/B 테스트는 대규모 사용자 집단을 대상으로 구성되며, 두 개 이상의 버전(제어 그룹과 실험 그룹)을 비교합니다. 제어 그룹은 기존 모델을 그대로 사용하거나 기존 방식으로 운영되는 모델을 말하며, 실험 그룹은 새롭게 개발한 모델이나 새로운 방식으로 운영되는 모델입니다.
A/B 테스트에서는 랜덤화된 실험 그룹과 제어 그룹을 구성하고, 두 그룹 간에 특정 지표를 비교하여 어느 쪽이 더 나은 성과를 보이는지를 판단합니다. 이를 위해, A/B 테스트에서는 다양한 지표를 활용할 수 있습니다. 예를 들어, 모델의 정확도, 클릭 수, 구매 비율, 이탈률, 매출 등을 비교할 수 있습니다.
A/B 테스트에서는 실험 그룹과 제어 그룹을 구성한 후, 일정 기간 동안 두 그룹의 지표를 모니터링하고 결과를 분석합니다. 실험 그룹이 더 나은 결과를 보이는 경우, 해당 모델을 더욱 개선하고 적용할 수 있습니다. 그러나 실험 그룹이 제어 그룹보다 성능이 떨어지는 경우, 해당 모델의 문제점을 분석하고 개선하는 작업을 수행할 필요가 있습니다.

1.2.12 로깅

로그 데이터는 모델 서빙 동안 발생하는 다양한 정보를 포함하고 있으며, 로깅 단계에서는 이러한 로그 데이터를 수집하고 분석하여 모델의 성능, 사용자 행동, 시스템 문제 등을 모니터링하고 이를 개선하는 데 활용합니다. 이를 위해 적절한 로깅 시스템을 구성하고 로그 데이터를 수집, 저장, 검색 및 분석하는 기능을 제공하는 도구와 시스템이 개발되어 있습니다.
로그 데이터의 분석에는 데이터 시각화, 통계 분석, 머신러닝 등 다양한 기법이 사용될 수 있습니다. 이를 통해 모델의 성능 문제나 사용자 요구사항 등을 파악하고, 이를 개선하는 방향을 제시할 수 있습니다. 로그 데이터는 모델의 안정성과 보안을 강화하는 데도 활용될 수 있습니다.
ELK Stack, EFK Stack, Prometheus + Grafana 등의 오픈 소스 도구들은 로그 데이터를 효율적으로 관리하고 분석하는 데 사용됩니다. 이러한 도구를 활용하여 로그 데이터를 분석하여 인사이트를 도출하고, 모델의 성능을 개선하거나 보안 문제에 대응하는 데 사용됩니다.

1.2.13 모니터링

모니터링 단계는 모델이 서빙되는 동안 모델과 시스템의 상태를 지속적으로 모니터링하고, 이를 분석하여 시스템 문제나 모델 성능 저하와 같은 이슈를 발견하고 대응하는 단계입니다. 이를 통해 모델의 안정성을 유지하고, 사용자 경험을 개선할 수 있습니다.
모델 서빙 시스템에서는 많은 수의 예측 요청이 처리되므로, 모델 및 시스템의 상태를 모니터링하는 것이 중요합니다. 모니터링 대상에는 예측 성능, 처리 시간, 메모리 사용량, CPU 사용량, 네트워크 대역폭, 디스크 사용량 등이 포함됩니다. 이러한 모니터링은 시스템 성능 저하의 원인 파악과 대응, 사용자 경험 개선, 리소스 사용량 최적화 등에 도움을 줍니다.
모델 서빙 시스템에서 모니터링을 위한 도구로는 Prometheus, Grafana, Zabbix, Nagios 등이 있습니다. 이들 도구를 사용하여 모니터링 대상에 대한 데이터를 수집하고, 이를 시각화하여 모니터링 대상의 변화를 파악할 수 있습니다. 또한, 이러한 도구는 경고 기능을 제공하여 임계값을 초과하는 경우 경고를 발생시켜 시스템 관리자가 즉각적으로 대응할 수 있도록 도와줍니다.
모델 서빙 시스템의 모니터링은 안정적인 운영을 위해 필수적인 작업입니다. 모델 서빙 시스템의 문제점을 빠르게 파악하고 대응하여 시스템의 안정성을 유지하는 것은 사용자 경험을 개선하고, 비즈니스 성과를 달성하는 데 중요한 역할을 합니다.

1.3 MLOps 구성 요소

그림 1-4. MLOps 프로세스와 구성 요소
그림 1-4. MLOps 프로세스와 구성 요소
MLOps 프로세스의 각 단계에 MLOps를 적용하기 위해서는 MLOps 구성 요소와 결합하여 수행해야 합니다. <그림 1-4>는 각 단계에서 사용되는 MLOps 구성 요소를 보여줍니다.
모델 배포 및 모델 서빙 단계는 CI/CD 도구를 사용하여 자동화되어 수행됩니다. 또한, 배포 단위가 머신러닝 파이프라인 단위가 아닌 개별 모델 배포의 경우, 모델 배포 단계에서 곧바로 모델 레지스트리로 모델이 배포 됩니다.
머신러닝 파이프라인을 운영 환경에 배포하면, 피처 스토어에서 데이터를 로드하여 자동으로 모델을 학습하고, 학습된 모델은 모델 레지스트리에 자동 배포됩니다. 이러면 운영 환경에서 머신러닝 모델의 개발과 배포, 그리고 모델의 성능 모니터링 및 최적화를 자동화하고, 효율적인 머신러닝 모델의 개발과 운영을 가능하게 합니다.
MLOps 구성 요소에 대한 좀 더 구체적인 내용은 2장. MLOps 시스템 아키텍처 에서 알아 보겠습니다.

1.3.1 컴퓨팅 인프라

컴퓨팅 인프라는 머신러닝 모델의 개발과 운영에 필요한 인프라를 의미합니다. 컴퓨팅 인프라는 크게 클라우드 환경과 온프레미스 환경으로 나눌 수 있습니다. 클라우드 환경은 필요한 컴퓨팅 자원을 프로비저닝하고, 확장 및 축소하는 데 있어서 유연성과 확장성을 제공하는 장점이 있습니다. 온프레미스 환경은 초기 투자 비용은 많이 들지만, 컴퓨팅 리소스 사용 비용을 절감할 수 있는 장점이 있습니다.
클라우드 환경에서는 AWS의 SageMaker, GCP의 Vertex AI, Azure의 AzureML 등과 같은 각 클라우드 제공 업체의 All-in-one MLOps 솔루션을 활용하여 MLOps 시스템 구성을 간편하게 구축할 수 있습니다. 이를 통해 시스템 구성에 드는 리소스를 줄이고, 빠르게 도입할 수 있는 장점이 있습니다.
그러나, 머신러닝 시스템은 컴퓨팅 리소스를 많이 필요로 하기 때문에, 클라우드 환경에서 MLOps 시스템 구성은 클라우드 사용 비용을 많이 발생시킬 수 있습니다. 따라서, 클라우드 환경에서 MLOps 시스템을 구성할 때에는 클라우드 제공 업체가 제공하는 리소스 확장 및 축소 기능을 적극 활용하면서, 최적의 비용 효율을 고려하는 것이 중요합니다.
MLOps 시스템을 온프레미스 환경에서 구축하기 위해서는 먼저 컨테이너 오케스트레이션 도구인 쿠버네티스 클러스터를 구성해야 합니다. 쿠버네티스 클러스터를 구성하면, MLOps 오픈 소스 솔루션을 설치하여 MLOps 시스템을 구성할 수 있습니다.

1.3.2 피처 스토어

피처 스토어(Feature Store)는 머신러닝 모델에서 사용하는 데이터(피처)를 관리하고 저장하는 데이터베이스입니다. 기업에서 사용하는 다양한 데이터를 수집, 정제, 표준화하여 저장하고, 이를 머신러닝 모델에서 사용 가능한 형태로 가공하여 제공합니다. 이를 통해, 데이터 품질과 일관성을 유지하고, 데이터 사용의 효율성과 재사용성을 높일 수 있습니다.
또한, 피처 스토어는 머신러닝 모델의 학습 및 추론에 필요한 데이터를 다양한 데이터 소스에서 수집하여 저장하고, 이를 적절한 형태로 가공하여 머신러닝 모델에 제공합니다. 이를 통해 머신러닝 모델의 학습 및 추론에 필요한 데이터를 효율적으로 관리하고, 머신러닝 모델의 성능을 향상시키는 데 기여할 수 있습니다.
피처 스토어는 MLOps에서 핵심적인 역할을 하며, 머신러닝 모델의 학습과 배포를 자동화하고, 머신러닝 모델의 성능 모니터링 및 최적화를 지원하는 데 큰 도움을 줍니다. 피처 스토어는 대부분의 MLOps 플랫폼에서 제공되며, 각 플랫폼에서는 피처 스토어에 대한 다양한 기능을 제공합니다. 예를 들어, 피처 스토어에서 데이터를 캐싱하고, 인터랙티브한 데이터 검색과 추출을 가능하게 하는 등의 기능을 제공합니다.

1.3.3 머신러닝 실험 환경

머신러닝 실험 환경(Machine Learning Experimentation Environment)은 머신러닝 모델의 학습 및 평가를 위한 개발 환경을 제공하는 구성 요소입니다. 이 환경은 머신러닝 모델의 학습을 위한 데이터, 모델 아키텍처, 학습 알고리즘 등을 포함한 다양한 요소들을 쉽게 관리하고, 실험할 수 있는 환경을 제공합니다.
머신러닝 실험 환경에서는 머신러닝 모델의 학습, 평가, 비교 등의 실험을 수행할 수 있습니다. 실험 결과는 모델 성능, 하이퍼파라미터 등을 포함한 다양한 메타데이터와 함께 저장됩니다. 이를 통해 실험 결과를 분석하고, 다양한 실험을 비교하여 최적의 모델을 도출할 수 있습니다.
머신러닝 실험 환경은 MLOps 플랫폼에서 다양한 머신러닝 실험을 위한 환경을 제공합니다. 예를 들어, Jupyter Notebook, JupyterLab 등의 웹 기반 노트북 환경을 제공하며, TensorFlow, PyTorch 등의 머신러닝 프레임워크와 연동하여 모델 학습을 수행할 수 있습니다. 또한, 실험 결과를 저장 및 관리하는 기능과 실험 추적 기능을 제공합니다. 데이터 과학자는 쉽게 머신러닝 모델 개발을 할 수 있으며, 실험 결과를 추적하여 머신러닝 모델의 성능을 개선할 수 있습니다.

1.3.4 소스코드 리포지토리

소스코드 리포지토리(Source Code Repository)는 MLOps 시스템에서 머신러닝 모델 개발에 사용된 코드 버전을 관리하는 구성 요소 입니다. 현재 대부분의 소스코드 리포지토리는 분산 버전 관리 시스템인 Git이 사용됩니다. Git은 코드 변경 이력을 추적하고, 여러 명의 개발자들이 동시에 작업할 수 있도록 지원합니다. 대표적인 Git 기반 소스코드 리포지토리로는 GitHub와 GitLab이 있습니다.
GitHub는 클라우드 기반의 Git 호스팅 서비스로, 오픈 소스 프로젝트를 위한 무료 서비스를 제공하며, 유료 서비스를 통해 기업에서 사용할 수 있는 다양한 기능을 제공합니다. GitHub를 통해 코드 변경 이력 추적, 코드 리뷰, 이슈 트래킹 등의 기능을 제공합니다.
GitLab은 오픈 소스 기반의 Git 호스팅 서비스로, GitHub과 유사한 기능을 제공합니다. GitLab는 클라우드 호스팅 뿐만 아니라, On-premise 방식으로 자체 운영도 가능합니다. GitLab을 통해 코드 변경 이력 추적, 코드 리뷰, 이슈 트래킹, CI/CD 파이프라인 등 다양한 기능을 제공합니다.
소스코드 리포지토리를 통해 다양한 버전의 소스코드를 관리하고, 변경 이력을 추적하여 문제 발생 시 이전 상태로 복구하는 등의 기능을 수행할 수 있으며, CI/CD 도구와 연동하여 자동화된 머신러닝 모델 빌드 및 배포를 수행할 수 있습니다.

1.3.5 머신러닝 운영 환경

머신러닝 운영 환경(Machine Learning Opeartion Environment)은 머신러닝 모델을 배포하고 운영하기 위한 프로덕션 환경입니다. 운영 환경에서 모델 서빙, 모델 모니터링, 로그 수집, 예측 결과 수집 및 데이터 정리 등을 수행합니다.
모델 서빙은 머신러닝 모델을 서비스 형태로 배포하고, 운영 환경의 새로운 데이터에 대한 예측을 수행하는 과정을 의미합니다. 서빙된 모델은 실시간으로 예측할 수 있도록 대규모 트래픽에 대한 확장성과 안정성을 보장해야 합니다.
모델 모니터링은 머신러닝 모델의 성능과 예측 결과 데이터의 품질을 추적하는 과정으로, 실시간으로 모니터링하여 성능 저하나 이상치를 빠르게 감지하고 대응할 수 있습니다.
로그 수집은 모델이 예측한 결과와 관련된 메타데이터를 수집하는 과정으로, 머신러닝 모델이 예측한 결과를 추적하고 분석할 수 있도록 합니다. 예측 수집은 모델이 예측한 결과를 수집하는 과정으로, 머신러닝 모델의 성능 평가 및 개선에 활용됩니다.
데이터 정리는 예측 결과 데이터를 다른 시스템으로 전송하기 전에 필터링, 정규화, 변환 등을 수행하는 과정으로, 데이터 불일치 문제를 해결하고 일관성을 유지하는 역할을 합니다. 정리된 데이터는 피처 스토어에 저장되어 모델 학습 및 데이터 분석에 활용 됩니다.

1.3.6 모델 레지스트리

모델 레지스트리는 머신러닝 모델을 중앙에서 저장하고 관리하는 도구입니다. 모델 레지스트리를 사용하면 모델의 버전 관리, 추적 및 검색이 가능하며, 다른 팀원들과 모델을 공유할 수 있습니다. 모델 레지스트리에는 모델의 메타데이터와 함께 모델 파일이 저장됩니다. 모델 레지스트리를 활용하여 모델의 소스 코드, 학습 데이터, 하이퍼파라미터, 학습 및 평가 메트릭 등의 정보를 추적할 수 있습니다. 모델 레지스트리는 모델 배포 및 서빙 단계에서 사용되며, 이전 버전의 모델과 새로운 모델을 비교하여 모델 성능을 평가하고 모델 업데이트를 결정할 수 있습니다.
ML 메타데이터 저장소는 모델 개발 과정에서 발생하는 다양한 정보를 저장하는 곳입니다. 예를 들어, 모델 개발 단계에서 수집한 메타데이터로는 모델 아키텍처, 하이퍼파라미터, 모델 학습 데이터, 모델 학습 결과, 학습 시간 등이 있습니다. 또한, 운영 단계에서 발생하는 정보로는 모델 성능 지표, 모델이 사용하는 데이터 스키마, 데이터 분포, 모델에 적용된 후처리 등이 있습니다. ML 메타데이터 저장소는 모델 레지스트리와 함께 사용됩니다.

1.4 요약

  • MLOps는 머신러닝 개발과 운영을 위한 프로세스, 도구 및 방법론으로, 머신러닝 모델의 생애주기 전반에 걸쳐 매우 중요합니다. MLOps는 DevOps와 비슷한 철학을 가지고 있으며, 머신러닝 시스템에서 발생하는 고유한 문제에 대해 해결책을 제공합니다. MLOps는 AIOps와는 관련이 없으며, MLOps는 머신러닝 모델의 운영을 자동화하는 데만 사용됩니다.
  • MLOps 프로세스는 문제 정의 및 기획, 데이터 수집, 데이터 탐색, 데이터 가공, 데이터 검증, 모델 개발, 모델 학습, 모델 평가, 모델 배포, 모델 서빙, A/B 테스트, 로깅, 모니터링으로 구성되어 있습니다.
  • MLOps 구성 요소는 컴퓨팅 인프라, 피처 스토어, 머신러닝 실험 환경, 소스코드 리포지토리, 머신러닝 운영 환경, 모델 레지스트리로 구성되어 있습니다. 이러한 구성 요소는 MLOps를 구현하고 실행하는 데 필요한 중요한 역활을 합니다.