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 表示将模型的权值数据(包括卷积层和全连接层
   111   112   113   114   115   116   117   118   119   120   121