kubenetes47 KServe의 Inference Batcher KServe Inference Batcher는 여러 개의 개별 예측 요청을 하나의 배치로 묶어 처리함으로써 전체적인 처리량을 증가시키는 기능이다. 주요 특징구현 위치: KServe 모델 에이전트 사이드카주입 메커니즘: 웹훅을 통한 InferenceService 파드에 주입내부 통신: Go 채널을 사용한 데이터 전송프로토콜 지원: KServe v1 HTTP 프로토콜 (gRPC 미지원) 작동 방식예측 요청이 모델 에이전트 사이드카에 도착Batcher가 요청을 모아 배치 생성배치 완성 시 예측기 컨테이너로 추론 요청 전송 배치 트리거maxBatchSize: 최소 배치 크기. HTTP 요청의 수가 아닌 배치에 포함된 데이터 인스턴스의 수를 의미한다. 최소한 maxBatchSize 만큼의 데이터 인스턴스가 입력.. 2024. 10. 12. JuiceFS CSI driver를 이용해 MinIO와 HDFS를 Kubernetes와 연동하기 Kubernetes 환경에서 JuiceFS CSI(Container Storage Interface) 드라이버를 사용하여 MinIO와 HDFS를 스토리지 백엔드로 통합하는 방법을 설명한다.JuiceFS CSI 드라이버를 통해 StorageClass를 생성하고, 이를 이용해 PVC를 만들어 Kubernetes POD에서 MinIO와 HDFS 스토리지를 마운트 하여 사용할 수 있다. JuiceFS CSI 드라이버 설치1. Helm 저장소 추가 및 업데이트helm repo add juicefs https://juicedata.github.io/charts/helm repo update 2. 기본 설정 파일 다운로드설정 파일을 다운로드 한 후 필요한 부분은 수정한다. 이 예제에서는 기본 설정을 그대로 사용했다... 2024. 10. 11. KServe Autoscaler KPA와 HPA 비교 KServe는 Knative Pod Autoscaler (KPA)와 Horizontal Pod Autoscaler (HPA) 두 가지 유형의 auto scaler를 지원한다.KPA는 Knative Serving 설치 시 기본적으로 활성화되지만, HPA를 사용하기 위해서는 별도 설치 및 설정이 필요하다. KPA 제로 스케일링(scale to zero) 기능을 지원한다. Knative Serving 코어의 일부로, Knative Serving 설치 시 기본적으로 활성화된다. CPU, MEMORY 기반 auto scaling을 지원하지 않는다. HTTP 기반 워크로드에 최적화되어 있다.HPA Knative Serving 설치 후 별도로 설치해야 한다. 제로 스케일링(scale to zero) 기능을 지원하지 .. 2024. 10. 11. KServe Autoscaling & Zero Scale KServe는 Knative를 기반으로 한 강력한 자동 확장 및 제로 스케일 기능을 제공한다. 이 기능들을 통해 사용자는 효율적인 추론 서비스를 구축할 수 있다. Autoscaling 개요 KServe의 자동 확장은 트래픽 패턴에 따라 pod의 수를 동적으로 조정한다. 주요 개념은 다음과 같다. scaleMetric: 확장의 기준이 되는 메트릭scaleTarget: 해당 메트릭의 목푯값. 이 값은 hard limit이 아닌 soft limit으로 요청이 갑자기 급증하여 이 값을 초과하면 새로운 pod가 생성되는 동안 기존 pod가 지정된 값을 초과하여 처리할 수 있다. scaleMetric 옵션은 다음과 같다. concurrency: 동시 처리 중인 요청 수rps: 초당 요청 수cpu: CPU 사용률m.. 2024. 10. 9. KServe v2 프로토콜: 모델 메타데이터 개요KServe v2 프로토콜은 모델 메타데이터를 제공하는 기능을 포함하고 있다. 이 기능을 통해 모델의 입력 및 출력 형식, 모델 이름, 버전 등의 정보를 클라이언트에게 제공할 수 있다. 아래 링크에서 개발한 모델에 메타 데이터 구현을 위한 메서드를 추가한다.KServe Custom Predictor 이미지 빌드 가이드 - v2 protocol 프로젝트 구조프로젝트 구조는 다음과 같다.project_root/│├── predictor.py├── requirements.txt├── Dockerfile└── model/ └── model.joblib 모델 메타데이터 구현모델 메타데이터를 제공하기 위해서는 커스텀 예측기 클래스에 다음 메서드들을 구현해야 한다. get_input_types(): 모델 입.. 2024. 10. 1. KServe Custom Predictor 이미지 빌드 가이드 - v2 protocol 테스트 환경 KServe 0.13에서 테스트를 진행하였고, v2 protocol을 사용하는 predictor를 개발한다. 개요 KServe를 위한 custom Predictor 이미지를 빌드하는 과정을 소개한다. KServe.Model 기본 클래스는 주로 세 가지 핸들러인 preprocess, predict, postprocess를 정의하고, 이 핸들러들은 순차적으로 실행된다. preprocess의 출력이 predict의 입력으로 전달된다.predict 핸들러는 모델에 대한 추론을 실행한다.postprocess 핸들러는 원시 예측 결과를 사용자 친화적인 추론 응답으로 변환한다. 추가적으로 load 핸들러가 있는데, 이는 로컬 파일 시스템이나 원격 모델 저장소에서 모델을 메모리로 로드하는 데 사용된다. 일.. 2024. 10. 1. KServe Transformer 개발 가이드 테스트 환경KServe 0.13에서 테스트를 진행하였고, v2 protocol을 사용했다. 개요KServe Transformer는 머신러닝 모델의 입력 전처리와 출력 후처리를 담당하는 컴포넌트다. 사용자가 KServe endpoint에 추론 요청을 보내면, transformer는 사용자가 입력한 input 데이터를 모델에 맞게 전처리한 후 predictor로 요청을 전송한다. 추론이 완료되면 predictor는 transformer로 결괏값을 전송하고, transformer는 결괏값을 사용자 친화적인 값으로 수정 후 사용자에게 전달한다. 이 가이드에서는 Iris 꽃 분류 모델을 위한 Transformer를 개발하는 과정을 설명한다.전처리가 필요하지 않은 데이터라, 전처리 과정은 필요없지만, 구조를 설명하.. 2024. 9. 29. KServe Private container registry certificates 설정 KServe에서 자체 서명된 인증서를 사용하는 Private container registry를 활용하려면, Knative Serving 컨트롤러가 해당 인증서를 신뢰하도록 설정해야 한다. 문제 상황 사설 인증서를 사용하는 레지스트리에서 이미지를 가져오려고 할 때, 다음과 같은 x509 에러가 발생했다.Message: Revision "iris-svm-transformer-transformer-00001" failed with message: Unable to fetch image "registry.dd.io/shared/iris-transformer:0.1.0": failed to resolve image to digest: Get "https://registry.dd.io/v2/": tls: fa.. 2024. 9. 29. MLflow와 KServe를 이용한 모델 배포 가이드 KServe를 사용해 MLflow를 사용해 빌드한 모델을 배포하는 방법에 대해 소개한다. 1. 버전 호환성 및 시그니처 제한사항 MLflow 버전에 따라 signature에 제한사항이 있다. KServe v0.13 에서 사용하는 MLServer 이미지(index.docker.io/seldonio/mlserver)에 포함된 MLflow 버전은 2.3.1이다.지금 설치해서 사용하고 있는 MLflow의 버전이 2.15.1라, 이 두 버전 사이의 차이를 설명한다. MLflow 2.3.1feature 이름 정보를 유지하면서 model signature를 정의할 수 있다. ColSpec을 사용하여 각 특성의 이름과 데이터 타입을 명시적으로 지정할 수 있다.MLflow 2.15.1 전체 입력을 하나의 텐서로 취급하.. 2024. 9. 26. KServe를 이용한 scikit-learn 모델 배포 및 사용 가이드 이 가이드에서는 KServe를 사용하여 scikit-learn 모델을 Kubernetes 클러스터에 배포하고 사용하는 방법을 설명한다. 1. 모델 생성 및 저장먼저, scikit-learn을 사용하여 모델을 준비한다. 이 예제에서는 Iris 데이터셋을 사용한 SVM 분류기를 만들어 배포한다.from sklearn import svmfrom sklearn import datasetsfrom joblib import dump# 데이터 로드iris = datasets.load_iris()X, y = iris.data, iris.target# 모델 생성 및 학습clf = svm.SVC(gamma='scale')clf.fit(X, y)# 모델을 'model.joblib' 파일로 저장dump(clf, 'model... 2024. 9. 26. 이전 1 2 3 4 5 다음 반응형