3. 2. Project 소개 - (도둑) Jabayo
- 영상내 이상 상황 리포팅 서비스, Video understanding 분야
- 무인편의점 / 어린이집 대표 사례
- 이화여자대학교 황성주 교수 팀과 협업
- 중소 벤처 기업부 R&D 과제 + NIPA (IPA) 지원사업 (고성장 클럽)
6. Kubeflow 대표 컴포넌트
2. Project 소개 - on Kubeflow
Jupyter Notebook Easy GPU provisioning
Katb 하이퍼파라미터 튜닝
Pipeline ML Workflow 작성 (자동화)
Fairing building, training, and deploying ML models in a hybrid cloud env
TFJob, PyTorchJob CRD
Seldon, TF Serving Model serving
7. Kubeflow 0.5 Release!
- kfctl로 좀 더 쉬워진 kubeflow 설정 및 설치 과정
- Kubeflow hub UI의 개선과 Notebook UI가 좀 더 사용하기 쉽게 변경
- 노트북에 볼륨 마운트 할 수 있게 됨!
- Fairing : 로컬/ 클라우드 환경에서 손쉽게 KF component을 submit할 수 있는
library 제공
2. Project 소개 - on Kubeflow
8. DL team Infra team Output
0 day -오픈소스 모델 확보
-논문 구현
-퍼블릭 데이터 활용
-static GPU 할당
-Kubernetes on prem
-Kubeflow install
-Worker node drain
-Jupyter notebook
-Two stream 등 모델
-Kubernetes / Kubeflow on prem infra
-Storage(MINIO)
#1 -모델 확보 완료
-스캐폴드
-커스텀 데이터 확보 및 수집
-Kubeflow 리뷰
-Katib
-Pipeline
-Scaffold
-Custom dataset & models
#2 -Katib 활용 하이퍼파라미터
튜닝
-메트릭 갱신 리포트 자동화
작성
-Pipeline - 커스텀 데이터셋
업로드
-Kubeflow 리뷰
-Fairing
-Seldon
-Custom dataset & models
-Data pipeline
#3 -Watch 메트릭, 추론 자동화
-Fairing (실패)
-Multi-cluster 리뷰
-Storage sync 리뷰
(Rok)
-Watch pipeline run
#4 -모델 튜닝 / 앙상블 시작 -open-rok
3. 120 days log (3월~)
9. - 모델 확보 (Two stream 등)
- 퍼블릭데이터 + 모델 개발
- 한번에 한개의 문제 문제 해결
- Worker node drain
- 의존성을 최소화
- Kubeflow의 삽질이 모델 연구에 영향을 주지 않도록
- Kubernetes(Kubeflow) on prem infra with storage (minio)
4. Share - 0 day (3월)
DL team Infra team Output
0 day -오픈소스 모델 확보
-논문 구현
-퍼블릭 데이터 활용
-static GPU 할당
-Kubernetes on prem
-Kubeflow install
-Worker node drain
-Jupyter notebook
-모델확보 (Two stream 등)
-Kube / Kubeflow on prem infra with
storage(minio)
10. DL team Infra team Output
0 day -오픈소스 모델 확보
-논문 구현
-퍼블릭 데이터 활용
-static GPU 할당
-Kubernetes on prem
-Kubeflow install
-Worker node drain
-Jupyter notebook
-Two stream 등 모델
-Kubernetes / Kubeflow on prem infra
-Storage(MINIO)
#1 -모델 확보 완료
-스캐폴드
-커스텀 데이터 확보 및 수집
-Kubeflow 리뷰
-Katib
-Pipeline
-Jupyter notebook
-Scaffold
-Custom dataset & models
#2 -Katib 활용 하이퍼파라미터
튜닝
-메트릭 갱신 리포트 자동화
작성
-Pipeline - 커스텀 데이터셋
업로드
-Kubeflow 리뷰
-Fairing
-Seldon
-Custom dataset & models
-Data pipeline
-Kubeflow review report 2 (showcase)
#3 -Watch 메트릭, 추론 자동화
-Fairing (실패)
-Multi-cluster 리뷰
-Storage sync 리뷰
(Rok)
-Watch pipeline run
#4 -모델 튜닝 / 앙상블 시작 -open-rok
(Index) 120 days log (4월)
11. - Jupyter notebook
- 준비 완료 & 사용
- Scaffold
- DL team - Infra team간 협업 필요, DL team간 협업 및 공유 필요성 감지
- Scaffold & quick start
- 커스텀 데이터
- 수동으로 업데이트
- 자동화는 시기 상조
4. Share - sprint #1
DL team Infra team Output
#1 -모델 확보 완료
-스캐폴드
-커스텀 데이터 확보 및 수집
-Kubeflow 리뷰
-Katib
-Pipeline
-Jupyter notebook
-Scaffold
-Custom dataset & models
12.
13. 1.1. Jupyter Notebook : Easy GPU Node provisioning
Tensorflow + Fairing + Kubectl = Kubeflow Jupyter Notebook
“설치만 하면 얻게 되는 첫번째 이득”
4. Share - sprint #1
14.
15. 1.2. Scaffold
- 협업이 필요한 시점으로 파악.
- 유명 오픈소스 바탕으로 우리에 맞게 일부 커스텀
http://drivendata.github.io/cookiecutter-data-science/
참고) 원래는 git-flow에 코드리뷰 열심히 해요 :)
4. Share - sprint #1
17. DL team Infra team Output
0 day -오픈소스 모델 확보
-논문 구현
-퍼블릭 데이터 활용
-static GPU 할당
-Kubernetes on prem
-Kubeflow install
-Worker node drain
-Jupyter notebook
-Two stream 등 모델
-Kubernetes / Kubeflow on prem infra
-Storage(MINIO)
#1 -모델 확보 완료
-스캐폴드
-커스텀 데이터 확보 및 수집
-Kubeflow 리뷰
-Katib
-Pipeline
-Scaffold
-Custom dataset & models
-Kubeflow review report 1 (showcase)
#2 -Katib 활용 하이퍼파라미터
튜닝
-Pipeline 데이터셋 업로드
-Kubeflow 리뷰
-Fairing
-Seldon
-Katib
-Data pipeline (one-off)
-Custom dataset & models
#3 -Watch 메트릭, 추론 자동화
-Fairing (실패)
-Multi-cluster 리뷰
-Storage sync 리뷰
(Rok)
-Watch pipeline run
#4 -모델 튜닝 / 앙상블 시작 -open-rok
(Index) 120 days log (5월)
18. 4. Share - sprint #2
DL team Infra team Output
#2 -Katib 활용 하이퍼파라미터
튜닝
-Pipeline 데이터셋 업로드
-Kubeflow 리뷰
-Fairing
-Seldon
-Katib
-Data pipeline (one-off)
-Custom dataset & models
- Katib를 이용한 하이퍼파라미터튜닝
- Data pipeline 작성 (One-off run 형태)
19.
20. 2.1. Katib 개요: 하이퍼파라미터 튜닝
- 하이퍼파라미터 튜닝?
모델 학습시 설정하는 변수 값을 최적의 결과로 낼 수 있게 조정하는 행위
Learning Rate, Dropout Rate, hidden layer 수, batch size, activation function 등등…
- Katib(secretary)의 모델은 Google vizier(prime minister)에서 출발
- 검색 알고리즘을 기준으로 목표한 수치까지 계속 Train job을 실행하여 그 결과를 수집한다.
여러가지 검색 알고리즘 제공 : Grid, Random, Bayesian, hyperbans, nasrl
- StudyJob이라는 Custom Kubernetes Resource기 때문에 yaml CRD 형태로 사용 가능
- 모델 내 변경작업이 없이 Metric Collector가 수집하는 Log 형태만 변경하여 사용
- Worker, Metric Collector 두 개의 컴포넌트로 실행되며, 작성가능한 UI툴을 제공
4. Share - sprint #2
22. 2.1. Katib StudyJob Apply
- Validation accuracy 0.5 목표
- 30 requestcount : 하나의 Gpu Node(worker)당 30번 실행
- parameter 설정
batch_size, learning_rate, dropout, optimizer
- Search Algorithm : random
- requestNumber: 2 -> 2개의 Node(worker) 동시 진행
=> 총 60개 Trial이 실행된다
돌려 놓고 퇴근 !
4. Share - sprint #2
28. 2.1. Katib 하이퍼파라미터 튜닝
- 카티브는 on kubernetes!
- 튜닝에 사용될 Hyperparameter는 입력단으로만 정의
- 기존 모델소스의 수정없이 Log 양식만 변경하면 사용
(Keras에서는 Log용 callback 함수만 추가하면 끝!)
4. Share - sprint #2
29. 2.1. Katib 리뷰
GOOD!
- hyperparameter tuning tool WITHOUT CODE CHANGE!
- 적용하고 기다리고 적용하고 기다리고 를 대신해 주기 때문에 체감시간 단축 -> 다른 작업을 더 할
수 있다!
- Random Search만으로도 괜찮은 튜닝이 가능하다.
- Train 자체를 Katib에서 실행하게 된다.
BAD!
- UI가 전혀 사용자 친화적이지 않음 : 제공하는 Rest API를 사용하는게 더 편함.
- 여러 개의 검색알고리즘을 지원하지만 아직은 Grid, Random 말고는 적용하기가 쉽지가 않다.
- Hyperparameter 범위를 int, double, categorical, discrete를 지원하지만 Pair로 지정할 수 없는 것이
아쉬움
- 목표 Metric을 하나만 설정할 수 있다
- UI를 통해 생성하는 StudyJob은 정상적으로 Metric Collector에 수집되지 않을때가 있다.
4. Share - sprint #2
30.
31. 2.2. Pipeline : ML Pipelines for Kubeflow
Cloud native ML Workflow 생성툴 (자동화)
- Argo에서 파생
- REST api 지원
- Pipeline SDK 제공
Jupyter Notebook에 pipeline SDK 설치 후 Pipeline 작성/ 배포 가능
- 관리를 위한 UI 제공
- Pipeline, Experiments, Run으로 구성
- One-off , Recurring 형태의 Run을 지원
4. Share - sprint #2
33. 2.2. Pipeline - One-off Job 1. 데이터셋을 생성하는 Pipeline (2) Run
4. Share - sprint #2
Run 생성 Run 실행
34. 2.2. Pipeline 리뷰
GOOD!
- SDK를 제공되기 때문에 손쉽게 pipeline 생성이 가능하다.
- recurring run (cron)이 가능하기 때문에 다양한 응용이 가능하다.
- 하나의 실행단위가 곧 Docker container이기 때문에 파이프라인 자체의 dependency는
없음.
BAD!
- 제공해주는 예제 자체는 GCP기준으로 되어 있어 GCP 환경이 아니라면 예제 실행에
어려움. 다른 컴포넌트들도 마찬가지
- 생성된 파이프라인는 수정할 수 없기 때문에 변경시 새로 생성해야 한다. API호출 모듈과
coupling이 있어서 불편.
- Recurring Run 실행시 완료된 Run의 관리 필요.
- 그렇지 않으면 종료된 수십, 수천여개의 컨테이너가 남게됨
- Cause Exception. getKubeletContainers failed: rpc error
- Node status : Not Ready
4. Share - sprint #2
35. DL team Infra team Output
0 day -오픈소스 모델 확보
-논문 구현
-퍼블릭 데이터 활용
-static GPU 할당
-Kubernetes on prem
-Kubeflow install
-Worker node drain
-Jupyter notebook
-Two stream 등 모델
-Kubernetes / Kubeflow on prem infra
-Storage(MINIO)
#1 -모델 확보 완료
-스캐폴드
-커스텀 데이터 확보 및 수집
-Kubeflow 리뷰
-Katib
-Pipeline
-Scaffold
-Custom dataset & models
-Kubeflow review report 1 (showcase)
#2 -Katib 활용 하이퍼파라미터
튜닝
-Pipeline 데이터셋 업로드
-Kubeflow 리뷰
-Fairing
-Seldon
-Katib
-Data pipeline (one-off)
-Custom dataset & models
#3 -Watch 메트릭, 추론 자동화
-Fairing (실패)
-Multi-cluster 리뷰
-Storage sync 리뷰
(Rok)
-Watch pipeline run
#4 -모델 튜닝 / 앙상블 시작 -open-rok
(Index) 120 days log (6월)
36. DL team Infra team Output
#3 -Pipeline - 모델 배포 및 추론
자동화
-Fairing (실패)
-Multi-cluster 리뷰
-Storage sync 리뷰
(Rok)
-Watch pipeline run
4. Share - sprint #3
- Watch pipeline run
- 너무 불편한 Katib UI 개선 니즈
- watch + action + slack ui
- Fairing
- 실패
- on prem contribute 고민
- GPU scale out 니즈, 멀티클러스터 리서치 시작
42. 3.2. Fairing : Python SDK for building, training, and deploying ML models
“사용자의 ML Model을 다양한 대상(local, cloud)에 Train / Deploy할 수 있는 라이브러리”
4. Share - sprint #3
Check fairing-example.html
43. 3.2. Fairing : Python SDK for building, training, and deploying ML models
Fairing on Prem
- 사용자가 생성한 Train model를 docker image 로 변환하여 Train job으로 submit
- Docker image 생성시 kaniko를 사용
- kaniko는 이미지 생성시 Context 저장소를 GCS, S3, Local, Git만 사용하기 때문에
(S3는 AWS만 가능) on prem 환경에서 사용시 Local Dir을 사용해야 이미지 생성이 가능
- But, 현재 fairing stable 버젼은 Cluster Context Source가 GCS, S3만 사용 가능
4. Share - sprint #3
46. 3.2. Fairing
OnPrem Context support
- Context 내용을 저장할 Storage필요 -> 파이프라인이 사용하는 Minio를 사용?
- Minio client를 사용하여 Upload! -> Kaniko는 minio bucket이 마운트된 PV를 local:// 로 context 로딩
5. Roadmap - Fairing on prem context support
47. 3.2. Fairing
Discuss fairing On-prem on kubeflow fairing slack channel
5. Roadmap - Fairing on prem context support
49. Appendix - Kubecon Europe 2019 (Spain)
# Stateful(storage), Security, Multi cluster
50. We are hiring!
두다지 - AI Service Accelerator
- Kubeflow, Kubernetes, Cloud native ecosystem
- AI Service, AI toolkits
- Open source project를 통한 성공 사례를 꿈꾸는...
shhong@dudaji.com