호돌찌의 AI 연구소
article thumbnail

Data Management에 대한 개념과 실습을 짚어보았습니다. 이제는 모델입니다. 


1. Motivation

보통 분석가들, ML Engineer, DS 분들은 특정 데이터에 대해 어떤 모델을 계속 발전시키면서 prediction 값을 얻는 과정들을 반복합니다. 시계열 데이터를 예를 들면, rawdata에 맞는 가장 좋은 모델을 만들기 위해 rawdata를 여러 전처리 방법을 적용해 바꾸어보고, 모델(선형회귀, rnn, lstm, gru 등)도 바꾸어도 보고, 각각의 모델에 대한 hidden layer 수나 window등을 바꾸어가면서 학습을 해보고, 가장 좋은 성능을 내는 모델을 최종 선택을 합니다. 이러한 cycle을 수십수백 번 반복을 하는데 그 과정에서 코드와 metric만 가지고 있을 수 없습니다. 그렇다면 어떤 정보들을 가지고 있어야 하는지 한번 접근해보겠습니다.

 

 

2. 어떠한 정보를 적재할까?

ML에서 기록하는 요소들을 한번 적어보겠습니다.

- Model src

- Evaluation Metric 결과

- 적용을 했던 parameters

- Model.pkl 파일

- 학습에 사용했던 Data

- 데이터 전처리용 code

- 전처리 pipeline을 중간에 한 data

- 등등등등

구성해보면 상당히 많습니다. 그래야 최소 학습을 했던 해당 모델을 재현할 수 있습니다. 


3. ML 모델 life cycle 관리의 어려움
모델 코드만으로는 재현을 완벽하게 하기 어렵습니다. 저장 방식이 제각각 다르다면 통합하고 비교하기 상당히 어렵습니다. 특히 혼자 일하는 것이 아닌, 협업을 하기 때문에 해당 모델 관련 메타 정보 등 관리하기도 힘들고, 사람의 실수가 생기면 그때부터 괴리가 생기기 시작합니다. 한번 어려운 점들을 구성해보겠습니다.

 

- 비슷한 작업이 반복적으로 일어남

- Dependency 패키지들이 많으며, 버전 관리가 어렵다.

- 테스트하기 어렵다. 

- Reproduce 되지 않는 경우가 많다. 

- Model 학습용 코드를 구현하는 사람과 Serving 용 코드를 구현하는 사람이 분리되어 있어서, 서비스화 단계에서 장벽에 부딪히는 경우가 생김

- 사람 Depedency가 생김(중간중간 누가 이직하거나 퇴직해서 인수인계를 여러 번 거치는 경우...)

 

이러한 고충들은 3년 일하면서 모두 겪어봤던 것들이라 어지럽네요. 그렇다면 이를 서포트해줄 만한 Tool이 존재합니다. 이러한 Tool들은 ML엔지니어가 파이썬 코드 또는 cli 명령어 몇 개 추가하면 모델 저장뿐만 아닌, 모델 메타 정보까지 함께 제공을 해줍니다. 또한 깔끔한 UI를 제공해주어 metric을 기준으로 하는 sorting 또는 시각화도 해주고 모델 패키징도 일정한 포맷 및 형식으로 저장도 해주어서 서빙 시 편하게 해 줄 수 있습니다. 이 Tool들이 여러 개(MLflow, Tensorboard, Neptune, Weights & Biases, Comet.ml)가 존재하는데 MLflow를 다루어볼 예정입니다.

 

 

 



4. MLflow 구성요소
크게 4가지 특징(구성요소)이 존재합니다. 
1. mlflow tracking : 모델의 hyperparameter, 코드 등 변경하면서 실험할 때 메트릭을 저장하는 중앙 저장소 역할을 합니다. R, python 함수로 간단한 메타 정보(파라미터, 메트릭 , 소스코드의 버전, 날짜, 패키징 된 모델 자체, 학습 데이터 자체, Model description, tag 등 저장 관리)를 모델과 함께 기록이 가능한 api제공을 해줍니다.

2. mlflow project : 학습이 reproduceble 할 수 있게, 성능 재현할 수 있도록 모델에 의존성 있는 모든 것(데이터 파라미터, type, tensorflow version, torch version, conda version, docker version)을 패키징 해줍니다.

3. mlflow models : 어떠한 형태로 개발되었든 상관없이 항상 배포할 수 있게 특정 언어나 모델에 종속되지 않고 동일한 형태로 배포할 수 있도록 포맷화 해줍니다.

4. mlflow model registry : MLflow를 실험했던 모델을 관리하는 저장소 같은 역할을 하며 모델 서빙 때 이 기능이 빛을 봅니다. 최근에 추가된 기능이라고 합니다. 

이 블로그에서는 안타깝게도 전부 맛보는 것이 아닌 main이라고 할 수 있는 tracking 부분만을 다룰 예정입니다. 

5. MLflow 장점
장점은 다음과 같이 나열할 수 있습니다.

- 쉬운 설치 및 쉬운 Migration

- 대시보드 제공

- 다양한 Client API 제공

- 다양한 Backend Storage 연동 지원

- 등등등

 

 

MLflow의 깃헙은 여기입니다. 다음 글부터는 mlflow를 한번 맛보도록 해보겠습니다. 

 

 


https://bit.ly/37BpXiC

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr

 

* 본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.

 

 

 


profile

호돌찌의 AI 연구소

@hotorch's AI Labs

포스팅이 도움이 되셨다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!