머신러닝 시스템의 workflow
머신러닝 시스템의 workflow는 위와 같이 순환적인 구조를 이루고 있다. 지금 다니고 있는 직장에서도 위와같은 workflow로 진행이된다.
하지만 위의 과정을 자동화 또는 시각화하여 개발자, 연구자가 쉽게 접근할 수 있도록 해야 일의 능률이 상승한다.
비지니스 문제 정의
ML이 아닌 다른 알고리즘으로 해결이 가능한가?
- 위의 물음은 ML을 연구하고 개발하는 사람이라면 가지고 있어야하는 마음가짐 중 하나이다. 굳이 ML을 사용하지 않아도 해결될 문제를 ML로 해결하려는 것은 문제를 더 어렵게 만드는것이다. (ML프로젝트의 실패확률 매우 높음)
성능 목표
- 우리가 적용하려는 product가 어느정도의 리스크를 가지고 있으며 그 리스크를 해결할 만큼의 성능이 나오는 지 파악을 할 수 있어야한다.
- 특정기간 모델을 사용할 수 없는 리스크
- 특정 표본에 대한 잘못된 예측을 반환하는 리스크
- 시간이 지남에 따라 모델 정확도나 공정성이 떨어지는 리스크
- 모델을 유지보수하기 위한 기술 및 리소스가 손실될 리스크
- 만약 초기에 성능 목표(지표)를 객관적으로 설정하지 못한다면 프로젝트의 실패로 까지 이어질 수 있다.
비용 제약
투명성, 설명가능성 수준
- ML, DL 모두 블랙박스이긴 하나 왜 이러한 결과가 나왔는지에 대한 설명이 조금이나마 필요하다. 예를 들어 CNN의 CAM과 같이 모델의 결과가 어떠한 특징에 영향을 많이 받았는지에 대한 정보를 알 수 있다.
데이터 탐색 및 전처리
적합한 데이터 찾기 -> EDA -> 특성 선택 -> 데이터 수집 파이프라인 정의
EDA
- 데이터의 패턴을 이해하고 의미가 있을 것으로 추정되는 특성 추출
모델 개발
모델 학습 시 입출력 요소
- 데이터 셋
- parameter
- 출력 데이터
- evaluation metrics
- 학습된 모델
- log
모델 배포
모델 배포 시, 고려사항
- 모델 reproduction
- 버전관리(모델, 데이터, 로그, 파라미터)
- 서빙 방식
- 결과 제공 방법(API, on-device, 등)
- 워크플로우 수행시간, 자원 요구사항, 응답지연 요구사항
모델 모니터링 및 피드백 - 모니터링 요소
모델의 성능 및 서비스 문제를 조기에 감지하기 쉽게하고 연구자가 명확한 지표를 낼 수 있도록 도와준다.
- 자원 모니터링
- Task별 CPU, GPU, Memory, dist, Network 사용량
- 상태 점검(health check)
- 머신러닝 지표 모니터링
- 온라인 지표
- 오프라인 지표
- 각종 인프라 지표 모니터링