머신러닝 모델 개발 과정
1. 문제 정의
모델 개발 당위성을 가설로 제시
📌 가설
- 어떤 문제를 해결하려고 하는가?
- 왜 문제 해결에 머신러닝이 필요한가?
- 문제 해결의 성공 여부를 결정하는 지표는 무엇인가?
- 지표는 어떻게 계산되며, 성공/실패를 나누는 기준은 무엇인가?
► 가설을 통해 풀고자 하는 문제의 임팩트와 중요도를 가늠할 수 있음
2. 데이터 수집 및 분석(훈련용 데이터)
3. 모델 훈련 및 테스트(평가 데이터)
4. 모델 배포
- 처음에는 1명 정도의 소수의 사람들에게만 배포
- 괜찮으면 점진적으로 인원수를 늘리는 방향으로 진행
5. 모델 성능 A/B 테스트
- 온라인 서비스에서 새 기능의 임팩트를 객관적으로 측정할 수 있는 방법
- 사용자들을 2개의 그룹으로 나누고 시간을 두고 관련 지표를 비교
- control : 기존 기능에 그대로 노출시킴
- test : 새로운 기능에 노출시킴
- 가설에서 영향받는 지표 + 성공/실패의 기준을 미리 정하고 시작하는 것이 일반적임
6. 전체 배포 여부 결정
머신러닝 모델 개발시 자주 발생하는 문제점
1. 훈련 데이터셋 관리
데이터 수집과 관련된 모든 것이 문서화되어야 한다.
- 어떻게 훈련용 데이터 셋을 수집했는가?
- label 데이터 비율
- bias 존재 여부
- 어떻게 이 데이터들을 보관하고 관리할 것인지?
- 다양한 feature들을 어떻게 구현했고 관리할 것인가?
- 데이터 과학자가 코딩을 할 수 있는지 여부가 아주 중요해짐
- 유닛 테스트를 통한 버그 줄이기
- 모델 개발 속도 단축
- Feature Store가 필요해짐
- 이미 만들어진 feature들의 공유와 재사용성이 중요해짐
2. ML 모델 빌딩 시 사용한 하이퍼 파라미터 관리
- 다양한 러닝 알고리즘과 하이퍼 파라미터를 어떻게 손쉽게 테스트 가능한가?
- 자동화가 관건
- 모델 빌딩에 사용한 하이퍼 파라미터를 저장하고 쉽게 찾을 수 있는가?
- 모델 검증 결과를 저장하고 쉽게 찾을 수 있는가?
3. ML 모델 관리
- 모델별 사용 알고리즘/하이퍼파라미터/트레이닝셋/테스트 결과를 유기적으로 보관해야함
- 버전닝(versioning)이 필요해짐
- 모델 재연성 (reproducibility)이 아주 중요해짐
4. 모델 론치 프로세스
- 만든 모델을 어떻게 프로덕션으로 론치할 것인가?
- 프로덕션 엔지니어링 팀과의 협업이 중요해짐
- 이러한 프로세스가 자동화가 필요
5. 모델 A/B 테스트 프로세스
► 위의 문제들을 해결하기 위한 머신러닝 프레임워크의 필요성이 강조됨
머신러닝 프레임워크를 사용하게 되면, 기업 내 데이터팀의 구성원들이 바뀌더라도 같은 프레임워크를 사용하기 때문에 모든 것들이 기록에 남고 좀 더 관리가 용이해진다.
MLOps
- 개발 직군에서 DevOps에 해당됨
- 개발자가 만든 코드를 시스템에 반영하는 프로세스 (CI/CD, deployment)
- 시스템이 제대로 동작하는지 모니터링, 이슈 감지시 escalation 프로세스, On-call 프로세스
- MLOps 팀의 목적 : 머신러닝과 관계된 여러 프로세스를 하나의 파이프라인으로 하나의 프레임워크에서 관리할 수 있도록 해준다.
→ 목적을 달성하는데 필요한 툴 : 머신러닝 프레임워크 - MLOps의 역할 :
- DevOps와 동일하나 개발자 코드가 아니라 ML 모델이 대상
- ML모델 지속적으로 빌딩, 배포, 성능 모니터링
- 데이터 엔지니어, 데브옵스가 알아야 하는 기술, 머신러닝 관련 경험과 지식이 모두 필요 → 주로 시니어가 함
Data Drift
: 시간이 지나면서 훈련에 사용한 데이터와 실제 환경의 데이터가 다르게 변화하는 현상 → 모델 성능 저하를 일으킴
- 이를 해결하기 위해 주기적으로 ML 모델을 다시 빌딩해줘야 함
머신러닝 프레임워크 'SageMaker'
: 머신러닝 모델 개발을 처음부터 끝까지 해결해주는 AWS 서비스
- 훈련 데이터 셋 준비 (Ground Truth)
- 모델 훈련
- 모델 검증
- 모델 배포와 관리 : API end point, Batch serving
- 다양한 머신러닝 프레임웍을 지원 : Tensorflow/Keras, PyTorch, MXNet
- 다양한 개발방식 지원
- 기본적으로 Python Notebook : 모델 훈련
- AutoPilot : 코딩이 불필요한 모델 훈련
- 다른 클라우드 업체들도 비슷한 프레임워크 제공
대표 기능
1. SageMaker Studio
머신러닝을 개발할 수 있는 통합개발환경(IDE)
- 다수의 프로그램을 호스팅하는 환경 : Jupyter Notebook, R Studio, Canvas, Code Editor, Studio Classic
- 다양한 기능 :
- Data Wrangler: Processing, Data Sources, Feature Store
- Studio Notebooks: Algorithms, Autopilot, JumpStart
- One-Click Training: Experiments, Automatic Model Tuning, Debugger
- One-Click Deployment: Multi-model Endpoints, Model Monitor, Pipelines
2. SageMaker Jumpstart
: 다양한 범위의 문제를 해결할 수 있는 pre-trained된 큰 오픈소스 기반의 모델들을 한 곳에 모아둔 중앙저장소와 같은 역할
(Hugging Face Models, Kaggle의 Models와 유사함)
- Foundation models
- Computer vision models
- Natural Language processing models
3. Canvas (Low/No code)
: 머신러닝 모델 개발을 Low code나 No code로 할 수 있게 해줌
- Data analysis and preprocessing : 데이터 전처리
- Model selection : 분석에 맞게 어떤 알고리즘을 선택할 것인지
- Hyperparameter optimization : 하이퍼파라미터 최적화(그리드 서치)
- Model training and evaluation : 모델 학습 및 평가
- Model deployment (and monitor) : 모델 배포 및 모니터링
📌 XGBoost(eXtreme Gradient Boosting)
: 앙상블 기반의 의사결정나무를 Gradient Boosting으로 분산환경에서 구현한 알고리즘 (랜덤 포레스트)
- 딥러닝을 하지 않고 머신러닝 알고리즘 중에서도 SageMaker 파이썬 모듈이 제공하는 가장 성능이 좋은 학습 알고리즘
- 분류, 회귀 문제 모두에 적합
- 과적합 가능성 있음
- 속도와 성능 측면에서 좋은 결과
SageMaker AutoPilot실습
AutoPilot
: SageMaker Canvas에서 제공되는 AutoML 기능
📌 AutoML
: 모델 빌딩을 위한 훈련 데이터 셋을 제공하면 자동으로 모델을 만들어주는 기능
► 기능
- 데이터 분석, EDA
- Python Notebook 코드를 나중에 다운로드 해서 직접 개선 후 사용 가능
- 빌드 옵션
- 1) Standard
- 느린 속도, 많은 비용
- 품질 좋음
- 다수의 머신러닝 알고리즘과 하이퍼 파라미터의 조합에 대해 머신러닝 모델 생성/훈련/테스트/결과기록 수행
- 2) Quick
- 빠른 속도, 적은 비용
- 성능 낮음
- 1) Standard
마무리하며
주니어 데이터 분석가, 주니어 데이터 과학자에게 가장 중요한 것은 기본기!
내가 적은 TIL들 생각날때마다 들여다보면서 꾸준히 복습하자 🍀