MLOps(Serving) 시스템

jingyu·2022년 6월 23일
0

Serving

목록 보기
1/8
post-thumbnail

MLOps의 Serving 단계에 대한 설명

MLOps

MLOps란?

Machine Learning + Operation = MLOps
ML 모델 배포, 관리, 모니터링, 거버넌스의 기능

MLOps가 필요한 이유

모델 개발자들은 다양한 언어(Python, Go,…)와 다양한 프레임워크(TensorFlow, PyTorch, Scikit-learn,…)를 사용해서 모델을 개발한다.
서버 개발자는 모델 개발자의 요청에 따라 모델을 서버에 배포한다.
시스템 운영자는 배포된 모델을 모니터링하고 모델 개발자에게 피드백을 준다.
모델 개발자는 피드백을 통해 모델을 개선하고 다시 배포 요청을 한다.
.....(반복)

각 담당자별로 각자의 요구사항이 있다.
1)다양한 모델 개발환경이 필요
2)지속적인 업무 협업이 필요
3)모델 개발, 배포, 모니터링, 피드백까지의 플로우가 오래 걸림

이러한 요구사항을 개선하고 자동화하기 위한 시스템이 필요하고 다양하게 만들어진 모델을 서비스하기 위한 시스템이 필요하다.
그래서 MLOps 구성이 필요하게 되었다.

ML Workflow 단계

1) Experiment 단계

  • ML 모델 개발 단계
  • 데이터를 수집/분석하고 ML 모델링 및 ML 프레임워크 선택
  • ML 모델 훈련/튜닝 및 테스트

2) Production 단계

  • 모델 예측(Serving) 서비스 단계
  • 개발된 ML 모델을 서비스화(Application)하여 배포
  • 모델 성능을 모니터링하고 그 결과에 따라 튜닝/재 학습에 활용

Serving

Serving이란?

ML 모델을 서비스(Application)화하여 Predict하는 것
즉 개발된 모델을 누구나 쉽게 사용할 수 있도록 서비스로 제공하는 것
아래 그림에서의 Production 단계이다.

Serving 시스템을 구축하는 방법

1) Development

모델을 배포하여 서비스할 수 있는 환경을 직접 구축하는 것이다.
모델 서비스를 위한 API, Server와 모델 배포/관리/운영을 위한 개발 환경 구축이 필요하다.
Serving 기능의 테스트 용도로 사용하는 정도로 적합하다.

2) Open Source Serving 도구 이용

다양한 오픈소스를 사용하여 시스템을 구축하는 방법이다.
환경 구축(Docker, K8s, Serving Tool)과 Serving 도구(KFServing, Seldon core, TensorFlow Serving)등을 사용하여 구축한다.
오픈소스이기에 설치, 구성, 사용상의 불편함은 감수해야 하지만 전체 Serving 기능을 사용하는데는 문제가 없다.

3) Cloud Service 이용

AWS Sagemaker 같은 클라우드 서비스를 이용하는 방법이다.
환경 구축, 개발업무가 필요없이 편리하게 사용할 수 있다.
하지만 비용 이슈이 많이 들고 커스텀하게 시스템을 구축하기에는 무리가 있다.

KFServing 활용한 Serving 시스템 구축

KFServing이란?

  • Kubernates 기반으로 예측(Predict) 서비스를 제공하는 Serving 도구
  • Istio : 서비스간의 통신,네트워크를 담당하는 도구
  • Knative : 모델 서비스를 배포, 관리하기 위한 도구
    업로드중..

주요 기능

  • 모델 배포, 버전 관리, 테스트(canary, rollout), 오토스케일링, 네트워킹, 헬스체크등
  • Prediction, Explanation, 데이터 Processing 기능 제공
  • 다양한 ML 프레임워크 서비스 제공
    TensorFlow, PyTorch, XGBoost, SKLearn, ONNX, Nvidia TRTIS
  • 모델 Storages 지원
    AWS/S3, GCS, Azure Blob, NFS

아키텍처

업로드중..

  • Transformer는 Predict하기 전에 데이터에 대한 전처리 혹은 후 처리를 담당한다.
  • Logger는 메트릭 시스템을 연결하기 위한 모듈이다.
  • Fluent, ES, Kibana를 이용해 메트릭(추론데이터)를 수집한다.
  • 프로메테우스, Grafana, Kiali를 이용해 서비스 로깅과 네트웍 모니터링을 확인한다.
  • 수집된 메트릭은 모델 튜닝(skew, outlier)과 모델 reTraining에 사용된다.
profile
내일을 향해 쏴라!

0개의 댓글