[Service Development Team Im Changdae]
ML(Machine Learning) 은 최근 몇 년 동안 점점 더 많은 관심을 받아 이제 주류로 부상한 IT 주제 중 하나 입니다.
ML 모델 학습은 API와 tool 이 너무 발전되어 더 이상 숙련된 데이터 과학자가 아니어도 사용할 수 있습니다. 그럼에도 불구하고 ML 모델을 이용한 서비스 개발은 데이터 수집 및 검증, ML 모델 학습과 배포와 같은 다양한 프로세스로 구성되어 있기 때문에 ML 모델 서비스 구축에 이어 운영 또한 중요한 과제입니다. 완성된 모델은 최종적으로 대상 환경에서 사용할 수 있어야 하며 적절한 모니터링 도구를 사용하여 작동을 모니터링 해야 합니다.
Kubeflow 는 data science tool 들을 통합하여 제공하는 오픈 소스 프로젝트로써 주요 개념은 Kubernetes 환경에서 ML Workflow 를 관리하고, 학습한 ML 모델을 프로토타입에서 배포에 이르기까지 환경 제한 없이 배포 및 확장할 수 있도록 돕기 위해 개발된 Toolkit 입니다. 이를 통해 데이터 과학자, 개발자, 기계 학습 엔지니어 및 운영자의 삶을 더 쉽게 만들 수 있어 Kubernetes 를 사용하고 있다면 Kubeflow 또한 같이 사용해 보는 것도 좋은 선택지 입니다.
Notebooks
Jupyter notebook 은 ML 모델을 프로토타이핑하고 팀 간에 공유하기 위한 업계 표준이 되었습니다. Kubeflow 에는 대화형 Jupyter notebook을 만들고 관리하는 서비스가 포함되어 있어 Jupyter Lab 을 빠르게 배포하고 ML 모델 생성을 시작할 수 있습니다.
개발 환경 요구 사항에 맞게 Jupyter notebook 배포 및 컴퓨팅 리소스를 사용자가 지정할 수 있습니다. 이를 통해 Workflow 를 local 에서 실험한 다음 준비가 되면 cloud 에 배포를 수행할 수 있습니다.
Model training
Kubeflow 는 ML 모델 학습을 위한 여러 방법들을 제공합니다. Jupyter Notebook, Google Cloud AI Platform 과 같은 관리형 서비스, TensorFlow Training(TFJob)을 사용한 맞춤형 분산 학습을 사용할 수 있습니다. 그리고 Tensorflow 를 사용하고 있다면 TensorBoard 또는 TensorFlow Model Analysis(TFMA)를 사용하여 모델을 쉽게 분석할 수 있습니다.
Fairing
Kubeflow Fairing은 hybrid cloud 환경에서 ML 모델을 구축, 학습 및 배포하는 프로세스를 간소화해주는 Python 패키지입니다. Kubeflow Fairing 을 사용하여 몇 줄의 코드를 추가하면 local 또는 cloud 환경에서 ML 모델 학습 작업을 실행할 수 있고, ML 모델 학습 작업이 완료되면 Kubeflow Fairing을 사용하여 학습된 모델을 Kubeflow 또는 AI Platform 에 배포할 수 있습니다.
Hyperparameter tuning
Katib는 Hyperparameter tuning, Early stopping, Neural Architecture Search 을 통해 자동화된 ML 학습(Auto ML)을 지원합니다. 이 같은 탐색 알고리즘을 통해 Katib는 최적의 하이퍼 파라미터 값을 탐색하여, 모델의 예측 정확도를 최대화하고 최적의 신경망 아키텍처를 구성해줍니다.
Pipelines
Kubeflow Pipelines 는 종단 간 ML Workflow 를 배포하고 관리하기 위한 포괄적인 솔루션입니다. Pipeline 의 모든 단계는 Docker container 단위로 구성 되며 Kubernetes 클러스터에 배포할 수 있어 빠르고 안정적인 실험을 통해 프로토타입에서 배포에 이르는 전체 Workflow 를 단축하고 Workflow 실행을 예약 및 비교하여 각 실행에 대해 자세히 검토할 수 있습니다.
Experiments
Kubeflow Pipeline 의 다양하게 실행하고 비교할 수 있는 쉬운 방법을 제공합니다. 즉, ML 모델 학습 별로 Pipeline 을 생성할 수 있습니다. 그런 다음 다른 매개변수 값으로 여러 번 실행하면 비교되는 모든 실행에 대해 정확도와 ROC AUC 점수를 얻을 수 있습니다.
Model serving
Kubeflow 는 학습된 TensorFlow 모델을 Kubernetes 로 내보내는 TensorFlow Serving 을 지원합니다. Kubeflow 는 또한 Kubernetes 에 ML 모델을 배포하기 위한 오픈 소스 플랫폼인 Seldon Core, ML 모델을 대규모로 배포할 때 GPU 활용을 극대화하기 위한 NVIDIA Triton Inference Server, 실시간 ML 모델 및 pipeline 모니터링을 위한 MLRun Serving 등을 포함하고 있습니다.
이외에도 Kubeflow 는 CPU 또는 GPU를 사용하여 다양한 클러스터 크기에 맞게 학습을 수행하고 Kubernetes 맞춤형 리소스를 제공해 복잡한 분산 학습을 간소화하며 Tensorflow 외에도 Pytorch, MXNet 등 multi-framework를 지원합니다.
Kubeflow 는 Google, Cisco, IBM, Redhat 등이 공동으로 개발 중이며 Amazon, Dell, Intel, Uber, Github, Bank of America 등 30여 개 기업에서 활용하고 있습니다.
References
https://www.kubeflow.org/
https://medium.com/@michal.brys/kubeflow-a-machine-learning-toolkit-for-kubernetes-d8686f6c91b6
https://proceedings.neurips.cc/paper/2015/file/86df7dcfd896fcaf2674f757a2463eba-Paper.pdf