본문 바로가기
Engineering/MLOps

[MLOps] 07 Kubeflow

by iamzieun 2023. 2. 8.

Kubeflow

  • 성숙한 MLOps를 위해서는?
    • Reproducibility: 실행 환경의 일관성 & 독립성
    • Job Scheduling: 스케쥴 관리, 병렬 작업 관리, 유휴 자원 관리
    • Auto-healing & Auto-scaling: 장애 대응, 트래픽 대응
    → 이를 쉽게 실행할 수 있는 인프라가 쿠버네티스와 같은 컨테이너 기반의 오케스트레이션 시스템임
kubeflow

  • Machine Learning Toolkit for Kubernetes
  • 각 역할마다 모듈을 쪼개서 개발됨
    • Experimental 단계
      • 문제 인식 + 데이터 수집 + 데이터 분석
      • ML 알고리즘 선택 + 모델 설계
      • 실험 + 학습
      • hyperparameters 튜닝
    • Production 단계
    ⇒ 머신러닝 모델 프로젝트의 end-to-end에서 필요한 모든 기능을 지원
구성 요소
  • Central Dashboard: 웹 브라우저를 통해 각각의 micro service에 접속할 수 있는 통합 대시보드
  • Notebook Server: kubernetis native하게 jupyter notebook 사용 가능
  • KFServing (KServe): ml serving용 framework
  • Katib: hyperparameter tuning, neural architecture search
  • Training Operators: training of ML models in kubeflow through operators
  • Multi Tenancy

Kubeflow Pipelines (KFP)

Pipeline
  • 머신러닝 workflow를 DAG 형태로 정의한 것
  • kubeflow에 배포 후 run하면 pipeline을 구성하는 각각의 component들이 k8s 위에서 pod로 생성되어 서로 데이터를 주고받으며 흘러감
  • 즉, model을 serving까지 보내는데 필요한 모든 작업을 재사용 가능한 단위(component)로 나누고, k8s 위에서 연결시켜주는 역할
Pipeline의 Goal
  • End to End Orchestration: ‘모델 연구 및 학습 과정’과 ‘serving 과정’의 괴리가 없도록
  • Easy Experimentation: 다양한 configuration에 따라 수많은 시도를 쉽게 해볼 수 있음
  • Easy Re-Use: 잘 설계된 kfp component들은 재사용이 가능하므로, 새로 pipeline을 만들 때의 작업 효율이 향상됨
how to make a kubeflow pipeline
  • kubeflow pipeline은
    • user의 입장에서: 머신러닝 workflow를 DAG 형태로 정의한 것
    • kubeflow 입장에서: 하나의 argo workflow라는 custom resource에 불과
      • user가 python 형태로 workflow를 작성하고 compile하면 → 쿠버네티스가 이해할 수 있는 형태의 argo workflow yaml 파일을 만들어주는 파이썬 sdk, dsa compiler를 제공
Deep Dive to Kubeflow Pipeline 
  • Python SDK: DSL(Kubeflow Pipelines domain-specific language)을 이용하여 component를 생성하거나, pipeline을 명시
  • DSL compiler: pipeline의 Python 코드를 static configuration (YAML)로 변환
  • Pipeline Service: Pipeline Service를 호출함으로써 static configuration (YAML)로부터 pipeline을 작동하게 함
  • Kubernetes resources: Pipeline Service가 Kubernetes API server를 호출함으로써 pipeline을 실행하는 데 필수적인 Kubernetes resources(CRDs)를 생성
  • Orchestration controllers: pipeline을 완성하는데 필요한 container들을 실행하며, container들은 가상 머신의 쿠버네티스 pod들 내부에서 실행됨
  • Artifact storage: pod가 저장하는 두 종류의 data
    • Metadata
    • Artifacts
  • Persistence agent and ML metadata: Persistence Agent는 Pipeline Service에 의해 생성된 쿠버네티스 리소스들을 지켜보고 ML Metadata Service에서 해당 리소스들의 상태(state)를 유지시킴. Persistence Agent는 실행되는 container와 그 input, output을 기록함. input과 output은 container 파라미터나 data artifact URI를 포함함.
  • Pipeline web server: 다양한 서비스로부터 데이터를 수집하여 관련 사항들을 보여줌
    • 현재 실행중인 pipeline 리스트, pipeline 실행 히스토리, data artifact의 리스트, 실행중인 개별 pipeline으로부터의 디버깅 정보, 실행중인 개별 pipeline의 실행 상태

 

- reference: https://www.kubeflow.org/docs/components/pipelines/v1/introduction/

'Engineering > MLOps' 카테고리의 다른 글

[MLOps] 09 Jenkins  (0) 2023.02.20
[MLOps] 08 ML Workflow - Github Actions  (0) 2023.02.09
[MLOps] 06 Model Monitoring - Prometheus  (0) 2023.02.08
[MLOps] 05 Model Serving  (0) 2023.01.21
[MLOps] 04 Model Management & MLflow  (0) 2023.01.20

댓글