Ssoon

Kubeflow 본문

MLOps

Kubeflow

구구달스 2024. 6. 21. 00:14
  • Kubeflow:
    • Kubernetes + ML flow의 합성어로, Kubernetes에서 머신 러닝(ML) 워크플로우를 배포하고 관리하기 위한 오픈 소스 플랫폼

 Kubeflow의 주요 구성 요소

  1. Kubeflow Pipelines
    • 머신 러닝 파이프라인을 정의하고 실행할 수 있는 플랫폼입니다. 시각적 인터페이스를 통해 파이프라인을 설계하고, 단계별로 실행 결과를 확인할 수 있습니다.
  2. Katib
    • 하이퍼파라미터 튜닝을 자동화하는 컴포넌트로, 다양한 최적화 알고리즘을 지원합니다. 이를 통해 최적의 하이퍼파라미터 조합을 찾을 수 있습니다.
  3. KFServing
    • 모델 배포 및 서빙을 위한 플랫폼으로, 자동 확장, 롤링 업데이트, A/B 테스트 등을 지원합니다. 다양한 프레임워크의 모델을 쉽게 배포할 수 있습니다.
  4. TFJob 및 PyTorchJob
    • TensorFlow와 PyTorch 모델의 분산 훈련을 지원하는 컴포넌트입니다. 이를 통해 대규모 데이터셋을 효율적으로 처리할 수 있습니다.
  5. Notebook 서버
    • Jupyter Notebook 서버를 쉽게 배포하고 관리할 수 있는 기능을 제공합니다. 이를 통해 데이터 과학자들이 손쉽게 개발 환경을 설정할 수 있습니다.

Kubeflow의 활용 사례

  • 데이터 전처리 및 분석
    • Jupyter Notebook 서버를 사용하여 데이터를 탐색하고 전처리합니다. 이를 통해 데이터를 이해하고, 모델 훈련을 위한 준비를 할 수 있습니다.
  • 모델 훈련
    • 분산 훈련을 통해 대규모 데이터셋에서 효율적으로 모델을 훈련합니다. TensorFlow 및 PyTorch와 같은 프레임워크를 지원하여 다양한 모델을 훈련할 수 있습니다.
  • 모델 최적화
    • Katib을 사용하여 하이퍼파라미터를 자동으로 튜닝하고, 최적의 모델 성능을 달성할 수 있습니다.
  • 모델 배포
    • KFServing을 사용하여 훈련된 모델을 배포하고, 예측 요청을 처리할 수 있습니다. 이는 모델을 실제 프로덕션 환경에 쉽게 적용할 수 있게 해줍니다.
  • 모델 모니터링
    • Kubernetes의 모니터링 도구를 사용하여 모델의 성능을 실시간으로 모니터링하고, 필요에 따라 조정할 수 있습니다.

Kubeflow는 머신 러닝 파이프라인의 모든 단계를 통합하여 관리할 수 있는 강력한 플랫폼입니다. 이를 통해 데이터 과학자와 엔지니어는 모델 개발 주기를 효율적으로 관리하고, 다양한 환경에서 쉽게 모델을 배포할 수 있습니다.


 kubeflow 네임스페이스에서 각 구성 요소의 역할

 

 

  • Cache Deployer
    • 캐시 서버 배포를 오케스트레이션하는 데 특화되어 있으며, 전체 프로세스에 효율성과 최적화 계층을 추가합니다. 데이터 저장소 역할을 하는 캐시 서버를 배포할 수 있습니다.
  • Cache Server
    • 캐시 서버는 학습된 모델 및 중간 결과와 같이 자주 액세스하는 ML 아티팩트를 저장하는 키-값 저장 시스템입니다. 다시 필요할 때 캐시에서 이러한 아티팩트를 빠르게 검색하여 액세스하는 데 필요한 시간을 크게 단축할 수 있습니다. 중복 데이터 전송 및 계산을 최소화합니다.
  • Metadata Envoy
    • 다양한 서비스와 메타데이터 저장소 사이의 가교 역할을 하는 Kubeflow 에코시스템 내의 중요한 구성 요소입니다. 주요 기능은 다른 Kubeflow 구성 요소와 메타데이터 저장소 간의 통신을 용이하게 하는 것입니다. 교육 작업, 데이터 전처리 작업, 모델 서비스 인스턴스 등 Kubeflow의 여러 구성 요소가 메타데이터를 저장하거나 검색해야 하는 경우, 이들은 메타데이터 엔보이와 상호 작용합니다. 로드 밸런싱, 라우팅 및 기타 네트워크 관련 기능을 제공합니다. 
  • Metadata gRPC
    • 메타데이터 서비스를 위한 gRPC 서버를 배포합니다. gRPC 서버를 통해 다른 구성 요소는 gRPC 프로토콜을 사용하여 메타데이터 서비스와 상호 작용할 수 있으며, 이는 Kubeflow 플랫폼의 다른 부분 간에 효율적이고 확장 가능한 통신을 가능하게 한다. gRPC는 동기 및 비동기 통신 패턴을 모두 지원합니다. 이러한 유연성 덕분에 Kubeflow 구성 요소는 요구사항에 가장 적합한 통신 스타일을 선택할 수 있습니다.
  • Metadata Writer
    • 메타데이터 작성기는 전체 머신 러닝 수명 주기에 대한 포괄적인 기록을 유지하는 데 중추적인 역할을 하며 사용자가 워크플로를 효과적으로 추적, 분석 및 최적화할 수 있게 해줍니다. 메타데이터 저장소 (Mysql 데이터베이스). ML 파이프라인이나 워크플로와 같은 다양한 소스에서 메타데이터를 수신하여 나중에 검색 및 분석할 수 있도록 메타데이터 저장소에 저장합니다.
  • Minio
    • Kubeflow에서 데이터를 저장하고 액세스하는 데 사용되는 객체 스토리지 서버입니다. ML 워크플로우에 필요한 대규모 데이터 세트, 모델 및 기타 아티팩트를 저장하는 데 사용할 수 있는 확장 가능하고 분산된 스토리지 인프라를 제공합니다.
  • ML-Pipeline:
    • ml-파이프라인 구성 요소는 Kubeflow의 ML 파이프라인 시스템의 핵심입니다. 이를 통해 사용자는 엔드투엔드 ML 워크플로우를 정의, 실행 및 관리할 수 있습니다. 컨테이너와 Kubernetes를 사용해 ML 파이프라인을 구축하고 오케스트레이션하기 위한 일련의 도구와 API를 제공합니다.
  • ML-Pipeline-Persistence-Agent
    • ml-pipeline-persistenceagent 구성 요소는 ML 파이프라인 아티팩트의 지속을 담당합니다. ML 파이프라인 실행 중에 생성된 모든 아티팩트를 적절하게 저장하고 관리하여 ML 실험의 추적성과 재현성을 보장합니다.
  • ML-Pipeline-Scheduled-Workflow
    • 이 구성 요소는 ML 워크플로우의 스케줄링 및 실행을 지원합니다. 사용자는 종속성이 있는 워크플로를 정의하고 특정 시간 또는 간격에 실행되도록 예약할 수 있습니다. 이를 통해 ML 워크플로가 DAG 순서에 따라 자동으로 실행되도록 보장합니다.
  • ML-Pipeline-UI
    • ML-Pipeline-UI는 ML 파이프라인과 상호 작용하고 모니터링하기 위한 사용자 인터페이스를 제공합니다. 이를 통해 사용자는 파이프라인 실행 진행 상황을 시각화하고, 리소스 사용률을 모니터링하고, 파이프라인 구성을 관리할 수 있습니다.
  • ML-Pipeline-Viewer-CRD 
    • ml-pipeline-viewer-crd 구성 요소는 ML 파이프라인 뷰어에 대한 사용자 정의 리소스 정의(CRD)를 정의한다. CRD는 사용자 정의 리소스를 정의할 수 있는 쿠버네티스 API의 확장이다. ML 파이프라인 뷰어 CRD를 사용하면 파이프라인 시각화와 관련된 사용자 정의 리소스를 생성하고 관리할 수 있습니다.
  • ML-Pipeline-Visualization-Server
    • ML 파이프라인 시각화 서버 구성 요소는 ML 파이프라인 실행과 그 결과물을 시각화하기 위한 서버를 제공합니다. 이를 통해 사용자는 파이프라인 실행 중에 생성된 데이터, 메트릭 및 모델의 시각화를 포함하여 ML 파이프라인 실행 결과를 보고 분석할 수 있습니다.
  • Mysql
    • MySQL은 널리 사용되는 오픈 소스 관계형 데이터베이스 관리 시스템입니다. Kubeflow에서 MySQL은 종종 ML 워크플로우와 관련된 메타데이터를 저장하고 검색하기 위한 메타데이터 저장소로 사용됩니다. Kubeflow 플랫폼에서 생성된 메타데이터를 관리하기 위한 확장 가능하고 안정적인 스토리지 솔루션을 제공합니다.
  • Workflow-Controller
    • 워크플로우-컨트롤러 구성 요소는 Kubeflow에서 ML 워크플로우의 관리와 실행을 담당합니다. 워크플로우의 실행을 조정하고, 서로 다른 작업 간의 종속성을 관리하며, 올바른 실행 순서를 보장합니다. 워크플로우의 진행 상황을 모니터링하고 필요에 따라 실패 또는 재시도를 처리합니다. Argo Workflows 또는 Tekton 파이프라인을 워크플로우 컨트롤러로 구성할 수 있습니다.

사전 구성

  • Master Node 
    • 8 GB of RAM 
    • 8 CPU
  • Worker Node 
    • 8 GB of RAM 
    • 8 CPU

NFS Server 구성

  • Kubeflow 설치 과정에서 4개의 PV(PersistentVolume) 생성됨

  • Kubernetes 클러스터에서 기본 StorageClass를 정의하기위해 동적 볼륨 프로비저너가 필요합니다. 
  • VirtualBox 에서 NFS Server 용도의 별도의 호스트(Ubuntu-20.04)를 생성하고 설정합니다.
동적 볼륨 프로비저너는 Kubernetes에서 필요한 스토리지를 자동으로 생성하고 관리해주는 시스템입니다. 사용자가 스토리지를 요청하면, 프로비저너는 자동으로 적절한 크기와 유형의 스토리지를 생성하여 애플리케이션에 제공합니다. 이를 통해 사용자는 스토리지를 직접 생성하고 관리할 필요 없이, 필요한 만큼의 스토리지를 손쉽게 사용할 수 있습니다.

  • NFS Package 설치

  • NFS 디렉토리 생성 후 권한 설정
  • 접근 가능 호스트 목록 등록
  • 서비스 재시작

 NFS Client Provisioner 구성

  • helm repo list 등록
  • helm install nfs   
    • --set nfs.server= {{ NFS Server IP }} \
    • --set nfs.path= {{ NFS Path }} \
    • --set storageClass.defaultClass=true


Kubeflow 설치

  • 1.7 버전으로 설치 진행

  • Pod 의 상태 확인 (몇개의 CrashLoopBackOff 확인필요) 

 

 

 접속 테스트

  • istio-ingressgateway 수정
  • 기본적으로 ClusterIP 타입으로 생성되기 때문에, 호스트 환경에서 접속하기 위해서 NodePort 로 변경

 

  • http://192.168.1.101:31380 {Node IP + 포트번호} 

  • 기본 계정 : user@example.com
  • 패스워드 : 12341234

'MLOps' 카테고리의 다른 글

KubeRay  (0) 2024.06.21
Airflow  (0) 2024.06.21
Comments