이번글에서는 BentoML의 Yatai라는 component를 쿠버네티스 클러스터에 설치하여 Yatai Web UI를 통해 간편하게 모델을 배포 및 관하는 방법에 대해 소개하려고 한다. 얼마전에 BentoML v1.0.0이 preview release 되었는데 눈 여겨볼 변경점은 다음과 같다. bentoml 커맨드에 yatai login 이라는 하위 명령어와 옵션을 통해 외부 컨테이너에서 쿠버네티스 환경의 yatai에 접근하여 모델을 push할 수 있다. (API 토큰, Yatai endpoint 활용) model과 bentos(bento service)를 구분지어 관리하고 runner라는 원격 python worker에서 inference를 실행할 수 있도록 한다. 위와 같은 변경점을 새로 적용하면서 ..
Content 1. Define Persistent Volume Claim 2. Kubeflow Pipeline 3. Preprocessing 4. Hyperparameter Tuning (weights and biases) 5. Model Training & Test (kfp) 6. Model Versioning (mlflow) 7. Model Serving (bentoml) 8. Monitoring (prometheus & grafana) 지난 포스팅에서 전처리, 하이퍼파라미터 튜닝, 학습 및 평가를 수행해 보았다. 이제 mlflow의 Experiments를 Model Versioning을 해보고 원하는 모델을 직접 Serving을 할 차례이다. 마지막으로는 Kubernetes의 리소스 관리를 위한 ..
Content 1. Define Persistent Volume Claim 2. Kubeflow Pipeline 3. Preprocessing 4. Hyperparameter Tuning (weights and biases) 5. Model Training & Test (kfp) 6. Model Versioning (mlflow) 7. Model Serving (bentoml) 8. Monitoring (prometheus & grafana) 지난 포스팅에서 Kubeflow pipeline을 작성하여 Kubeflow dashboard에 pipeline을 등록하였다. 이제 pipeline을 실행하면서 각 컴포넌트의 결과값을 살펴보자 3. Preprocessing surface pipeline에서 creat..
이번 포스팅부터 몇차례에 걸쳐 Image Classification을 Kubernetes 환경에서 MLOps tool을 통해 전체적인 파이프라인을 구축하는 작은 프로젝트를 작성하려고 한다. 프로젝트에서 활용한 쿠버네티스 환경 및 Prerequisite는 아래와 같다. (쿠버네티스 환경 세팅 및 설치 방법은 여기를 참고) Kubernetes Cluster OS: Ubuntu 18.04.6 LTS GPU: Tesla V100 x 4 Docker v20.10.8 Kubeadm(on-premise) v1.21.7 kubelet,kubectl v1.21.7 Client OS: mac(Intel) Docker v20.10.8 kubectl v1.21.7 kubeflow: v1.4.0 helm v3.7.1 kusto..
본 포스팅은 MLOps를 위해 필요한 k8s 지식을 정리하는 것을 목적으로함 MLOps에서 k8s가 필요한 이유. MLOps를 위해서는 크게 다음과 같은 작업이 필요하다. Reproducibility - 실행 환경의 일관성 & 독립성 Job Scheduling - 스케줄 관리, 병렬 작업 관리, 유휴 자원 관리 Auto-healing & Auto-scaling - 장애 대응, 트래픽 대응 자동화 -> 이것들을 Docker(Containerization), k8s(Container Orchestration)를 통해 해결할 수 있다. Kubernetes Identity - Container Orchestration 여러명이 함께 서버를 공유하며 각자 모델학습을 돌리고자 할때 스케줄을 미리짜거나 gpu자원을 ..