文档章节

超全总结:神经网络加速之量化模型 | 附带代码

Mr_zebra
 Mr_zebra
发布于 2018/06/04 15:09
字数 936
阅读 40
收藏 0

量化模型(Quantized Model)是一种模型加速(Model Acceleration)方法的总称,包括二值化网络(Binary Network)、三值化网络(Ternary Network),深度压缩(Deep Compression)等。鉴于网上关于量化模型的不多,而且比较零散,本文将结合 TensorLayer 来讲解各类量化模型,并讨论一下我们过去遇到的各种坑。文章最后会介绍一些关于人工智能芯片的技术。

TensorLayer 是一个基于 TensorFlow 的高级开发工具,提供大量数据处理和建模 API,具备灵活性高、运行速度快等优点。今年 3 月,TensorLayer 提供了一套搭建量化网络的试验版本 API,不过目前这套 API 依然用矩阵乘法而不是加减或 bitcount 运算来加速(我们等会会提到)。

因此,这套 API 并不能加速,关于产品部署,目前可以用 TensorLayer 训练模型,然后用自定义的 C/C++ 实现的二值化计算(TensorLayer 有可能会提供一套额外的专门运行二值化网络的框架,并支持可以从 TensorLayer 那读取模型)。

注意,作为试验版本,这套 API 有可能会被修改。更多关于模型加速的技术,可关注:https://github.com/tensorlayer/tensorlayer/issues/416

Keywords:模型压缩(Model Compression),模型加速(Model Acceleration),二值化网络(Binary Network),量化模型(Quantized Model)

随着神经网络深度增加,网络节点变得越来越多,规模随之变得非常大,这是对移动硬件设备非常不友好的,所以想要在有限资源的硬件设备上布置性能良好的网络,就需要对网络模型进行压缩和加速,其中量化模型由于在硬件上移植会非常方便,在理论上来讲,是非常有发展潜力的。

比较有名气的量化模型有 Deepcompression,Binary-Net,Tenary-Net,Dorefa-Net,下面对这几种量化模型进行介绍。

DeepCompression

SongHan 这篇文章可以说是神经网络压缩领域开山之作,怎么说呢这篇文章很早就注意到了,也复现了,做了很多实验。也一直想用到硬件参数压缩以及模型加速当中,在这个过程中遇到了很多问题,现在提出来跟大家一起探讨。

算法整体框架如图:

02e7ef17bc95efe1243feeafa0b5c0e736d14e53

DeepCompression 主要分为三个主要的部分:剪枝,量化,哈夫曼编码,下面分别探讨这几种方法并且分析他们在硬件前向配置的加速潜力。

剪枝(purning):其实这个思路的核心非常简单,就是当网络收敛到一定程度的时候,作者认为阈值小于一定权重的权重对网络作用很小,那么这些权重就被无情的抛弃了。注意,是抛弃,彻底抛弃,在复现的时候这个地方是一个大坑,被剪掉的权重不会再接收任何梯度。

然后下面的套路简单了,就是很简单的将网络 reload,然后重新训练至收敛。重复这个过程,直到网络参数变成一个高度稀疏的矩阵。这个过程最难受的就是调参了,由于小的参数会不断被剪枝,为了持续增大压缩率,阈值必须不断增大,那么剩下的就看你的调参大法 6 不 6 了。

当初为了解决这个问题还专门设计了一个基于准确率损失和压缩率上升的公式,用于压缩。算是效果还可以,自己调参真的很难受。

本文转载自:http://click.aliyun.com/m/51484/

Mr_zebra
粉丝 29
博文 1291
码字总数 4194
作品 0
私信 提问
超全总结:神经网络加速之量化模型 | 附带代码

量化模型(Quantized Model)是一种模型加速(Model Acceleration)方法的总称,包括二值化网络(Binary Network)、三值化网络(Ternary Network),深度压缩(Deep Compression)等。鉴于网...

技术小能手
2018/06/01
0
0
深度学习工业界应用-加速-预测

一. BMXNET要解决的问题 在神经网络实际部署预测时需要做很多的优化,比如: 裁剪设计网络,裁掉部分无用的weight 将weight从int32 量化到int8甚至是binary 1bit 使用特定硬件上提供的库:比...

skywalker
2017/06/03
0
0
综述论文:当前深度神经网络模型压缩和加速方法速览

本文全面概述了深度神经网络的压缩方法,主要可分为参数修剪与共享、低秩分解、迁移/压缩卷积滤波器和知识精炼,本论文对每一类方法的性能、相关应用、优势和缺陷等进行独到的分析。机器之心...

机器之心
2017/10/29
0
0
港科大博士生侯璐:基于损失函数的神经网络量化方法|分享总结

雷锋网AI科技评论按:神经网络功能强大,但是其巨大的存储和计算代价也使得它的使用特性,特别是在一些计算能力相对较弱的移动设备上受到了很大的限制。为了解决这个问题, 最近有许多针对于...

sanman
2018/04/24
0
0
移动端机器学习模型压缩也自动化了:腾讯新框架为自家模型加速50%

夏乙 发自 凹非寺 量子位 出品 | 公众号 QbitAI 把深度学习模型压缩部署到手机上直接本地运行的趋势,愈演愈烈。从Google的TensorFlow Lite、苹果的Core ML,到小米今年6月推出的MACE,移动端...

量子位
2018/09/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

查看线上日志常用命令

cat 命令(文本输出命令) 通常查找出错误日志 cat error.log | grep 'nick' , 这时候我们要输出当前这个日志的前后几行: 显示file文件里匹配nick那行以及上下5行 cat error.log | grep -C ...

xiaolyuh
23分钟前
3
0
六、Java设计模式之工厂方法

工厂方法定义: 定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类,工厂方法让类的实例化推迟到子类中进行 类型:创建型 工厂方法-使用场景: 创建对象需要大量重复的代码 ...

东风破2019
29分钟前
3
0
win服务器管理遇到的一系列问题记录

有些小伙伴在使用iis7远程桌面管理工具的时候总是会遇到一系列的问题,下面就是为大家介绍一下服务器日常管理过程中出现的问题及我的解决办法和心得。希望能帮到大家。   拒绝服务器重新启...

1717197346
36分钟前
4
0
flutter 剪切板 复制粘贴

复制粘贴功能 import 'package:flutter/services.dart'; Clipboard.setData(ClipboardData(text:_text));Clipboard.getData;...

zdglf
39分钟前
3
0
如何保证消息的可靠性传输?或者说,如何处理消息丢失的问题?

面试题 如何保证消息的可靠性传输?或者说,如何处理消息丢失的问题? 面试官心理分析 这个是肯定的,用 MQ 有个基本原则,就是数据不能多一条,也不能少一条,不能多,就是前面说的重复消费...

米兜
39分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部