( reference : 쿠브플로우, 쿠버네티스에서 머신러닝이 처음이라면! )
[ 1. Kubeflow ]
Contents
- 1.1 ML Workflow
- 1.2 kubeflow
- 1.3 쿠버네티스 복습
- 1.4 Kubeflow 설치
1.1 ML Workflow
1.1.1 ML Workflow란
ML Workflow = 문제 해결을 위해..
- 1) 데이터를 분석/가공
- 2) 모델을 학습 + 최적화
- 3) 모델을 서버에 배포
- 4) 예측
하는 전체적인 과정
2개의 단계로 구성
- 1) 모델 실험 단계 ( Experiment Phase )
- 2) 모델 생산 단계 ( Production Phase )
1.1.2 모델 실험 단계 ( Experiment Phase )
문제 해결을 위해 사용될 모델을 실험하는 단계
- 현재 문제가 ML로 풀 수 있는지 + 어떤 모델 사용할지
- 필요한 데이터 수집+분석
- 적합한 ML framework 선택
- 최초의 모델 코드 작성 & 모델 학습
- 하이퍼파라미터 튜닝
1.1.3 모델 생산 단계 ( Production Phase )
실험된 모델을 학습+배포하는 단계
- ( 실험 단계와 맞추기 위해 ) “실제” 데이터를 재가공
- “실제” 데이터로 모델 학습
- 모델 배포
- 모델 성능 모니터링 & 튜닝/재학습 여부 결정
1.1.4 ML Workflow 툴
-
Pipeline 툴 형태
- 각 연결 단계는 독립적
- 구조에 따라, 병렬적 수행도 가능
\(\rightarrow\) 효율적인 구성 만들 수 있음
-
examples
- ex 1) Apache의 Airflow
- 덱(Dag), 트리(Tree), 간트(Gantt), 그래프(Graph) 등 다양한 컴포넌트 지원
- python을 통해 workflow 작성 가능
- ex 2) argo workflow
- kubeflow 파이프라인의 전신
- argoproj : 쿠버네티스 위에 실행되는 오픈소스
\(\rightarrow\) ML 용으로 개발된 것은 아니나, 일반적인 workflow와 크게 다르지 않기때문에 사용 OK
- ex 1) Apache의 Airflow
-
Public Cloud에서도 관련 tool 제공
- AWS의 SageMaker
- GCP의 AI Platform
- Azure의 Automated ML
- 알리바바의 Arena
\(\rightarrow\) 알고리즘 제공, 모델 개발환경 제공, 하이퍼파라미터 튜닝, 모델 배포/서빙
( = 완전관리형 ML 서비스 제공 )
-
ML framework에서도 제공
- Tensorflow Extended (TFX) : 데이터 수집 ~ 모델 서빙까지
이처럼, ML Workflow를 구성할 수 있는 다양한 서비스 & 오픈소스들이 존재 !!
1.2. kubeflow
1.2.1 kubeflow
kubeflow = 쿠버네티스를 사용하는 ML 툴킷
(1) Kubeflow의 시작
= 쿠버네티스에서 Tensorflow Extended Pipeline을 사용하면서부터!
\(\rightarrow\) 어떻게하면 쿠버네티스에서 Tensorflow Job을 효율적으로 사용할 수 있을까? 에서 시작!
(2) Kubleflow의 목표
- ML Workflow에 필요한 서비스를 만드는 것 (X)
- 각 영역에서 가장 적합한 오픈 소스 시스템을 제공 (O)
\(\rightarrow\) 새로운 서비스 X, “기존에 있던 오픈소스들의 묶음”
1.2.2 kubeflow components on ML workflow
ML workflow에 필요한 component들을 제공!
[1] 모델 실험 단계 ( Experimental phase )
- ML 알고리즘을 위한 :
- Pytorch, sklearn, TensorFlow, XGBoost
- 실험을 위한 :
- Jupyter Notebook, Fairing, Pipelines
- 하이퍼파라미터 튜닝을 위한 :
- Katib
[2] 모델 생산 단계 ( Production phase )
- 모델 학습을 위한 :
- Chainer, MPI, MXNet, Pytorch, TFJob
- 모델 배포를 위한 :
- KFServing, NVIDIA TensorRT, PyTorch, TFServing, Seldon
- 모델 모니터링을 위한 :
- Metadata, Tensorboard
1.2.3 kubeflow UI
- 컴포넌트들은 각각의 GUI를 가짐 ( + 대쉬보드 UI )
kfctl
이라는 CLI도 지원
1.2.4 API & SDK
- 각 컴포넌트를 관리할 수 있는 API
- 컴포넌트 내에 오브젝트(리소스)를 생성할 수 있는 python SDK
\(\rightarrow\) GUI 뿐만 아니라, 다른 애플리케이션에서도 활용 가능!
1.2.5 kubeflow의 component들
총 7가지의 component들
- 1) Jupyter Notebook
- Juptyer Hub를 서비스
- 2) Main Dashboard
- component들의 통합 포털
- 3) Hyperparameter Tuning
- Katib이라는 하이퍼파라미터 최적화 오픈소스
- 4) Pipeline
- 5) Serving
- Tensorflow Serving, Seldon Serving, Pytorch Serving, KFWerving
- 6) Training
- TFJob, PyTorch, MXNetc, MPI
- 7) etc
1.2.6 Kubeflow의 version
- Stable : 배포된 버전 (1.0)
- Beta : 1.0으로 가기 위해 작업 중인 버전
- Alpha : 초기 개발 단계