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는 쿠버네티스 기반에서 이와 같은 주요 컴포넌트를 사용하여 머신러닝 모델 개발부터 배포, 자원 관리에 이르기까지 전 과정을 효율적으로 지원하게 됩니다.
Kubeflow 주요 컴포넌트 | 설명 |
---|---|
Central Dashboard | 여러 컴포넌트 액세스 및 모니터링을 위한 대시보드 웹 콘솔을 제공합니다. |
Notebooks | 데이터 과학자가 클러스터 내에서 직접 코딩할 수 있는 Jupyter 노트북 환경을 제공합니다. |
Tensorboard | Tensorflow, PyTorch 등의 프레임워크에서 제공하는 모델 학습 과정 및 학습 데이터 시각화 툴 텐서보드 서버(Tensorboard Server)를 생성하고 관리합니다. |
Pipelines | Docker 기반의 확장 가능한 파이프라인으로 복잡한 머신러닝 워크플로우를 간소화합니다. |
Katib | Katib과 같은 AutoML 컴포넌트를 통해 모델 학습 하이퍼파라미터 튜닝을 자동화합니다. |
Training Operator | 다양한 머신러닝 프레임워크를 지원하여 유연한 트레이닝 작업을 가능하게 합니다. |
KServe | KServe와 같은 Model Serving 부가 기능을 통해 효율적인 모델 배포 및 서빙이 가능하며 내외부로부터 실시간 API로 제공합니다. |
카카오클라우드 Kubeflow
카카오클라우드는 Kubeflow 1.6 버전을 포함하여 최신 기능을 지원하며, 사용자가 머신러닝 작업을 쉽고 빠르게 수행할 수 있도록 최적화된 클라우드 환경을 제공합니다. 특히, 카카오클라우드 Kubeflow는 다음과 같은 특징을 갖습니다.
Kubeflow 1.6의 모든 기능 지원
카카오클라우드 Kubeflow는 위에서 소개한 Kubeflow 주요 컴포넌트와 애드온(Add-On)을 모두 사용할 수 있습니다. Tensorflow, PyTorch, Apache MXNet, MPI, XGBoost, Chainer, HuggingFace, OpenAI SDK 등 프레임워크 및 라이브러리도 설치하여 사용할 수 있습니다.
세분화된 액세스 관리 기능
RBAC 기능을 제공하여 사용자는 업무와 역할에 따라 네임스페이스를 할당받고, 사용자 또는 그룹 단위로 권한을 효율적으로 관리할 수 있습니다. 또한 관리자는 네임스페이스별 쿼터 기능을 부여하여 설정된 사용치만큼의 CPU, Memory, GPU Memory, Storage 리소스를 할당할 수 있습니다.
유연한 스토리지 옵션
독립적인 MinIO유형 외 카카오클라우드 Object Storage 유형의 스토리지 저장소를 지원하여 보다 유연하게 모델 결과 파일을 서빙할 수 있습니다.
Nvidia MIG 인스턴스 최적화
카카오클라우드 Kubeflow는 Nvidia A100기반의 MIG(Multi Instance GPU) 인스턴스를 최적화하여 제공합니다. MIG 인스턴스 설정으로 GPU 리소스를 분할 사용할 수 있어, 사용자는 동일한 GPU에서 여러 워크로드를 효율적으로 실행할 수 있습니다.
멀티 파일 스토리지 지원
사용자/그룹별 독립된 파일 스토리지를 원하는 만큼 동적으로 사용하여 작업 파이프라인, 노트북 간 파일 공유가 더욱 수월합니다.
Kubeflow를 사용한 사용 예제
카카오클라우드의 기술 문서는 Jupyter Notebook 설정부터 병렬 학습 모델 구축, 모델 서빙 API 생성에 이르기까지 머신러닝 프로젝트의 다양한 단계를 아우르는 풍부한 Kubeflow 튜토리얼을 제공합니다. 이 튜토리얼들을 참고하여 카카오클라우드 Kubeflow를 사용한 효율적인 모델 개발, 학습, 최적화, 배포 기능 등을 확인할 수 있습니다.
현재 카카오클라우드 기술문서의 Kubeflow 관련 튜토리얼은 아래와 같습니다.
- Kubeflow를 이용한 Jupyter Notebook 환경 구성
쿠버네티스 환경에서 Kubeflow 서비스를 사용하여 Jupyter Notebook을 구성하는 과정 소개 - Kubeflow 노트북으로 예측 모델 구현
TLC Trip Record Data를 활용하여 택시 요금 예측 모델을 구현하는 실습 예제 - Kubeflow Pipelines을 사용한 예측 모델 학습
Kubeflow 파이프라인을 활용해 머신러닝 모델의 학습 과정을 자동화하는 방법을 소개 - Kubeflow Tensorboard를 사용한 머신러닝 실험 관리
TensorBoard 컴포넌트를 활용하여, 머신러닝 실험 과정에서 생성되는 로그 데이터를 관리하고 시각화하는 실습 예제 - Kubeflow 하이퍼파라미터 튜닝하기
Kubeflow와 Katib를 사용하여 MNIST 데이터세트에 대한 하이퍼파라미터 튜닝을 수행하는 시나리오 - Kubeflow MIG 인스턴스로 병렬 학습 모델 구현
Kubeflow MIG(Multi-Instance GPU) 인스턴스와 Training Operator를 활하여 병렬 학습 모델을 구현해보는 시나리오 - Kubeflow 모델 서빙 API 만들기
데이터세트를 활용하여 머신러닝 파이프라인을 구축하고, 이를 통해 생성된 모델을 웹 API 형태로 제공하는 시나리오
마무리하며
Kubeflow는 현재 국내외 전역에서 가장 많이 사용하고 있는 오픈소스 MLOps 플랫폼으로 그만큼 교육 콘텐츠, 경험 사례 및 예제 소스 코드가 비교적 풍부하여 처음 사용하는 데이터 과학자 및 분석가 현직자들에게도 빠른 적응을 돕고 있습니다.
카카오클라우드의 Kubeflow는 클라우드 환경의 이점을 통해 간편한 프로비저닝으로 GPU 최적화와 강력한 리소스 관리 기능을 제공합니다. 카카오클라우드 사용자에게 머신러닝의 효율성과 한층 강화된 보안성을 갖춘 MLOps 플랫폼의 이점을 온전히 누릴 수 있도록, 지속적으로 Kubeflow 서비스를 개선해 나갈 예정입니다. 머신러닝을 위한 Kubeflow 서비스 사용을 고려 중이시라면, 꼭 카카오클라우드의 서비스를 사용해 보시기 바랍니다.
감사합니다.