Data Plane
InferenceService의 Data Plane 아키텍처는 단일 모델에 대한 요청을 조절하는 구성요소의 정적 그래프(Static Graph)로 구성됩니다.
Embedding, A/B test, Multi-Arm-Bandits과 같은 고급 기능은 반드시 인퍼런스 서비스와 함께 구성되어야 합니다.
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/
'개발 > 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 |
017. [Kubeflow][KServe] Model Serving Control Plane (2) | 2022.09.15 |
015. [Kubeflow][KServe] Could not find CSRF cookie XSRF-TOKEN in the request 문제 해결 (0) | 2022.07.14 |