MLOps는 DevOps의 목표와 마찬가지로 사용자에게 서비스를 빠르게 전달하는 개발 문화입니다. DevOps에서는 “코드 통합, 테스트, 배포, 테스트, 모니터링” 의 파이프라인을 자동화하여 이 목표를 달성합니다. MLOps는 DevOps에 ML이 추가된 것입니다.
- 머신러닝의 학습, 배포, 저장 자동화 라인 구현.
- 데이터 사이언티스트와 소프트웨어 엔지니어에게 협업 환경을 제공
- Income Dataset
- Perform Binary Classification to predict if Salary is greater than $50K
- git-flow : github flow 채택
- github에서 사용할 issue와 pr 템플릿 생성
- pre-commit을 통한 code 스타일 통일
- python 3.9.7
- gcp를 통해서 unbuntu20.04 서버생성(ssh접속)
- load_model, preprocessing, labeling 등등의 함수 작성
- issue : joblib라이브러리를 통해서 로컬에 있는 큰 사이즈의 model을 바로 서버에서 로드할 경우 속도 문제 발생
- docker를 통해서 postgreSQL 데이터베이스 세팅
- postgreSQL에 데이터 적재
- reidsai를 통한 model serving
- exception 정의 및 handler 작성
app
├── main.py
├── config.py
├── db
│ ├── database.py
│ └── models.py
├── routers
│ └── income.py
├── schemas
│ ├── request.py
│ └── response.py
├── service
│ └── app_service.py
└── utils
├── app_exceptions.py
├── handlers.py
├── request_exceptions.py
└── service_result.py
- Income 데이터의 경우 csv 파일이라 제한적임
- 실시간 데이터 수집을 위해 Income Dataset -> Upbit의 BTC, ETH, ADA 코인 수집
- Mlflow를 이용하여 실험관리, 모델관리
- Minio를 이용한 모델 저장 스토리지로 사용
- GitHub Actions과 Docker Compose를 이용하여 CI CD 실현
- 모델을 더 빠른 주기로 서빙하면서도 신뢰도 및 정확도를 유지하는 것을 목표
- Airflow를 활용하여 BTC, ETH, ADA 4시간 간격으로 데이터 수집과 검증 자동화
- Airflow를 활용하여 수집된 데이터 자동 훈련
main.py
app
├── config.py
├── db
│ ├── database.py
│ └── models.py
├── routers
│ └── income.py
├── schemas
│ ├── request.py
│ └── response.py
├── service
│ └── app_service.py
├── utils
│ ├── app_exceptions.py
│ ├── handlers.py
│ ├── request_exceptions.py
│ └── service_result.py
coin
├──coin_preict.py
├──coin_service.py
├──data_collection.py
├──data_verification.py
├──utiles.py
├──config.py
dags
├──btc_flow.py
├──eth_flow.py
└──ada_flow.py