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


mlops


모델 개발


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


비즈니스 목표 설정

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


탐색적 데이터 분석 (EDA)

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

  • 주제와 관련된 Data Set가 있을까?
  • 이 데이터가 정확하고 신뢰할 수 있을까?
  • 이 데이터를 실시간으로 사용할 수 있을까?
  • 모델이 배포되면 데이터가 어떻게 업데이트 될까?
  • 데이터가 골고루 분포가 되어있을까?

그리고 이렇게 수집한 데이터의 인사이트를 얻기 위해 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 시스템을 만들기 위해선 다음과 같은 사항이 필요하다.


  • AI 추천 권장사항: AI 시스템을 설계할 때는 개발 권장사항을 따르는 동시에 인간 중심의 접근 방식을 취해야 한다.

  • 공정성: 모두에게 공정하며 포용성을 갖춘 시스템을 완성하는 것이 중요하다. 예를 들어 저화질을 고화질 사진으로 바꿔주는 모델의 뉴스 기사의 를 보면 백인 데이터의 편향으로 인해 인종차별 문제가 발생하기도 한다. 공정성 문제에 대표적인 예이다.

  • 해석 가능성: 인공지능의 미래를 위해서는 AI 시스템이 의도한 대로 작동하도록 하려면 AI 시스템을 이해하고 신뢰하는 것이 중요하다. 설명 가능한 인공지능, 줄여서 XAI라고도 부른다.

  • 개인정보 보호: 민감한 데이터로 모델을 학습시키는 경우 개인정보 보호 조치가 필요하다.

  • 보안: 잠재적 위협을 식별하여 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 책 소개를 보길 바란다.