深度学习工业界应用-加速-预测

字数 325阅读 1061

一. BMXNET要解决的问题

在神经网络实际部署预测时需要做很多的优化,比如:

  • 裁剪设计网络,裁掉部分无用的weight
  • 将weight从int32 量化到int8甚至是binary 1bit
  • 使用特定硬件上提供的库:比如mkl,openblas,neon等等
    arxiv:BMXNET是在MXNET的基础上,给出了量化weight的一个方法。其开源实现的地址是:https://github.com/hpi-xnor/BMXNet

优化的最终目标是1)更小的模型大小 2)更少的计算量(功耗)

二. 方法

现有方法:
tensorflow量化的方案是将weight 从float32降低到int8的精度
BNN:存储二值化的weight,使用xnor和popcount来代替全连接和cnn中的矩阵乘法,BMXNET实现了类似方法

三. 实现

BMXNET实现了activation, convolution 和fully connected layer的operator
工程上
在x86 cpu上使用SSE4.2提供的加速
在arm上使用了NEON加速
使用OpenMP并行化加速
一个lenet的网络symbols对比

网络结构对比

说明:
不在第一层和最后一层使用量化网络,这会显著减低准确率

四. 效果

模型变小,速度变快,精度变化不大
ResNet-18 全精度的模型大小是44.7MB. 二值化后是1.5MB,压缩比大约是29
精度损失在0.02-0.04之间

精度&模型大小对比
cnn layer运算加速比

推荐阅读更多精彩内容