network quantization 간단하게

1. motivation

 

일반적으로 float32로 network 연산과정이 표현되나

 

그것보다 작은 크기의 데이터 타입인 float16 half precision이나 int8 fixed point로 mapping하여 연산을 수행하는 것

 

 

2. 예시

 

 

 

1번처럼 float32의 matrix들을 int8로 quantization mapping하여 표현을함

 

matrix를 계산한 결과가 2번임

 

2번을 다시 float32로 dequantization하면 3번이 됨

 

실제 quantization하지 않고 계산한 4번과 비교하면 어느정도 오차가 있는데 이것을 quantization error라고 부름

 

경험적으로 quantization error에 대해 robust하게 network가 잘 작동한다는 사실이 알려져서 보편적으로 quantization 기법을 많이 사용함

 

 

3. 효과

 

quantization을 수행하면 대체적으로 다음과 같은 효과들이 있음

 

model의 size가 감소함. float32에서 int8같은 작은 데이터 타입을 사용하니까

 

대신 성능은 일반적으로 약간 감소함

 

model의 inference 속도는 항상 증가하는 것은 아니고 상황에 따라 다르다

 

오히려 변환된 타입에 하드웨어가 호환이 안되어 느려질수도 있다고함

 

quantization 기법에 따른 모델별 accuracy와 latency, size 비교

 

 

위 표를 보면 quantization을 적용하면 accuracy 성능이 약간 떨어지는 경향이 있고

 

latency같은 지연시간 (= 작을수록 inference 속도가 빠름)은 줄어드는 경향이 있음

 

size도 감소하는 경향이 있음

 

TAGS.

Comments