模型部署系列 | 一文告诉你AI模型QAT量化遇到震荡问题应该如何解决呢?(一)

简介: 模型部署系列 | 一文告诉你AI模型QAT量化遇到震荡问题应该如何解决呢?(一)

当用模拟量化训练神经网络时,可以观察到量化的权重可以在2个网格点之间振荡,这是出乎意料的。这种影响的重要性及其对量化感知训练(QAT)的影响在文献中没有得到很好的理解或研究。

本文深入研究了权重振荡现象,并表明由于推理过程中错误估计的批量归一化统计数据和训练过程中增加的噪声,权重振荡会导致精度显著下降。这些效应在具有深度可分离层的高效网络(如MobileNets和EfficientNets)的低比特(≤4比特)量化中尤为明显。

在本文的分析中,作者研究了之前提出的几种QAT算法,并表明其中大多数算法无法克服振荡。最后,作者提出了2种新的QAT算法来克服训练过程中的振荡:「振荡抑制」「迭代权重冻结」

作者证明了本文的算法在低比特(3和4比特)权重和高效架构的激活量化方面实现了最先进的精度,如MobileNetV2、MobileNetV3和ImageNet上的EfficientNet lite。

Github: https://github.com/qualcomm-ai-research/oscillations-qat


1、简介


量化是优化神经网络以实现高效推理和设备执行同时保持高精度的最成功方法之一。通过将常规32位浮点格式的权重和激活压缩为更高效的低位定点表示,如INT8,这样可以在边缘设备上部署神经网络时降低功耗并加速推理。

尽管量化具有明显的功率和延迟优势,但由于精度降低,量化是以增加噪声为代价的。然而,近年来的研究人员已经表明,神经网络对这种噪声是鲁棒的,并且可以使用训练后量化技术(PTQ)以最小的精度下降量化到8比特。

PTQ可能非常有效,通常只需要访问一个小的校准数据集,但当应用于神经网络的低位量化(≤4位)时会受到影响。同时,量化感知训练(QAT)已成为事实上的标准方法,用于实现低比特量化,同时保持接近全精度的精度。通过模拟训练或微调期间的量化操作,网络可以适应量化噪声,并达到比PTQ更好的解决方案。

本文重点关注量化权重在量化感知训练过程中发生的振荡。在量化神经网络的优化中,这是一个鲜为人知且研究不足的现象,在训练期间和训练后对网络产生了重大影响。当使用流行的直通估计器(STE)进行QAT时,权重似乎在相邻量化级别之间随机振荡,从而在优化过程中导致有害噪声。有了这一见解,作者调研了QAT的最新进展,这些进展声称性能得到了改善,并评估了它们在解决这种振荡行为方面的有效性。

权重振荡的一个不利症状是,它们会破坏在训练期间收集的批量归一化层的估计推断统计数据,导致验证准确性差。作者发现这种效应在具有深度可分离层的高效网络(如MobileNets或EfficientNets)的低位量化中尤为明显,但可以通过在训练后重新估计批量归一化统计数据来有效解决。

虽然批量归一化重新估计克服了振荡的一个显著症状,但它并没有解决其根本原因。为此,我们提出了两种有效减少振荡的新算法:振荡抑制和迭代权重冻结。通过在振荡源处处理振荡,本文的方法提高了精度,超出了批量归一化重新估计的水平。本文表明,这两种方法在高效网络的4-bit和3-bit量化方面都取得了最先进的结果,如MobileNetV2、MobileNetV3和ImageNet上的EfficientNet lite。


2、QAT中的振荡


首先研究了为什么权值在量化感知训练中会振荡,以及这种现象如何在实践中影响神经网络训练。

2.1、量化感知训练

量化神经网络最有效的方法之一是用模拟量化训练网络。在前向传递过程中,使用量化函数对浮点权重和激活进行量化。它获取输入向量, 并返回量化输出,由下式给出:

image.png

其中,是四舍五入到最近算子,αβ是分别具有下限α和上限β的函数,是比例因子,和是量化阈值的下限和上限。在该公式中,量化权重是在推理期间使用的权重,而原始浮点权重仅用作优化的代理,并且通常被称为潜在权重或影子权重。

QAT公式中的一个基本挑战是,方程(1)中的舍入函数没有有意义的梯度,这使得基于梯度的训练变得不可能。缓解这一问题的最流行的技术之一是在训练过程中使用Straight-Through Estimator(STE)来近似真实梯度。在实践中,这意味着在量化极限内将舍入算子的梯度近似为1。因此,可以将损失相对于的梯度定义为:

image.png

其中,是指示函数,如果落在量化网格内,则为1,否则为0,使得在可表示的量化区域之外没有梯度。最近的文献中广泛采用了STE梯度近似,缩小了各种任务和网络的量化精度和全精度精度之间的差距。

2.2、振荡问题

尽管STE在QAT中得到了广泛的应用和巨大的成功,但它有一个反直觉的、非常有趣的副作用。由于在相邻量化状态之间的决策边界附近振荡的潜在权重,STE在优化过程中引起隐式随机性。Defossez等人最近也观察到了这种现象。

为了说明这一点,本文提出了一个简单的toy回归示例,将在本文中经常提到这个示例。从最优浮点权重开始,作为1D toy回归问题的目标,并从具有有界方差的分布中采样数据向量,使得σ,其中σ。然后优化最小二乘问题

其中是来自方程(1)的量化器,是潜在权重。使用梯度的STE公式来优化目标。从图1(左)中可以看到,随着潜在权重接近最佳值,它开始在高于和低于最优值的量化水平之间围绕决策阈值进行振荡,而不是收敛到更接近最优值的区域。

由于方程(2)中的梯度在阈值以上是恒定的,因此权重在决策阈值附近振荡,将潜在权重向下推向, 并且恒定地低于阈值,将潜在重量向上推向。

在附录A.3中表明降低学习率会降低振荡的振幅,但不会影响其频率。

振荡的频率取决于最优值与其最接近的量化水平的距离,。假设, 则阈值以下的梯度为以上梯度的倍,其中是缩放因子或量化步长,。将梯度解释为潜在权重的速度,需要经过次迭代,然后才能越过阈值,并且其速度/梯度被反转。在附录A.2中通过实验表明,振荡频率确实与与的接近程度成正比。

image.png

值得注意的是,这种行为与随机舍入有相似之处,其中潜在权重与量化水平的接近程度与舍入到该水平的概率有关。然而,在STE中,随机性的来源于梯度的离散性质,而不是采样。可以注意到,振荡并不是标准STE独有的,而是存在于文献中提出的STE的几种变体中,在图1中给出了其中的一小部分。

2.3、实践中的振荡

这些振荡不仅仅是这个toy例子的副作用。它们确实存在于更大的神经网络中,对它们的优化具有重要意义。图2显示了使用ImageNet上的LSQ训练的MobileNetV2的深度可分离层中接近收敛的3位量化权重的进展。可以观察到,许多权重似乎在2个相邻的量化级别之间随机振荡。

image.png

在图3中还可以看到,在假定的网络收敛之后,很大一部分潜在权重正好位于网格点之间的决策边界。这进一步强化了一个观察结果,即很大一部分权重会振荡而不收敛。

作者确定了与神经网络训练中的振荡相关的2个主要问题:

  • 批量归一化推理统计的错误估计
  • 对网络优化的不利影响

1、批量标准化的影响

在训练批量归一化过程中,层跟踪每层输出的平均值和方差的指数移动平均值(EMA),以便在推理过程中用作真实样本统计的近似值。当训练全精度神经网络时,可以预期权重在接近收敛时会非常缓慢地变化。因此,预计每一层的输出统计数据在迭代过程中都相当稳定,因此EMA是统计数据的一个很好的估计。

然而,QAT中的振荡会导致整数权重的快速变化(见图2),从而导致迭代之间的显著分布偏移,甚至接近收敛。振荡引起的输出分布的突然而大的变化可能会破坏EMA统计数据,导致准确性的显著下降。

事实上,有两个因素放大了这种影响:

  • 权重位宽
  • 每个输出通道的权重数量

比特宽度越低,量化级别之间的距离就越大,因为它与成比例。当振荡权重从一个量化级别移动到另一个量化级时,它们在输出分布中造成成比例的较大偏移。第二个重要因素是每个输出通道的权重数量。权重的数量越小,单个权重对最终累积的贡献就越大。当累积数量增加时,由于大数定律,振荡的影响趋于平均。

在表1中,使用KL散度来量化population和 estimated statistics之间的差异,确实观察到,与MobileNetV2中的逐点卷积和ResNet18中的全卷积相比,深度可分离层的KL发散要大得多。

这个问题的一个简单直接的解决方案是在训练后用一小部分数据重新估计批量归一化统计。这种方法作者称之为批处理归一化(BN)重新估计,有时用于随机量化公式。然而,作者认为由于振荡权重,它在确定性QAT公式中也是必不可少的。

image.png

在表2中可以看到BN重新估计不仅提高了MobileNetV2的最终量化精度,而且降低了不同种子之间的方差。作者进一步观察到,对于MobileNetV2,随着比特宽度的减小,精度上的差距变大,而对于ResNet18,情况并非如此。

2、对训练的影响

除了损害BN统计之外,振荡还可能对训练过程本身产生负面影响。为了说明这一点,首先表明,如果在两种振荡状态之间随机采样振荡权重,则具有3位权重的收敛MobileNetV2可以实现较低的训练损失(和较高的验证精度)。

为此,对训练结束时振荡的所有权重进行采样,其概率与在每个量化状态下花费的时间成比例,即。使用整数权重上的指数移动平均来计算期望,如在算法1的第15行中所做的那样。

在表3中给出了这个实验的结果。可以观察到,采样网络上的平均训练损失与最终收敛模型的平均训练损失相似。然而,许多样本实现了较低的训练损失,并且最佳随机采样网络显示出显著较低的训练损失。

作者还使用AdaRound的自适应来执行振荡权重的二进制优化。在最终任务丢失时同时优化所有层的舍入,类似于文献中使用模拟退火来解决二进制优化问题。可以看到,这种二进制优化在最佳随机样本和原始收敛网络的基础上显著改进。这表明,权重振荡会阻止网络在训练过程中收敛到最佳局部最小值,并可能对优化过程不利。

最后,在训练的早期使用振荡冻结技术防止振荡会导致比振荡权重的二元优化更高的验证精度。这表明,振荡不仅会阻止QAT在训练结束时收敛到最佳局部最小值,而且还会导致优化器在训练早期朝着次优方向发展。


3、克服QAT的振荡问题


既然已经确定了振荡在优化过程中可能会产生负面影响,特别是对于低位量化,所以就把重点放在如何克服它们上。首先,引入了一种用于量化振荡的度量,然后提出了两种新的技术,旨在防止在量化感知训练过程中出现振荡。

3.1、量化振荡

在解决振荡之前,需要一种在训练中检测和测量振荡的方法。建议使用指数移动平均(EMA)来计算随时间变化的振荡频率。然后,可以将最小频率定义为振荡权重的阈值。对于在迭代t中发生的振荡,需要满足两个条件:

image.png

然后,使用指数移动平均(EMA)来跟踪随时间变化的振荡频率:

image.png

3.2、振荡阻尼

当权重振荡时,它们总是在两个量化区间之间的决策阈值附近移动。这意味着振荡权重总是接近量化bin的边缘。为了抑制振荡行为,使用了一个正则化项,该项鼓励潜在权重靠近bin的中心而不是边缘。将类似于权重衰减的阻尼损失定义为:

image.png

其中、和是方程(1)中定义的量化参数,而是bin中心。注意,由于bin中心是优化目标,因此没有梯度通过该项传播回来。现在的最终训练目标是:λ。选择在潜在权重域中应用bin正则化,这样得到的梯度:

image.png

独立于标度,因此间接独立于位宽。进一步将潜在权重剪裁到量化网格的范围,使得只有在量化期间没有被剪裁的权重才会获得正则化效果。这对于避免在基于LSQ的范围学习中与量化尺度梯度的任何有害相互作用很重要。这种正则化的缺点是,它不仅影响振荡的权重,而且还会阻碍不处于振荡状态的权重的移动。

3.3、振荡权值的迭代冻结

作者提出了另一种更有针对性的方法,通过在训练中冻结权重来防止权重振荡。在这种方法中,跟踪训练期间每个权重的振荡频率,如方程(4)所述。如果任何权重的振荡频率超过阈值,该权重将被冻结,直到训练结束。在整数域中应用冻结,以便在优化过程中scale 的潜在变化不会导致不同的舍入。

当一个权重振荡时,它不一定在两种振荡状态下花费相等的时间。正如在第2.2节的示例中所示,权重处于每个状态的可能性线性地取决于该量化状态与最优值的距离。结果,随着时间的推移,所有量化值的期望将对应于最优值。一旦权重的频率超过阈值,它就可能处于两种量化状态中的任何一种。为了将权重冻结到更频繁的状态,使用指数移动平均值(EMA)记录以前的整数值。然后,通过四舍五入EMA将最频繁的整数状态分配给冻结权重。

image.png

在算法1中总结了提出的迭代权重冻结。注意,该算法可以与任何基于梯度的优化器组合使用,并且不限于特定的量化公式或梯度估计器。在迭代级别上冻结权重的想法与迭代修剪密切相关,在迭代修剪中,小权重被迭代修剪(冻结为零)。

相关文章
|
25天前
|
人工智能 Java Serverless
阿里云函数计算助力AI大模型快速部署
随着人工智能技术的快速发展,AI大模型已经成为企业数字化转型的重要工具。然而,对于许多业务人员、开发者以及企业来说,探索和利用AI大模型仍然面临诸多挑战。业务人员可能缺乏编程技能,难以快速上手AI模型;开发者可能受限于GPU资源,无法高效构建和部署AI应用;企业则希望简化技术门槛,以更低的成本和更高的效率利用AI大模型。
108 12
|
4天前
|
机器学习/深度学习 人工智能 自然语言处理
CogAgent-9B:智谱 AI 开源 GLM-PC 的基座模型,专注于预测和执行 GUI 操作,可应用于自动化交互任务
CogAgent-9B 是智谱AI基于 GLM-4V-9B 训练的专用Agent任务模型,支持高分辨率图像处理和双语交互,能够预测并执行GUI操作,广泛应用于自动化任务。
36 12
CogAgent-9B:智谱 AI 开源 GLM-PC 的基座模型,专注于预测和执行 GUI 操作,可应用于自动化交互任务
|
13天前
|
人工智能
AniDoc:蚂蚁集团开源 2D 动画上色 AI 模型,基于视频扩散模型自动将草图序列转换成彩色动画,保持动画的连贯性
AniDoc 是一款基于视频扩散模型的 2D 动画上色 AI 模型,能够自动将草图序列转换为彩色动画。该模型通过对应匹配技术和背景增强策略,实现了色彩和风格的准确传递,适用于动画制作、游戏开发和数字艺术创作等多个领域。
83 16
AniDoc:蚂蚁集团开源 2D 动画上色 AI 模型,基于视频扩散模型自动将草图序列转换成彩色动画,保持动画的连贯性
|
11天前
|
人工智能 数据库连接 API
在部署《主动式智能导购 AI 助手构建》解决方案的过程中,整体体验还是相对顺畅的,但确实遇到了一些问题,文档提供的引导也有所不足,以下是详细的体验评估
在部署《主动式智能导购 AI 助手构建》解决方案的过程中,整体体验还是相对顺畅的,但确实遇到了一些问题,文档提供的引导也有所不足,以下是详细的体验评估
|
23天前
|
人工智能 安全 测试技术
EXAONE 3.5:LG 推出的开源 AI 模型,采用 RAG 和多步推理能力降低模型的幻觉问题
EXAONE 3.5 是 LG AI 研究院推出的开源 AI 模型,擅长长文本处理,能够有效降低模型幻觉问题。该模型提供 24 亿、78 亿和 320 亿参数的三个版本,支持多步推理和检索增强生成技术,适用于多种应用场景。
75 9
EXAONE 3.5:LG 推出的开源 AI 模型,采用 RAG 和多步推理能力降低模型的幻觉问题
|
25天前
|
机器学习/深度学习 人工智能
SNOOPI:创新 AI 文本到图像生成框架,提升单步扩散模型的效率和性能
SNOOPI是一个创新的AI文本到图像生成框架,通过增强单步扩散模型的指导,显著提升模型性能和控制力。该框架包括PG-SB和NASA两种技术,分别用于增强训练稳定性和整合负面提示。SNOOPI在多个评估指标上超越基线模型,尤其在HPSv2得分达到31.08,成为单步扩散模型的新标杆。
66 10
SNOOPI:创新 AI 文本到图像生成框架,提升单步扩散模型的效率和性能
|
25天前
|
人工智能 搜索推荐 开发者
Aurora:xAI 为 Grok AI 推出新的图像生成模型,xAI Premium 用户可无限制访问
Aurora是xAI为Grok AI助手推出的新图像生成模型,专注于生成高逼真度的图像,特别是在人物和风景图像方面。该模型支持文本到图像的生成,并能处理包括公共人物和版权形象在内的多种图像生成请求。Aurora的可用性因用户等级而异,免费用户每天能生成三张图像,而Premium用户则可享受无限制访问。
63 11
Aurora:xAI 为 Grok AI 推出新的图像生成模型,xAI Premium 用户可无限制访问
|
23天前
|
人工智能 缓存 异构计算
云原生AI加速生成式人工智能应用的部署构建
本文探讨了云原生技术背景下,尤其是Kubernetes和容器技术的发展,对模型推理服务带来的挑战与优化策略。文中详细介绍了Knative的弹性扩展机制,包括HPA和CronHPA,以及针对传统弹性扩展“滞后”问题提出的AHPA(高级弹性预测)。此外,文章重点介绍了Fluid项目,它通过分布式缓存优化了模型加载的I/O操作,显著缩短了推理服务的冷启动时间,特别是在处理大规模并发请求时表现出色。通过实际案例,展示了Fluid在vLLM和Qwen模型推理中的应用效果,证明了其在提高模型推理效率和响应速度方面的优势。
云原生AI加速生成式人工智能应用的部署构建
|
26天前
|
存储 人工智能 PyTorch
【AI系统】模型转换流程
本文详细介绍了AI模型在不同框架间的转换方法,包括直接转换和规范式转换两种方式。直接转换涉及从源框架直接生成目标框架的模型文件,而规范式转换则通过一个中间标准格式(如ONNX)作为桥梁,实现模型的跨框架迁移。文中还提供了具体的转换流程和技术细节,以及模型转换工具的概览,帮助用户解决训练环境与部署环境不匹配的问题。
45 5
【AI系统】模型转换流程
|
26天前
|
机器学习/深度学习 存储 人工智能
【AI系统】模型转换基本介绍
模型转换技术旨在解决深度学习模型在不同框架间的兼容性问题,通过格式转换和图优化,将训练框架生成的模型适配到推理框架中,实现高效部署。这一过程涉及模型格式转换、计算图优化、算子统一及输入输出支持等多个环节,确保模型能在特定硬件上快速、准确地运行。推理引擎作为核心组件,通过优化阶段和运行阶段,实现模型的加载、优化和高效执行。面对不同框架的模型文件格式和网络结构,推理引擎需具备高度的灵活性和兼容性,以支持多样化的应用场景。
57 4
【AI系统】模型转换基本介绍