gume-gume / MLOps-project

2 stars 5 forks source link

:rocket: What is MLOps?

MLOps는 DevOps의 목표와 마찬가지로 사용자에게 서비스를 빠르게 전달하는 개발 문화입니다. DevOps에서는 “코드 통합, 테스트, 배포, 테스트, 모니터링” 의 파이프라인을 자동화하여 이 목표를 달성합니다. MLOps는 DevOps에 ML이 추가된 것입니다.

:bell: Purpose

💾 Data

📚 Tech Stacks

Ubuntu Python3.9.7 Postgres FastAPI Redis Docker


## 🎬 Phase 0 (2022.05.01 - 2022.05.22) ### Phase 0 흐름도 image ### 1. 개발환경 세팅 - git-flow : github flow 채택 - github에서 사용할 issue와 pr 템플릿 생성 - pre-commit을 통한 code 스타일 통일 - python 3.9.7 - gcp를 통해서 unbuntu20.04 서버생성(ssh접속) ### 2. 머신러닝 파이프라인 구축 - load_model, preprocessing, labeling 등등의 함수 작성 - issue : joblib라이브러리를 통해서 로컬에 있는 큰 사이즈의 model을 바로 서버에서 로드할 경우 속도 문제 발생 ### 3. PostgreSQL & Docker를 활용한 데이터베이스 구현 - docker를 통해서 postgreSQL 데이터베이스 세팅 - postgreSQL에 데이터 적재 ### 4. FastAPI를 활용한 Rest API 서버 구현 - reidsai를 통한 model serving - exception 정의 및 handler 작성 #### Tree 구조 ```bash 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 ``` ## 🎬 Phase 1 (2022.05.23 - 2022.06.28) ### Phase 1 흐름도 스크린샷 2022-06-28 오후 12 57 21 ### 0. 데이터 변경 - Income 데이터의 경우 csv 파일이라 제한적임 - 실시간 데이터 수집을 위해 Income Dataset -> Upbit의 BTC, ETH, ADA 코인 수집 ### 1. Mlflow & Minio를 활용한 실험관리, 모델관리 - Mlflow를 이용하여 실험관리, 모델관리 - Minio를 이용한 모델 저장 스토리지로 사용 ### 2. 지속적 통합/ 지속적 배포 - GitHub Actions과 Docker Compose를 이용하여 CI CD 실현 - 모델을 더 빠른 주기로 서빙하면서도 신뢰도 및 정확도를 유지하는 것을 목표 #### CI CD 구조 스크린샷 2022-06-28 오후 2 23 12 ### 3. 지속적 훈련 - Airflow를 활용하여 BTC, ETH, ADA 4시간 간격으로 데이터 수집과 검증 자동화 - Airflow를 활용하여 수집된 데이터 자동 훈련 #### Tree 구조 ```bash 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 ```