[Machine Learning] 머신러닝 파이프라인의 이해 (MLOps) <인프런 - 머신러닝 엔지니어 실무>

반응형

Machine Learning PipeLine

안녕하세요 이번 포스팅에선 MLOps의 핵심 문제와 이를 이해하기 위한 배경을 알아보겠습니다. 인프런의 "머신러닝 엔지니어 실무" 강의의 첫 번째 맛보기 영상을 보고, 공부하며 정리한 내용입니다.

 

목표

1. 머신러닝 파이프라인의 개념에 대해 이해

2. 머신러닝 기반의 소프트웨어가 갖고 있는 특징을 이해

3. MLOps에서 풀어야 하는 핵심 문제 이해

4. MLOps 성숙도 레벨에 따른 특징 이해

 

Contents

    1. 머신러닝 파이프라인의 필요성

    파이프라인은 산업혁명 시대에 자동화의 시작을 알린 개념입니다. 이를 통해 생산성 향상, 예측 가능한 품질, 장애 대응능력 향상이라는 이점을 얻었습니다. 이렇게 자동화를 하면, 수십수백 개의 머신러닝 모델을 제공한다는 생산성 향상을 얻을 수 있습니다. 또한, 자동화 시스템(파이프라인)이 존재하기 때문에, 각 모델들의 성능을 모니터링하며 품질관리를 할 수 있다. 머신러닝 모델의 장애는 오류가 나며 서버가 뻗어버리거나 하지 않을 수 있기 때문에 탐지가 매우 어렵습니다. 파이프라인을 통해 각 프로세스 별로 장애가 없는지 모니터링할 수 있습니다.

    즉, 어떤 모델을 서비스했을 때, 고객의 반응이 좋다면 자동화 시스템(파이프라인)을 구축해야 안정적인 품질 관리 및 모델 서빙이 가능해집니다.

     

    처음 머신러닝 모델을 만들고 프로덕트로 배포하는 것은 비교적 쉽습니다. 하지만 파이프라인이 필요한 이유는, 지속적으로 시스템을 유지하며 품질 관리를 하고, 모델의 성능을 개선해 나가는 방향성을 얻기가 어렵기 때문입니다. 

     

    일반적인 소프트웨어에서는 추상화가 쉽습니다. 예를 들어, 몬스터라는 클래스가 있으면, 슬라임 오크 같은 몬스터는 HP, MP 등의 속성이 있고 이런 속성들이 체계적으로 있기 때문입니다. 하지만 머신러닝에서는 모델을 추상화하기 어렵습니다. 그렇기 때문에, 모델을 부분적으로 개선하는 게 어렵고,  뭘 넣으면 뭐가 나온다라고 딱 정하기 어려워 Unit 테스트를 진행하는 것도 어렵습니다. 이런 문제들을 해결하는 게 머신러닝 파이프라인의 핵심입니다. 

     

     

    2. 머신러닝 문제의 특징

    1) 쉬운/어려운 머신러닝 문제

    ① 쉬운 머신러닝 문제와 해결 과정

    1. 데이터의 변화가 천천히 일어나는 경우 → 시기에 맞춰 모델 재학습해서 배포하면 됩니다.
    2. 데이터가 증가하거나, 시스템의 변화로 모델을 재학습하는 경우 추가된 데이터 혹은 데이터를 변형해 재학습해서 배포하면 됩니다.
    3. 실서비스에서 나온 데이터 혹은 크라우드 소싱으로 수집한 데이터 추가하는 경우 마찬가지로 추가된 데이터 모델 재학습하면 됩니다.

     

    ② 어려움 머신러닝 문제

    1. 데이터의 변화가 빠른 경우 -> 일 단위, 주 단위로 바뀌는 경우 일일이 모델 재학습하기 어렵습니다. (진화하는 데이터셋)
    2. 모델 성능 저하가 일어나는 경우 인지하기 어렵고, 해결하기도 어렵습니다.
    3. 고객의 직접적인 피드백을 적용하기 어렵습니다.

     

    2) 머신러닝 프로그래밍 문제의 특징

    표의 왼쪽은 작은 단위의 머신러닝 프로그래밍을 할 때 발생할 수 있는 문제의 특징들입니다. 표의 오른쪽은 큰 단위의 머신러닝 프로그램으로 도달하기 위해 가져야 하는 특징들입니다. 예를 들어, 큰 단위의 머신러닝 프로그램에선 진화하는 데이터셋에 대처할 수 있어야 하고, 재사용 가능한 모델들이 있어야 하며, 구체적인 문제 정의들이 있어야 합니다.

    이 중, 특히 어려운 문제는 데이터 셋에 Silent Failure들이 있는 경우가 많다는 것입니다. 즉, 성능에 전혀 도움이 되지 않는 쓰레기 데이터인데 모르고 지나치는 경우로 이들을 발견하기가 매우 어렵습니다. 이런 것들은 성능 모니터링과 시각화, 요약을 통해 데이터에 대해 충분히 실험하고 검증하여 찾아낼 수 있습니다.

    작은 단위의 머신러닝 프로그램 (코딩 수준) 큰 단위의 머신러닝 프로그램 (엔지니어링 수준)
    고정된 데이터셋 진화하는 데이터셋 대처 가능
    재사용 불가능한 모델 재사용 가능한 모델(들)
    문제에 대한 구체적 정의 없음 구체적 문제 정의들이 있음
    검증되지 않은 데이터셋과 모델 검등된 데이터 셋과 모델, 예상치 존재.
    벤치마킹 되지 않은 모델 모델의 성능과 품질을 벤치마크함. 
    평향된 데이터셋과 아티팩트 데이터와 모델에 대해 설명가능하고 공정성이 있음
    디버깅할 수 없는 코드 시각화, 요약, 이해 가능
    계측되지 않은 코드 아티팩트의 형상관리

     

    3. MLOps의 핵심적인 문제

    1) 모델 학습 / 배포 트리거

    일반 소프트웨어 엔지니어링과는 달리 머신러닝 시스템의 학습 / 배포 트리거는 아래와 같습니다.

    (학습 / 배포 트리거란, 서비스하는 머신러닝 모델을 다시 학습하거나 배포하는 것을 결정하는 단계를 의미합니다.)

    1. 요청 시: 파이프라인 임시 수동 실행
    2. 기간이 정해진 경우: 라벨이 지정된 새 데이터는 매일, 매주 또는 매월 단위로 오는 경우, 재학습 필요
    3. 새 학습 데이터 추가된 경우: 새 데이터가 들어오는 경우 모델의 재학습 필요
    4. 모델 성능 저하 시: 성능 저하가 눈에 띄는 경우 모델 재학습 필요
    5. 데이터 분포의 중요한 변화 시(Concept Drift): 피처 데이터 분포에 변화가 생기는 경우, 모델이 오래된 경우를 뜻하며, 재학습 필요

     

    일반적인 소프트웨어 엔지니어링에선 CI(Continuos Integration), CD(Continuos Deployment)라는 자동화 핵심 문제가 있는데, 머신러닝 시스템에는 지속적 학습이라는 CT(Continuos Trainig)이라는 관리 포인트가 하나 더 생깁니다.

     

    2) 지속적 학습(Continuos Training)

    머신러닝 시스템의 고유한 속성으로, 모델을 자동으로 재학습하고 서빙해주는 자동화를 의미합니다. 일반적으로 큰 단위의 머신러닝 프로젝트는 데이터 추출 → 데이터 분석 → 데이터 전처리 → 모델 학습 → 모델 평가 → 모델 검증 → 모델 서빙(배포) → 모델 모니터링(성능 모니터링)이라는 생애주기를 가집니다. 이때 데이터 분석을 제외하고, 데이터 추출부터 모델 검증까지 자동화된 것을 CT라고 합니다.

     

    4. MLOps 성숙도 레벨

    1) 레벨 0

    수동, 스크립트 중심으로 주피터 노트북으로 모델을 만들어서 배포하는 경우로, CI/CD/CT가 모두 없고, 성능 모니터링도 없는 경우입니다. 즉, 일회성 코드로 모델을 만든 뒤, 해당 모델을 기반으로 예측 서비스만 해주는 경우입니다.

    Level 0 개략적인 PipeLine

    2) 레벨 1

    레벨 0에 비해 훨씬 복잡해졌습니다. 이젠 CT(Continuos Training)가 가능해진 시점입니다. 일정 기간 단위로, 자동으로 데이터 정리돼서 학습되고, 배포가 되는 시스템입니다. 성능 모니터링이 되어 모델의 성능이 저하되면 알림이 오게 할 수 있습니다. 이때부터는 파이프라인 자체를 코드로 배포하게 되며, 해당 파이프라인이 돌면서 CT를 통해 모델을 지속적으로 배포하게 됩니다.

    Level 1의 개략적인 PipeLine

     

    3) 레벨 2

    자동화된 CI/CD 시스템이 적용되어, 데이터 과학자는 Feature Engineering, 모델과 하이퍼 파라미터에 집중할 수 있게 된 상태입니다. 이제는 파이프라인만 배포 자동화(레벨 1)된 게 아니라 서비스 자체의 배포가 자동화되었습니다. 

    Level 2의 개략적인 PipeLine

     

    5. 요약

    1. 머신러닝 파이프라인의 개념: 머신러닝 모델의 학습 및 예측 그리고 배포를 자동화하는 시스템을 의미합니다.

     

    2. 머신러닝 기반의 소프트웨어가 갖고 있는 특징

    왼쪽은 작은 단위의 머신러닝 프로그래밍을 할 때 발생할 수 있는 문제의 특징들입니다. 오른쪽은 큰 단위의 머신러닝 프로그램으로 도달하기 위해 가져야 하는 특징들입니다. 

    작은 단위의 머신러닝 프로그램 (코딩 수준) 큰 단위의 머신러닝 프로그램 (엔지니어링 수준)
    고정된 데이터셋 진화하는 데이터셋 대처 가능
    재사용 불가능한 모델 재사용 가능한 모델(들)
    문제에 대한 구체적 정의 없음 구체적 문제 정의 있음
    검증되지 않은 데이터셋과 모델 검등된 데이터 셋과 모델, 예상치 존재.
    벤치마킹 되지 않은 모델 모델의 성능과 품질을 벤치마크함. 
    평향된 데이터셋과 아티팩트 데이터와 모델에 대해 설명가능하고 공정성이 있음
    디버깅할 수 없는 코드 시각화, 요약, 이해 가능
    계측되지 않은 코드 아티팩트의 형상관리

     

    3. MLOps에서 풀어야 하는 핵심 문제

    지속적 학습(Continuos Training)의 자동화가 가능한 시스템 즉, 파이프라인을 구축해야 합니다. 이를 통해, 성능 모니터링도 할 수 있습니다.

     

    4. MLOps 성숙도 레벨에 다른 특징

    레벨 0은 그냥 프로젝트로 서비스 한번 만들어본 수준으로 강사님이 국내 기업들 컨설팅해본 결과 대부분 여기에 속한다고 합니다. 레벨 1은 지속적 학습(CT)이 가능해진 파이프라인을 구축한 수준으로 국내 기업 중 소수만 여기에 속한다고 합니다. 레벨 2는 CI/CD까지 같이 자동화되어 데이터 과학자는 Feature Engineering 및 모델을 만드는데만 집중할 수 있고, 나머지는 파이프라인이 다 해주는 단계입니다.

     

     

    Reference)
    1. Machine Learning PipeLine: https://flowcdn.azureedge.net/cvt-fcd32def9e70713fcbd91043357751f796ceba594192e1c146b3a66eceed0efb/images/home/announcement-mobile-img.png
    2. 인프런 "머신러닝 엔지니어 실무": https://www.inflearn.com/course/%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-%EC%97%94%EC%A7%80%EB%8B%88%EC%96%B4-%EC%8B%A4%EB%AC%B4
    3. https://lv99.tistory.com/76
    반응형

    댓글

    Designed by JB FACTORY