首页 > 其他分享 >【AutoML】强化学习如何用于模型量化?

【AutoML】强化学习如何用于模型量化?

时间:2022-10-12 18:07:25浏览次数:54  
标签:MobileNet 模型 AutoML HAQ 量化 精度


大家好,欢迎来到专栏《AutoML》,在这个专栏中我们会讲述AutoML技术在深度学习中的应用,这一期讲述在模型量化中的应用。

作者&编辑 | 言有三

上一期给大家介绍了AutoML技术在模型剪枝中的应用,而量化作为模型压缩的另外一个技术,是学术界和工业界的重点研究方向,今天给大家介绍AutoML在模型量化中的应用思路。

1 HAQ(混合精度量化学习)

HAQ(Hardware-Aware Automated Quantization with Mixed Precision)是一个自动化的混合精度量化框架,使用增强学习让每一层都学习到了适合该层的量化位宽。

【AutoML】强化学习如何用于模型量化?_卷积

不同的网络层有不同的冗余性,因此对于精度的要求也不同,当前已经有许多的芯片开始支持混合精度。通常来说,浅层特征提取需要更高的精度,卷积层比全连接层需要更高的精度。如果手动的去搜索每一层的位宽肯定是不现实的,因此需要采用自动搜索策略。

另一方面,一般大家使用FLOPS,模型大小等指标来评估模型压缩的好坏,然后不同的平台表现出来的差异可能很大,因此HAQ使用了新的指标,即芯片的延迟和功耗

搜索的学习过程是代理Agent接收到层配置和统计信息作为观察,然后输出动作行为即权值和激活的位宽。其中一些概念如下:

(1) 观测值-状态空间,一个10维变量,如下:

【AutoML】强化学习如何用于模型量化?_深度学习_02

(2) 动作空间,使用了连续函数来决定位宽,离散的位宽如下:

【AutoML】强化学习如何用于模型量化?_搜索_03

(3) 反馈,利用硬件加速器来获取延迟和能量作为反馈信号,以指导Agent满足资源约束。

(4) 量化,直接使用线性量化方法,其中s是缩放因子,clamp是截断函数。

【AutoML】强化学习如何用于模型量化?_深度学习_04

(5) c的选择是计算原始分布和量化后分布的KL散度,这也是很多框架中的做法。

【AutoML】强化学习如何用于模型量化?_搜索_05

(5) 奖励函数,在所有层被量化过后,再进行1个epoch的微调,并将重训练后的验证精度作为奖励信号。

【AutoML】强化学习如何用于模型量化?_深度学习_06

(6) 代理,使用了深度确定性策略梯度(DDPG)方法。

【AutoML】强化学习如何用于模型量化?_卷积_07

上图是在延迟约束下,MobileNet-V1/V2模型在边缘端和云端设备上的实验结果,与固定的8bit量化方法相比,分别取得了1.4倍到1.95倍的加速。

【AutoML】强化学习如何用于模型量化?_深度学习_08

上图分别是边缘端和云端设备上MobileNet-V1各个网络层的量化特点,可以发现在边缘端设备上depthwise卷积有更少的bits,pointwise有更多,在云端则是完全相反。这是因为云设备具有更大的内存带宽和更高的并行性,而depthwise就是内存受限的操作,pointwise则是计算受限的操作,MobileNet-V2上能观察到同样的特点。

另外还有能量约束和模型大小约束的结果,读者可以读原始论文获取细节。

与HAQ类似的研究还有AutoDB[2]等,感兴趣同学可以延伸阅读。

【AutoML】强化学习如何用于模型量化?_卷积_09

标签:MobileNet,模型,AutoML,HAQ,量化,精度
From: https://blog.51cto.com/u_14122493/5751231

相关文章