Quantization, 적용 후 성능 비교하기 (Pytorch, Cifar10)
·
MLOps
글에 주의가 필요합니다.. 양자화를 실제로 현업에 적용해 본 경험이 없고 짧게 공부한 지식으로 작성되었습니다. 피드백은 환영입니다. 감사합니다.양자화의 목표는 성능을 유지하면서 모델을 가볍고 빠르게 만드는 것입니다. 이걸 왜 안 해?필요한 곳빠른 연산이 필요해: 빠른 응답이 필요한 곳 (latency를 낮춰야 할 때)모델이 가벼워야 해: 모바일 디바이스, 임베디드 시스템, 엣지 컴퓨팅 등 자원이 제한된 상황이번 글에서는 양자화의 개념을 간단히 이해한 후, Cifar 10 데이터셋을 분류하기 위한 모델을 학습한 뒤 양자화하고 성능을 비교해 보겠습니다.아젠다Quantization 개념 이해하기Quantization 기법 알아보기 (PTQ와 QAT)모델 성능 비교하기1. Quantization 개념 이해하기하..
데이터 드리프트 감지하기 (w/ BentoML, Evidently AI, Fluent Bit)
·
MLOps
BentoML Data Drift Detection데이터 드리프트는 훈련에 사용된 데이터와 실제로 모델이 적용되는 시점의 데이터 간 분포 차이가 발생하는 현상을 말합니다.이러한 분포의 차이는 모델 성능을 저하시킬 수 있습니다. 이에 데이터 드리프트를 감지하고 대응하는 것은 중요합니다.아젠다데이터 드리프트를 감지하는 방법BentoML로 인퍼런스 데이터 로깅Fluent Bit으로 로그 수집Kafka에 수집된 로그 전달Evidently AI로 데이터 드리프트 감지1. 데이터 드리프트를 감지하는 방법데이터 드리프트를 감지하는 데에는 여러 가지 방법이 존재합니다. 주요 접근 방식은 위 사진에서 알 수 있듯이 훈련 데이터(기준 데이터)와 인퍼런스 시점의 실시간 데이터를 비교하여 데이터 분포의 차이를 감지하는 것입니..
BentoML로 패키징하여 배포하고 Prometheus로 모니터링
·
MLOps
블로그에서 필요한 코드들은 https://github.com/Ssuwani/bentoml_prometheus 에 정리해두었습니다.0. 들어가며BentoML은 모델을 쉽게 패키징하고 배포할 수 있는 오픈소스 라이브러리입니다. 또한, 배포된 모델에 대한 온라인 모니터링을 지원합니다.이 글에서 수행할 과정을 간단히 그림으로 나타내면 아래와 같습니다.PyTorch로 모델 학습하고 평가하기BentoML로 모델 패키징하여 Containerize 한 뒤 배포하기Prometheus로 모델 모니터링하기1. PyTorch로 Fashion MNIST 모델을 학습하고 평가하기이 글에서 데이터 & 모델은 중요한 부분은 아니라 PyTorch 공식 문서의 Quickstart 예제를 따라 데이터를 가져오고 모델을 학습한 뒤 평가해보..
BigQueryML 튜토리얼 따라하기
·
MLOps
이 글은 https://cloud.google.com/bigquery/docs/create-machine-learning-model?hl=ko 의 내용을 수행한 기록입니다. 다수의 기업에서 GCP의 BigQuery를 데이터 웨어하우스 혹은 데이터 레이크로 채택하여 사용하고 있다. ML 프로젝트에선 이 데이터를 이용해서 모델을 학습하고 배포한다. 여기서 어디서 학습을 진행하느냐에 따라 데이터 전송 비용이 발생한다. 데이터 전송을 어떻게 하느냐에 따라 크고 작은 비용이 발생한다. 학습 시 추가로 필요한 증분 데이터만을 전달하는 게 좋겠지만 매 학습 때 마다 필요한 데이터를 전부 전송하기도 한다. 빅쿼리 ML은 사용자가 직접 SQL 쿼리를 통해 머신러닝 모델을 생성, 학습, 평가할 수 있는 서비스이다. 이제 ..
1.1. Kubeflow 대시보드 내에 MLFlow 임베딩하기
·
MLOps
참고한 블로그 - https://medium.com/dkatalis/kubeflow-with-mlflow-702cf2ebf3bf 앞선 포스팅에서 Kubeflow를 설치했다. 그리고 MLflow도 설치했다. 이번 포스팅의 목적은 Kubeflow 대시보드에 MLFlow가 하나의 탭으로 추가하는 것이다. Kubeflow의 Central Dashboard에서 하나의 탭을 클릭할 때 다양한 엔드포인트로 라우팅 하기 위해 VirtualService를 사용한다. (주피터, Katib, pipeline 등) 우리의 목적은 mlflow 버튼을 클릭하면 mlflow tracker UI로 라우팅 해야 하므로 추가로 virtual service를 생성해야 한다. 아래 yaml을 배포하자. kubectl apply -f mlf..
1. 로컬환경의 K8s에 Kubeflow와 MLflow 설치 - Kubeflow와 MLflow
·
MLOps
먼저 Kubeflow는 이름에서도 유추할 수 있듯이 쿠버네티스 환경에서 동작하는 ML Platform이다. 쿠버네티스 환경이 필요하다. 로컬에 구축한 뒤 Kubeflow와 MLFlow를 설치해 보자. 1. 로컬 환경에 Kubernetes 설치 이를 위한 단계가 정말 간단한데, Docker Desktop을 설치하고 Kubernetes를 활성화해주면 된다. Mac 환경에 설치 Windows 환경에 설치 실행한 뒤 아래와 같은 단계만 수행하면 된다. 설정 -> Kubernetes -> Enable Kubernetes -> Apply & restart 왼쪽 아래에 쿠버네티스 이모지와 함께 초록색으로 표시되면 성공적으로 설치된 것이다. 2. Kubeflow 설치 먼저, Kubeflow를 설치하기 위해선 다음과 같..
0. 개요 - Kubeflow와 MLflow
·
MLOps
kubeflow는 ML 프로젝트를 위한 End-to-End 플랫폼이다. 그러니까 A to Z까지 다 할 수 있다는 의미이다. 그럼에도 ML 프로젝트에서 중요한 머신러닝 모델 라이프사이클 관리 측면에선 MLFlow를 통해 쉽고 잘할 수 있다. 내가 생각하는 MLOps를 위한 최소한의 컴포넌트들은 아래와 같다. Model Registry를 위해 MLflow 를 사용할 것이고 그 외 모든 컴포넌트를 위해 Kubeflow를 사용할 것이다. 이를 위해 다음과 같은 포스팅을 이어 나갈까한다. 1. 로컬환경의 K8s에 Kubeflow와 MLflow 설치 2. Data Engineering 3. ML Engineering 4. ML Serving
MLflow로 Model LifeCycle 관리
·
MLOps
1. Why mlflow 이 그림을 엄청 많이 봤다. 이 그림을 통해 보통 하고자 하는 말은 ML 시스템을 운영하기 위해 ML Code 이외에도 다양한 컴포넌트가 많다는 것이다. 하지만, 머신러닝 애플리케이션에서 가장 핵심적인 컴포넌트는 모델이라고 생각한다. 이 핵심적인 "모델"이 어떻게 학습되었고 어떻게 저장되었으며 어떻게 배포되어 있는지 이를 제일 잘할 수 있도록 설계된 툴이 MLflow가 아닐까. 2. What we need mlflow의 설명을 보자, "An open source platform for the machine learning lifecycle". 모델의 모든 생애주기 관리하기 위한 플랫폼으로서 mlflow는 발전하고 있다. 그렇게 된다면 유지관리가 엄청 편해지겠지만 그렇기엔 아직 성..