Kubeflow로 구현하는 MLOps 워크플로우
안녕하세요. 이 포스트에서는 머신러닝 운영의 핵심 플랫폼인 Kubeflow를 소개해드리려고 합니다.
Kubeflow는 머신러닝의 복잡성을 해소하고, 데이터 과학자 및 개발자가 보다 쉽게, 더 빠르게 머신러닝 모델을 개발하고 배포할 수 있도록 설계된 오픈 소스 프로젝트입니다. Kubeflow 공식 사이트에서 Kubeflow를 소개하는 첫 문장을 보면, "쿠버네티스(Kubernetes) 위에서 머신러닝을 위한 다양한 오픈 소스들을 종합적으로 관리하고 운영하는데 도움을 주는 프로젝트"라는 부분을 확인할 수 있습니다.
과거 Google이 내부적으로 사용하던 TensorFlow Extended(TFX)에서 출발한 Kubeflow는 현재 쿠버네티스 기반의 다양한 환경에서 머신러닝 워크플로우를 실행할 수 있는 가장 널리 알려진 엔드-투-엔드 솔루션으로 확장되었습니다.
Kubeflow의 가장 혁신적인 접근 방식 중 하나는 AutoML과 Kubeflow Pipelines의 통합입니다. 이를 통해 사용자는 모델의 훈련, 평가, 배포 단계를 자동화하고, 최적화할 수 있으며, 머신러닝 프로젝트의 반복 작업을 줄일 수 있습니다. 또한, Multi-tenant 지원을 강화하여, 여러 팀이 동일한 Kubeflow 인스턴스를 효과적으로 공유하며, 자원을 격리할 수 있게 되었습니다. 카카오클라우드에서 제공하는 Kubeflow 서비스 또한 머신러닝 작업의 효율성을 극대화하고, 사용자가 쉽게 접근할 수 있도록 설계되었습니다.
이 포스팅에서는 Kubeflow의 주요 컴포넌트, 최신 기능, 그리고 카카오클라우드에서 Kubeflow를 활용하는 다양한 튜토리얼 시나리오를 소개해 드리도록 하겠습니다.
Kubeflow 특징
Kubeflow는 머신러닝 모델의 유연한 확장과 쉽고 편리한 상용 배포를 목표로 쿠버네티스 환경에서 다음과 같은 작업을 지원합니다.
- 반복 및 이식이 가능한 쉬운 배포: Kubeflow를 통해 생성된 파이프라인은 클라우드, 온프레미스 등 여러 환경에서 배포를 용이하게 합니다.
- 비종속적인 마이크로 서비스 배 포 및 관리 체계: 마이크로서비스 아키텍처를 기반으로 한 Kubeflow는 각 컴포넌트의 독립적인 관리를 가능하게 합니다.
- 사용자 요구에 따른 반응형 스케일링: 사용자의 요구에 따라 자원을 자동으로 스케일링하며, 최적의 성능을 보장합니다.
Kubeflow 주요 컴포넌트
Kubeflow는 Central Dashboard, Jupyter Notebooks, Tensorboard, Pipelines 등 여러 오픈소스 컴포넌트로 구성되어 있으며, 각각은 머신러닝 워크플로우의 특정 단계를 지원합니다. 이들 컴포넌트는 사용자가 머신러닝 프로젝트를 보다 효율적으로 관리할 수 있도록 설계되어 있습니다.
출처: Kubeflow Conceptual Overview
Kubeflow는 쿠버네티스 기반에서 이와 같은 주요 컴포넌트를 사용하여 머신러닝 모델 개발부터 배포, 자원 관리에 이르기까지 전 과정을 효율적으로 지원하게 됩니다.
Kubeflow 주요 컴포넌트 | 설명 |
---|---|
Central Dashboard | 여러 컴포넌트 액세스 및 모니터링을 위한 대시보드 웹 콘솔을 제공합니다. |
Notebooks | 데이터 과학자가 클러스터 내에서 직접 코딩할 수 있는 Jupyter 노트북 환경을 제공합니다. |
Tensorboard | Tensorflow, PyTorch 등의 프레임워크에서 제공하는 모델 학습 과정 및 학습 데이터 시각화 툴 텐서보드 서버(Tensorboard Server)를 생성하고 관리합니다. |
Pipelines | Docker 기반의 확장 가능한 파이프라인으로 복잡한 머신러닝 워크플로우를 간소화합니다. |
Katib | Katib과 같은 AutoML 컴포넌트를 통해 모델 학습 하이퍼파라미터 튜닝을 자동화합니다. |
Training Operator | 다양한 머신러닝 프레임워크를 지원하여 유연한 트레이닝 작업을 가능하게 합니다. |
KServe | KServe와 같은 Model Serving 부가 기능을 통해 효율적인 모델 배포 및 서빙이 가능하며 내외부로부터 실시간 API로 제공합니다. |