Chapter 3. MLOps는 무엇인가?
절차
- Raw data 수집 및 처리
- 데이터 분석
- 학습을 위한 데이터 처리
- 모델 구축, 학습 및 테스트
- 모델 검증 및 조정
- 모델 배포 및 모니터링
계획 -> 빌드 -> 테스트 -> 배포 -> 모니터링 -> 피드백 (루프 돌면서 작업함)
먼저 수동 구현 해본다.
- 데이터 저장소
- 원시 데이터 처리
- 데이터 분석
- 모델 구축 단계
- 모델 배포
- 모델 서비스
- 데이터 수집
- 데이터 저장소로 전달된 데이터
지속적인 모델 전달 과정 추가
- 피처 저장소: 데이터를 저장하는 저장소 추가함
- 데이터 분석: 분석 결과를 통해 새 모델을 구축할지 현재 모델을 업데이트 할지 결정
- 모델 구축 및 분석 자동화: 데이터를 자동으로 처리하고 모델을 구축, 학습, 평가 및 검증함, 자동화로 최적의 모델을 만들어야 한다.
- 모듈화된 코드: 파이프라인과 그 구성 요소가 모듈화되도록 설정해야 함.
- 파이프라인 배포: 파이프라인을 배포
- 자동화된 학습 파이프라인: 파이프라인에는 서비스를 제공하는 모델이 포함되어 있고, 트리거 활성화 시 새 피처를 자동으로 가져오도록 설정되어 있음.
- 모델 레지스트리: 모델 클래스 및 가중치를 보관하는 저장 장소. 전체 실험 단계를 거치지 않고도 모델을 자주 업데이트하고 배포할 수 있음.
- 모델 서비스: 성능이 제일 좋은 모델을 모델 레지스트리에서 가져와서 서비스 활용
- 성능 및 사용자 데이터 수집: 새 데이터 수집, 수집한 데이터는 피처 저장소에 넣음
- 학습용 파이프라인 트리거: 활성화 하면 배포된 모델에 대한 자동 학습 파이프라인 시작하고, 피처 저장소에서 파이프라인으로 피처를 검색할 수 있게 한다.
- 수동 트리거: 수동으로 학습 시작함
- 예정된 학습: 특정 시간마다 학습
- 성능 이슈: 성능 이슈 있을 때 학습
- 데이터 패턴의 변화: 데이터 패턴이 변하면 학습
Chapter 4. MLflow 소개
4장의 내용
- 실험 생성: MLflow 실험을 통해 모델 및 관련 지표를 그룹화할 수 있음
- tensorflow vs pytorch 비교
- 이상 징후 감지
- etc.
- 모델 및 지표 로깅: 모델을 모듈화된 형태로 저장하고 모델 실행과 관련된 모든 지표를 기록할 수 있음
- confusion matrix
- ROC curve
- etc.
- 모델 지표 비교: 여러 모델과 해당 지표를 한 번에 비교할 수 있음.
- 모델 레지스트리: MLflow는 모델 레지스트리를 구현할 수 있는 기능도 추가해서, 특정 모델이 어떤 단계에 있는지 정의할 수 있음, Databricks와 잘 통합될 수 있다.
- 로컬 배포: 로컬 서버에 배포하여 모델 inference를 테스트할 수도 있다. MLflow는 Amazon SageMaker, Microsoft Azure, Google Cloud 및 Databricks와 같은 인기 있는 Cloud 서비스에 모델을 배포할 수 있도록 지원함.
Scikit-learn을 사용한 MLflow
개발환경
- Python
- Numpy
- Scikit-learn
- Pandas
- Matplotlib
- Seaborn
- MLflow
예제에 사용되는 데이터
예제 코드를 따라하면 할 수 있는 것
- 로컬에서 mlruns 폴더 내에 로그가 기록됨
- 저장된 로그는 mlflow ui -p 1234 로 실행하여 localhost:1234에서 확인 가능
- 저장된 모델은 다시 불러올 수 있음
- MLflow 검색은 SQL WHERE 절을 기반으로 검색 수행 가능
- metrics."auc_score" >= 0.90
- metrics."auc_score" >= 0.90 AND parameters.anomaly_weight = "5"
- metrics."auc_score" >= 0.90 AND parameters.anomaly_weight = "10"
- metrics."auc_score" >= 0.90 AND parameters.anomaly_weight = "15"
PyTorch를 사용한 MLflow
개발 환경
- Torch
- Torchvision
- CUDA
- CuDNN
- Sklearn
- MLflow
- numpy