干货!面向低精度量化的神经网络训练算法
时间:2023-04-18 15:07:00
点击蓝字
关注我们
AI TIME欢迎每一位AI爱好者的加入!
神经网络的低精度量化,特别是混合精度量化,是提高神经网络部署效率的重要途径之一。然而,如何使神经网络适应低精度的表示,如何选择最合适的定量精度,仍然存在许多未解决的问题。
本报告将从两个方面探讨低精度神经网络的训练方法。为了获得最佳的量化精度,我们提出了BSQ比特稀疏量化算法使模型在训练过程中自发获得适当的混合精度。
为了使模型更适应量化的性能影响,我们进一步提出了用权值鲁棒描述模型泛化能力和低精度性能的理论模型,并根据该模型提出HERO训练算法旨在提高模型的权重,然后获得具有较强泛化能力和低精度量化鲁棒的模型。这两种方法为神经网络模型提供了更高效、更好的性能。
本期AI TIME PhD在直播室,我们邀请了杜克大学电子与计算机工程系的博士杨,为我们分享《低精度量化神经网络训练算法》。
杨幻睿:
本科毕业于清华大学电子工程系,杜克大学电子与计算机工程系,李海和陈怡然。博士毕业后,杨将加入加州大学伯克利分校从事博士后研究。杨的主要研究方向是提高深度学习模型的运行效率和鲁棒性。
今天的研究主要是关于高效和深入的学习。我们发现,随着深度学习的发展,学者们提出了越来越多的神经网络模型。在追求更高模型性能的过程中,新神经网络架构所占用的参数的计算量正在逐渐增加。
Challenges of DNN from Efficiency Perspective
上图显示了一些我们现在使用的相对较早的模型transformer、Bert在获得更好性能的同时,模型使用了更高的参数和计算量。
虽然深度学习模型现在发展迅速,但如果我们想在实际场景中使用模型,我们应该考虑许多硬件设备的计算能力是有限的。为了更好地在现实世界中部署深度学习模型,我们必须压缩和加速这些高性能模型。
Efficiency Improvement for DNN Models
? Pruning
? Set weight element to zero
? Save storage and computation (structural pruning)
? Low-rank factorization
? Decompose layer into low-rank matrix multiplications
? Keep input/output dimensions, suitable for complex architecture
? Quantization
? Represent weights/activations in fixed-point representation
? Reduce memory size, friendly to hardware deployment
目前,人工设计模型的主流压缩加速方法大致分为三种。第一种是剪枝,它将一些重量设置为0,以便通过编码减少一定程度的存储。通过结构化剪枝,可以进一步降低模型参数的维度,减少计算量。
第二种方法是对模型进行低秩分解,即将一个卷积层分解成两个或多个低秩矩阵。这样,我们就可以在保留原始模型输入输出维度的基础上进一步减少模型的计算量。
第三种方法是量化模型,用定点低精度编码表示模型的权重。这也在一定程度上端或嵌入式处理器上的存储和操作等小硬件。
Goal of My Research
对于压缩人工设计模型,我们的工作主要集中在使用一些正则项来诱导模型压缩。我们选择使用可导神经网络正则项,因为它可以与神经网络训练相结合。
在神经网络训练中,我们使用梯度下降算法优化可导损失函数L。如果我们有一个可导化的正则化项,我们可以将其添加到损失函数中,使其能够用优化器正常训练。
此外,我们可以控制它 α 选择压缩程度,实现模型尺寸和性能之间的平衡。因此,我们研究的重点是如何找到合适的正则,以诱导模型在训练中逐渐稀疏、低秩序,并适应低精度表达。
本报告重点讨论如何通过正则项获得低精度模型。
The Need of Fixed-point Quantization
为什么我们需要低精度?低精度主要有两个好处。最直接的好处之一是可以减少模型的存储消耗。另一方面,对于硬件部署,低精度表示,特别是指定的低精度表示,大大降低了计算所需的能量和面积成本。如下图所示:
可见,低精度定点计算能带来很大的优势。
Challenge of Quantization
对于低精度量化,类似于之前的剪枝方法,有些模型层很重要,有些层不那么重要。我们希望给更重要的层更高的精度,而不重要的层更低的精度,这也引入了混合精度量化的概念。
目前的问题是如何找到量化的分布模式,使我们的模型在效率和性能之间获得最佳分布模式trade off。
量化与剪枝和分解的主要区别在于,模型的精度不能用模型权重值的可导函数来表示。在描述模型的稀疏性时,我们可以使用所有权重的绝对值,即L1范数,或者叫LASSO,作为稀疏度的测量。
我们之前也提出过DeepHoyer稀疏正则项等。但是量化很难找到这样的正则项。模型的精度不是模型权重值的函数,我们很难直接设计一个正则项。为了规避这一问题,前人的研究通过一些判据分析哪些层是重要的,然后根据重要性人工指定一个精度的分布。很难保证最好的效果。
此外,有些人试图通过神经网络结构搜索(NAS)直接搜索最佳精度组合的方法,但这需要大量的计算。
对我们来说,既然我们希望通过一个可指导的正则项来量化,我们熟悉稀疏的正则项,我们能把量化的问题变成稀疏的问题吗?此外,鉴于量化精度不是权重值的函数,我们目前的想法是不看权重值本身,而是看量化后的比特表示。
A Bit-level View of Quantization
我们的目标是通过正则项诱导比特数的减少,那么我们什么时候可以减少表示的比特数呢?让我们从比特的角度来观察:对于矩阵
?所有元素的最高比例(MSB)0:直接降低精度
?所有元素的最低比例(LSB)0:精度可以通过右移降低,结果乘2为原值。
通过这种观察,我们发现比特层的结构稀疏可以降低精度。所以我们提出了BSQ通过引入结构化的比特级稀疏性,可以诱导出混合精度量化模型。
BSQ Training Pipeline
?比特级神经网络表示
本文提出了比特级神经网络的训练算法。在训练过程中,我们从8开始bit量级开始,不会影响模型的性能。在这里,我们直接使用模型权重的每个比特值作为训练参数。在训练过程中,我们允许每个比特值用浮点数表示,以实现梯度累积。在正向传播时我们对比特值进行量化来模拟量化后网络的表现,反向传播的时候我们直接把权值的梯度传过了rounding function,并传到每一个bit表示上。
为了实现稀疏性,我们提出了以下方法:使用group LASSO同时将某一层参数中所有权重的比特变为零。
? Bit-level group LASSO
在整体训练算法中,我们采用了以下训练目标:
我们根据每层当前的总比特数调整其正则项的强度,使占用空间更大的层压缩更大。
随着我们的训练,我们会定期量化所有的比特值,去除零比特,改变某些层的精度。通过这种循环,我们可以得到最终的混合精度表示,并通过fine-tuning获得最终模型。
Accuracy-#Bits Tradeoff
就效果而言,我们这个BSQ方法很好的实现了模型性能与模型大小之间的trade off。可以看出,我们使用的不同regularization模型各层的精度分布符合稳定趋势。当然,随着regularization随着强度的增加,每一层都被分配了bit数量也在减少。
此外,我们还发现,在相同的量化精度下,通过BSQ模型的准确性高于直接从零训练的模型。这与之前对模型剪枝的观察是一致的:从大模型剪枝到小模型通常比从0开始训练更好,这进一步反映了我们BSQ方法的优点。
Comparing with SOTA Methods
下面列举了与之前方法的对比。
压缩比较大,性能相同。
Takeaways
• BSQ (ICLR 2021)
• 通过bit层面的结构化稀疏来进行权值精度的降低
• 实现了bit层面的Group Lasso
• 在训练过程中引导模型进行精度降低并最终得到一个混合精度的量化模型
我们最终也得到了一个超越之前方法的accuracy-efficiency tradeoff。
The Need of Real-World Application
现实环境的变化也给我们的神经网络部署提供了一定的需求。我们希望模型能具有更高的灵活性。
• 量化方案的灵活性
■ 运行时环境可能会发生变化
■ 低电量模式,内存不足等。
■ 最好让模型灵活到可以从一系列量化方案中选择
■ 量化感知训练不直接支持
• 推广到看不见的数据
■ 真实世界的输入不存在于训练集中
■ 需要模型泛化到新的输入
Unifying the Pursuit of Generalization and Quantization
我们希望找到一种方式,同时实现模型泛化能力和对不同量化精度鲁棒性的提升。
• Model generalizability (SAM, ICLR21’)
模型对L2的权重噪声越鲁棒,也就说明其泛化能力越强。
• Performance under quantization
综上,我们可以说模型在量化之下带来的性能损失是以最差情况下的L无穷权重噪声所带来的性能损失为上限的。
综合上面这两个观察,如果我们能够得到一个理论体系可以使得模型对任意的lp权重噪声去鲁棒的话,就能够同时提升模型的泛化能力和鲁棒性。
那么如何做到同时提升呢?
Improving Weight Perturbation Robustness
• Modeling perturbation strength lower-bound
为了方便后文的分析,这里我们先定义一个最小噪声强度的概念。我们希望可以找到一个最小的噪声强度使得模型损失函数增大超出我们容忍的范围。在这样的定义下,一个模型的最小噪声强度越大说明模型可以容忍强度越大的噪声,这就是我们优化的目标。
• Derive with Taylor expansion
我们计划使用泰勒展开对最小噪声强度进行分析。我们发现,无论对于哪种权重噪声,其最小值均和海森矩阵的最大特征值v有关,且随着v的增大单调递减。这就说明更小的海森矩阵特征值能够带来更高的模型对权重噪声的鲁棒性。
Hessian-Enhanced Robust Optimization (HERO)
• Hessian eigenvalue regularization
为了减小海森矩阵特征值,我们提出了一个新的正则项。鉴于神经网络海森矩阵的求解难度,我们通过对海森矩阵进行了差分近似,得到沿着特征值最大方向的海森矩阵特征值的估计。
• Gradient of regularization
在对这一正则项进行优化的过程中,我们进一步对其梯度求解进行了简化,以提升训练的效率。最终我们得到了下面梯度更新算法,也就是我们提出的Hessian Enhanced Robust Optimization (HERO)
• Overall optimization step
Theoretical Insight Verification
从实验结果而言,从训练效果上,随着训练的进行,尽管模型的海森特征值与泛化损失都在增大(神经网络一定程度的过拟合是不可避免的),HERO训练出来的网络与其他方法相比有着最小的Hessian norm和generalization gap,这也带来了最优的测试集上的表现,并印证了我们更小的海森特征值可以增强模型泛化能力的理论分析。
从最终得到的模型来看,HERO得到的模型收敛于更加平缓的极小值点,使得模型对权重噪声有更强的鲁棒性。
与之前提出的一阶正则项SAM相比,HERO进一步提升模型泛化能力,降低模型在量化过程中的损失,体现出HERO提出的二阶泰勒分析与正则项的不可或缺性。
Trained Model Performance
我们可以看到,HERO方法在测试集准确性与不同精度量化下的表现均优于之前的算法。
Takeaways
• HERO (DAC 2022)
■ 模型的generalization gap可以被ℓ2 权值噪声下的性能所限制
■ Uniform quantization等价于ℓ∞权值噪声下的表现
■ 在两种情况下,较小的Hessian特征值提高了权值扰动的鲁棒性
■ HERO既能提高测试精度,又对训练后量化具有更高的鲁棒性
对权重扰动鲁棒性的研究有助于获得精确的、硬件友好的DNN。
提
醒
论文题目:
BSQ: Exploring Bit-Level Sparsity for Mixed-Precision Neural Network Quantization (ICLR 2021)
HERO: Hessian-Enhanced Robust Optimization for Unifying and Improving Generalization and Quantization Performance (DAC 2022)
论文链接:
https://arxiv.org/abs/2102.10462
https://arxiv.org/abs/2111.11986
点击“阅读原文”,即可观看本场回放
整理:林 则
作者:杨幻睿
往期精彩文章推荐
记得关注我们呀!每天都有新知识!
关于AI TIME
AI TIME源起于2019年,旨在发扬科学思辨精神,邀请各界人士对人工智能理论、算法和场景应用的本质问题进行探索,加强思想碰撞,链接全球AI学者、行业专家和爱好者,希望以辩论的形式,探讨人工智能和人类未来之间的矛盾,探索人工智能领域的未来。
迄今为止,AI TIME已经邀请了700多位海内外讲者,举办了逾300场活动,超260万人次观看。
我知道你
在看
哦
~
点击 阅读原文 查看回放!