아래 자료들로 학습하였습니다.
- Blogs about Deep Learning and NLP
- https://ml-ops.org/
- 개발자를 위한 MLOps : 추천 시스템 구축부터 최적화까지
- 머신러닝 서비스 구축을 위한 실전 MLOps
- [Lecture] 머신러닝 엔지니어 실무 - ML Pipeline 이해
- [Github, CI/CD] Github Actions self hosted runner with own GPUs
- Machine Learning
- Deep Learning
- 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, ...
- Tool: Scikit-learn
-
이 이전의 단계까지 Model 학습과 평가... 이런 과정들을 거쳐서 최종 모델 학습의 산물인
Check Point
가 나온다. -
모델 배포란, 학습한 모델의 체크포인트와 모델이 사용하는 정적 파일(아티팩트)를 패키지로 묶어서
-
그 모델을
Model Registry
에 보관하고 거기에 보관된 모델을 -
서버에 배포하는 과정이다. 배포된 모델은 서버에서 서비스되어 사용자에게 모델 결과를 제공해 줄 수 있다.
-
Tool: BentoML, NVIDIA Triton, GCP VertexAI, AWS Sagemaker
- Model 성능 측정/수집
- 모델 offline(학습시키면서 내부적으로 확인하는) 모니터링
- ML pipeline 성능 측정/수집
- Model serving 성능 측정/수집
- 모델 online(실제 서비스가 나가있는 상태에서의) 모니터링
- 시계열 대시보드 구성
데이터 흐름, 모델 학습, 서빙, 모니터링 등의 전체적인 아키텍쳐.
위에서 아래로의 흐름으로 흘러가는 pipeline이라고 생각하고, 그 순서대로 적었습니다.
데이터의 유형
-
정형 데이터
- 표 형태로 구조화된 데이터
- 데이터베이스, CSV 파일 과 같은 데이터 소스에서 얻음
-
비정형 데이터
- 제한적인 구조를 가지지 않는 데이터
- 텍스트, 오디오, 이미지, 비디오, 예를 들어 트위터의 트윗 역시 비정형 데이터임. (특정 구조를 따르지 않기 때문에)
-
반정형 데이터
- 구조적이지만 명확하게는 정의되지 않는 데이터
- XML, JSON, HTML 등
-
실시간 데이터
-
이미 저장된 것이 아니라 실시간으로 데이터가 수집되고 분석해야 하는 데이터
-
스트리밍 데이터
-
금융 거래에서 주식 거래 및 금융 거래 데이터는 실시간으로 처리되어야 하며 시장 조건에 따라 신속한 결정을 내려하기 때문에 실시간 데이터이다.
-
IoT 데이터
-
IoT 센서 데이터에서 환경 데이터를 센싱해서 실시간으로 분석해서 환경 상태를 모니터링 해야 하는 경우, 이 환경 데이터는 실시간 데이터이다.
-
데이터 저장소
- DBMS
- 정형 데이터 를 효율적으로 저장, 관리, 검색하기에 용이
- PostgreSQL, MySQL..
- NoSQL Database
- 반정형, 비정형 데이터를 저장하고 관리하기 용이
- MongoDB, Cassandra, Redis...
- Data Warehouse
- Data Lake
Related Engineering:
데이터 품질 관리
- 데이터 품질이란 데이터가 정확하고 신회할 수 있는지임
- 데이터 프로파일링, 데이터 클리닝, 중복 제거, 이상치 감지 등 데이터 표준화 같은 기술과 도구를 사용해서 품질을 검사
데이터 보안
- 데이터를 무단 엑세스, 변조, 유출 또는 파괴로부터 보호하는 것을 의미
- 데이터 유출로 인한 법적 문제로 고려 필요
Related Engineering:
- [Data Cleansing]
- [Feature Selection]
- [Feature Reduction]
- [Data Augmentation]
- [Data Scaling & Encoding]
- Data Management
Related Engineering:
Related Engineering:
3-1. Model Validation
- 학습 과정의 오류를 조기 진단.
3-2. Model Evaluation
- 모델의 출력 분호 및 다양한 매트릭으로 정밀 분석
3-3. Behavior Testing
- 서비스 UX 측면의 동작을 반영한 실제 시나리오 모델 결과를 테스트
- Tools: Airflow, BentoML, GitLab CI/CD,
- 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