GitHub
쿠브플로우 관련 코드 내용은 GitHub에서 관리하고 있습니다.
https://github.com/Seokii/Study-MLOps
1. Documentation
https://www.kubeflow.org/docs/external-add-ons/fairing/
쿠브플로우 공식 문서입니다.
쿠브플로우에 대한 자료가 많이 없어서, 공식 문서를 참고하면서 공부하고 있습니다.
2. Fairing 소개
페어링(Fairing)은 쿠브플로우가 설치된 환경에서 ML 모델의 학습과 배포를 도와주는 파이썬 패키지입니다.
공식 문서에서는 페어링에 대해 다음과 같이 설명합니다.
쿠브플로 페어링은 쿠브플로에서 ML 모델을 쉽게 교육하고 배포할 수 있는 파이썬 패키지입니다.
쿠브플로 페어링은 다른 플랫폼에서 훈련하거나 배포할 수 있도록 확장될 수도 있습니다.
현재 쿠브플로 페어링은 구글 AI 플랫폼에서 훈련할 수 있도록 확장되었습니다.
또한, 쿠브플로 페어링 프로젝트의 목표는 아래와 같습니다.
- 쉬운 ML 모델 훈련 작업 패키지화 : 작성한 모델 학습 코드를 도커 이미지화
- 하이브리드 클라우드 환경에서의 쉬운 학습 : 고급 API를 제공해 기본 인프라에 대한 지식이 필요 없음
- 쉬운 배포 : 학습된 모델을 배치하는 과정 간소화
쿠브플로우 페어링에는 다음과 같은 중요한 3가지의 개념이 있습니다.
Preprocessor(전처리기), Builder(빌더), Deployer(배포)
2.1. Fairing Preprocessor
전처리기는 도커 이미지로 패키지화할 대상을 지정합니다.
즉, 컨테이너 이미지를 만들 때, 이미지 생성에 필요한 정보들을 정의합니다.
전처리기를 통해 컨테이너 이미지에 들어갈 입력파일을 선택, 변환, 제외할 수 있습니다.
제공하는 전처리기의 종류는 4가지 입니다.
- python : 입력 파이썬 파일을 그대로 컨테이너 이미지에 직접 복사해 패키징합니다.
- notebook : 주피터 노트북 파일을 파이썬 파일로 변환 후 코드에 대한 패키징을 진행합니다.
- full_notebook : 노트북 파일의 전체 코드를 실행하고,결과를 다시 노트북 파일로 생성합니다.
- function : 단일함수를 전처리 및 패키징합니다.
2.2. Fairing Builder
빌더는 컨테이너 이미지를 빌드하는 방법 및 컨테이너 레지스트리의 위치를 정의합니다.
전처리기가 생성한 패키지를 도커 이미지화시키는 역할으 합니다.
제공하는 빌더의 종류는 3가지 입니다.
- append : 도커 클라이언트를 사용하지 않고, 파이썬 라이브러리인 containerregistry를 사용해 기존 컨테이너 이미지를 바탕으로 코드를 새 레이어로 추가합니다 도커를 사용하지 않는 환경에서 사용하기 좋습니다. 또한, 추가된 부분만 컨테이너 이미지 레지스트리에 푸시하기 때문에 상대적으로 시간이 더 적게 소모됩니다.
- docker : 로컬 도커 클라이언트로 도커 이미지를 생성합니다.
- cluster : 쿠버네티스 클러스터에서 사용할 컨테이너 이미지를 생성합니다. 구글 컨테이너 툴인 Kaniko를 사용합니다.
2.3. Fairing Deployer
컨테이너 이미지 생성이 완료되면 해당 이미지의 배포를 진행합니다.
Deployer를 통해서 이미지를 배포하고, 실행할 위치를 정의합니다.
제공하는 Deployer의 종류는 매우 다양합니다.
- job : 쿠버네티스 job 리소스를 사용해 학습을 시작합니다.
- tfjob : 쿠브플로우의 TFJob 컴포넌트를 사용헤 텐서플로우 학습 작업을 시작합니다.
- pytorchjob : 쿠브플로우의 PyTorchJob 컴포넌트를 사용해 파이토치 학습 작업을 시작합니다.
- gcpjob : GCP에 학습 작업을 보냅니다.
- serving : 쿠브플로우의 디플로이먼트와 서비스를 이용한 예측모델을 서빙합니다.
- kfserving : 쿠브플로우의 KFServing을 사용해 예측모델을 서빙합니다.
- gcpserving : 학습된 모델을 GCP 서빙 모델로 배포합니다.
3. Fairing 설치
페어링은 파이썬 3.6 버전 이상에서 사용할 수 있습니다.
3.1. 로컬 환경에서 Fairing 설치
pip install kubeflow-fairing
pip3 install kubeflow-fairing
pip show kubeflow-fairing
pip3 show kubeflow-fairing
pip 혹은 pip3로 쉽게 페어링을 설치할 수 있습니다.
또한, 로컬 환경에서는 도커가 설치되어 있어야 합니다.
docker version
sudo systemctl status docker
도커의 설치와 동작 여부는 해당 명령어로 확인할 수 있습니다.
도커 설치 방법은 다음 게시물을 참고 바랍니다.
https://seokii.tistory.com/203
3.2. Kubeflow의 Jupyter Notebook Server
쿠브플로우의 노트북 서버에서 제공하는 이미지는 페어링 패키지를 포함하고 있습니다.
따라서, 쿠브플로우의 주피터 노트북을 사용하는 경우에는 추가적인 설치과정이 필요하지 않습니다.
로컬 개발 환경과 쿠브플로우 주피터 노트북 서버 환경에서 실습에 대한 내용은
다음 게시글로 작성하도록 하겠습니다.
'MLOps' 카테고리의 다른 글
[MLOps] 쿠브플로우 카티브(Katib) 개념 이해와 설치하기 (0) | 2023.01.08 |
---|---|
[MLOps] 쿠브플로우 페어링(Fairing) mnist 학습하기 (2) | 2023.01.07 |
[MLOps] 쿠브플로우 주피터 노트북 서버 만들기 (0) | 2023.01.02 |
[MLOps] Ubuntu 20.04에서 docker 및 쿠버네티스와 kubeflow 설치하기 (0) | 2023.01.01 |
[MLOps] 쿠버네티스와 쿠브플로우란? (0) | 2022.12.29 |
댓글