Julie의 Tech 블로그

MLOps, 머신러닝 파이프라인 설계 - (1) 개요 본문

Tech/MLOps

MLOps, 머신러닝 파이프라인 설계 - (1) 개요

Julie's tech 2021. 9. 1. 22:04
728x90

본 시리즈는 최종적으로 Kubeflow를 활용하여 머신러닝 모델 자동화를 이룰 수 있도록 파이프라인을 설계하는 방법에 대해 다룰 것이다.

머신러닝 파이프라인은 모델의 life cycle 전체를 자동화할 수 있다는 점에서 매우 매력적인 도구이다.

새로운 학습 데이터가 인입될 때, 데이터 가공, 모델 학습, 분석, 그리고 배포까지 전체 워크플로우가 돌게 되어있다.

이 과정에서 데이터 분석가나 엔지니어가 개입하여 새롭게 처리하거나 작업해야할 공수가 상당히 줄어든다.

이번 개요 편에서는 머신러닝 파이프라인을 설계함으로써 어떤 이득을 얻을 수 있는지를 간단히 살펴보자.

달리 보면 머신러닝 파이프라인을 설계해야하는 이유, 필요성으로도 볼 수 있다.

* 분석가는 새로운 모델 개발에 집중할 수 있다. 기존에 존재하는 모델의 운영비를 줄일 수 있다.

분석가는 매일 모델 script를 새롭게 돌릴 필요가 없다. 워크플로우에 의해서 자동화가 되었기 때문에, 기존 모델을 운영하는 데에 쓰이던 인력을 새로운 모델 개발에 집중할 수 있다.

* 에러/버그 예방

일반적으로 script기반으로 모델을 운영하게 되면, 특정 셀을 의도치 않게 skip했거나, 혹은 변경된 사항에 대한 반영이 적절하게 이루어지지 않아서 에러가 발생하곤 한다. 자동화된 워크플로우는 버저닝(Versioning)으로도 변경 사항을 관리할 수 있기 때문에 유용하다.

* 로그 기록에 따른 모델 변경사항 히스토리 관리

워크플로우는 일반적으로 모델의 하이퍼파라미터, 데이터 정보, metrics와 같은 정보를 기록으로 남긴다. 이 기록을 통해 분석가들은 추후 신규 모델 개발 시에 참고하여 새로운 인사이트를 도출할 수 있다.

어떨 때 데이터 파이프라인을 구성하면 좋을까? 모든 데이터 기반 프로젝트에 파이프라인을 설계하고 개발할 필요는 없다.

특정 모델이 지속적으로 업데이트가 필요하고, 튜닝이 필요한 경우에는 파이프라인을 만들어두는 것이 좋다.

또한 데이터 사이즈가 무척 크거나 자원을 많이 필요로 할 경우 파이프라인을 구축해두는 것이 인프라적으로 좋다. (auto-scaling 등)

출처 : building machine learning - O'Reilly

위 이미지는 데이터 파이프라인의 일반적인 구조도이다.

일반적으로 새로운 데이터를 먼저 ingestion하고, 데이터 적합성 평가를 통해 valid할 경우 전처리를 하게 된다.

전처리된 데이터는 모델의 학습 데이터로 넘어가고, 데이터가 변경되었기 때문에 신규 데이터에 맞추어 모델의 튜닝이 이루어진다.

모델 튜닝 겨로가에 따라 모델의 분석과, 적절히 추론되었는지를 검증한 뒤, 모델을 배포하여 실제 서비스로 녹이는 절차로 구성되어있다.

데이터 적합성 평가는 새로 인입된 데이터가 예상 가능한 범위 내에 있는지 등을 확인하는 절차이다.

예를 들어 특정 수치형 데이터가 범위가 정해져있다면, 해당 범위 내에 존재하는지 등을 확인한다.

이상치는 없는지, 분포는 어떠한지 등을 확인하여 데이터 전처리 전에 validate를 하는 과정이다.

이처럼 모델 파이프라인을 설계할 때는 코드를 효율화하는 것이 중요하다.

자동화되어 돌아갈 코드는 최적화된 메모리 사용과 연산량을 지녀야 불필요한 비용 및 자원 사용을 최소화할 수 있다.

따라서 전처리나 모델 학습 시에 이러한 점을 유의하여 프로그래밍을 하는 것이 중요할 것이다.

모델 파이프라인에 자주 사용되는 툴들은 아래와 같다 : Apache Beam, Apache Airflow, Kubeflow pipeline.

머신러닝 라이브러리인 Tensorflow에서는 Tensorflow Extended (TFX) 를 제공하여, 해당 라이브러리에서는 파이프라인 구성요소 별 실행 이력 로그를 남겨 추출할 수 있도록 기능을 제공하기도 한다.

머신러닝 파이프라인 툴을 알기 전에는 DAG라는 개념에 대해 알고 있어야한다.

DAG란 Directed Acyclic Graphs의 줄임말이며, 단어 그대로 풀자면, 방향이 정해져있고 순환하지 않는(되돌아오지 않는) 그래프 라는 것이다.

순서도 개념이라고 생각하면 된다. A -> B -> C와 같이 단계를 표현하는 그래프이고, 분기를 일으킬 수도 있다.

DAG, 출처 : https://ko.wikipedia.org/wiki/

본 시리즈에서 사용되는 인프라 스택은 아래와 같다.

머신러닝 파이프라인 orchestration은 Apache Beam, Apache Airflow, Kubeflow로,

모델 분석과 배포는 TFX MetadataStore과 MariaDB를 사용할 것이다.

다음 글은 TFX에 대해 다뤄볼 것이다.


참고자료

https://learning.oreilly.com/library/view/building-machine-learning/9781492053187/

 

Building Machine Learning Pipelines

learning.oreilly.com

반응형