데이터 과학자가 다른 엔지니어의 도움없이 어떤 플랫폼(AWS, GCP, Azure, On-prem)에라도 스스로 분석 환경을 구성(Provisioning)하고, 데이터 전처리 및 모델 훈련을 해서, 모델 배포까지 하는 데이터 과학의 전체 워크플로우, 파이프라인을 관리할 수 있고, 필요 시 Scale out 할 수 있다면 정말 근사하겠지요? 업무 생산성도 획기적으로 향상되고, 절약한 시간만큼 데이터 분석 및 모델링에 더 투자할 수 있으니 모델의 예측 성과도 향상될 기회가 있겠구요. 

 

데이터 과학자가 Kubernetes (K8s) 대한 약간(?)의 지식이 있다면 구글이 주도하는 오픈소스 Kubeflow 를 사용해서 앞서 말한 장점을 누릴 수 있습니다. 2021년 8월 현재 Kubeflow 1.3 버전까지 나왔는데요, 올 초 봤던 1.0 대비 Kale, Katib, RStudio 연동 등 향상된 기능들이 눈에 들어오고 무척 마음에 드네요.

Colab에 이어 KubeFlow 까지, Google 은 사랑입니당~! :-)

 

자, 그럼 Kubeflow 에 대해서 차근차근 같이 알아볼까요?

(*참조: https://www.kubeflow.org)

 

 

Kubeflow 는 무엇인가? 

 

Kubeflow 오픈소스 프로젝트는 Kubernetes 위에서 기계학습 워크플로우를 배포하는 것을 다양한 인프라(diverse infrastructures)에서 쉽고(simple), 이동 가능하고(portable), 확장 가능하게(scalable) 구현하는 것을 목표로 시작이 되었습니다. Kubernetes를 사용할 수 있는 어떤 Cloud 환경이라도 Kubeflow 도 사용할 수 있게 말이지요. 

 

kubeflow

 

Kubeflow의 특징 및 기능을 소개해보겠습니다. 

 

 

1-1. Notebooks 

 

데이터 과학자들이 Jupyter Notebook 을 많이 사용하잖아요. Kubeflow 에서는 데이터 과학자가 Jupyter Notebook 을생성하고 관리할 수 있습니다. 이때 분석에 사용할 언어(Python, R 등)와 패키지가 포함되어 있는 도커 컨테이너 이미지를 선택할 수 있고, 또 분석에 필요로 하는 CPU, 메모리, GPU 에 대한 자원 할당 수준을 데이터 과학자가 직접 설정하여 분석환경을 수 초 내에 Kubernetes 위에 도커 컨테이너로 생성할 있습니다. 

분석환경 생성(Provisioning)할 때는 UI를 제공하고 이후의 생성은 완전 자동화되어 있기 때문에 Kubernetes 를 몰라도 어렵지 않게 사용할 수 있습니다. 완전 멋지지요?! 세상 참 편해졌습니다!

 

 

1-2. TensorFlow model training

 

Kubeflow 는 TensorFlow 로 기계학습 모델 훈련을 위한 custom job operator 를 제공합니다. 특히, Kubeflow의 job operator는 TensorFlow 모델 훈련을 분산 병렬처리 (distributed TensorFlow training jobs) 할 수 있게 해줍니다. 그리고 TensorFlow 모델을 훈련할 때 CPU나 GPU를 사용할 수 있고 다양한 클러스터 크기에 적합하게 설정, 조정할 수 있도록 해줍니다.

 

 

1-3. Model serving

 

Kubeflow는 훈련이 된 TensorFlow 모델을 Kubernetes 에 배포할 때 사용하는 TensorFlow Serving 컨테이너를 지원합니다. 또한 Kubeflow는 훈련된 기계학습 모델을 Kubernetes 위에 배포할 수 있도록 해주는 오픈소스 플랫폼 Seldon Core 와도 통합이 되어 있습니다. 

Kubeflow는 기계학습/딥러닝(ML/DL) 모델을 규모있게 배포할 때 GPU 활용을 극대화하기 위해 NVIDA Triton Inference Server 와도 통합이 되어있습니다. 그리고 ML/DL 모델 배포하고 실시간으로 모니터링을 할 때 사용하는 오픈소스 serverless 프레임웍인 MLRun Serving 도 지원합니다. 

 

 

1-4. Pipelines

 

Kubeflow Pipelines 는 기계학습/딥러닝 학습 모델을 배포하고 관리하는 end-to-end 워크플로우에 대한 종합적인 솔루션입니다. KubeFlow Pipelines 를 사용하여 모델 학습/실험을 스케줄링(scheduling)하고, 실험 결과를 비교하고, 각 실험 결과에 대한 상세한 내용을 살펴볼 수 있어서, 신속하고 신뢰할만한 실험을 할 수 있습니다. 

 

ML components and challenges

 

 

1-5. Multi-framework

 

KubeFlow 는 기계학습/딥러닝 프레임웍으로서 TensorFlow 뿐만이 아니라, PyTorch, Apache MXNet, MPI, XGBoost, Chainer 도 지원합니다. 또한 KubeFlow는 이종 서비스 간 트래픽 관리 및 보안을 위한 Istio, Ambassador 와도 통합되어 있으며, 신속한 다용도 서버리스 프레임웍인 Nuclio, 그리고 데이터 과학 파이프라인 관리를 위한 Pachyderm 과도 통합되어 있습니다. 

 

 

1-6. Community

 

KubeFlow 는 오픈소스로서, 소프트웨어 개발자, 데이터 과학자 및 기계학습/딥러닝 관련 조직의 참여를 환영하고 있습니다. 커뮤니터의 Slack channel 은 https://www.kubeflow.org/docs/about/community/ 를 참고하세요. 

 

 

유튜브에 있는 3분 46초짜리 'KubeFlow 101 : Introduction to KubeFlow' 영상도 한번 보시면 KubeFlow 개념 정리하는데 도움이 될거예요. 

 

Introduction to KubeFlow

 

다음 포스팅에서는 MacOS 맥북에 MiniKF 설치하는 방법(https://rfriend.tistory.com/676)을 소개하겠습니다. 

 

 

[Reference]

* Kubeflow 공식 사이트: https://www.kubeflow.org/

 

이번 포스팅이 많은 도움이 되었기를 바랍니다. 

행복한 데이터 과학자 되세요!  :-)

 

728x90
반응형
Posted by Rfriend
,