Kubeflow란? + minikube 클러스터 Kubeflow 설치
[참조] 패스트캠퍼스 - 머신러닝 서비스 구축을 위한 실전 MLOps
Kubeflow 워크플로우
출처: https://www.kubeflow.org/docs/started/architecture/
Kubeflow는 MSA 구조로 각각 모듈 형태로 동작
- Experimental phase
- 문제 식별, 데이터 수집
- ML 알고리즘 선택, 코드화
ex) PyTorch, scikit-learn, TensorFlow, XGBoost - 데이터 모델 학습
ex) Jupyter Notebook, Fairing, Pipelines - 하이퍼파라미터 튜닝
ex) Katib
- Production phase
- 데이터 전처리
- 모델 학습
ex) Chainer, MPI, MXNet, PyTorch, TFJob - 모델 서빙
ex) KFServing, NVIDIA TensorRT, PyTorch, TFServing, Seldon - 모델 퍼모먼스 모니터링
ex) Metadata, TensorBoard
Kubeflow Pipelines
- 머신러닝 workflow를 DAG(방향 순환 없는 그래프) 형태로 정의한 것
- kubeflow에서 파이프라인을 run 하면 각 컴포넌트들이 파드로 생성되어 서로 데이터를 주고 받으며 흘러감
- 모델을 서빙 단계까지 보내는데 필요한 모든 작업을 컴포넌트 단위로 나누고 쿠버네티스 위에서 연결시키는 역할
- 목표
- End to End Orchestration: 모델 연구 및 학습 과정과 서빙 과정의 괴리를 없애는 것
- Easy Experimentation: 쉽게 다양한 설정에 따른 실험
- Easy Re-Use: 파이프라인의 컴포넌트들을 새로운 파이프라인에 재사용하여 작업 효율 향상
- 파이썬 SDK를 이용해 파이썬 코드를 작성하고 컴파일러를 통해 yaml 파일로 변환하여 파이프라인 생성
Kubeflow 설치
환경 요건
- 쿠버네티스
- Dynamic provisioning을 지원하는 storageclass
- TokenRequest API 활성화
Kustomize 설치
wget https://github.com/kubernetes-sigs/kustomize/releases/download/v3.2.0/kustomize_3.2.0_linux_amd64
chmod +x kustomize_3.2.0_linux_amd64
실행 가능하도록 파일 형식을 변경한다.
sudo mv kustomize_3.2.0_linux_amd64 /usr/local/bin/kustomize
kustomize 명령어를 이용해 실행할 수 있도록 파일 위치를 변경한다.
kubens 설치
sudo git clone https://github.com/ahmetb/kubectx /opt/kubectx
sudo ln -s /opt/kubectx/kubectx /usr/local/bin/kubectx
sudo ln -s /opt/kubectx/kubens /usr/local/bin/kubens
kubens 명령어를 이용해서 네임스페이스를 지정할 수 있음
minikube 시작
minikube start --driver=docker \
--cpus='4' --memory='7g' \
--kubernetes-version=v1.21.0 \
--extra-config=apiserver.service-account-signing-key-file=/var/lib/minikube/certs/sa.key \
--extra-config=apiserver.service-account-issuer=kubernetes.default.svc
manifest 설정
git clone https://github.com/kubeflow/manifests.git
Kubeflow 컴포넌트 설치
Cert-manager 설치
kustomize build common/cert-manager/cert-manager/base | kubectl apply -f -
kustomize build common/cert-manager/kubeflow-issuer/base | kubectl apply -f -
Istio 설치
kustomize build common/istio-1-9/istio-crds/base | kubectl apply -f -
kustomize build common/istio-1-9/istio-namespace/base | kubectl apply -f -
kustomize build common/istio-1-9/istio-install/base | kubectl apply -f -
Dex 설치
kustomize build common/dex/overlays/istio | kubectl apply -f -
Kubeflow Namespace 생성
kustomize build common/kubeflow-namespace/base | kubectl apply -f -
Kubeflow Roles 생성
kustomize build common/kubeflow-roles/base | kubectl apply -f -
Kubeflow Gateway 설치
kustomize build common/istio-1-9/kubeflow-istio-resources/base | kubectl apply -f -
Kubeflow Pipelines 설치
kustomize build apps/pipeline/upstream/env/platform-agnostic-multi-user | kubectl apply -f -
오류가 나면 한 번 더 명령어를 입력해서 설치 가능
Katib 설치
kustomize build apps/katib/upstream/installs/katib-with-kubeflow | kubectl apply -f -
Central Dashboard 설치
kustomize build apps/centraldashboard/upstream/overlays/istio | kubectl apply -f -
여기까지 Notebooks 설치
kustomize build apps/jupyter/notebook-controller/upstream/overlays/kubeflow | kubectl apply -f -
Notebook Controller가 설치된다.
kustomize build apps/jupyter/jupyter-web-app/upstream/overlays/istio | kubectl apply -f -
Jupyter Web App이 설치된다.
Profiles + KFAM 설치
kustomize build apps/profiles/upstream/overlays/kubeflow | kubectl apply -f -
Volumes Web App 설치
kustomize build apps/volumes-web-app/upstream/overlays/istio | kubectl apply -f -
Tensorboard 설치
kustomize build apps/tensorboard/tensorboards-web-app/upstream/overlays/istio | kubectl apply -f -
Tensorboard Web App이 설치된다.
kustomize build apps/tensorboard/tensorboard-controller/upstream/overlays/kubeflow | kubectl apply -f -
Tensorboard Controller가 설치된다.
User Namespace 설치
kustomize build common/user-namespace/base | kubectl apply -f -
kubeflow 접속
kubectl port-forward svc/istio-ingressgateway -n istio-system 8080:80
localhost:8080
으로 접속
[참조]패스트캠퍼스 - 머신러닝 서비스 구축을 위한 실전 MLOps
끝!