쿠베플로우

Page content

쿠베플로우가 필요한 이유

      Kubeflow Kubernetes 용 ML 툴킷이다 다음 다이어그램은 Kubernetes를 기반으로 ML 시스템의
      구성 요소를 배열하기 위한 플랫폼으로서 Kubeflow를 보여준다.

쿠베플로우의 디자인과 핵심 컴포넌트

쿠베플로우는 다음 3가지 기능으로 정의할 수 있다.

  1. 조합가능성(Composability)

쿠베플로우의 핵심 구성 요소는 이미 머신러닝 실무자들에게 익숙한 데이터과학 도구를 사용한다. 이들은 기계 학습의 특정 단계를 용이하게 하기 위해 독립적으로 사용되거나 엔드 투 엔드 파이프라인을 형성하기 위해 함께 구성될 수 있다.

  1. 이식성(Potability)

컨테이너 기반 설계를 갖추고 Kubernetes 및 클라우드 네이티브 아키텍쳐를 활용함으로써 Kubeflow는 특정 개발환경에 종속될 피요가 없다. 랩톱에서 실험 및 프로토타입 작업을 수행할 수 있으며, 프로덕션 환경에 손쉽게 배포할 수 있다.

  1. 확장성(Scalabitility)

Kubernetes를 사용하면 기본 컨테이너와 기계의 수와 크기를 변경하여 클러스터의 요구에 따라 동적으로 확장할 수 있다.

쿠베플로우 기본 개념

  • 쿠베플로우 대시보드

    • 쿠베플로우의 주요 인터페이스는 대시보드이다.
  • 쿠베플로우 노트북

    • 머신러팅 프로젝트의 첫 시작점은 바로 프로토타이핑과 실헙이다. 쿠베플로우의 경우에 이 단계를 담당하는 모듈이 바로 쿠베플로우 노트북이다.
  • 쿠베플로우 파이프라인

    • 쿠베플로우의 핵심적인 구성요소는 바로 쿠베플로우 파이프라인이다. 파이프라인 오케스트레이션을 수행해주는 툴이다.

        my_python_func 함수에다가
        @kfp.dsl.python_component
        decorator를 적어주면 된다.

        DSL decorator가 적힌 파이썬 함수를 도커 이미지로 패키징한다.
        그리고 이 도커 이미지를 활용하여 쿠베플로우 컴포넌트를 만들 수 있음.

        마지막으로 @kfp.dsl.pipeline 데코레이터를 활용하여
        해당 쿠베플로우 컴포넌트를 파이프라인으로 패키징 할 수 있다.

        파이프라인 구성을 완료하면 해당 파이프라인을 YAML 형태로 패키지할 수 있고,
        이를 "파이프라인을 컴파일"한다고 한다.
        그리고 이 YAML 파일을 쿠베플로우 대시보드에서 업로드하거나 kfctl 명령으로 업로드할 수 있다.

용어 설명

  • Central dashboard
    • 파이프라인 등록과 실행을 할 수 있으며 실험내역과 그 안에서 각각의 컴포넌트가 실행된 결과를 확인할 수 있다.
  • Kubeflow pipelines Argo
    • 각각의 job들에대한 dependency 정의
  • Istio
    • 전체적인 구성요소들을 한번에 묶어놓은 것
  • MinIO
    • 구글 클라우드 스토리지라던지 아마존 S3 이러한 오픈 클라우드 네이티브한 오브젝트 스토리지의 표준을 가진 하나의 오픈소스 오브젝트 스토리지이다. 파이프라인을 실행할 때 컴포넌트와 컴포넌트 간의 통신을 MinIO를 붙여서 하게 됨.
    • 쿠베플로우는 파이프라인 간의 저장소 기능을 MinIO라는 솔루션으로 구성.
    • MinIO에 파이프라인 중간에 생기는 부산물들을 저장할 수 있음.
  • Katib
    • 쿠베플로우에서 모델 튜닝(AutoML)을 담당하는 모듈은 바로 쿠베플로우 Katib이다. 기본적인 하이퍼파라미터 최적화와 여러 고도화된 툴들이 계속 추가되고 있음.
    • Katib는 TensorFlow, PyTorch, Apache MXNet, XGBoost 등 다양한 머신러닝 프레임워크를 지원.
  • TFjobs
    • 비동기로 학습을 하거나 오프라인 추론을 할 때 TFjobs를 사용할 수 있음.
  • KFServing
    • 온라인 인퍼런스 서버를 KFServing으로 배포할 수 있음.
  • Seldon Core – Tensorflow Serving
    • 학습이 완료된 Tensorflow 모델을 저장 한 경우, Seldon의 사전 패키지 된 TensorFlow 서버를 사용하여 간단히 배포 할 수 있음.