보통 container 로 모든 component 들을 관리하고, 이 container 들은 kubernetes 에서 돌아가게 된다.
component list
- Chainer Training
- Hyperparameter Tuning (Katib)
- Istio Integration (for TF Serving)
- Jupyter Notebooks
- ModelDB
- ksonnet
- MPI Training
- MXNet Training
- Pipelines
- PyTorch Training
- Seldon Serving
- NVIDIA TensorRT Inference Server
- TensorFlow Serving
- TensorFlow Batch Predict
- TensorFlow Training (TFJob)
- PyTorch Serving
기본적인 몇가지 컴포넌트를 보자면, kubeflow 를 구성하고 deploy 관리 및 kubernetes cluster 생성 및 관리는 ksonnet 으로 한다.
ksonnet 으로 kubernetes 를 구성하고 나면, 이제 tensorflow, pytorch 같은 머신러닝 프레임워크로 model 을 제작한다.
머신러닝 프레임워크들 또한 컴포넌트 형식으로 제공한다.
Data processing 의 경우, TFX 에 있는 TFDV, TFT 등을 컴포넌트로 제공한다.
로컬에서 작업할수도 있지만, kubeflow 는 jupyter notebook server 를 제공한다. 이 위에서 모델을 작성할 수 있다.
tensorflow 학습의 경우, local 머신에서 구축한 모델을 container 형식으로 올린다. 이때 올라가는 컴포넌트가 TFJob
이다.
tfjob 은 kubernetes 위에서 tensorflow training 을 하기 위한 custom resource 이다.
하이퍼 파라미터 튜닝도 이젠 주먹구구 식으로 할순 없다. 하이퍼 파라미터 튜닝을 위한 컴포넌트로 katLib 을 지원한다.
모델을 만들 경우, 학습된 모델은 S3 등 storage 에 저장되게 된다. 저장된 모델을 서빙할때는 tfx 에 있는 tensorflow serving 이나 seldon 을 사용하게 된다.
API Gateway
kubeflow 의 api gateway 역활을 하는것이 ambassador 이다. kubernetes 에서는 ingress component
라고도 부르는데, 다른 ingress component 로는 kong 이 있다.
url 기반으로 api 라우팅을 해준다.
이 외에도 많은 컴포넌트가 있지만, 우선 이정도만 이해하고 이 컴포넌트들 배치해주는 ksonnet 을 알아야 할꺼같다.(물론 kuberentes 는 기본으로 알아야할거같다..)