개발

    017. [Kubeflow][KServe] Model Serving Control Plane

    017. [Kubeflow][KServe] Model Serving Control Plane

    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 Cont..

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

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

    Data Plane InferenceService의 Data Plane 아키텍처는 단일 모델에 대한 요청을 조절하는 구성요소의 정적 그래프(Static Graph)로 구성됩니다. Embedding, A/B test, Multi-Arm-Bandits과 같은 고급 기능은 반드시 인퍼런스 서비스와 함께 구성되어야 합니다. Concept 컴포넌트(Component): 각 엔드포인트는 여러개의 컴포넌트로 구성되어 있습니다. "predictor", "explainer", "transformer" 가 그 컴포넌트들 입니다. 필수 컴포넌트는 predictor 하나이며 시스템의 핵심(core) 입니다. 나머지 "transformer", "explainer"는 선택 컴포넌트입니다. KServe가 진화함에 따라 Outlie..

    015. [Kubeflow][KServe] Could not find CSRF cookie XSRF-TOKEN in the request 문제 해결

    개요 Kubeflow 1.5 버전을 manifests로 설치하면 Kserve 모델 생성, Request 요청시 Could not find CSRF cookie XSRF-TOKEN in the request 에러가 발생한다. Kubeflow 1.5 버전 부터 KFserving의 이름이 Kserve로 바뀌고 Kubeflow에서 완전히 분리되어 개별 설치가 가능해졌다. 그러나 1.5버전은 호환성을 위해 기존 KFServing과 Kserve가 같이 설치 될 수 있다. 이 때문에 에러가 발생하는데, 기본 설치 Manifest의 README.md에는 별다른 설명 없이 kustomization yaml 파일에만 주석이 되어 있어서 아주 해결법을 찾기 까다롭다. 해결법 해결법은 아주 간단하다. 1. 기존에 설치한 Ku..

    014. kubectl kubernetes context, cluster 바꾸기 (kubectx)

    TL;DR(요약) # kubectx 설치 $ kubectl krew install ctx # context 리스팅 $ kubectl ctx # context 변경 $ kubectl ctx new-context Kubectl 프로처럼 다루기 시리즈 - Kubectl 플러그인 매니저 krew 설치하기 - Kubectl Namespace 빠르게 변경하기 (kubens) - Kubectl Context 빠르게 변경하기 (Kubectx) - Kubectl Config, Context 편하게 관리하기 (Konfig) 1. Kubectl 사용하기 # context 확인 $ kubectl config get-contexts CURRENT NAME CLUSTER AUTHINFO NAMESPACE local local l..

    013. kubectl kubeconfig 추가, 병합, 추출하기 (konfig)

    TL;DR(요약) # 설치 kubectl krew install konfig # config 추가하기 kubectl konfig import new-cfg # config 합치기 kubectl konfig merge cfg1 cfg2 > merged-cfg # config 추출하기 kubectl konfig export minikube > minikube.config # 삭제 kubectl krew uninstall konfig Kubectl 프로처럼 다루기 시리즈 - Kubectl 플러그인 매니저 krew 설치하기 - Kubectl Namespace 빠르게 변경하기 (kubens) - Kubectl Context 빠르게 변경하기 (Kubectx) - Kubectl Config, Context 편하게 관..

    012. kubectl 플러그인 매니저 Krew 설치하기

    TL;DR(요약) # Krew 설치 ( set -x; cd "$(mktemp -d)" && OS="$(uname | tr '[:upper:]' '[:lower:]')" && ARCH="$(uname -m | sed -e 's/x86_64/amd64/' -e 's/\(arm\)\(64\)\?.*/\1\2/' -e 's/aarch64$/arm64/')" && KREW="krew-${OS}_${ARCH}" && curl -fsSLO "https://github.com/kubernetes-sigs/krew/releases/latest/download/${KREW}.tar.gz" && tar zxvf "${KREW}.tar.gz" && ./"${KREW}" install krew ) # .bashrc or .zs..

    011. Open-cv, cv2: ImportError: libGL.so.1: cannot open shared object file: No such file or directory

    python 에서 cv2를 사용하려고 설치한 후에 다음과 같은 오류 메시지를 볼 수 있다. ImportError: libGL.so.1: cannot open shared object file: No such file or directory 다음 명령어로 라이브러리를 설치해주면 정상동작한다. RUN apt-get update RUN apt-get install ffmpeg libsm6 libxext6 -y

    010. [대학원생의 좌충우돌 GPU 클러스터 구축기] 2. GPU 클러스터 만들기(Kubernetes)!

    이전 글에서 만든 GPU 모니터링으로 수동분배가 쉬워지긴 했지만, 늘어나는 서버, 사용자를 하나씩 할당하는건 너무나.. 빡센일이었다.. 그래서 GPU를 자동으로 할당하고 사용할 수 있는 방법이 없을까 고민하고 검색하다가 GPU 클러스터를 만들기로 했다! 처음 찾아본것은 기존 HPC(Hight Performance Computing)에서 많이 사용하던 SLURM 이었는데 서버 별로 모든 환경을 동일하게 해주어야 하는 문제점이 하나 있었다. 하지만 사람마다 사용해야하는 파이썬 버전, 패키지 버전이 다를 경우가 흔해서 파이썬 가상환경이나 도커를 많이 사용하고있는데 이것도 하나씩 세팅을 해주어야하니 불편할 수 밖에 없다고 판단했다. 다음으로 찾아본것은 조금더 최근에 나오고 많이 사용되고 있는 Kubernetes..