network compiling 간단하게

1. motivation

 

학습이 완료된 network를 deploy하려는 target hardware에 inference가 가능하도록 compile하는 작업

 

최적화 기법도 동반되어 사실상 속도에 가장 큰 영향을 미치는 작업

 

그러나 가장 복잡하면서 내용이 상당히 어려움

 

유명 제조사들에서 compile library를 제공함

 

NVIDIA의 TensorRT는 NVIDIA GPU에 최적화시켜 compile을 수행

 

Tensorflow의 Tflite는 여러 embedded device에 성능을 보장해줌

 

apache의 TVM은 Tflite와 비슷한 기능들을 제공?

 

 

2. 문제점

 

compile library마다, 적용하는 모델마다 성능에 차이가 있음

 

compile library에 따른 모델별 inference 속도 비교

 

 

기본적으로 compile을 수행하면 inference 속도가 상당히 상승한다는 것을 알 수 있음

 

그러나 모델이나 library에 따라 어느정도 차이가 있다는 것이 조금 아쉽다면 아쉬운점?

 

 

3. layer fusion

 

compile 과정에서 layer fusion같은 최적화 과정이 수행된다고함

 

layer fusion 개요

 

 

library마다 layer fusion을 위한 rule들이 정해져 있다고함. tensorflow같은 경우는 200개정도?

 

위 예시는 들어온 network에서 conv 다음 relu가 있으면 두 layer를 하나로 합쳐서 conv+relu로 만드라는 rule에 의해 fusion하는 과정

 

layer 수가 줄어들면서 연산량?이 감소하고 전체적으로 속도가 증가함

 

그러나 세상에는 모델링을 위한 다양한 framework들이 존재하고

 

이 모델을 사용해야할 다양한 hardware들이 존재해서 가능한 조합들도 무수히 많음

 

hardware마다 CPU core나 unit 수, instruction set이나 가속 라이브러리 등 특징도 다르고 추가적으로 library마다 특징도 다름

 

이 결과로 동일한 회사의 hardware임에도 불구하고 layer fusion의 조합에 따른 성능차이가 발생함

 

 

 

 

근데 layer fusion 조합차이가 아니라 V100이랑 K80은 특징 자체가 다르니까 동일회사랑 무관하게 성능 차이가 나타나는건 당연한거 아냐?

 

아무튼 compile library마다 layer fusion의 rule도 다 다르다고 함

 

hardware마다 계산되는 방식이나 적용방식도 다 다르다고함

 

이런 무수히 많은 변수들이 compiling 결과에 차이를 만든다

 

4. AutoML

 

그렇다면 컴퓨터의 힘을 빌려 graph의 좋은 layer fusion을 자동적으로 찾아내자는 제안이 등장

 

AutoTVM이 최적의 layer fusion을 찾는 과정 예시

 

 

왼쪽에 미리 준비해놓은 framework,hardware, compile library 등등의 search space configuration을

 

AutoTVM 같은 AutoML에 넣어서 반복적으로 수행해본 다음에

 

주어진 configuration에서 최적의 layer fusion을 찾아냄

 

사람이 하는 것보다 좋은 조합을 찾아내는 경우가 많음

 

AutoTVM과 사람이 찾아낸 layer fusion 성능 비교?

 

 

아무튼 network compiling은 성능 파급력은 좋지만 이런 library나 모델 등등 여러 변수에 의해 차이가 생기는 문제점이 크다

 

 

5. 경량화 기법 요약

 

AutoML은 사용하기 쉬우면서도 실용적으로 많이 쓰고 효과도 좋음

 

network pruning이나 knowledge distillation은 활발히 연구되고 있지만 dominant한 기법을 딱 집어 말하기 어렵고 일반화하여 적용하기도 어렵다

 

network pruning같은 경우 개념자체는 쉽더라도 적용하는 것이 생각보다 까다로운데 masking으로 weight를 일단 지웠다고 해도

 

실제로 mask까지 지우는 과정에서 skip connection이나 concat 등등에 따른 여러 변수에 따라 처리하는 과정이 달라 쉬운 작업이 아니다

 

tensor decomposition은 수학적으로 깊이 보면 까다로워도 간단하게 구현하여 좋은 효과를 볼수있다

 

network quantization과 network compiling은 성능 차이에 가장 결정적으로 영향을 주는 기법들

 

NLP, object detection, speech 등등 여러 분야에 특화된 경량화 기법들도 존재한다

 

 

TAGS.

Comments