방구석개발실
MLOps 춘추 전국 시대 정리 본문
(기존에 운영하던 oopy 기반 블로그 글을 가져왔습니다 @ 2021-08-27)
MLOps KR 커뮤니티의 MLOps 춘추 전국 시대 정리 발표 영상을 보며 정리한 글입니다.
발표자이신 변성윤 님께서 직접 정리하신 글이 있으니 참고해 주세요!
MLOps란?
모델링과 모델을 운영하는 것은 다른 것!
MLOps 사용 배경 (경험담)
- 머신러닝 모델이 완성되었으니 웹에서 사용할 수 있게 해 볼까!
- Flask를 이용하면 서버를 편하게 만들 수 있다고 하니 사용해 보자!
- 도커나 AWS Lambda(서버리스)도 함께 이용해 볼까?
- Task management 도구인 Airflow를 이용해서 주기적으로 학습을 해볼까?
- 모델을 배포하고 나니까 여러 가지 이슈가 발생했다... 효율적으로 관리할 수는 없을까?
- 관련된 논문 번역 글 (링크) - "머신러닝 코드는 머신러닝 시스템 중 일부에 불과하다! 다른 부분이 정말 많다" (한 줄 정리)
MLOps는 모델 운영과 관련된 기술임 (ML + Operations)
- 머신러닝 엔지니어링 + 데이터 엔지니어링 + 인프라
MLOps의 핵심
- 모델링에 집중할 수 있도록 관련된 인프라를 만들어서, 모델링을 하는 사람은 모델링에만 집중할 수 있도록 도와주는 것.
- 머신러닝 모델 개발(ML)과 머신러닝 모델 운영(Ops)에서 사용되는 문제, 반복을 최소화하고 비즈니스 가치를 창출하는 것이 목표.
- 빠른 시간 내에 가장 적은 위험을 부담하며 아이디어 단계부터 프로덕션까지 ML 프로젝트를 진행할 수 있도록 기술적 마찰을 줄이는 것.
MLOps의 현 상태 (21.06.23 기준)
- 춘추 전국 시대!!
- 다양한 라이브러리가 존재하고, 어떤 방법이 가장 효율적인지 제대로 확립되지 않음.
MLOps Componets
예시를 통해 MLOps에 대해 알아보자!
- 집에서 해 먹는 타코가 맛있어서 레스토랑을 개업하려고 한다.
- 당연히 집에서 타코를 요리할 때와 레스토랑에서 요리할 때는 다를 수밖에 없다.
- 요리하는 환경이 다르고, 준비해야 하는 타코의 양이 다르다.
- 따라서, 식재료 준비 및 관리와 요리하는 방법도 달라질 수 밖에 없다. (집에서 하는 방법 그대로 하면 주문이 밀릴 수 있다.)
- 집에서 타코를 만드는 것을 연구(research)라고 볼 수 있고, 레스토랑에서 타코를 만드는 것을 제품 개발(production)로 볼 수 있다.
- 그리고, 레스토랑에서 타코를 제대로 만들 수 있게 도와주는 방법들이 MLOps라고 볼 수 있다!
MLOps에 필요한 요소들(components)
- Model (= 음식)
- Data, feature (= 식재료, 소스)
- Model train (= 요리하는 행위)
- Serving (= 손님에게 서빙)
- Experiment, Model Management (= 요리 레시피 기록)
- Feature Store (= 재료 저장 창고)
- Data Validation (= 집에서 사용하는 재료와 레스토랑에서 사용하는 재료가 동일한 것인지 비교하는 작업, 재료 관리)
- Continuous Training (= 손님들의 반응을 반영해서 신선한 재료로 요리를 다시 하는 것)
- 그 외 - GPU Infra (레스토랑 관리), Monitoring (매출 기록), AutoML (자동화 시스템), Model Validation (음식 관리)
- 당연히 더 있지만, 일단은 여기까지만 다루겠음!
- 볼드체로 적어 놓은 것은 밑에 부분에서 조금 더 구체적으로 다룸.
Serving
- Serving이란 production 환경에서 사용할 수 있도록 모델을 배포하는 것
- 대표적인 serving 방식에는 두 가지가 있음
- Batch serving: Batch 단위로 여러 데이터를 한 번에 예측하는 방식 (=정기 배송처럼 매일 20시마다 서빙하는 경우)
- Online serving: API 형태로 요청이 올 때마다 예측하는 방식 (=주문하자마자 만들어서 서빙하는 경우)
- 둘 중에 항상 좋은 것은 없고, 상황에 따라서 선택하면 됨. 처음에는 batch serving 방식을 선택하다가 점점 서비스가 커지면서 다양한 모델을 서빙해야 할 경우 online serving으로 넘어감. 참고로, batch serving과 관련된 라이브러리는 없음. 스케줄링 방식으로 서빙하게 되는데 Airflow, Cronjob 등을 이용함. Online serving은 라이브러리가 많고, 밑에서 다시 다루겠음.
- Level별로 나눠서 정리함
- Lv 1: Flask, Fast API
- Lv 2: Lv 1 + Docker
- Lv 3: Lv 2 + Kubernetes
- Lv 4: Online serving 프레임워크 사용 (Kubeflow, BentoML, Seldon Core, Cortex, KFServing, Tensorflow Serving, Torch Serve 등)
- 관련된 라이브러리들의 Github star history (링크)
- Tip. 위 사이트에 바로 접속하면 limit이 뜨는데, github 로그인하면 limit 해제할 수 있음.
Experiment, Model Management
- 머신러닝 모델을 학습하는 과정을 매번 기록함
- Artifact라는 용어를 종종 접하게 될 텐데, 이 단어는 학습하는 과정에서 생기는 이미지, 모델 파일 등을 의미함
- 모니터링 대시보드가 필요함
- 특정 메트릭에 따라 모델을 selection 할 수 있는 기능도 필요함
- 이를 위한 Weight & Bias, Neptune (Software-as-a-Service, SaaS, 서비스형 소프트웨어)도 많고, 오픈소스로는 MLflow가 제일 강세를 보이고 있음.
- 모델 selection 하는 로직과 관련된 예시 (링크)
- 관련된 라이브러리들의 Github star history (링크)
Feature store
- Research에서 사용하는 Feature와 Production Feature를 동일하게 사용할 수 있게 구성하는 것이 핵심!
- 오픈 소스로는 Feast, Hopsworks가 대표적임
- 클라우드 서비스에는 SageMaker feature store(Amazon), Vertex AI(Google)가 있고 점차 생겨나는 중
- 관련된 라이브러리들의 Github star history(링크)
Data Validation
- 키워드: Data Drift, Model Drift, Concept Drift
- 관련 사이트 (1)
- 관련 사이트 (2)
Continuous Training
참고할만한 아키텍처
MLOps 공부법
- 기본적으로 CI/CD, Cloud, Kubernetes를 잘 알고 있으면 좋음
- 또한, MLOps와 관련된 flow와 component를 이해하고 난 이후에는, 스스로 흐름도를 작성해 보는 것도 추천!
- MLOps 기본 강의로 시작하는 것을 추천
- 앤드류 응 님 강의 (링크)
- 기초적인 내용을 다룸
- 기본서 느낌
- TFX 기반 강의
- Full Stack Deep Learning 강의 (링크)
- 엄청 실용적인 관점에서 문제 정의, 베이스라인 정하기, MLOps 각종 도구, 트러블 슈팅, AI Ethics, Test, Deploy에 대해 다룸
- 현존하는 MLOps 관련 강의 중 제일 추천
- [애저듣보잡] MLOps 101 (링크)
- 한국어 강의
- 1시간 이내의 분량으로 핵심적인 내용을 잘 알려줌
- 처음 시작할 때, 전체 그림을 그린다는 기분으로 들으면 좋음
- 송호연 님의 인프런 강의 - 머신러닝 엔지니어 실무 (링크)
- 한국어 강의
- 여러 오픈소스를 사용하는 방법을 배울 수 있음
- 강의 이후에는 각자의 문제 상황에 맞게 시스템을 구축해 보기
- Awesome production machine learning → 테마별로 MLOPs 라이브러리가 잘 정리되어 있음
- Awesome MLOps
- 앤드류 응 님 강의 (링크)
- 직접 시스템을 구축하기 이전에 Cloud MLOps 서비스를 사용해 보는 것을 추천함. 어떤 식으로 사용되고 있는지 배울 수 있음. Azure MLOps 추천.
- 머신러닝 시스템 디자인 패턴 공부하기 (링크)
- 글로벌 회사들의 MLOps 플랫폼 참고하기
- 추천 사이트
- 커뮤니티
- 페이스북: MLOps KR
- 카카오톡 오픈 채팅방: MLOps
참고 자료
'MLOps' 카테고리의 다른 글
[우아한테크세미나] MLOps를 활용한 AI 서비스 개발 스토리 정리 (0) | 2023.08.01 |
---|