Control Plane
Kserve의 컨트롤 플레인은 인퍼런스 서비스를 제어하는 역할을 합니다. 일반적으로 KServe는 Serverless 플랫폼인 Knative를 사용하여 구현합니다. 그리고 Knative의 serverless 배포를 이용하여 인퍼런스 서비스의 구성요소인 predictor, transformer, explainer가 들어오는 요청에 기반하여 autoscaling되도록 합니다. 요청트래픽이 없다면 인스턴스가 하나도 뜨지 않도록 하는 Zero scaling도 가능합니다. Knative를 사용하지 않는 Raw 배포를 사용한다면, kubernetes의 deployment, service, ingress, HPA가 사용됩니다.
Control Plane Components
KServe Controller
서비스, 인그래스, 모델 서버 컨데이터 및 모델 에이전트 컨테이서 생성을 담당합니다. 부가적으로 요청/응답 로깅, 배치처리, 모델 풀링을 수행합니다.
Ingress Gateway
내외부의 트래픽을 라우팅하는 게이트웨이 역할을 수행합니다.
서버리스모드의 경우 추가 컴포넌트
Knative Serving Controller
서비스의 리비전관리, 네트워크 라우팅 리소스 생성, 서버리스 컨테이너 생성 등을 담당합니다. 특히 큐 프록시를 사용하여 트래픽 메트릭을 외부에 열고 동시성 제어를 수행합니다.
Knative activator
0으로 스케일링된 pod을 다시 생성하고 대기중인 트래픽을 전달합니다.
Knative Autoscaler(KPA)
어플리케이션의 트래픽 플로우를 모니터링하며, 설정된 메트릭을 기반으로 레플리카를 스케일업 다운합니다.
트래픽 플로우(Traffic Flow)
예시 그림의 초록색 점선 부분이 외부 요청 트래픽의 플로우입니다.
1. Inference Service 최상단에 AI Application으로 표시된 엔드포인트로 요청이 전달됩니다.
2. 먼저 Transformer Service로 전달되고 여러개의 Pod으로 로드밸런싱되어 트래픽이 전달됩니다.
3. Transformer Pod의 Queue Proxy 컨테이너를 거처 실제 변환을 수행하는 컨테이너로 전달됩니다.
4. 받은 데이터를 전처리를 수행하고 실제 예측을 수행하기 위해 전처리된 데이터를 Predictor Service를 호출하여 전달합니다.
5. Transformer와 마친가지로 Predictor Service를 통과하여 로드밸런싱되고 Predictor Pod내부의 Queue Proxy를 거처 Model Server에 데이터가 전달됩니다.
6. 전달 받은 데이터로 예측을 수행한뒤 결과를 다시 Transformer로 전달합니다.
7. Transformer에서 예측 결과를 전달받아 후처리를 수행합니다.
8. 후처리 수행후 Queue Proxy, Transformer Service를 거처 최종 유저에게 전달됩니다.
Reference
[0] KServe Control Plane: https://kserve.github.io/website/0.7/modelserving/control_plane/
'개발 > MLOps' 카테고리의 다른 글
020. [Kubeflow][KServe] 인증문제 해결하기 (Istio-Dex) (1) | 2022.09.21 |
---|---|
019. [Kubeflow][KServe] InferenceService 처음 배포하기! (1) | 2022.09.19 |
018. [Kubeflow][KServe] SKLearn model InferenceService 배포하기 (0) | 2022.09.16 |
016. [Kubeflow][KServe] Model Serving Data Plane (0) | 2022.09.14 |
015. [Kubeflow][KServe] Could not find CSRF cookie XSRF-TOKEN in the request 문제 해결 (0) | 2022.07.14 |