이번 포스팅은 HONG KONG University와 NVIDIA에서 2021년 10월에 발표한 SegFormer라는 논문을 리뷰하려고 한다. SegFormer는 이름에서부터 알 수 있듯이 Transformer를 Semantic Segmentation task에 적용한 모델이다.(최초 시도는 아님) 저자들은 위 그래프를 통해 SegFormer모델이 파라미터 수 대비 모델의 정확도(IoU)가 Efficient 하다는 것을 강조하고 있다. 어떤 방법으로 좋은 성능을 낼 수 있었는지 SegFormer에 대해 자세히 알아보자. Abstract SegFormer는 다음 두가지 특징을 가지고 있다. 1) SegFormer는 multiscale feature를 output으로 뽑는 계층적 구조의 Transformer..
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..
이번 포스팅에는 2022년 1월 FAIR에서 발표한 'A ConvNet for the 2020s' 라는 논문을 리뷰하려고 한다. 해당 논문은 2020년에 ViT(Vision Transformer)가 발표된 이후 Vision task에서 Transformer에 연구가 집중되고 있지만 CNN에 Transformer 구조 및 최신 기법들을 적용한 ConvNeXt라는 모델을 제안하고 있으며 높은 성능을 통해 CNN이 여전히 강하다는것을 주장하는 논문이다. 보라색은 CNN, 주황색은 Transformer 기반 Network이며 버블의 크기는 모델의 FLOPs를 의미한다. 저자들이 제안한 ConvNeXt가 ImageNet-1K, 22K 데이터셋 모두 현재 SOTA인 Swin Transformer의 accuracy를..
본 포스팅은 MLOps를 위해 필요한 k8s 지식을 정리하는 것을 목적으로함 MLOps에서 k8s가 필요한 이유. MLOps를 위해서는 크게 다음과 같은 작업이 필요하다. Reproducibility - 실행 환경의 일관성 & 독립성 Job Scheduling - 스케줄 관리, 병렬 작업 관리, 유휴 자원 관리 Auto-healing & Auto-scaling - 장애 대응, 트래픽 대응 자동화 -> 이것들을 Docker(Containerization), k8s(Container Orchestration)를 통해 해결할 수 있다. Kubernetes Identity - Container Orchestration 여러명이 함께 서버를 공유하며 각자 모델학습을 돌리고자 할때 스케줄을 미리짜거나 gpu자원을 ..