MLOps = ML(Machine Learning) + Ops (Operations)
머신러닝 모델 개발과 머신러닝 모델 운영에서 사용되는 문제나 반복을 최소화 하고 비즈니스 가치를 창출하는 것이 목표이다.
모델링에 집중할 수 있도록 관련된 인프라를 만들고, 자동으로 운영되도록 만드는 작업을 말한다.
최근에는 여러가지 문제에 머신러닝/딥러닝을 적용하는 사례가 많아짐에 따라 Research(연구) 모델이 Production 환경에 똑같이 재현이 가능해야하는게 매우 중요해졌다. Research 환경과는 다른 현실은 여러가지 Risk가 존재하기 때문에 빠른 시간 내에 가장 적은 위험을 부담하며 아이디어 단계부터 Production 단계까지 프로젝트를 진행할 수 있도록 기술적 마찰을 줄이는 것이다.
Research ML | Production ML | |
---|---|---|
데이터 | 고정(Static) | 계속 변함(Dynamic-shifting) |
중요요소 | 모델 성능 | 모델 성능, 빠른 inference, 해석 가능성 |
도전과제 | 더 좋은 성능(SOTA), 새로운 구조 | 안정적인 운영, 전체 시스템 구조 |
학습 | (데이터고정) 모델구조, 파라미터 기반 재학습 | 시간의 흐름에 따라 데이터가 변경되어 재학습 |
목적 | 논문 출판 | 서비스에서 문제 해결 |
표현 | Offline | Online |
정말 다양한 라이브러리들이 존재하고 어떤 라이브러리가 가장 좋다라고 표현할 수 없다. 따라서 Tool에 집중하지 말고 전체적이 방법에 대해 알아가는 학습법이 도움이 될거라고 생각한다.
MLOps 학습 방법
MLOps에 대한 모든 것을 학습하는 방식보다는 각 Component에서 해결하고 싶은 문제는 무엇이고 그 문제를 해결하기 위한 방법으로 어떤 방식을 활용할 수 있는지를 학습방식으로 한다.
Server 인프라
GPU 인프라
Serving
머신러닝/딥러닝 모델링은 수많은 실험을 하게 되며 이런 과정속에서 가장 성능이 좋았던 모델의 부산물들을 저장한다.(모델 Artifact, 이미지 등)
모델은 다양한 종류가 있으므로 모델 생성일, 성능, 메타 정보등을 기록해둘 수 있다. 또한 여러 모델을 운영할 수 있어야 한다. 대표 프레임워크는 MLflow가 있다.
여러가지 모델들을 모델링을 하게 되면 사용되는 피처들이 중복되거나 다른 모델에서도 사용가능할때 이러한 Feature들을 미리 집계하고 이 것들을 모아두는 곳을 Feature Store라고 한다. 현재 딥러닝분야에서 보다는 정형화된 데이터에서 많이 발전되어 있다.
Stream Sources = Online features
Batch Sources = Offline features
Research와 Production의 Feature들의 분포를 확인함
Drift는 시간이 지남에 따라 모델의 성능이 낮아지는 것을 의미하며 Concept drift, data drift, model drift가 있다.
Concept drift는 데이터와 라벨의 관계성이 변화함에 따라 성능이 낮아지는 것을 말한다.
Data drift는 입력데이터 분포의 변화에 따른 성능 저하를 말한다.
Model drift는 모델이 시간이 지날수록 성능이 떨어지는 것을 말한다.
Static모델을 단 한번 학습하게 된다. 따라서 시간이 흐름에 따라 성능이 낮아지는 것을 볼 수 있고 Refreshed는 일정 간격에 따라 다시 학습하게 된다.
다시 학습을 하는 경우는 새로운 데이터, 일정 간격, Metric기반, 요청시로 나눠볼 수 있으며 drift를 방지하기 위해서도 필요하다.
모델의 지표, 인프라의 성능 지표나 사용자의 추이와 같은 동향을 파악하여 지속적인 학습이나 분석의 용도로 사용이 가능하다.
머신러닝 모델을 직접 운영하면서 신경써야 하는 여러가지 부분들 !
모든 회사에서 MLOps를 적용하지는 않으며 앞서 설명한 모든 component들이 전부 필요한것도 아니다. 따라서 처음엔 작은 단위 MVP(Minimal Value Product)로 시작해서 점차 증가시키는 방식을 활용하자!