量化及定点化模型压缩常见方法、特定及优缺点整理
模型压缩简答说就是将庞大的深度学习模型进行压缩,常见方法包括五大类,分别是剪枝、量化、正则化、知识蒸馏、条件计算。
量化是模型压缩常用方法之一,本文不完全包括了一些神经网络Fixed-Point Training(定点化训练)相关的方法进行了详细整理,拆分,并对优缺点进行了对比分析。
资源整理自网络,资源获取见源地址:https://github.com/A-suozhang/awesome-quantization-and-fixed-point-training
本文的最终目的是面向FPGA等嵌入式设备的NN 部署/训练,的一个软件仿真工具。为了Scalability,会尝试实现一些较为General的定点训练技巧现方式
以及诸如MobileNet, ShuffleNet 等轻量化网络设计
Quantization的两种主要方式
基于CodeBook的(Deep Compression) :实际参数还是高精度的,无法利用定点计算进行加速,仅能减少存储
基于定点数(Fixed Point表示),(IBM的FP8也可以归入此类) :可利用定点计算加速,故本文主要采取该方式
目前预计的几种场景
Post-Training Quantization : 在完成FP训练之后的压缩,产生定点的W/A进行部署
Example:Distillation,EntropyConstraintQ, IncrementalQ
Quantize-Aware Training : 在训练过程中考虑定点的影响,在训练中采取Fixed,产生定点的W/A进行部署
Example:StraightThroughActivation的方法(训练时用Fixed Inference,但是梯度是对应的全精度副本做)
Fixed-Point Training: 训练过程中进行纯定点(W/G/A),模拟在纯定点设备上进行训练
Example:WAGE
有点激进,不知道是否能实现
Binary-Network
DeepLearning_NLP
深度学习与NLP
商务合作请联系微信号:lqfarmerlq