Skip to content
ML감자
Go back

3. MLOps 시스템의 요소 (1)

MLOps는 혼자서 하는 일이 아니다. MLOps란 ML 시스템의 개발(Dev)와 운영(Ops)을 통합하는 것을 목표로하는 방식이다. 즉, 시스템을 배포하기 위한 역할을 유기적으로 통합하기 위한 방법론에 가깝다. 이번 챕터에서는 MLOps를 위한 요소를 살펴보려고 한다.


mlops


모델 개발


모델 개발은 데이터를 분석하고 모델을 학습하는 단계가 포함된다. 모델 개발에 필요한 단계를 차례로 살펴보고자 한다.


비즈니스 목표 설정

ML 서비스를 만든다면 그에 맞는 목표를 설정해야 된다. 예를 들어 사람들의 얼굴을 식별하는 서비스를 만든다고 가정해보자. 그렇다면 이 모델의 목표는 얼굴 이미지를 입력으로 받고 사람의 이름이나 아이디를 출력하는 것이 목표일 것이다. 해당 목표를 결정했다면 핵심 성과 지표(KPI)를 만들어야한다. 최종적으로 이 KPI 지표를 통해서 모델의 비즈니스 성과를 모니터링 할 수 있다.


탐색적 데이터 분석 (EDA)

명확한 목표가 정의되면 주제별 전문가와 데이터 과학자를 모아서 모델 개발을 본격적으로 시작한다. 우선 모델을 개발하기 위해서 데이터가 필요하므로 데이터를 찾기 위한 노력이 필요하다. 다음 질문은 데이터를 선택하는 지표가 될 수 있을 것이다.

그리고 이렇게 수집한 데이터의 인사이트를 얻기 위해 EDA과정이 필요하다. EDA란 수집한 데이터를 분석하기 전에 그래프나 통계적인 방법으로 자료를 직관적으로 이해하는 과정이다. 주로 R, Python을 이용해서 EDA를 진행한다.


피쳐 엔지니어링

EDA는 Raw 데이터를 이해하는 과정이라고 보면, 이번 파트는 목표에 맞게 데이터를 변형하는 과정이다. Feature Engineering은 모델 성능에 미치는 영향이 크기 때문에 ML 단계에서 굉장히 중요한 단계이다. 그만큼 시간과 비용이 많이 드는 작업이다. 전에 추천 시스템 프로젝트를 진행했을 때 이 부분에서 가장 시간을 많이 잡아먹었던 것 같다.

시간이 많이 드는 이유는 변수가 합리적인지 확인하는 과정이 포함되기 때문이다. 가설에 맞는 Feature를 생성하고 이 feature가 유용한지 확인하는 과정을 거친다. 그리고 생성된 Feature와 모델 성능의 관계를 분석하고 중요도에 따라 선택하는 과정도 포함된다. 이렇게 나온 변수를 모델에 넣었을 때 성능이 개선된다면 굉장히 뿌듯했다.


학습 및 평가

데이터 엔지니어링까지 완료했다면 본격적으로 모델을 만드는 과정을 진행한다. 여러 모델을 테스트해보고 가장 좋은 모델을 고리는 과정도 여기에 포함될 것 같다. 모델을 선택했다면 하이퍼 파라미터와 모델 구조를 바꿔보며 성능을 높일 수 있다. 이 과정에서는 실험과 평가를 반복하며 좋은 모델을 만들어야 한다.

생성된 모델을 평가하는 데는 다양한 방법이 있다. 머신러닝에는 다양한 Task가 있는 만큼 다양한 평가 방식이 존재한다. 예를 들어 Classification에서 사용되는 Metrics에는 대표적으로 Accuracy, Logloss, AUC 등이 있다. Regression에서 사용되는 Metrics는 MSE, MAE, RMSLE 등이 있다. 자세한 설명은 생략하도록 한다.


재현성

학습 및 평가하는 과정에서 같은 모델이라도 하이퍼 파라미터를 변형하면 여러가지 버전이 생길 수 있다. 이상적인 모델을 선택하기 위해선 여러 버전으로 나온 모델을 관리하는 것도 중요할 것이다. 무리하게 모델을 변형하다가 성능이 높은 모델로 돌아갈 수 없다면 그야말로 낭패일 것이다.

또한 재현성이 없으면 데이터 과학자가 부담없이 모델을 반복할 수 없을 것이다. 진정한 재현성을 위해서는 모델 학습 및 평가에 사용되는 데이터와 소프트웨어 환경 기록과 매개 변수의 버전 제어가 필요하다.


Responsible AI

TensorFlow 사이트에 들어가보면 Resonsible AI에 대한 설명이 친절하게 되어있다. 모두에게 도움이 되는 AI 시스템을 만들기 위해선 다음과 같은 사항이 필요하다.



생산 및 배포


모델 생산 및 배포는 개발과 프로덕션을 이어주는 다리 역할이다. 주로 이 파트는 소프트웨어 엔지니어와 DevOps팀이 맡아서 진행한다. 데이터 팀과 소프트웨어 팀의 협업이 중요한 단계이다.


모델 배포 유형 및 내용

모델을 배포할 시 두 가지 유형의 모델 배포가 있다.


  1. Model-as-a-service, or live-scoring model

    간단한 요청에 실시간으로 응답하는 REST API 엔드 포인트를 제공하는 프레임 워크이다. 대표적으로 Tensorflow Serving API가 있다.

  2. Embedded model

    임베디드 시스템 (예: IOT 센서 데이터)를 사용하는 시스템에 모델 구축하는 방법이다. 임베디드 기기의 특성상 모델을 경량화할 필요가 있다. 대표적으로 TensorFlow Lite가 있다.

모델 배포에서 중요한 점은 테스트 환경과 프로덕션 환경의 예측 환경이 동일 해야 한다는 점이다. 서로 다른 버전을 사용하면 모델 성능이 달라지는 문제가 발생할 수 있다. 이러한 종속성 문제를 해결하기 위해서 컨테이너화라는 솔루션을 사용한다.

컨테이너화 기술에는 대표적으로 Docker가 존재한다. 각 모델의 요구 사항과 일치하는 독립적인 환경에서 서비스를 배포할 수 있다.


모델 배포 요구 사항

그렇다면 모델 개발을 완료하고 실제 운영 환경으로 구축하려면 어떤 프로세스를 거쳐야 될까? 이 책에서 강조하고 있는 요구 사항은 신속하고 자동화된 배포 환경이다. MLOps의 목표는 CI/CD 파이프라인을 최대한 자동화하는 것이다. 모델의 최대 리소스 요구가 Linux cgroups과 같은 기술로 안전하게 제한 될 수 있다면 자동화된 push-to-production으로 적합하다. 이에 따라 다음과 같은 상세한 CI/CD 파이프라인이 필요하다.



Introducing MLOps (저자:Mark Treveil) 의 책을 읽고 MLOps에 대해 정리한 글이다. 더 자세한 내용을 알고 싶다면 MLOps 책 소개를 보길 바란다.


Share this post on:

Previous Post
4. 모델 개발
Next Post
3. MLOps 시스템의 요소 (2)