/mlops-practice

The goal of this practice is Understanding of MLOps principles and best practices.

Primary LanguageJupyter Notebook

mlops-practice

Reference By

아래 자료들로 학습하였습니다.

  1. Blogs about Deep Learning and NLP
  2. https://ml-ops.org/
  3. 개발자를 위한 MLOps : 추천 시스템 구축부터 최적화까지
  4. 머신러닝 서비스 구축을 위한 실전 MLOps

Here are more reads on my blog

  1. [Lecture] 머신러닝 엔지니어 실무 - ML Pipeline 이해
  2. [Github, CI/CD] Github Actions self hosted runner with own GPUs
  3. Machine Learning
  4. Deep Learning

Table of Contents

  • ML개발을 하다보면 Raw data를 조금씩 변경시켜 가면서 즉, feature engineering을 해보면서 Data 의 version이 생겨나게 된다.
  • Data version마다 '최종', '최종최종', '이게 진짜 좋음' 이렇게 파일명으로 개발할 것인가?!
    software engineering에서 Git을 사용하는 이유는 분명 있다.
  • Tool: DVC, PyTorch, Pandas, ...
  • model 개발 과정을 보면 Data Processing -> Train & Evaluate -> Raw Data -> 다시 Data Processing....과정의 반복이다.

  • 그리고 Production level로 AI model이 serving되고 그 이후에 성능 개선이 되어서 version up 된 model이 serving되기도 한다. 아니면 아직 serving되기 전에도 여러 성능비교를 하며 model version이 update되기도 한다.

  • Model 결정시 어떤 data 저장이 필요한가

    • model 소스 코드
    • Evaluation Metric 결과
    • 사용한 parameters
    • model.pkl 파일
    • 학습에 사용한 data
    • 데이터 전처리용 코드
    • 전처리된 data ... 등 이런 정보들이 함께 저장되어야 추후에 '해당 모델의 성능을 재현 할 수 있다.'
  • Tool: MLflow, PyTorch, Pandas, ...

  • 이 이전의 단계까지 Model 학습과 평가... 이런 과정들을 거쳐서 최종 모델 학습의 산물인 Check Point가 나온다.

  • 모델 배포란, 학습한 모델의 체크포인트와 모델이 사용하는 정적 파일(아티팩트)를 패키지로 묶어서

  • 그 모델을 Model Registry에 보관하고 거기에 보관된 모델을

  • 서버에 배포하는 과정이다. 배포된 모델은 서버에서 서비스되어 사용자에게 모델 결과를 제공해 줄 수 있다.

  • Tool: BentoML, NVIDIA Triton, GCP VertexAI, AWS Sagemaker

[Feature Store]

MLOps Pipeline

데이터 흐름, 모델 학습, 서빙, 모니터링 등의 전체적인 아키텍쳐.

위에서 아래로의 흐름으로 흘러가는 pipeline이라고 생각하고, 그 순서대로 적었습니다.

1. 학습 데이터 준비

데이터의 유형

  • 정형 데이터

    • 표 형태로 구조화된 데이터
    • 데이터베이스, CSV 파일 과 같은 데이터 소스에서 얻음
  • 비정형 데이터

    • 제한적인 구조를 가지지 않는 데이터
    • 텍스트, 오디오, 이미지, 비디오, 예를 들어 트위터의 트윗 역시 비정형 데이터임. (특정 구조를 따르지 않기 때문에)
  • 반정형 데이터

    • 구조적이지만 명확하게는 정의되지 않는 데이터
    • XML, JSON, HTML 등
  • 실시간 데이터

    • 이미 저장된 것이 아니라 실시간으로 데이터가 수집되고 분석해야 하는 데이터

    • 스트리밍 데이터

    • 금융 거래에서 주식 거래 및 금융 거래 데이터는 실시간으로 처리되어야 하며 시장 조건에 따라 신속한 결정을 내려하기 때문에 실시간 데이터이다.

    • IoT 데이터

    • IoT 센서 데이터에서 환경 데이터를 센싱해서 실시간으로 분석해서 환경 상태를 모니터링 해야 하는 경우, 이 환경 데이터는 실시간 데이터이다.

데이터 저장소

  • DBMS
    • 정형 데이터 를 효율적으로 저장, 관리, 검색하기에 용이
    • PostgreSQL, MySQL..
  • NoSQL Database
    • 반정형, 비정형 데이터를 저장하고 관리하기 용이
    • MongoDB, Cassandra, Redis...
  • Data Warehouse
  • Data Lake

Related Engineering:

2. Feature Engineering

데이터 품질 관리

  • 데이터 품질이란 데이터가 정확하고 신회할 수 있는지임
  • 데이터 프로파일링, 데이터 클리닝, 중복 제거, 이상치 감지 등 데이터 표준화 같은 기술과 도구를 사용해서 품질을 검사

데이터 보안

  • 데이터를 무단 엑세스, 변조, 유출 또는 파괴로부터 보호하는 것을 의미
  • 데이터 유출로 인한 법적 문제로 고려 필요

Related Engineering:

  • [Data Cleansing]
  • [Feature Selection]
  • [Feature Reduction]
  • [Data Augmentation]
  • [Data Scaling & Encoding]
  • Data Management

3. 모델 학습 및 최적화

Related Engineering:

4. 모델 평가

Related Engineering:

3-1. Model Validation

  • 학습 과정의 오류를 조기 진단.

3-2. Model Evaluation

  • 모델의 출력 분호 및 다양한 매트릭으로 정밀 분석

3-3. Behavior Testing

  • 서비스 UX 측면의 동작을 반영한 실제 시나리오 모델 결과를 테스트

5. 모델 offline(학습시키면서 내부적으로 확인하는) 모니터링

6. 모델 배포

7. 모델 online(실제 서비스가 나가있는 상태에서의) 모니터링

MLOps pipeline practice

  • Tools: Airflow, BentoML, GitLab CI/CD,

Quick Start

  1. make conda virtual evn
conda creat -n mlops-prac python=3.8

# To activate this environment, use
conda activate mlops-prac

# To deactivate an active environment, use
conda deactivate