-
모델 개발 프로세스
문제 정의 - EDA - Feature Engineering - Train - Predict
Research
고정된 데이터를 사용해 학습
환경에 모델을 배포
Production
웹, 앱 서비스에서 활용할 수 있게 함
모델에게 데이터를 제공하면서 예측 요청
모델의 결과 값이 이상한 경우 원인 파악
새로운 모델 성능이 더 안 좋다면 이전 모델을 다시 사용하기 위한 작업 필요
MLOps
MLOps= ML (Machine Learning) + Ops(Operations)
- 머신러닝 모델을 운영하면서 반복적으로 필요한 업무를 자동화시키는 과정
- 목표
- 머신러닝 모델 개발/운영에서 사용되는 문제, 반복을 최소화하고 비즈니스 가치를 창출하는 것
- 빠른 시간 내에 적은 위험을 부담하며 모든 단계에서 ML 프로젝트를 진행할 수 있도록 기술적 마찰을 줄이는 것
- MLOps 학습 방법
- 각 Component에서 해결하고 싶은 문제는 무엇이고, 문제 해결을 위해 어떤 방식을 활용할 수 있는지 학습
MLOps Component
- Server Infra
- 예상 트래픽
- 서버의 CPU, 메모리 성능
- Scale Up / Out이 가능한가
- 자체 서버 구축인지 클라우드 사용하는지
- Infra
- 클라우드: AWS, GCP, Azure, NCP 등
- 온 프레미스: 회사/대학원의 전산실에 서버 직접 설치
- Serving
- Batch Serving: 많은 데이터를 일정 주기로 한꺼번에 예측 (ex. Jupyter Notebook)
- Online Serving: 실시간으로 예측, 병목이 없어야 하고 확장 가능해야함
- 실험, Model Management
- 많은 실험 중 성능이 가장 좋은 모델 사용
- 모델 Artifact, 이미지 등을 저장하여 활용 (ex. pickle)
- 모델 생성일, 모델 성능, 모델 메타 정보 기록
- MLflow: 코드로 짜놓으면 자동으로 기록됨, 협업하기 좋음
- Feature Store
- 머신러닝 Feature를 집계한 Feature Store
- Research ML과 Production ML에서 똑같이 돌아가도록 구축
- FEAST: feature store의 유일한 라이브러리
- Data Validation
- Feature의 분포 확인, train 했을 때와 serving 했을 때 분포가 달라지는지 확인
- TFDV(Tensorflow Data Validation)
- AWS Deequ: 데이터 unit test, 데이터 퀄리티 측정
- Continuous Training
- Retrain: 새로운 데이터가 들어온 경우, 일정 기간마다, Metric 점수가 줄어든 경우
- Monitoring
- 모델의 지표, 인프라의 성능 지표 등을 잘 기록해야함
- 기록에 따라 추가로 아이디어를 얻을 수 있음
- AutoML
- AutoML에 넣기만 하면 모델을 생성해줌
처음부터 MLOps를 진행하는 것은 오히려 비효율적, MVP로 시작해서 하나씩 구축하는 방식으로
Further Question
1. MLOps가 필요한 이유 이해하기
AI 모델을 배포하고 유지보수, 고도화하는 것은 많은 리소스가 든다. 데이터 엔지니어링부터 데이터 사이언스, ML 엔지니어링에 이르기 까지 여러 팀에 걸친 협업과 전달이 필요하다. 따라서 이 모든 프로세스를 동기화하고 협력이 이루어지는 상태를 유지하려면 엄격한 운영 원칙을 적용해야 한다. ML에서는 이러한 문제만 해결하는 것이 힘든 부분들이 있기 때문에 MLOps의 필요성이 부각된다. MLOps는 머신러닝 실험부터 유지보수, 고도화까지 총망라한다.
2. MLOps의 각 Component에 대해 이해하기(왜 이런 Component가 생겼는가?)
1. Experiment(실험): 머신러닝 엔지니어들이 데이터를 분석하고, 프로토타입 모델을 만들며 학습 기능을 구현
2. Data Processing: 데이터 처리 단계
3. Model training: 모델 학습을 위한 알고리즘을 효율적으로 실행시켜줌
4. Model evaluation: 실험 환경과 상용 환경에서 동작하는 모델의 성능을 관찰
5. Model serving: 상용 환경에 모델을 배포하고 서빙하기 위해 다양한 추론 기능과 서빙 프레임워크 등 제공
6. Online experiment: 새로운 모델이 생성되었을 때, 이 모델을 배포하면 어느 정도 성능을 보일 것인지 검증하는 기능 제공
7. Model Monitoring: 상용 환경에 배포된 모델이 정상적으로 동작하고 있는지 모니터링
8. ML Pipeline: 상용 환경에서 복잡한 ML 학습과 추론 작업을 구성하고 제어하고 자동화
9. Model Registry: 머신러닝 모델의 생명 주기를 중앙 저장소에서 관리할 수 있게 함
10. Dataset and Feature Repository: 데이터 공유, 검색, 재사용, 버전 관리 기능
11. ML Metadata and Artifact Tracking: 산출물 관리, 실험 정보 관리3. MLOps 관련된 자료, 논문 읽어보며 강의 내용 외에 어떤 부분이 있는지 파악해보기
4. MLOps Component 중 내가 매력적으로 생각하는 TOP3을 정해보고 왜 그렇게 생각했는지 작성해보기
Data Processing: 데이터 전처리가 생각보다 모델 성능에 중요한 영향을 미친다는 것을 알게 되었다
Experiment: 프로젝트를 진행하면서 다른 누구보다 실험을 가장 많이 진행함으로써 얻게 되는 인사이트가 많은 것 같다. 실험을 하면서 성능이 향상되는 것을 보니 재밌었고 뿌듯해서 매력적이라고 생각한다.
Model Serving: 아직 모델을 배포해보지는 않았지만 실제로 배포해보고 사용자들이 사용해보도록 한다면 좋을 것 같다.'CS 공부 > AI' 카테고리의 다른 글
[Object Detection] Overview (0) 2023.05.02 Model Serving (0) 2023.04.27 Linux 쉘 스크립트 (0) 2023.04.25 파이썬 버전 관리 (0) 2023.04.25 소프트웨어 엔지니어링 (0) 2023.04.24