/ml-data-prep-workshop

Primary LanguageJupyter NotebookMIT LicenseMIT


ML 데이터 준비 및 ML Workflow 프로토 타이핑



1. 워크샵 배경


1.1 Andrew Ng 의 "데이터 준비" 의 중요성에 대한 의견

ML Workflow 를 개발하기 위해서는 "ML 데이터 준비" (데이터 수집, 정제, 탐색, 분석, 이해 및 정리) 를 하는 과정이 약 80% 정도를 차지 한다고 합니다. Andrew Ng 는 "From Model-Centric To Data-Centric" 으로 바꾸어야 한다고 합니다. 이유는 많은 ML 알고리즘 및 코드는 많이 발전하였고, 이미 검증이 되었다고 합니다. 하지만 "데이터 준비" 는 많이 과소평가 되고, "낮은 데이터 품질" 로 인해서 ML Workflow의 개발 속도의 저하 및 Production 시에 낮은 모델 추론 성능이 나온다고 합니다.

Andrew_Ng_quote.png

소스:

2. 워크샵 개요


머신 러닝 문제의 해결을 위해서는 문제 정의, 데이타 준비, 모델 훈련 알고리즘 선정, 모델 훈련, 튜닝, 모델 배포 및 추론의 기본 ML Workflow가 있습니다. ML Workflow 를 개발하기 위해서는 "ML 데이터 준비" (데이터 수집, 정제, 탐색, 분석, 이해 및 정리) 를 하는 과정이 약 80% 정도를 차지 한다고 합니다. 이번 세션에서는 테블러 (Tabular) 및 아미지에 대한 데이터 준비를 통하여 ML Workflow 프로토타이핑을 해보겠습니다. 테블러 데이터는 “고객 이탈” 데이터를 준비해서, SageMaker XGBoost, AutoGluon 을 통해 모델 훈련을 하고 로컬 추론을 합니다. 이미지 데이터는 COCO, Cifar 10 데이터를 준비하여 Tensorflow, Pytorch, SageMaker 내장 알고리즘을 통해서 모델 훈련을 각각 하고, 로컬에서 추론을 하는 ML 프로토타이핑 을 배우겠습니다.

이 워크샵에서는 Tabular(CSV 포맷) 및 이미지 데이터의 준비를 SageMaker Notebook 을 통해서 빠른 ML 프로토타이핑을 실습 해보는 과정을 준비 했습니다.

2.1 Tabular(CSV 포맷) 데이터 준비 및 ML 프로토 타이핑

tabular_prep_summary.png

2.2 이미지 준비 및 ML 프로토 타이핑

image_prep_summary.png

3. 워크샵 추천 선수 지식

3.1. 선수 지식

  • AWS Cloud 일반 지식 (S3, EC2, IAM 등) (초급/중급 정도 수준)
  • Python 코딩 (Pandas, Numpy 패키지 초급/중급 정도 수준)
  • ML 기초 지식 수준 (Jupyter Notebook 사용 경험 있음)

3.2. 추천 지식

4. 실습 환경

4.1 Cloud Formation 으로 SageMaker Notebook 생성

4.2 수동으로 SageMaker Notebook 생성

ml.t3.xlarge 에서 테스트 완료 되었습니다. 이 노트북 인스턴스 타입을 사용 해주세요.

5. 주요 소스 코드


 |-tabular
 | |-1.1.xgb_churn.ipynb 
     - 고객 이탈 데이터를 준비, SageMaker XGBoost 훈련, 로컬 추론, SHAP 분석 함.
 | |-1.2.autogluon_churn.ipynb
     - 고객 이탈 데이터를 준비, AutoGluon Tabular 훈련, 로컬 추론, 피쳐 중요도 확인
 | |-src
 | | |-train_xgb.py
     - 1.1.xgb_churn.ipynb  의 XGBoost 훈련 코드
 | | |-tabular_utils.py
     - 유틸리티 함수들

 |-image-classificaton
 | |-1.1.download_data.ipynb
     - COCO, Cifar 10 데이터 준비
 | |-1.2.structuring_data.ipynb
     - 이미지 분류 폴더 생성 및 이미지 복사
          
 | |-2.1.tensorflow_preprocessing.ipynb 
     - TFRecord 파일 생성
 | |-2.2.tensorflow_training.ipynb 
     - SageMaker Tensorflow 프레임워크로 훈련, 로컬 추론
 | |-training_tensorflow
 | | |-tensorflow_train.py
     - 2.2.tensorflow_training.ipynb 에서 사용한 Tensforflow 훈련 코드
 | | |-requirements.txt     
     - 파이썬 디펜던시 파일

 | |-3.1.pytorch_preprocessing.ipynb 
     - 이미지 리사이징 하여 저장
 | |-3.2.pytorch_training.ipynb
     - SageMaker PyTorch 프레임워크로 훈련, 로컬 추론      
 | |-training_pytorch
 | | |-pytorch_train.py
     - 3.1.pytorch_preprocessing.ipynb  에서 사용한 PyTorch 훈련 코드

 | |-4.1.builtin_preprocessing.ipynb 
     - SageMaker 내장 이미지 분류 알고리즘을 위해 RecordIO 파일 생성
 | |-4.2.builtin_training.ipynb 
     - SageMaker 내장 이미지 분류 알고리즘으로 모델 훈련

 | |-src
 | | |-m_utils.py
     - 유틸리티 함수들

A. 참조 자료


공통

Tabular (CSV 형식의 데이터)

Image