2024. 2. 11. 15:44ㆍTIL
머신러닝 모델 개발 절차
- 문제 정의: 모델 개발 당위성을 가설로 제시
- 해결할 문제 정의와 머신러닝 필요성 판단
- 문제 해결의 성공 여부를 결정하는 지표
- 가설을 통해 풀려고 하는 문제의 중요도를 가늠
- 데이터 수집 및 분석: 훈련용 데이터
- 모델 훈련 및 테스트
- 모델 배포
- 모델 성능 A/B 테스트
- 온라인 서비스에서 새 기능의 효과를 객관적으로 측정하는 방법
- 새로운 기능을 론치함으로 생기는 위험부담을 줄이는 방법
- 보통 사용자들을 2개의 그룹으로 나누고 시간을 두고 관련 지표를 비교
- 한 그룹은 기존 기능에 그대로 노출 (control)
- 다른 그룹은 새로운 기능에 노출 (test)
- 가설에서 영향받는 지표를 미리 정하고 시작하는 것이 일반적
- 전체 배포 여부 결정
머신러닝 모델 개발 시 자주 발생하는 문제점들
- 훈련용 데이터 셋 관리
- 어떻게 훈련용 데이터셋을 수집했는가?(lable 데이터 비율, bais 유무)
- 어떻게 이 데이터를 보관하고 관리할 것인가?
- 다양한 feature들을 어떻게 구현했고 관리할 것인가?
- ML 모델 빌딩시 사용 하이퍼 파라미터 관리
- 다양한 러닝 알고리즘과 하이퍼 파라미터를 자동으로 테스트 가능한가?
- 모델 빌딩에 사용한 하이퍼 파라미터를 저장하고 쉽게 찾을 수 있는가?
- 모델 검증 결과를 저장하고 쉽게 찾을 수 있는가?
- ML 모델 관리
- 모델별 사용 알고리즘/하이퍼파라미터/트레이닝셋/테스트 결과를 유기적으로 보관(버전닝 필요)
- 모델 재연성 (reproducibility)이 아주 중요
- 모델 론치 프로세스
- 만든 모델을 어떻게 프로덕션으로 론치할 것인가?
- 개발된 모델의 이양 관련하여 프로덕션 엔지니어링 팀과의 협업이 중요해짐
- 프로세스가 자동화가 필요
- 모델 AB 테스트 프로세스
머신러닝 모델 개발 프레임워크의 필요성
다양한 회사에서 자체 프레임워크를 개발하였다(우버의 미켈란젤로, 에어비앤비의 빅헤드(BigHead), 넷플릭스의 메타플로우(Metaflow), 리프트의 플라이트(Flyte)). 클라우드 업체들도 프레임웍을 SaaS 형태로 제공하였다(AWS의 SageMaker, Google Cloud의 TFX, Kubeflow, and AI Platform, Azure의 Machine Learning).
ML 모델에서 가장 중요한 것은 훈련 데이터이다. 시간이 지나면서 훈련에 사용한 데이터와 실제 환경 데이터가 다르게 변하는 것을 Data Drift라 한다. 이를 모니터링하는 것이 중요하며 주기적으로 ML 모델을 다시 빌딩해주는 일이 필요하다. MLOps는 DevOps와 비슷하게 ML 모델을 계속해서 빌딩, 배포하고 성능을 모니터링한다. 모델 서빙 환경과 모델 성능 저하를 모니터링하고 필요시 escalation 프로세스를 진행한다. MLOps 엔지니어는 데이터 엔지니어 기술, DevOps 엔지니어 기술, 머신러닝 관련 경험/지식이 있어야 한다.
- 데이터 엔지니어가 알아야 하는 기술
- 파이썬/스칼라/자바
- 데이터 파이프라인과 데이터 웨어하우스
- DevOps 엔지니어가 알아야 하는 기술
- CI/CD, 서비스 모니터링, …
- 컨테이너 기술 (K8S, 도커)
- 클라우드 (AWS, GCP, Azure)
- Infrastructure As Code (Configuration As Code)
- 머신러닝 관련 경험/지식
- 머신러닝 모델 빌딩과 배포
- ML 모델 빌딩 프레임워크 경험 (SageMaker, Kubeflow, MLflow)
SageMaker 소개
Amazon SageMaker는 머신러닝 모델 개발을 처음부터 끝까지 해결해주는 AWS 서비스이다. 크게 트레이닝 셋 준비(Ground Truth), 모델 훈련, 모델 검증, 모델 배포와 관리 기능을 제공한다. Tensorflow/Keras, PyTorch, MXNet같은 다양한 머신러닝 프레임워크를 지원한다. 기본적으로 Python Notebook(SageMaker 모듈)을 통해 모델을 훈련한다. AutoPilot이라는 코딩 불필요 모델 훈련 기능 제공한다.
xgboost 학습 알고리즘은 SageMaker에서 가장 효율적인 학습 알고리즘이다. 앙상블 기반 Decision Tree를 Gradient Boosting으로 분산환경에서 구현한 알고리즘으로 분류와 회귀 문제 모두에 적합하며 속도와 성능 측면에서 좋은 결과를 보여준다.
SageMaker 실습
AutoPilot은 SageMaker Canvas에서 제공되는 AutoML 기능으로 모델빌딩을 위한 훈련용 데이터 셋을 제공하면 자동으로 모델을 만들어준다. AutoPilot은 먼저 데이터 분석(EDA: Exploratory Data Analysis)을 수행한다. 오래 걸리고 돈이 더 들지만 품질이 더 좋은 Standard 옵션과 10-15분 정도로 빠르게 모델을 만들어주는 Quick 옵션 중 하나를 선택하면 다수의 머신 러닝 알고리즘과 하이퍼 파라미터의 조합에 대해 머신 러닝 모델을 만들고 훈련과 테스트한 뒤, 테스트 결과를 기록한다.
'TIL' 카테고리의 다른 글
| 단어 임베딩과 문장 임베딩 (1) | 2024.02.20 |
|---|---|
| 텍스트 마이닝 개요 (0) | 2024.02.19 |
| Regression 모델 만들기 (0) | 2024.02.09 |
| Classification 모델 만들기 (0) | 2024.02.08 |
| 데이터 EDA와 머신러닝 소개 (2) | 2024.02.06 |