1. Kubeflow Dashboard
Kubeflow 대시보드란?
: 각 컴포넌트의 UI를 접근할 수 있는 Gateway
→ 쿠버네티스 게이트웨이를 통해 쿠베플로우의 컴포넌트들의 Endpoint 접근 가능
•
Kubeflow 대시보드 컴포넌트
◦
Jupyter Notebook Server
◦
Katib
◦
Pipeline
◦
Artifact Store
◦
Manage Contributors
2. Fairing
페어링이란 쿠베플로우가 설치된 환경에서 손쉽게 ML모델을 학습 및 배포할 수 있는 파이썬 패키지
→ 로컬의 Pycharm, Kubeflow의 주피터 노트북에서도 ML 모델의 생성, 학습, 배포등을 작업을 쿠버네티스 클러스터로 요청 가능
2.1 Fairing 아키텍쳐
페어링 진행 과정
1.
페어링은 주피터 노트북, 파이썬 함수, 파일들을 도커이미지로 빌드
2.
이미지가 빌드되면 설정한 도커 레지스트리에 푸시
3.
푸시가 완료되면 설정한 배포 리소스 타입에 따라 Kubernetes Job, TFJob, KFServing등의 리소스로 변환하여 쿠버네티스 API 서버로 요청
→ preprocessor, builder, deployer 구조로 나눠서 진행
2.2 페어링 설정
페어링은 도커이미지와 쿠버네티스 리소스를 사용하는 패키지이기 때문에, 도커이미지를 저장할 수 있는 도커레지스트리 정보와, 쿠브플로우 클러스터에 접속할 수 있는 권한이 필요
•
도커 레지스트리
페어링이 생성한 도커 이미지 레지스트리에 pull/push 가 되어야 하기 때문에 도커 레지스트리는 공인인증서를 가지고 있는 서버여야함
→ 로그인 정보가 필요한 레지스트리인 경우, 도커 클라이언트가 해당 레지스트리의 로그인 정보를 가지고 있어야함
•
Kubectl
쿠베플로우 클러스터를 접속하기 위해서 kubeconfig 정보를 사용하기 때문에 kubectl이 설치되어 있어야 함
3. Katib
카티브는 하이퍼파라미터 최적화(Hyperparameter Optimization, HyperOpt)와 뉴럴 아키텍쳐 탐색(Neural Architecture, NAS)를 제공하는 쿠베플로우 컴포넌트
3.1 하이퍼파라미터와 하이퍼파라미터 최적화
Learning Rate, Dropout rate, 레이어수, cost 함수등, 모델의 성능을 높이기 위해서 하이퍼파라미터 최적화를 진행.
→ 카티브는 하이퍼 파라미터 선택을 검색 알고리즘에 따라 자동 수행하고, 설정한 최적값이 나올 때 까지 계속 반복해서 최적화 과정을 자동화
3.2 뉴럴 아키텍쳐 탐색(NAS)
Automated machine Learning(AutoML)의 하나인 뉴럴 아키텍쳐 탐색은 높은 예측 정확도와 최적의 성능을 내는 모델을 디자인 하기 위해서 사용
→ Katib의 NAS는 강화학습을 사용해서 최적의 뉴럴 네트워크 디자인을 찾음
3.3 아키텍쳐
카티브는 Experiment, Trial, Suggestion, Worker Job, 크게 4가지의 개념으로 이루어짐
1.
Experiment
: 하나의 최적화 실행단위(Job)으로, 쿠버네티스 Custom Resource 이고, Trial을 실행함
각 Experiment는 총 5개의 영역으로 나뉨
•
Trial Count : 실행횟수
•
Trial Template: trial 파드 명세
•
Objective: 목표 수치, 최곳값, 최젓값
•
Search Parameter: 탐색 할려는 파라미터와 값의 범위
•
Search Algorithm : 탐색 알고리즘
2.
Trial
: 최적화 과정의 반복 단위
→ Experiment의 Trial count 수 만큼 Trial이 생성되고, 하나의 Trial이 종료되면 그 다음 Trial이 생성됨.
→ 하나의 Trial에서 하나의 worker job이 실행됨
3.
Suggestion
: 검색 알고리즘으로 통해 생성된 “하이퍼파라미터=값” 의 모음
→ 하나의 Experiment당 하나의 Suggestion이 생성됨
→ Experiment에서 설정된 Parameter와 검색 알고리즘이 만들어낸 Value를 각 Trial에 제공
4.
Worker Job
:Parameter와 Suggestion 값을 가지고 Trial을 평가하며 목푯값을 계산하는 프로세스.
→ 실제로 학습을 수행하는 일을 하고, Worker는 단일 실행인 쿠버네티스 잡과 분산 실행이 가능한 텐서플로우 TFJob과 쿠베플로우 Pytorch 사용가능