개발/MLOps

016. [Kubeflow][KServe] Model Serving Data Plane

봉자씨 2022. 9. 14. 15:42
반응형

Data Plane

InferenceService의 Data Plane 아키텍처는 단일 모델에 대한 요청을 조절하는 구성요소의 정적 그래프(Static Graph)로 구성됩니다.
Embedding, A/B test, Multi-Arm-Bandits과 같은 고급 기능은 반드시 인퍼런스 서비스와 함께 구성되어야 합니다.

오른쪽의 세가지 컴포넌트로 구성된 회색박스가 InferenceService이다.

Concept

컴포넌트(Component): 각 엔드포인트는 여러개의 컴포넌트로 구성되어 있습니다. "predictor", "explainer", "transformer" 가 그 컴포넌트들 입니다. 필수 컴포넌트는 predictor 하나이며 시스템의 핵심(core) 입니다. 나머지 "transformer", "explainer"는 선택 컴포넌트입니다. KServe가 진화함에 따라 Outlier Detection과 같은 use case를 지원하기위해 다양한 컴포넌트를 지원하고자 하는 계획이 있습니다.

 

Predictor: Predictor는 인퍼런스 서비스의 일꾼(workhorse) 입니다. 간단하게 모델과 모델 서버로 구성되며 네트워크 엔드포인트로 접근이 가능하게 합니다.

 

Explainer: Explainer는 예측과 더불어 모델 설명을 제공하는 선택적 대체 데이터 플레인을 제공합니다. 사용자는 자신만의 설명 컨테이너(Explaination container)를 정의 할 수 있으며, 예측 엔드 포인트와 같은 관련 환경 변수로 구성됩니다. 일반적인 use case로 KServe는 Alibi와 같은 out-of-the-box explainer를 제공합니다.

 

Transformer: Transformer는 예측 및 설명 워크플로우를 거치기 전,후에 작동하는 전처리 및 후처리를 정의할 수 있도록합니다. explainer와 같이 예측 엔드포인트와 동일한 환경변수로 구성됩니다. 일반적인 사용법으로 KServe는 Feast와 같은 out-of-the-box transformer를 제공합니다.

Data Plane (V1) (outdated)

Kserve는 모든 모델 프레임워크에 대해 표준화된 예측 워크플로우를 제공합니다.

API Verb Path Payload
Readiness GET /v1/models/ Response:{"name": , "ready": true/false}
Predict POST /v1/models/:predict Request:{"instances": []} Response:{"predictions": []}
Explain POST /v1/models/:explain Request:{"instances": []} Response:{"predictions": [], "explainations": []}

Data Plane (V2)

Data Plane 프로토콜의 두 번째 버전은 많은 모델 프레임 워크 및 서버에 걸친 성능 및 일반성을 포함하여 V1 데이터 플레인 프로토콜에서 발견 된 몇 가지 문제를 해결하였습니다.

 

V2 프로토콜은 HTTP/REST API 와 GRPC API 둘다를 지원합니다. 이번 글에서는 HTTP/REST API 프로토콜을 간단히 알아보겠습니다. GRPC API 및 자세한 정보는 스펙 문서 를 참고하세요.

 

HTTP/REST API에서는 프로그래밍 언어에 독립적이고 널리 사용되는 JSON을 사용합니다. 모든 JSON 스키마에 보여지는 $number, $string, $boolean, $object, $array 는 기초 JSON type을 의미합니다.

 

또한 모든 컨텍스트의 string은 case-sensitive 합니다.

 

KServe는 다음 4가지 URL을 제공합니다. URL의 MODEL_VERSION 부분은 버저닝을 지원하지 않는 구현이거나 사용자가 특정 버전을 지정하지 않는다면 옵션으로 사용됩니다.

 

Health: 서버의 liveness, Readiness, 모델의 Readiness를 체크할 수 있습니다.

Method Path
GET v2/health/live
GET v2/health/ready
GET v2/models/${MODEL_NAME}[/versions/${MODEL_VERSION}]/ready

 

Server Metadata: 모델을 제공하는 서빙 서버의 메타데이터 정보를 확인합니다.

Method Path
GET v2

 

Model Metadata: 모델의 메타데이터 정보를 확인합니다.

Method Path
GET v2/models/${MODEL_NAME}[/versions/${MODEL_VERSION}]

 

Inference: 모델에 예측 요청을 보냅니다.

Method Path
POST v2/models/${MODEL_NAME}[/versions/${MODEL_VERSION}]/infer

 

 

REF:

[0] KServe Model Serving Data Plane https://kserve.github.io/website/0.7/modelserving/data_plane/

[1] KServe V2 Inference Protocol https://kserve.github.io/website/0.7/modelserving/inference_api/

반응형