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같은 지연시간 (= 작을수록 inference 속도가 빠름)은 줄어드는 경향이 있음
size도 감소하는 경향이 있음
'딥러닝 > light weight modeling' 카테고리의 다른 글
tensor decomposition 간단한 설명 (0) | 2024.08.17 |
---|---|
network compiling 간단하게 (0) | 2024.08.16 |
knowledge distillation 간단하게 (0) | 2024.08.15 |
Efficient Architecture design이란 (0) | 2024.08.14 |
왜 경량화인가? 딥러닝 모델의 경량화가 필요한 이유 (0) | 2024.08.14 |