나 JAVA 봐라

kubeflow 란? 본문

DevOps, MLOps

kubeflow 란?

cool_code 2024. 6. 6. 12:17

https://yejin-code.tistory.com/49

 

MLOps 개념 정리

MLOps란?머신 러닝 (Machine Learning)과 운영(Operations)를 합친 용어로 프로덕션 환경에서 머신 러닝 모델이 지속적, 안정적으로 배포되도록 유지, 관리, 모니터링 하기 위한 문화, 방법론즉, MLOps는 머

yejin-code.tistory.com

 

(위의 내용을 먼저 읽으시는 것을 추천드립니다. )

 

MLOps가 왜 필요하며 어떤 요소들이 있는 지 보면서 '오 이거 좋네 ~' 라고 생각하셨다면, 이제 직접 사용 해보면 좋겠죠?

(그렇다고 해주세요)

 

궁금하실테니 MLOps를 적용하기 위한 기술에 뭐가 있는지도 살펴보겠습니다 ! 


AI 플랫폼이란? 

AI 플랫폼은 ML 워크플로우를 자동화해줍니다. ML 워크플로우에는 데이터 전처리, 탐색적 데이터 분석, 하이퍼 파라미터 튜닝, ML 모델 학습, ML 모델 배포 등의 모든 과정이 있는데요, 이 과정을 처리합니다.

 

하지만 이러한 과정을 자동화하기 위해 바닥부터 구현하는 것은 당연히 어렵습니다..

다행히도 똑똑하신 분들이 이미 쉽게 쓸 수 있도록 시스템을 다 만들어두셔서 수작업이 할 게 많이 줄었습니다. 저희는 그냥 가져다가 쓰면 됨 (사실 가져다 쓰는 것도 어려움,, ㅋ)

어쨌든 이러한 AI 플랫폼 때문에 AI 모델을 더 쉽게 개발할 수 있게 되었답니다. 

 

대표적인 AI 플랫폼으로 퍼블릭 클라우드에는

  • 구글 버텍스 AI (Google Vertex AI)
  • 아마존 세이지메이커(Amazon SageMaker)
  • 애저 머신러닝(Azure Machine Learning)

등이 있으며, 

 

오픈소스로는 쿠브플로우(Kubeflow)가 있습니다. 

 

환경에 따라 퍼블릭 클라우드나 오픈소스를 적용할 수 있을텐데요, 비용이 충분하다면 퍼블릭 클라우드를 사용하는 것이 효율적일 수 있습니다. 

(정신 건강에 이롭습니다.)

 

하지만 비용이 충분치 않거나 보안 이슈 등이 있다면 오픈 소스를 활용하여 AI 플랫폼을 구축해야 합니다.

 

(개인적으로 서비스를 배포할 때 AWS를 사용했더니, auto scale이나 모니터링 기능을 몇 번 딸깍하면 바로 구현할 수 있어서 참 편했습니다. 그렇지만 AWS service를 여러 개 사용하다보니 너무 비싸서 서비스를 오래 운영할 수 없었습니다.. 저는 돈이 없으니 쿠버네티스를 배워야겠습니다)


쿠브플로우(Kubeflow)란? 

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

 

쿠브플로우의 배경

쿠브플로우는 Kubernetes + ML Flow(or TensorFlow) 의 합성어로, 쿠버네티스에서 텐서플로우를 효율적으로 사용하기 위해 시작되었으며 현재는 텐서플로우 말고도 파이토치와 같은 다양한 파이프라인도 사용할 수 있습니다. 

 

'쿠브플로우' 라는 용어는 2017년 12월의 KubeCon 행사에서 발표한 'Hot Dogs or Not Hot Dog' at Scale - Kubernetes & Machine Learning"이라는 세션에서 처음 사용되었습니다. 

 

https://www.youtube.com/watch?v=R3dVF5wWz-g

Hot Dogs or Not Hot Dog' at Scale - Kubernetes & Machine Learning

해당 세션 내용을 통해 쿠브플로우가 왜 등장했는지 알 수 있는데요, 

 

  • ML 비전문가들도 ML을 위한 솔루션 설치 등의 전문 지식 없이도 쉽게 ML 업무가 가능해야 한다. 
  • ML 업무를 위해서는 composability(구성 가능성), portability(이식성), scalability(확장성)을 갖춘 플랫폼이 필수다. 즉 ML 워크플로우를 쉽게 구현할 수 있고, 쉽게 유지보수가 가능해야 하고 필요 시 리소스를 쉽게 확장할 수 있어야 한다.
  • Composability, portability, scalability의 모든 기능을 갖춘 플랫폼이 바로 K8s이고 K8s와 ML을 결합한 솔루션이 바로 Kubeflow이다.
  • Kubeflow 데모 시연: Kubeflow의 구성요소인 Jupyter Notebook을 통해 모델을 생성하고 학습한 다음 Hot Dog 인지 아닌지 테스트해 보고, 이미 검증된 모델(ResNet)을 통한 테스트 데모 시연

쿠브플로우의 등장으로 데이터 사이언티스트는 쿠버네티스 사용을 익히는 대신 모델을 개발, 훈련, 테스트 하는 등의 업무에 더 집중할 수 있게 되었습니다. 

 

항상 개발할 때 제일 화났던 게 설치해서 버전 맞추느라 시간 다 보내서 정작 아무것도 시작 못할 때... 였는데 세상 참 좋아졌네요 ! ^^ -> 그냥 내가 몰라서 안한 거.. 

설치하느라 짱났던 예전의 나

 

 

 

쿠브플로우의 구조

 

쿠브플로우 구조

 

위의 구조를 따라서, 쿠브플로우 컴포넌트에 무엇이 있는지 하나씩 알아보겠습니다. 


Central Dashboard

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

Kubeflow Central Dashboard

 

  • Notebooks
    • 웹브라우저에서 파이썬 코드를 작성하고 실행할 수 있는 Jupyter Notebook 개발 도구를 제공합니다. 이미지 경로와 자원 등을 설정하여 쿠버네티스상에 Notebook을 생성할 수 있습니다. 사용자는 생성한 Notebook을 이용해 데이터 전처리, 탐색적 데이터 분석 등을 수행하여 ML 모델 코드를 개발할 수 있습니다. 
    • https://www.kubeflow.org/docs/components/notebooks/quickstart-guide/
    • Notebook 생성화면
  • Experiments (AutoML)
    • AutoML은 이름처럼 ML 모델의 예측 정확도와 성능을 높이기 위한 반복 실험을 자동화하는 도구 입니다. 쿠브플로우에서는 Katib를 사용하여 AutoML 기능을 제공합니다. 
    • Katib 의 기능
      • 하이퍼 파라미터 튜닝 (Hyper Parameter Tuning) : 모델의 하이퍼 파라미터를 최적화하는 작업
      • 뉴럴 아키텍처 탐색 (Neural Architecture Search, NAS) : 모델의 구조, 노드 가중치 등 뉴럴 네트워크 아키텍처를 최적화하는 작업 
    • 예를 들어, Katib를 사용하여 learning rate 하이퍼 파라미터가 0.1 , 0.05 중 어느 값이 모델의 예측 정확도를 높이는 값인지 찾는 실험 등을 자동화할 수 있습니다. 먼저 Experiment (AutoML) CR을 작성한 후 쿠버네티스에 배포하면 katib가 CR에 정의한 하이퍼파라미터와 병렬 처리 설정에 따라 실험을 동시에 수행하여 가장 성능이 좋은 하이퍼파라미터를 찾습니다.  (그동안 하이퍼 파라미터 수동으로 조정하고 성능 평가해서 비교했었는데,,, 너무 좋은 도구다)
    • 모델 분산 학습 예시
  • Experiments (KFP)
    • Kubeflow Pipelines (KFP)는 머신러닝 워크플로우를 구축하고 배포하기 위한 머신러닝 워크플로우 자동화(ML Workflow Orchestration) 도구입니다. KFP의 목표는 파이프라인(Pipelines)과 파이프라인 컴포넌트(Pipeline Components)를 재사용하여 다양한 실험을 빠르고 쉽게 수행하는 것입니다.
    • 쿠베플로우 파이프라인 구조
    • 쿠브플로우에서 제공하는 KFP SDK를 사용하여 데이터 전처리, 데이터 변환, 하이퍼파라미터 튜닝, 모델 학습 등 워크플로우의 모든 단계에서 수행하는 코드를 파이프라인 컴포넌트로 미리 만들어 놓고, 파이프라인 컴포넌트를 DAG (Directed Acyclic Graph) 형태로 연결해서 파이프라인을 구성할 수 있습니다. 
    • KFP는 워크플로우 엔진으로 아르고 워크플로우(Argo Workflow)를 사용합니다. 작성한 파이프라인 코드를 DSL(Domain Specific Language) 컴파일러를 사용하여 아르고 워크플로우 커스텀 리소스로 변환한 후, 커스텀 리소스(Custom Resource, CR)을 쿠버네티스 환경에 배포하여 머신러닝 워크플로우를 쉽게 구축할 수 있습니다. 
    • 머신러닝 워크플로우 구축

Training Operators

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

모델 분산 학습

 


KServe

  • 쿠브플로우는 KServe를 통해 쿠버네티스 환경에 머신러닝 모델을 배포하고 추론 기능을 제공합니다. KServe는 Endpoint, Transformer, Predictor, Explainer로 이루어져 있습니다. Transformer나 Explainer는 필요에 따라 추가 가능하며 Predictor 와 연결하여 사용합니다.
    • Endpoint : Predictor에 추론할 데이터를 전달, 데이터의 가중치 비율을 조절하여 Predictor에 전달할 수 있어서 A/B테스트도 가능
    • Predictor : 데이터를 예측하거나 분류
    • Explainer : 데이터를 예측하거나 분류한 결과에 대해 판단 이유를 제시하는 설명 가능한 인공지능(eXplainable Artificial Intelligence, XAI) 역할
    • Transformer : 데이터 전처리, 후처리 기능을 제공

모델 배포

 


Reference

Kubeflow Docs 

 

https://s-core.co.kr/insight/view/%EC%BF%A0%EB%B2%84%EB%84%A4%ED%8B%B0%EC%8A%A4-%EA%B8%B0%EB%B0%98%EC%9D%98-ai-%ED%94%8C%EB%9E%AB%ED%8F%BC-%EC%BF%A0%EB%B8%8C%ED%94%8C%EB%A1%9C%EC%9A%B0kubeflow/

 

에스코어

에스코어는 디지털 혁신을 위한 고급 프로페셔널 서비스를 제공합니다. 매니지먼트 컨설팅과 소프트웨어 테크놀로지 서비스 오퍼링을 살펴보세요.

s-core.co.kr

https://careerly.co.kr/comments/76041

 

이명진 / 쿠브플로우Kubeflow란 | 커리어리

쿠브플로우(Kubeflow)에 대해서 알아보는 시간입니다. 쿠브플로우 공식사이트(www.kubeflow.or...

careerly.co.kr