( 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

  • 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

  1. Stable : 배포된 버전 (1.0)
  2. Beta : 1.0으로 가기 위해 작업 중인 버전
  3. Alpha : 초기 개발 단계

Categories:

Updated: