일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- gcp
- 코딩테스트
- OPENHACK
- entity
- rl
- BOAZ
- 스터디 잼
- aws
- ainize
- Backend.AI
- SageMaker
- Open Hack
- 머신러닝
- GDG Campus
- kakao
- re:Invent
- 구글스타트업캠퍼스
- seq2seq
- API
- Tensorflow 2.0
- Community Day
- 오픈소스해커톤
- Speech
- SW중심대학
- 뉴비톤
- CSIP
- 해커톤
- Qwik Start
- Conference
- Ground Truth
- Today
- Total
pizzaplanet
[참관후기] AI Tech Talk For Devs 본문
- 딥러닝 및 TensorFlow 모델 개발의 동향, 전망, 경험 공유
- GPU 활용 방법 공유
- 래블업의 제품 Backend.AI(머신러닝 모델 개발에만 집중할 수 있음)도 소개
AI TechTalk for Devs = {
'Date' : '2019. 01. 21 19:00 ~ 21:30'
'Place' : '구글 스타트업 캠퍼스(삼성역)'
'Organized' : '래블업'
'Sponsored' : 'NVIDIA'
}
Schedule
TensorFlow2: New Era Of Eveloping Deep Learning models
TensorFlow가 2.0으로 넘어가며 생기는 변화들을 자세히 설명해주셨다.
1. 일관성 강화
- API를 대대적으로 정리
- 개발 편의성 개선
- 네임스페이스 일관성 유지
- 대규모 훈련 편의성 개선 -> 모델 개발 워크플로우 재정의
2. Eager 실행 기본 채택
- 텐서 연산자들을 코드가 실행될 때 즉시 평가함
- 실행속도 문제를 autoGraph로 해결
- 소스코드 변환기로 동작
- Eager 실행 모드에서도 계산그래프 생성해서 실행
3. Numpy와 유사한 수치 연산코드 작성 가능
4. API 정리
- 모토 : 중복구현은 하나만 남기고 모두 정리하자.
- 심볼을 모듈로 변경
- 함수 및 인수를 일관성 있게 변경
- 넘파이 등 라이브러리들과 동일하도록 통일
5. Karas API 채택
6. 전역객체 제거, 변수형식 변경
- tf.global_variables_initalizer() 등 다 없어짐. 같은 이름으로 파이썬과 C++로 넘어간 애가 값이 서로 다르게 나오는 점을 예방
- garbage collector 동작 추가 예정
7. session 제거
- 함수가 아닌데 함수처럼 동작, 사용하는 것이 문제
- 이제 일반 Python 코드처럼 짜고, decorator 입힘
- decorator가 실행단계에서 텐서플로 코드로 변경해줌(use autoGraph)
8. 분산훈련통합(멀티GPU 간편해짐)
- mirrored Strategy
9. tf.contrib의 제거
10. GPU 가속
- NVIDIA NCLL 없어짐
- Mirrored Strategy 구현 때 쓰임
11. TensorRT가 텐서2.0으로 들어오며 생긴 이점
- CPU 가속은 MKL 통한 지원
- 모델 서빙 부분
- 텐서플로 1.x코드를 2 코드로 자동 변환(tf.upgrade_v2)
- 자동 변환 불가능한 경우 업그레이드 레포트 제공
Q&A
Q : cnn은 tf.slim으로 대부분 하는데 앞으로 어떻게 하나?
A : tf.slim 버릴 것. tf.hub에서 별도 모델을 따로 제공 예정
Q : 파이썬 -> 스위프트로 이전 작업 한다는 것은 더 이상 파이썬에서는 지원하지 않는 것인가?
A : 파이썬은 메인으로 계속 지원 예정.
Q : 멀티 CPU + 멀티 GPU 가능한가?
A : 기본적으로 early reduce이기 때문에 Mirrored Strategy 같은 경우 뿌리고 모아서 distribute함
How to use gpu for developing AI
GPU가 나오면 매번 최신 모델을 사야하나? 이미 사용 중인 것으로 성능을 뽑을 수 없을까?
엔비디아가 어떤 큰 그림을 가져가는지 설명해주셨다
텐서코어
- 어떤 방식에서, 어떤 가속을 할 수 있는지가 이슈
- 4x4x4 텐서 연산을 가속, 각각 데이터는 반정밀도 데이터에서만 연산
-
- Optimizer NHWC tensor layout
- 모델 사이즈를 절반으로 가능
- 배치를 늘려 학습시간 단축 가능
- using half precision
- 배치사이즈를 줄이고 빠르게 학습 가능
- nvidia profile을 사용하여 텐서코어가 잘 도는지 확인
ex) nvprof -t 20 --print-gpu-trace python main.py --fp16 / datasets
Inference
- TensorRT는 NVIDIA가 만들어서 배포중
- 실제 모델만 돌릴 때 모델 사이즈가 4GB라도 300MB만 먹는 경우가 있어 메모리가 남아 산업군에서 라이트 버전을 원함
- 그래서 v100의 라이트 버젼 T4 출시.
- Inference Server(multi gpu support) 제공.
- TensorRT를 쓰면 좋은 점
- GPU 최적화가 잘 되어 있다. 최대 5배 빨라짐
- Inference Server를 kubeflow 이용하여 서빙 가능
- load balancer를 gpu level로 해서 성능 최대 출력 가능
NVIDIA는 머신러닝으로 드라이브 중
- RAPIDS. Open gpu data science
- nvidia - gpu cloud : 디펜던시 고려하여 성능 잘 뽑을 수 있게 docker 제공 중
- framework별로 제공
Q&A
Q : 타이탄의 포지션은?
A : 쿠다 베이스는 연구자에게 워크스테이션 레벨용으로 제공. 지포스는 게임용
Q : RAPIDS를 사용하여 배포하면 multi cluster 되는 것처럼 UI가 나오는지
A : 현재 버전 0.4인데 0.5에서 가능할 듯.
Q : v100에서 PCI 그런 것에 따라 성능차가 있는가?
A : 싱글이면 10%정도 차이. 멀티 경우 통신량에 따라 디펜던시도 있고, 공식 벤치마크로는 30%, 2.5배까지 차이가 있다. 통신량이 얼마나 강한 네트워크인가에 따라 영향을 받고 멀티 GPU를 썼을 때 트래픽이 얼마나 차지하는지에 따라 영향을 줌
Toward tf.keras from tf.estimator - from tensorflow 2.0 perspectives
모델만 연구하고 싶다면 어떻게 해야 할까?
1. One day One Model이 가능할까?
ML Modeler의 하루 : 출근하며 논문 리딩, 오전까지 코드 짜고, 오후에 파라미터 맞추고 디버깅, 퇴근 전 훈련 및 평가 Submit!
논문은 쏟아져 나오고 있고 정답은 없다. 최대한 많은 모델 만들어서 평가해보는 것이 최고. 논문 보고 모델 만드는 것이 모델러의 능력
빠르게 모델을 만들기 위해 반복되는 일을 재사용 하자
- 데이터 로딩 파이프 라인 구현 -> dataloader_using tf.data.Dataset
- 트레이닝 루프 구현(멀티지피유 + 로깅) -> estimator.train()으로 제공
- model import, export 구현 -> extimator.export_savemode()
- Tensorboard summary 이쁘게 볼 수 있게 구현
One day One Model을 위해 모델 빌딩에 집중할 환경을 사용해야한다.
- 반복 될 일을 하지 않아도 되도록 나온 것이 tf.estimator이다.
- 그러나 외면받음. 실제로 텐서 2.0에서 제외
- 모델을 위한 그래프 구현 -> build_model()
2. tf.estimator이 외면 받은 이유
estimator은 프레임워크 안의 프레임워크 격이었다. tensor 안에 estimator이 있음.
반드시 같이 써야하는 tf.data.Dataset의 진입 장벽과 이미 tf.session 방식에 익숙해진 유저에게 다시 또 새로운 스타일을 강제했기 때문
3. keras
- build_model 파트를 독립적으로 분리
- mode_config / train_config를 분리
- customKerasModel을 tf.keras.model -> subclassing 해서 생성
- tf low level API로 구현한 코드와는 호환되지 않음
tf.get_variable / tf.Variable 호환 X
4. Tensorflow를 보며
오픈소스의 성장과 몰락을 보는 듯 했다. 일부 엔지니어 개발자만 잘 쓰는 오픈소스는 완성도와 상관 없이 대중화가 힘들다.
이를 위해 지속적인 설명과 이해를 구하며 유저와의 신뢰를 쌓는 시간이 필요하다.
대중화 된 대부분 오픈소스들은 이런 과정을 겪어왔다.
Just Model It : Backend.AI
래블업의 제품을 들어볼 수 있는 시간이었다.
미들웨어인 Backend.AI를 개발하여 이를 통해 오직 딥러닝 개발에만 집중할 수 있는 환경을 만들어 주었다.
기존에는 CUI환경에서만 가능하지만 곧 GUI가 나온다고 한다. 데모를 보았을 때 꽤 간단해 보여 한번 써보고 싶었다.
참가 소감
첫 트랙부터 실력자들이 많음을 깨달을 수 있었다. 특히 Q&A 시간에 많이 느꼈다.
알아듣지 못한 부분도 많았고 몸으로 많이 부딪혀 봐야겠다 라는 생각.
'Participation' 카테고리의 다른 글
[연사후기]Daily 만년 Junior들의 이야기 : 델리만주 (0) | 2019.02.24 |
---|---|
[참관후기] 2019 AWS Community Day - re:Invent (0) | 2019.02.17 |
[참관후기] 제9회 BOAZ BIGDATA CONFERENCE(3) (0) | 2019.02.17 |
[참관후기] 제9회 BOAZ BIGDATA CONFERENCE(2) (0) | 2019.02.17 |
[참관후기] 제9회 BOAZ BIGDATA CONFERENCE(1) (0) | 2019.01.27 |