Kubernetes 이야기

Model Serving 본문

Kubernetes/MLOps

Model Serving

kmaster 2023. 2. 24. 16:56
반응형

일반적인 ML Workflow는 다음과 같다.

ML Workflow

학습한 모델을 프로덕션에 배포하는 것은 비지니스에서 상당히 중요한 일이다. 일반적으로 학습한 모델을 배포하는 방식은 다음과 같다.

 

모델을 이용하여 서비스하는 방법은 크게 2가지를 생각해 볼 수 있다.

 

1) Online

Model을 embeded 하여 서버를 운영하거나 모델만 API 서버로 구성한 후 클라이언트와 결과를 주고 받는 온라인 서비스 형태가 있다. 아래 그림은 TensorFlow Serving Container가 모델 API 서버 기능을 하고 Flask 가 클라이언트 역할을 하여 서비스 하는 형태가 될 수 있다.

2) ML 모델을 이용한 Stream

ML 모델로 데이터 파이프라인을 보강하는 구성이다.

 

모델을 저장하는 방식도 여러가지 (Tensorflow SavedModel, PMML, PFA 또는 ONNX) 가 있다. 이러한 모델로 다양한 애플리케이션에서 재사용할 수 있다.

TensorFlow SaveModel 예시

Kubeflow는 대규모 MLOps를 위한 모델 제공을 위해 KServe (이전 KFServing)이 있다.

 

Kubeflow의 모델 제공 프로젝트인 KServe은 카나리아 롤아웃, 다중 프레임워크 서버리스 추론 및 모델 설명 기능과 같은 기능을 통해 K8s의 오픈 소스 모델 배포 도구와 관련하여 가장 성숙한 도구이다.

KServe은 서버 구성, 네트워킹, 상태 확인, 이기종 하드웨어(CPU, GPU, TPU)의 자동 확장, 0에서 확장, 점진적(일명 카나리아) 롤아웃의 복잡성을 추상화한다. Tensorflow, PyTorch, XGBoost, ScikitLearn 및 ONNX와 같은 다양한 프레임워크와 호환되는 방식으로 예측, 전처리, 후처리 및 설명 가능성을 포함하는 프로덕션 ML 서비스에 대한 완전한 스토리를 제공한다.

 

KServe은 Knative와 Istio라는 잘 알려진 두 가지 클라우드 네이티브 기술을 핵심으로 사용한다.

https://github.com/kserve/kserve

Knative

최신 서버리스 워크로드를 배포하고 관리하는 Kubernetes 기반 플랫폼으로 KFServing에 다음과 같은 속성을 부여한다.

  • 0으로 또는 0으로 조정 : 추론과 관련된 비용 최적화
  • GPU 및 TPU의 자동 확장 : 수요당 비용으로 특수 하드웨어로 대기 시간 감소

Istio

Kubernetes 사이드카 개념을 통해 작동하는 서비스 메시 기술로 모든 네트워크 트래픽을 처리하는 사이드카 컨테이너가 모든 포드에 추가된다. 이것은 다음을 가능하게 한다.

 

  • 카나리아 롤아웃: 사용자 간에 안전한 모델 업데이트 허용
  • 모델에 대한 트래픽: 라우팅 및 인그레스 관리
  • 관찰 가능성: 모델에 대한 추적, 모니터링 및 로깅 기능
  • 부하 분산: HTTP, gRPC, WebSocket 및 TCP 트래픽
  • 보안: 대규모 서비스 통신의 인증, 권한 부여 및 암호화


KServe

Tensorflow, PyTorch, XGBoost, ScikitLearn 및 ONNX와 같은 다양한 프레임워크에 저장된 기계 학습 모델을 생산 환경에 제공하기 위해 Kubernetes API를 확장하는 개체인 Kubernetes 사용자 지정 리소스 정의 (CRD)를 제공한다 .

 

 

 

참고

https://itnext.io/machine-learning-model-serving-options-1edf790d917

https://ubuntu.com/blog/guide-to-ml-model-serving

https://medium.com/@kiseon_twt/flask%EB%A1%9C-tf-2-0-mnist-%EB%AA%A8%EB%8D%B8-%EC%84%9C%EB%B9%99%ED%95%98%EA%B8%B0-6c9fb7cf3322

https://github.com/kserve/kserve

 

반응형

'Kubernetes > MLOps' 카테고리의 다른 글

Kubeflow - Pipeline  (0) 2023.03.26
MLFlow vs Kubeflow  (0) 2023.03.06
MLOps  (0) 2023.03.06
Kubeflow - Notebook  (0) 2023.02.24
Kubeflow를 사용한 MLOps  (0) 2023.02.23
Comments