오늘 할 일: 끝내주게 숨쉬기
article thumbnail

지난 MLOps 개념에 이어 이번 포스팅에서는 ML 생애주기를 알아보겠습니다. ML 프로젝트는 모델을 만드는 것만이 전부가 아닙니다. 가장 먼저 문제를 정의하는 과정이 필요하고, 데이터를 정의/수집/준비하는 과정을 진행합니다. 이후 모델을 어떻게 만들 것인지 살펴보게 되고, 모델이 만들어지면 평가를 하고, 이걸 서비스로 만드는 것입니다. 

 

모델이 만들어지면 운영으로 올라갔다고 끝나지 않습니다. 지속적으로 서비스를 모니터링하고, 다시 루프를 돌아 재학습을 하고 재배포를 하는 일련의 과정 전체가 MLOps를 이루는 것이죠.

 

출처: 마이트로소프트 코리아 유투브

 

ML 생애주기는 크게 3단계로 구성되어 있습니다.

  1. 데이터 준비
  2. 실험과 학습
  3. 배포와 서빙

 각 단계마다 차근차근 구성요소를 알아보겠습니다.

 

 

1. 데이터 준비

데이터 준비는 데이터 가져오기, 데이터 탐색, 데이터 가공, 데이터 검증 단계로 구분할 수 있습니다.

 

1.1. 문제와 데이터 정의, 가설 수립

머신러닝 프로젝트의 출발점으로, 문제를 해결하기 위해 적절한 데이터를 준비하고 문제에 접근하는 질문을 하는 단계입니다. 해결 방법을 찾기 위해서는 제대로 된 문제를 설정하고 질문을 하는 것이 가장 중요하죠. 질문에 대한 해답을 찾기 위해서는 가설을 세웁니다. 세운 가설을 검증하기 위해서는 데이터가 필요하고, 어떤 데이터가 필요하며 어떻게 그러한 데이터를 확보할 것인지에 대해 검토해야 합니다. 무엇보다 이러한 작업들이 실제로 비즈니스 가치를 창출하는지 고민하는 것도 중요합니다.

 

1.2. 데이터 이동과 연계

데이터를 집합시키는 단계로, 데이터 확보 → 데이터 수집 → 데이터 연계 과정으로 구성됩니다.

  • 데이터 확보: 흩어진 데이터가 어디에 있는지 파악
  • 데이터 수집: 실시간으로, 배치로 데이터를 수집
  • 데이터 연계: 데이터를 한 곳에 모음

그리고 데이터와 관련하여 데이터셋 공유 및 재사용에 대한 니즈도 있음을 알아야합니다. 고정되어있지않고 변화하는 데이터셋은 관리의 대상이죠. 데이터를 어디에서 갖고 왔고, 버전별로 어떻게 관리하고, 데이터를 어떻게 팀원들과 공유할 것인지, 누적한 데이터 중 어느 데이터를 실험에 사용하여 관리할 것인지 등을 정해야 합니다.

 

1.3. 데이터 탐색과 가공

앞 단계에서 확보한 데이터가 어떻게 분포해있는지 확인하는 단계입다. 적절한 형태로 구성되어있는지, 빠진 값이나 이상치는 없는지, 분석가가 예상하는 분포를갖고 있는지 등을 파악하는 절차입니다.

  • 데이터셋 요약 및 시각화를 이용한 탐색
    • 데이터 분포를 확인, 이상치 및 결측치 확인, 시각화 등

 

시각화 예시 (출처: seaborn 공식 홈페이지)

 

  • 데이터 레이블링
    • 이미지 분류와 같이 데이터에 대한 레이블이 필요한 경우, 이 레이블을 태그하는 과정이 필요
  • 피처 중요도 탐색
    • 간단한 모델 학습이나 통계분석을 통해 여러 피처들 중 어떤 피처가 중요하고 덜 중요한지 파악합니다. 데이터의 패턴과 분포를 보고 피처들끼리 어떻게 연관성을 갖고 있는지 확인합니다.

 

1.4. 데이터 검증

데이터 품질관리의 기반인 데이터 검증 단계에서는 테이블별 건수 검증, 코드 검증, 무결성 검증 등을 진행합니다. 검증 요건에 따라 검증 방안을 설계하고, 검증 쿼리를 개발하고, 검증 결과를 모니터링하고 피드백하는 프로세스를 거치게되죠.

 

 

2. 실험과 학습

실험과 학습은 크게 실험 및 모델 학습과 모델 검증으로 나누어 볼 수 있습니다.

 

2.1. 실험 및 모델 학습

데이터, 학습 알고리즘, 하이퍼파라미터 값에 따라 다양한 모델을 만들 수 있습니다. 주어진 데이터와 목표를 위해 어떤 모델이, 어떤 조건이 좋을지 파악하고 진행해야 합니다.

여러 모델을 만들어 비교하는 것은 기본이고, 성능이 좋은 몇 개 모델은 어떤 알고리즘과 하이퍼파라미터로 학습했는지,피처를 바꾸었을 때 영향이 있었는지 등을 알아봅니다. 또한 모델을 학습하며 사용한 스크립트는 어느 버전이며 당시 상세 로그는 어땠는지 알아야 합니다. 이러한 절차들을 상세하게 파악하려면 추적관리에 대한 필요성이 생기게 되죠.

추적해야할 대상은 데이터셋 버전, 코드 버전, 파이썬 패키지와 같은 환경 버전, 모델 버전 등을 아우릅니다. 이 모든 것들을 실험 과정에서 추적 관리해야 이후에 모델 배포에서 어떤 모델을 선택할 것인지 헷갈리지 않을 수 있고, 새로운 데이터가 주입되었을 때 다시 꺼내 활용할 수 있습니다.

 

2.2. 모델 검증

모델을 만든 후에는 제대로 만들어졌는지 판단하기 위해 성능을 보고, 더불어 모델 해석도 진행합니다.

 

예측 성능과 처리 성능

예측 성능으로는 "모델의 예측값이 실제값과 유사한가?", "모델이 얼마나 잘 일반화 되었는가? = 적정 수준으로 적합했는가?" 를 평가합니다.

 

다양한 예측 성능 측정 방법 (출처: https://www.kaggle.com/usengecoder/performance-metrics-for-classification-problems)

 

처리 성능으로는 "모델이 예측값을 계산하는 데 시간이 얼마나 소요되는가?", "처리 시 사용하는 컴퓨팅 자원은 어느정도인가?" 를 평가합니다. 모델이 안정적으로 빠르게 처리가 되는지를 알아보는 것이죠.

예측 성능과 처리 성능은 모두 중요합니다. 둘 다 적당히 좋은 수준으로 올리는 것은 쉽지 않지만 하나의 성능만 보고 모델이 우수하다고 평가하는 오류를 범해서는 안됩니다.

 

모델 해석

모델 해석은 왜 중요할까요? 모델의 정확도(예측 성능)만으로는 이 모델을 사용해도 된다는 근거가 충분하지 않기 때문입니다. 심지어 특정 산업에서는 해석 불가능한 모델은 사용할 수 없죠(ex. 금융, 의료, 법률 등) 모델이 어떤 부분을 중요하게 보고 있는지 분석가가 알 수 있어야 합니다.

  • 모델 디버깅: 왜 내 모델이 잘못 예측했나?
  • 모델 공정성 판단: 내 모델이 알게 모르게 차별을 하고 있지는 않나?
  • 사람과 AI의 협력: 나는 어떻게 모델의 예측을 이해하고 믿을 수 있나?
  • 규제 및 컴플라이언스(compliance): 내 모델이 법적인 요건을 만족하는가? 

모델 해석을 하는 방법은 다양한데요, 트리 모델에서는 주로 SHAP을 사용하여 해석을 시도합니다. 또는 학습한 모델이 해석하기 어려운 경우, 유사한 성능을 가진 해석가능한 다른 모델을 찾아 해석하는데 이용할 수도 있습니다.

 

 

3. 배포와 서빙

ML 생애주기의 마지막 단계입니다. 데이터를 이용해 모델을 만들었고, 검증을 했고, 이제는 모델을 패키징해 서비스로 배포를 해야 합니다. 배포와 서빙은 대규모 배포 준비 → 배포와 운영 → 로깅→ 모니터링 단계로 구성되어 있습니다.

ML 생애주기의 전반부인 데이터를 통합하고 모델을 만드는 과정을 데이터 사이언티스트가 주도했다면, 후반부인 배포와 서빙은 데이터 엔지니어 혹은 소프트웨어 엔지니어가 진행합니다. 모델을 서비스화 시키기 위한 여러가지 작업들을 수행하게 되죠.

DevOps가 코드에 대해 컴파일, 테스트하고 실험 환경에 배포가 되고, 마지막으로 프로덕션 환경에 배포되는 것처럼 MLOps도 마찬가지입니다. 다른 점은 데이터라는 요소가 추가된다는 것이죠. 첫 번째 단계는 코드와 데이터를 이용해 모델을 만들기이고, 두 번째 단계는 새로운 데이터를 갖고 예측을 수행하기 입니다.

 

출처: 마이크로소프트 코리아 유투브

 

배포와 서빙 과정에서 중요한 기술은 컨테이너 기술인데요, 이 기술을 이용해 서비스를 패키징합니다. 컨테이너는 서비스 환경을 재현하기 위해 사용하는데, 학습에 사용한 환경과 서비스를 적용하는 환경이 동일해야 하기 때문이죠. 컨테이너를 이용하기 위해 가장 널리 사용되는 오픈소스가 바로 도커(Docker)입니다. 

 

도커 로고

 

배포와 서빙 과정 중 모니터링 단계에서는 데이터 드리프트(Data Drift)를 유심히 관찰합니다. 데이터 드리프트란, 데이터의 패턴 특성이 시간이 흐르면서 변하는 현상을 일컫습니다. 학습에 활용했던 데이터와 이후에 예측을 위해 새롭게 받은 데이터의 차이가 커지면 예측 성능이 떨어질 가능성이 커지겠죠. 데이터 드리프트 여부를 지속적으로 모니터링하여 모델의 재학습 시점을 판단해야 합니다.

 

 

이상으로 MLOps를 구성하는 ML 생애주기를 전반적으로 살펴보았습니다. 각 세부 단계를 착실하게 이행하는 것은 물론 중요하지만, 숲을 보는 것은 더욱 중요하죠. 일련의 과정을 이해하여 MLOps를 적용하거나 ML 프로젝트를 수행할 때 어려움이 없도록 해야겠습니다.

 

 

참고

 

마이트로소프트 코리아 유투브

https://youtube.com/playlist?list=PLGh_JNxzXsX_8t45YO2Ktv36nkp1sx-Dy 

 

애저 듣고 보는 잡학지식

매일매일 업데이트되는 Azure에 대한 여러 주제 & 에피소드와 함께 만나는 “애저 듣고 보는 잡학지식” 영상 목록입니다. 본 목록은 현재 더 이상 업데이트되지 않으며, 최신 업데이트되는 목록

www.youtube.com

 

MLOps: 머신러닝의 지속적 배포 및 자동화 파이프라인

https://cloud.google.com/architecture/mlops-continuous-delivery-and-automation-pipelines-in-machine-learning?hl=ko#mlops_level_0_manual_process

 

MLOps: 머신러닝의 지속적 배포 및 자동화 파이프라인  |  Google Cloud

MLOps: 머신러닝의 지속적 배포 및 자동화 파이프라인 이 문서에서는 머신러닝(ML) 시스템을 위한 지속적 통합(CI), 지속적 배포(CD), 지속적 학습(CT)을 구현하고 자동화하는 기술을 설명합니다. 데

cloud.google.com