MLOps - From Model-centric to Data-centric AI (Andrew Ng 발표)
(Andrew Ng 교수님 최고… 상냥보스…)
How to improve AI systems
- AI systems = Code (Model) + Data
- Model도 중요하고 Data도 중요하다.
- 성능을 높이려면 두가지 방법이 있다.
- Model을 개선하기
- SOTA 모델을 사용하기
- Hyperparameter 튜닝
- Data를 개선하기
- 데이터 품질 개선하기
- Baseline 모델이 있을 때, 성능을 더 높여야한다면 어떤 방법을 먼저 사용하겠는가?
- 교수님 팀의 실험으로는 Data를 개선하는 것이 제일 효과적이였다고 한다.
Data is food for AI
- 데이터 준비 과정 vs 데이터 사용 과정 (80:20)
- 데이터는 준비하는 과정이 훨씬 더 오래 걸린다.
- 모델이 데이터를 직접적으로 사용하는 부분은 전체 프로세스에서 굉장히 작은 부분이다.
- 하지만 99%의 AI연구는 이 분야에 집중한다.
Lifecycle of an ML project
- Scope project
- 문제를 구체화한다.
- Collect data
- 데이터의 label이 제대로 되어있는가?
- 데이터 label이 정확한지 어떻게 알 수 있는가? 어떻게 평가할 것인가?
- 어떤 특정 labelling 방식을 정하고, 모든 데이터셋에서 이 방식을 유지해야한다. 그렇지 않으면 데이터에 노이즈가 생긴다.
- 데이터 품질을 일정하게 유지해야한다.
- 이것은 systematic하게 만들자! == MLOps
- 데이터 labelling을 해주는 인력에게 샘플을 요구하자. Consistency를 확인해야한다.
- 데이터의 label이 제대로 되어있는가?
- Train data
- 트레이닝
- Error analysis
- 개선점 찾기
- Model-centric? Data-centric?
- Deploy in production
- Systematically check for concept drift / data drift
- 고객이 원하는 수준은 항상 높아짐
- Flow data back to retrain / update model regularly
- Systematically check for concept drift / data drift
Model-centric vs Data-centric
- Model-centric view
- 데이터는 모을 수 있는 만큼 모은다.
- 데이터 내부에 있는 노이즈에 잘 대응할 수 있는 모델을 만든다.
- 데이터는 고정하고, 지속적으로 모델을 개선해나간다.
- 모델 튜닝을 어떻게 해야 더 좋은 성능을 얻을 수 있을까?
- Data-centric view
- 여러 툴을 이용해서 데이터 품질을 높인다.
- 이 경우, 여러 모델을 동일한 데이터로 학습할 수 있다.
- 대신 모델을 고정하고, 데이터를 지속적으로 개선한다.
- 데이터를 어떻게 개선해야 (e.g. 데이터 추가, augmentation, labelling) 더 좋은 성능을 얻을 수 있을까?
- Augmentation, 데이터 추가 - Input x를 바꾸는 방법
- Give more consistent definition for labels - Labels y를 바꾸는 방법
Clean vs Noisy data
- Clean + Consistent한 데이터는 중요하다!
예시 1: 500개의 데이터가 있는데, 그 중 12%는 노이즈가 끼어있다. 이 때 뉴럴넷의 성능을 높이는 방법에는 두가지가 있다: 1. 노이즈를 제거하기, 2. 새로운 데이터 500개를 얻어낸다 (i.e. 트레이닝 데이터를 2배로 늘린다). 어떤 방식이 더 좋을까?
데이터셋에서 노이즈를 제거함으로써 얻는 이득을 트레이닝 데이터를 키우는 방식으로 얻어내려면, 거의 3배의 데이터를 모아야한다.
이미 큰 데이터셋을 쓰고 있다면… 더 많은 데이터를 모으기는 쉽지 않다 :)
작은 데이터셋을 쓰고 있다면 데이터 품질과 툴은 더욱더 중요해진다.
MLOps
- AI software has a more iterative development process, compared to the traditional software development.
From ‘big data’ to ‘good data’