Quantized Convolutional Neural Networks for Mobile Devices cvpr 2016 1. Problem - CNN needs high performance hardware which prohibits their further extension (e.g. mobile service) 2. Solution - Simultaneously speed-up the computation and reduce the storage and memory overhead of CNN models > Quantized CNN 3. How - Quantized CNN + Both filter kernels in convolutional layers and weighting matrices in fully connected layers are quantized, aiming at minimizing the estimation error of each layer's response. 4. Performance - ILSVRC-12 + 4~6 X speed-up and 15 ~20 X compression with merely one percentage loss of classification accuracy - even mobile devices can accurately classify images within one second.
글
텐서플로우에서의 양자화 (Quantize) 시키는 방법
- 공유 링크 만들기
- X
- 이메일
- 기타 앱
[이글은 https://www.tensorflow.org/performance/quantization 의 내용을 한글로 번역/의역한 내용입니다. 주관적 의견이 첨가되었으니 잘못된 해석이 있다면 지적하여 주시면 감사하겠습니다.] 뉴럴넷 이 처음 개발되었을때, 가장 큰 이슈는 어떻게든 동작하게 하는 것이여서, training 정확도와 속도는 뒷전이였다. 그래서 그 당시, 뉴럴넷을 training 시킬 때, 정확도와 속도는 그리 좋지 않았었다. 정확도를 유지하기 위한 가장 쉬운 방법은 소숫점 (floating point) 연산 을 사용하는 것이였고, GPU 를 통해 그런 연산들의 속도를 가속화하기만 하여서, 다른 numerical format 을 사용하는 것에는 큰 관심이 없는건 어찌보면 당연하였다. 하지만 요즘에는 상용모델 (GPU가 없는 스마트폰, IoT 기기) 들에 적용되는 다양한 뉴럴넷 모델들이 실재한다. 그러면, 그런 뉴럴넷 training 을 위한 연산 요구량은 연구자들의 숫자에 비례하여 증가하고, 실제 추론을 위해 필요한 뉴럴넷 연산은 사용자에 비례하여 증가하게 된다. 즉, 매우 많은 연산량을 요구하는 뉴럴넷을 최근의 상용 기기들에 기존의 추론 방식을 사용한다면, 그 효율은 매우 나쁠 것이고 이런 연산량을 경감 시키기 위한 노력이 필요하게 되었다. 이게 Quantization 이 필요한 이유이다. 좀더 자세히 말하면, Quantization 은 32 bit 소숫점 보다 좀더 compact 하게 저장하고 연산하기 위한 뭔가 다른 방법들을 포괄하는 개념이다. 그런 이유로, 우리는 8 bit fixed point 에 집중하여 detail 들을 살펴보고자 한다. 그러면, 왜 Quantization 이 동작하는가.. 뉴럴넷을 training 시킨다는 것은 weight 들에 많은 조그마한 변이들을 적용함으로 이루어지는 것이고, 이런 조그마한 변이들은 보통 동작되기 위해서는 소숫점의 정확도를 요구하기 마련이다. 미리 훈련된 모델을
INQ (Incremental Network Quantization)
- 공유 링크 만들기
- X
- 이메일
- 기타 앱
Summary of "Incremental Network Qunatization: Towards Lossless CNNs with Low-Precision Weights" 1. Problem - Deep CNN requires heavy burdens on the memory and other computational resources - Reducing the heavy burdens could cause the Performance Loss (accuracy loss) 2. Solution - INQ (Incremental Network Quantization) : Convert "Any Pre-Trained Full-Precision CNN" into "Low-Precision Version (weights are constrained to be either powers of two or zero)" 3. How - three interdependent operations 1) Weight Partition - Divide the weights in each layer of a pre-trained CNN model into two disjoint groups - Weights in the first group + Responsible to form a low-precision base, + Thus, Quantized by a variable-length encoding method - Weights in the second group + Responsible to compensate for the accuracy loss from the quantization + Thus, Retrained 2) Group-Wise Quantization - Above two operations can be formulated
Deep Compression
- 공유 링크 만들기
- X
- 이메일
- 기타 앱
Summary on "Deep Compression : Compressing Deep Neural Networks with Pruning, Trained Quantization and Huffman Coding" 1. Problem - Neural Net : Computationally intensive and memory intensive - Making them difficult to deploy on embedded systems with limited hardware resources 2. Solution - Reduce the storage requirement of neural net without affecting accuracy by 35~49 X 3. How - 3 stage pipeline 1) Pruning - By learning only the important connections, Prune the network - Reduce the number of connections by 9~13 X 2) Trained Quantization - Quantize the weights to enforce weight sharing - Reduce the number of bits that represent each connection from 23 to 5 3) Huffman Coding - Apply Huffman Coding 4. Performance - ImageNet + AlexNet : Reduce the storage requirement by 35 X from 240MB to 6.9MB w/ loss of accuracy + VGG-16 : 522MB to 11.3MB