Page 116 - 《软件学报》2021年第8期
P. 116
2398 Journal of Software 软件学报 Vol.32, No.8, August 2021
Table 1 Optimal value of λ for different bit widths
表 1 不同位宽对应的最佳λ值
k(位宽) 1 2 3 4 5 6 7 8
λ 1.595 8 0.995 7 0.586 0 0.335 2 0.188 1 0.104 1 0.056 9 0.030 8
Loss 0.363 4 0.118 8 0.037 4 0.011 5 0.003 5 0.001 0 0.000 3 0.000 1
3.2 算法实现
μL2Q 的实现流程如算法 1 所示:首先,将满足正态分布的输入数据转换为标准正态分布,其中,需要记录偏
移量β=μ和标准差σ;然后,基于该标准正态分布,分析和计算最优参数λ的值,得到缩放参数α=λσ.
算法 1. μL2Q 算法.
2
输入: w f ~N(μ,σ ),k≥1.
输出: w′ q , , ,wα β q α w′ q + β = .
1: if k>8 then
max(w ) min(w− )
2: λ = f f
2 − 1
k
k
3: else
4: 从表 1 中获取λ k
5: end if
6: α=λ k σ,β=μ
w − β 1
7: ϕ = f −
α 2
1
8: w′ = q C R ϕ − (( ), 2 k − 1 ,2 k − 1 − 1) +
2
3.3 模型训练
模型训练的过程往往十分耗时,本文将μL2Q 量化方法融合进主流机器学习训练框架如 Caffe [32] 和 Keras [33]
来加速模型量化的实现速度,借此来满足广泛的 DNN 模型量化需求.具体来讲,对于 DNN 模型中的每一层 l,在
其前向传播时,首先使用μL2Q 量化方法将 w f (l)量化到 w q (l),然后使用 w q (l)计算每一层在前向传播中的输出,得
到前向传播的最终 DNN 损失 L(w q ).在反向传播时,由于式(12)和算法 1 中的量化过程不可导,本文采用直通量
估计(straight through estimation,简称 STE)来实现μL2Q 量化.STE 在许多量化工作中 [16,17,19] 被广泛应用于可训
练的量化实现,其将 w q (l)对 w f (l)的梯度设定为固定数值 1,然后利用链式求导法则计算网络损失 L(w q )对 w f 的梯
度,以此来进行量化模型的训练.基于 STE 和链式求导法则,可以计算 L(w q )对 w f 的梯度如下:
∂ ( Lw ) ∂ ( L w )
( gw ( ))l = q = q × 1 (16)
∂ f wl ∂ w ()l
()
f q
4 实验评估
本节从数据仿真实验和真实的 DNN 模型精度实验两个方面来评估μL2Q.其中,数据仿真用于对比现有的
典型量化方法与μL2Q 的量化损失情况.DNN 模型精度实验选取了图像分类和显著性物体检测两类真实应用.
在精度评估实验中,本文将μL2Q 融合进 DNN 训练框架 Caffe 和 Keras 中,加速 DNN 模型量化实现,利用模型的
实际推理精度来观测μL2Q 的真实效果.除了权值量化的实现,本文还在 Keras 上实现了激活值量化,以验证
μL2Q 在激活值量化方面的性能.Caffe 框架和 Keras 框架分别采用 1.0.0 版本和 2.2.4 版本.μL2Q 量化方法对于
框架融合并无挑剔,从其实现过程和实验结果上来讲,使用 Caffe 和 Keras 框架,两者并无显著差异.
μL2Q 和定点数量化可以实现任意位宽的数据量化,μL2Q-x 和 Fixed-x 分别表示两种方法在位宽为 x 时,数
据仿真的量化效果.在 DNN 模型精度评估中,μL2Q-x 和 Fixed-x 表示将模型的权值数据(包括卷积层和全连接层