쿠버네티스 기반의 AI 플랫폼: 쿠브플로우(Kubeflow)

쿠버네티스 기반의 AI 플랫폼: 쿠브플로우(Kubeflow)

AI 플랫폼이란?

AI(Artificial Intelligence) 플랫폼은 머신러닝 워크플로우(Machine Learning Workflow)를 자동화 해줍니다. 머신러닝 워크플로우는 머신러닝(ML) 모델을 개발하는 모든 과정을 말하며 데이터 전처리, 탐색적 데이터 분석, 하이퍼 파라미터 튜닝, 머신러닝 모델 학습, 머신러닝 모델 배포 단계로 이루어집니다.
머신러닝 워크플로우 각 단계에서 머신러닝 모델을 개발하는데 필요한 도구와 환경을 수작업으로 구축하려면 많은 시간과 노력이 필요합니다. AI 플랫폼은 이러한 수작업을 최소화하고 AI 모델을 쉽게 개발하기 위한 기능을 제공합니다.

ML workflow - 데이터 전처리 및 탐색전 데이터 분석,데이터 변환, 하이퍼파라미터 튜닝, 모델 학습, 모델 배포 머신러닝 모델 개발 단계

대표적인 AI 플랫폼으로 퍼블릭 클라우드에는 구글 버텍스 AI(Google Vertex AI), 아마존 세이지메이커(Amazon SageMaker), 애저 머신러닝(Azure Machine Learning) 등이 있으며, 오픈소스로는 쿠브플로우(Kubeflow)가 유명합니다. 기업의 업무 환경에 따라서 퍼블릭 클라우드 혹은 오픈소스 AI 플랫폼을 도입할 수 있습니다. 비용에 여유가 있거나 퍼블릭 클라우드를 이미 사용하고 있는 기업이라면 퍼블릭 클라우드가 효율적일 수 있습니다. 그렇지 않은 경우에는 오픈소스를 활용하여 AI 플랫폼을 구축하는 것을 고려해 볼 수 있을 것입니다. 본 아티클에서는 오픈소스 AI 플랫폼인 쿠브플로우를 소개하겠습니다.

쿠브플로우(Kubeflow)란?

쿠브플로우는 엔드투엔드(End-to-End) AI 플랫폼입니다. 머신러닝 워크플로우의 머신러닝 모델 학습부터 배포 단계까지 모든 작업에 필요한 도구와 환경을 쿠버네티스(Kubernetes) 위에서 쿠브플로우 컴포넌트로 제공합니다.

ML tools
  • jupyter, tensorflow, pytorch,mxnet
kubeflow components
  • central dashboard - notebookd, experiment(autoML),experiment(KFP), ...
  • training operators - TFjob, PyTorchjob, MPIjob, ...
  • katib - hyperparameter tuning, NAS
  • Pipelines
kubernetes
쿠브플로우 구조

그럼 쿠브플로우 컴포넌트에 대해 알아보겠습니다.

Central Dashboard

웹브라우저를 통해 대시보드 UI로 Notebooks, Experiments (AutoML), Experiments (KFP) 등의 컴포넌트를 이용할 수 있습니다. 각 컴포넌트에 대해서는 뒤에서 설명할 것입니다.

Dashboard

Notebooks

웹브라우저에서 파이썬 코드를 작성하고 실행할 수 있는 주피터(Jupyter) Notebook 개발 도구를 제공합니다. 이미지 경로와 자원 등을 설정하여 쿠버네티스상에 Notebook을 생성할 수 있습니다. 사용자는 생성한 Notebook을 이용해 데이터 전처리와 탐색적 데이터 분석 등을 수행하여 머신러닝 모델 코드를 개발할 수 있습니다.

Notebook 생성 화면 Notebook 생성 화면

Training Operators

Training Operators는 텐서플로우(TensorFlow), PyTorch, MXNet 등 다양한 딥러닝 프레임워크에 대해 분산 학습을 지원합니다. 쿠버네티스 상에서 머신러닝 모델을 분산 학습하여 학습에 드는 시간을 줄일 수 있습니다. 사용자가 분산 학습 명세서를 작성하여 쿠버네티스에 배포하면 쿠브플로우 Training Operator는 명세서에 따라 워크로드를 실행합니다. 명세서에는 머신러닝 모델 코드를 담고 있는 도커 이미지 경로와 분산 학습 클러스터 정보 등을 정의합니다.

tensortflow 분산 학습 명세서 ->
  • kubecti apply -f, tfjob.yami -> kubernetes API server -> kuberflow training operator ->
tensortflow 분산 학습 workload
  • TFjob
  • PS:0
  • worker:0, worker:1
Training Operators

Experiments(AutoML)

AutoML은 머신러닝 모델의 예측 정확도와 성능을 높이기 위한 반복 실험을 자동화하는 도구입니다. 쿠브플로우에서는 카티브(Katib)를 사용하여 AutoML 기능을 제공합니다. 카티브는 하이퍼 파라미터 튜닝(Hyper Parameter Tuning), 뉴럴 아키텍처 탐색(Neural Architecture Search, NAS) 기능이 있습니다. 하이퍼 파라미터 튜닝은 모델의 하이퍼 파라미터를 최적화하는 작업이고 NAS는 모델의 구조, 노드 가중치 등 뉴럴 네트워크 아키텍처를 최적화하는 작업입니다.

카티브를 이용하면 학습률(Learning rate) 하이퍼 파라미터가 0.1, 0.05 중 어느 값이 모델의 예측 정확도를 높이는 값인지 찾는 실험을 자동화할 수 있습니다. 먼저 Experiment (AutoML) 명세서를 작성한 후 쿠버네티스에 배포하면 카티브가 명세서에 정의한 하이퍼 파라미터와 병렬 처리 설정에 따라 실험을 동시에 수행하여 가장 성능이 좋은 하이퍼 파라미터를 찾습니다.

experiment (AUTOML) 명세서 ->
  • kubecti apply -f, experiment automi.yami -> kubernetes API server-> hyperparameter tuning (katib) ->
experiment (AUTOML) workload
  • experiment (AUTOML) ->
  • trial(learning rate:0.1 -/ learning rate:0.05 ->) ->
  • job ->/ job ->
  • worker, worker/worker,worker
Experiments(AutoML)

KServe

쿠브플로우는 KServe를 통해 쿠버네티스에 머신러닝 모델을 배포하고 추론 기능을 제공합니다. KServe는 Endpoint, Transformer, Predictor, Explainer로 이루어져 있습니다. Endpoint가 Predictor에 데이터를 전달하면 Predictor는 데이터를 예측하거나 분류합니다. Endpoint는 데이터의 가중치 비율을 조절하여 Predictor에 전달할 수 있어서 A/B테스트도 가능합니다.

Transformer나 Explainer는 필요에 따라 추가 가능한데 Predictor 와 연결하여 사용합니다. Explainer는 데이터를 예측하거나 분류한 결과에 대해 판단 이유를 제시하는 설명 가능한 인공지능(eXplainable Artificial Intelligence, XAI) 역할을 하며, Transformer는 데이터 전처리, 후처리 기능을 제공합니다.

KServer ML 모델 추론엔진 명세서 ->
  • kubecti apply -f, tfjob.yami/ kubernetes API server/KServe ->
KServer ML 모델 추론 workload
  • endpoint ->
  • transformer ->
  • predictor /⁢- explainer
KServe

Kubeflow Pipelines(KFP)

Kubeflow Pipelines(KFP)은 머신러닝 워크플로우를 구축하고 배포하기 위한 ML Workflow Orchestration 도구입니다. KFP의 목표는 Pipelines과 Pipeline Components를 재사용하여 다양한 실험을 빠르고 쉽게 수행하는 것입니다. Pipelines은 Pipeline Components을 연결해서 DAG (Directed Acyclic Graph) 형태로 Workflow를 구성할 수 있으며, Workflow Engine으로 Argo Workflow를 사용합니다.

jupyter notebooks -> pipeline
  • 데이터 전처리 및 탐색전 데이터 분석 -> 데이터 변환 -> 하이퍼파라미터 튜닝 -> 모델 학습 -> 모델 배포
  • 하이퍼파라미터 튜닝 ->Katib ->/모델 배포 -> KServer
  • Katib/모델 학습 -> training operators(TFjob,MPIjob,PyTorchjob,...)
Kubeflow Pipelines(KFP)]

지금까지 쿠버네티스 기반의 AI 플랫폼, 쿠브플로우에 대해 간략히 알아보았습니다. 보다 자세한 정보는 Kubeflow Documentation을 참고하시길 바랍니다.



References
[1] https://www.kubeflow.org/docs/
[2] https://kserve.github.io/website/
[3] http://shorturl.at/mKQW1
[4] https://cloud.google.com/vertex-ai




▶   해당 콘텐츠는 저작권법에 의하여 보호받는 저작물로 기고자에게 저작권이 있습니다.
▶   해당 콘텐츠는 사전 동의 없이 2차 가공 및 영리적인 이용을 금하고 있습니다.


이 글이 좋으셨다면 구독&좋아요

여러분의 “구독”과 “좋아요”는
저자에게 큰 힘이 됩니다.

subscribe

권한철
권한철 클라우드 전문가

에스코어㈜ 소프트웨어사업부 클라우드플랫폼그룹

빅데이터 분석 플랫폼 개발 및 대용량 데이터 분석 경험을 기반으로 AI 플랫폼 개발 업무를 수행하고 있습니다.