pizzaplanet

[참관후기] AI Tech Talk For Devs 본문

Participation

[참관후기] AI Tech Talk For Devs

scio 2019. 2. 17. 14:58




AI TechTalk 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 시간에 많이 느꼈다.

알아듣지 못한 부분도 많았고 몸으로 많이 부딪혀 봐야겠다 라는 생각.





Comments