添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

编者按:在 自动驾驶 领域,神经网络的模型量化技术是一个研究热点。本文主要讨论在维持实时性与安全性两项重要指标的同时,INT8与INT4的模型量化数据比较,并揭示了INT8作为当前市场主流技术的原因。

如今深度神经网络(DNN)已成为大多数 AI 应用程序 中的常见算法,比如 计算机 视觉、 语音识别 和自然语言处理等方面,这些网络所表现的超强能力使其成为AI历史的里程碑。但是,它们一方面具有最先进的性能,另一方面却需要巨大的计算能力。因此可以看到,已经有许多硬 软件 的优化技术以及专门的体系结构开发,在不影响其准确度的情况下,能够高性能和高效率地运行这些模型【8】。

在AI最具有挑战性应用之一的 自动驾驶系统 中,DNN的优秀表现也比比皆是。对于自动驾驶领域而言,实时性和安全性这两项要求远超其它领域的指标。

NN模型加速和优化技术大致分为四个方案:参数量化、剪枝和共享、低秩分解、迁移/紧凑 卷积滤波器 和知识蒸馏等【1】。参数量化、剪枝和共享的方法探索模型参数的冗余,并尝试删除冗余和非关键参数。低秩分解的技术使用矩阵/张量分解来估计DNN的信息参数。迁移/紧凑卷积滤波器的方法设计了特殊的结构卷积滤波器,以减少参数空间,并节省存储/计算量。知识蒸馏方法学习蒸馏模型,并训练更紧凑的神经网络以复现较大网络的输出。

DNN模型可以具有上亿个参数,在计算中要存储的数据很大。研究表明,在最佳情况下,可以预测神经网络中超过95%的参数。这意味着,更简单的模型参数化可以保持DNN的性能。量化(quantization)被认为是满足DNN模型内存要求的最有效方法之一。减少内存限制的主要技术之一是减少量化位宽或比特宽(bit width)【3】。

模型参数可以采用32位/比特浮点(FP32)格式表示,但不如以定点(fixed point)格式表示,因为这几乎没有精度损失,甚至更高,但计算量却较低。这种策略不仅可以减少占用的内存,还可以减少与计算相关的功耗。但是,DNN模型的每一层对准确性都有不同的影响,因此可以使用细粒度的混合精度量化方法,其中每层权重和激活值的位宽不同。

现在人们已经证明,FP32训练的参数可以改成8位/比特整数(INT8)做推理,没有显著精度损失,甚至训练时候采用INT8也可以。Xilinx 公司实验中发现INT8可以在一个批处理大小的推理中实现性能无损,不用重新训练。

另外,DNN对噪声也具有 鲁棒性 。在权重或输入上添加噪声,有时候可以获得更好的性能。随机噪声充当正则化项,可以更好地泛化网络。量化DNN的低精度操作,也被看作是不会损害网络性能的噪声。

量化是通过一组离散符号或整数值去逼近一个连续信号的过程。大多数情况是指低比特量化(low bit quantization)。早在1990年代就有人提出了将浮点参数转换为数值精度较低的数据类型这种量化神经网络的方法。 从2010年代起,因为INT8被证明可以加速推理(inference)而不会显着降低准确性,人们对这项技术重新产生了兴趣。

大多数神经网络都使用FP32进行训练(training)。FP32参数表示其实精度比所需精度更高。将FP32参数转换为低位/比特整数表示可以显著地减少带宽、能耗和 芯片 面积。

量化参数通常可以加速神经网络推理,实际情况取决于 处理器 和执行环境。有时候降低精度并不总是能达到预期的加速比。例如,由于量化和反量化的附加操作,INT8推理无法在FP32实现4倍加速。例如谷歌TensorFlow-Lite 和英伟达TensorRT 的INT8推理速度也只提高了2-3倍。批处理大小(Batch size)是指前向传递中处理多个图像的能力,增加这个可让Tensor RT在INT8精度实现3-4倍的加速。

神经网络模型的偏差项(bias terms)在线性方程中会引入了截距。它们通常被视为常量,帮助网络训练并适配给定数据。由于偏差占用最少的内存(例如,10进-12出的全联接网络即FCL,有12个偏差值,对应120个权重值),所以一般建议偏差保持满精度。如果做偏差量化,则可以乘上特征尺度和权重尺度。

量化方法的研究可分为两个领域:1)量化觉察训练(Quantize-awaretraining,QAT);2)训练后量化(Post training quantization,PTQ)。

PTQ指对训练的模型量化权重并重新优化模型以产生尺度化的量化模型。QAT则是指微调稳定的满精度模型或者重新训练量化的模型,这样实数权重通常会尺度化为整数值。

量化方法也可以根据数据分组量化的方式大致分类为:1)按层方式;2)按通道方式。按照参数的量化带宽,可以定义为N-比特量化。还有另外一种划分方法是:1)确定性(deterministic quantization)2) 随机性(stochastic quantization)/概率性。确定性量化,其量化值与实际值之间存在一对一的映射关系;而随机性量化,其权重、激活值或梯度是离散分布的,而量化值是从这些离散分布中采样而来。

如果要量化的目的是实现 硬件 加速,则应首选确定性量化,因为可以预先指定适当的量化级别,以便在专用硬件上运行量化网络,对硬件的性能预期得到改善。概率量化与确定性量化的不同之处在于,其量化的权重更易于解释。可以通过概率量化来了解权重的分布,并且可以深入了解网络的工作原理。由于贝叶斯方法的正则化效应,借助概率量化还可以拥有稀疏的模型。

注:参数聚类和共享的做法有些不同。部分量化(partial quantization)方法使用聚类算法(例如k-均值)对权重状态进行量化,然后将参数存到一个压缩文件中。权重可以使用查找表或线性变换进行解压缩。通常这是在执行推理(inference)时进行。FCL(全联接层)可以通过这种方法极大地压缩权重。不过,这种方案仅是降低了模型的存储开销。

半精度浮点数 (half precision FP16) 在英伟达GPUs和ASIC加速器已经普遍应用,精度损失很小。可以采用FP16混合精度做模型训练,包括权重、激活数值和梯度等更新和存储,其中权重更新的累积误差用FP32。这样的做法已经证明可达到最佳性能,甚至比原来的浮点数网络更好。

饱和量化(Saturated quantization)用于带标定集(calibrationdataset)的标定算法,可生成特征的尺度量。激活值量化后与以前的浮点数据具有相似的分布。Kullback-Lei ble r发散度(也称为相对熵或信息发散度)标定量化(calibrated quantization)方法已被广泛应用,对许多常见模型,这样可以在不降低精度的情况下做到网络提速。另外模型微调过程也可以采用这种方法。

参数量化可以看成是一个穷举搜索问题,优化中发现的尺度量可以减少误差项。给定一个浮点数网络,量化器采用最小化L2误差得到初始尺度量,用于量化第一层权重。然后,调整尺度找到最低输出误差。如此这样,每个层依次执行该操作,直到最后一层。

随着量化技术的发展和成熟,已经出现了不少软件工具,一般是针对特定开发平台提供给用户。

TensorFlow-Lite(TF-Lite)是谷歌的 开源 框架,用于移动或嵌入式设备的模型推理。它也提供用于量化网络的转换和解释的工具。TF-Lite提供了PTQ和QAT两种量化方式。

TensorRT是英伟达开发的C++库,可在其GPU平台做高性能NN模型推理。其低精度推理库会消除卷积层的偏差项,需要一个标定集来调整每层或每通道的量化阈值。然后,量化参数表示为FP32标量和INT8权重。TensorRT采用预训练浮点数模型,并生成可重用优化的INT8模型或16比特半精度模型。英伟达Pascal系列GPU已启用低精度计算,然后图灵(Turing)架构为INT4和INT8两种精度引入了专用计算单元。

黑芝麻智能在自己独立开发的神经网络模型加速芯片(华山一号A500和华山二号A1000)基础上,在提供自动驾驶解决方案的同时,也提供了模型转换和优化的工具,同时支持PTQ和QAT两种量化方式。

量化精度的选择

虽然量化精度INT8已经被工业界普遍接受【2,6】,但是不是可以选择更小量化精度,比如4-比特/位整数(INT4),在学术界一直在进行认真研究,因为主要的担心是:在进一步减少存储空间和加速计算同时,模型性能下降甚至出现溢出(overflow)的可能风险也在增加。QAT量化方法在付出重新训练的代价后,采用INT4的量化模型应用场合会较大,但稳定性还是需要大量的实验验证,尤其是安全性要求很高的自动驾驶领域,大家不得不慎重考虑。

到底采用INT4还是INT8,学术界已经有不少研究工作报道。事实上,工业界INT4的量化产品市场上还是很少见【7】。

2018年谷歌发表一个量化网络推理的白皮书【2】,给出如下实验论断:

权重按通道量化,激活值按层量化,均是INT8的PTQ,对各种CNN架构发现,其分类性能和浮点网络的差在2%以内。

即使不支持8位整数算术,将权重量化为INT8模型大小也可以减少4倍,简单的权重PTQ可实现。

CPU DSP 上对量化网络延迟进行基准测试:与CPU浮点数相比,量化模型实现的速度提高了2-3倍;具有定点数SIMD功能的专用处理器(例如带HVX的 Qualcomm QDSP)提速高达10倍。

QAT可以提供进一步改进:在INT8情况下,其精度相对浮点数网络下降低1%;QAT还允许将权重降低到INT4,其性能损失从2%到10%,其中较小网络带来的性能下降更大。

在TensorFlow和TensorFlow Lite中引入量化网络工具。

QAT的最佳实践,可以量化权重和激活值来获得高精度。

建议权重的按通道量化和激活值的按层量化,这是是硬件加速和内核优化的首选方案。也建议用于优化推理的未来处理器和硬件加速器支持4、8和16位/比特精度模型。

2018年英特尔的研究报告【4】宣称一个4位/比特精度PTQ方法,但实际上是INT8和INT4混合精度,不需要训练微调量化模型,也不需要提供相关数据集。它以激活值和权重的量化为目标,采用三种互补方法最小化张量级的量化误差,其中两个获得闭式的解析解。这三种方法具体如下:

1)整数量化分析限幅(Analytical Clipping forInteger Quantization,ACIQ):其限制(即限幅)张量的激活值范围。虽然这会给原始张量带来失真,但会减少包含大多数分布情况的舍入误差。其通过最小化均方误差测量值,从张量的分布中分析得出最佳剪裁值。该分析阈值可以与其他量化技术集成。

2)按通道比特分配(Per-channel bitallocation):引入比特分配策略确定每个通道的最佳比特宽度。给定平均通道比特宽的限制,目标是为每个通道分配所需的比特宽,使总均方误差最小。通过对输入分布进行假设,发现每个通道的最佳量化步长与其范围的2/3幂成正比。

3)偏差校正(Bias-correction):发现量化后权重平均值和方差存在固有偏差。建议一种简单的方法来补偿这种偏差。

英特尔这个方法【4】在各种卷积模型中所达到的准确度仅比FP32基准低几个百分点。下表给出ImageNet Top-1验证的比较结果:

1)INT8权重和INT4激活值量化;

2)INT4权重和INT8激活值量化;

3)INT4权重和INT4激活值量化。

2019年 华为 发表的研究论文【5】提出线性量化任务可以定义成一个权重和激活值的最小均方误差(MMSE)问题,只是做低比特精度的NN模型推理,无需网络重新训练。其方法是在网络的每一层对受约束MSE问题进行优化,采用硬件觉察(HW-aware)方式对网络参数进行划分,对近似性较差的层使用多低精度量化张量方法。各种网络体系结构的多次实验,看到该方法做到了INT4模型量化。

如下表给出实验中各种模型INT4量化权重和激活值的性能比较,即准确度损失和压缩率的对比。

2020年英伟达论文提供了一个INT8量化工作的流程【6】,它将所研究的各种NN量化后模型和原浮点数模型的性能差别控制在1%以内,包括著名的MobileNets和BERT-large。以下两个表格给出了一些实验数据对比:

1)PTQ INT8 权重量化(按列或者按通道)

2)PTQ和QAT量化比较

最近加州伯克利分校论文【9】设计了一个2进制神经网络(Dyadic Neural Network),叫HAWQ-V3,是一个混合整数精度的量化网络,有特色的工作包括:

模型推理过程仅包括整数乘法,加法和移位(bit shifting),而无需任何浮点运算/转换或整数除法。

混合精度量化作为一个整数线性规划问题,在模型扰动和内存占用/延迟之间取得平衡。

在TVM开发第一个开源4位/比特和混合精度的量化工具,ResNet50模型部署到T4 GPU,与INT8量化相比, INT4的平均速度提高了1.45倍。

ResNet50模型INT8精度量化的准确度达到77.58%,比之前的整数量化性能高2.68%;而混合精度INT4/8量化比INT8的推理延迟降低23%,而准确度仍然达到76.73%。

可以看到定点数量化模型的位/比特越小,模型存储越小,执行加速越大,但相对浮点数模型的性能下降可能性越大,溢出的风险也越大。QAT相比PTQ来说,训练的负担带来的是量化性能的保证。

INT8在工业界已经是很常见的量化精度【2,6】,INT4精度还是需要测试NN模型量化后的性能下降是否可接受【7】。INT4/INT8混合精度应该是模型准确度和执行加速的一个折衷方案【4,9】。

在自动驾驶领域,NN模型量化必须要保证安全性的指标不能出现明显下滑,那么INT4精度显然承受的系统风险较大,估计在近几年的市场INT8仍然是自动驾驶NN模型量化的主流。

[1].Y Cheng et al., “A Survey of Model Compression and Acceleration forDeep Neural Networks”,arXiv:1710.9182, 2018

[2].R Krishnamoorthi, “Quantizing deep convolutional networks forefficient inference: A white paper”, arXiv:1806.08342, 2018

[3].Y Guo, “ASurvey on Methods and Theories of Quantized Neural Networks”, arXiv:1808.04752,2018

[4].R Banner et al., “Post training 4-bit quantization of convolutionalnetworks for rapid-deployment”, arXiv:1810.05723, 2018

[5].Y Choukroun et al., “Low-bit Quantization of Neural Networks for EfficientInference”,arXiv:1902.06882, 2019

[6].HWu et al., “Integer Quantization For Deep Learning Inference: Principles AndEmpirical Evaluation”, arXiv:2004.09602, 2020

[7].Xilinx,“Convolutional Neural Network with INT4 Optimization on Xilinx Devices”,WP521 (v1.0.1) June 24, 2020

[8].TLiang et al., “Pruning and Quantization for Deep Neural NetworkAcceleration: A Survey”, arXiv:2101.90671, 2021

[9].ZYao et al., “HAWQ-V3: Dyadic Neural Network Quantization”, arXiv:2011.10680, 2021

255 W、80 PLUS® 银牌认证 ATX 电源 GreenPoint® 参考设计 电赛电源题讲解:磁设计、磁环选型、参数等 语音音乐芯片WT588F02X-8S在智能儿童保温水杯的应用 2024年2月热门电路设计方案top20 CG-01 室外温湿度测量解决方案 CG-01 室外温湿度测量解决方案 中兴5G随身WiFi拆解:国产芯成为当之无愧的主角 芯片新技术与测试峰会(上海 . 张江) 智能水传感器 智能电单车解决方案 物联网毕设-STM32f407连接云平台检测数据 【微健科技】直播声卡方案,全面兼容直播类以及音乐K歌语聊类APP特效 【微健科技】K歌蓝牙耳机方案,支持蓝牙通话多种变声,趣味通话 冷却和加热背心 基于51单片机的多机串口UART通信Proteus仿真设计 四方维深圳创新实验室启用 守护复苏:行业领袖指点产业机会 电子元器件2024年供求预警 基于工业级32位MCU的高速吹风筒方案 2024年2月热门电路设计方案top20 产品矩阵疾行,国产MCU仍缺高端线 智能电单车解决方案 基于32位单片机XL32F003的感应灯解决方案 四方维亮相2024年深圳传感器展 基于51单片机的多级可调级智能颈托电刺激系统(原理图+仿真) 霍尔传感器在智能卷发器上的应用方案 LVDS转EDP(LT8911EX)十分成熟的方案(评估板原理图+PCB) 逆变器电路方案设计和资料分享 【开源方案】基于STM32的热门电路设计20篇 听高级售前顾问Ale坦陈客户经 升压芯片FP6291在充电电池中的应用方案 白皮书外的ECAD:元器件产品新标配 工业元宇宙为CES 2024盛大开场 基于FP6277,FP6296升压芯片的电推剪理发器方案 四方维与捷普协力提升制造工业数字化 CG-01 室外温湿度测量解决方案 【微健科技】直播声卡方案,全面兼容直播类以及音乐K歌语聊类APP特效 【微健科技】K歌蓝牙耳机方案,支持蓝牙通话多种变声,趣味通话 物联网毕设-宠物投喂器(蓝牙+STM32+APP) 51单片机驱动8x8 LED点阵上下左右移动的Proteus仿真 实例分享-示波器电路设计方案 英伟达全面发展成为“AI代工厂” 中国芯出海之一:试试这些自测题 基于51单片机的多机串口UART通信Proteus仿真设计 采购与供应链管理团队 3月功率器件采购活动同比降44.4% 四方维深圳国际传感器展现场报道 基于UC3842反激式开关电源multisim仿真全套资料 基于stm32的电压可调、电流智能检测系统设计(原理图、PCB图、源代码) 基于ICL8038的正弦波、方波和三角波发生器protues仿真设计(仿真图、论文) 半桥开关电源设计 最大输出48V 30A 效率92%(变压器设计图纸、原理图、PCB图) UC3843单端反激隔离式多路输出开关电源最大输出80W 基于单片机protues仿真的GPS、北斗、glonass定位系统设计(仿真图、源代码、讲解视频) 基于OB2269设计的开关电源(12V5A)提供原理图、PCB图、BOM表 2024年4月热门电路设计方案top20 基于单片机protues仿真的多组温湿度轮询采集系统设计(仿真图、源代码、设计要求) 基于stm32控制的太阳能MPPT控制器设计(提供原理图、PCB图和源代码) 基于单片机的智能脉搏检测仪设计(原理图、PCB图、源代码、参考设计) 大功率开关电源设计(48V 15A)提供原理图、PCB、设计资料 基于MC34063A控制的升压、降压、负电压 DC/DC开关电源设计(AD原理图、PCB图) 基于单片机控制的恒流源protues仿真全套资料(仿真图、源代码、讲解视频) 基于multisim的BOOST升压仿真电路设计(仿真图、设计说明) 基于STM32的智能家庭安防系统设计(原理图、PCB图、源代码、参考论文) 基于stm32控制的智能门禁控制器设计(原理图、PCB图、源代码和上位机) 基于stm32的水质检测protues仿真设计(实现水质浑浊度、PH值显示和告警) 20KW三相PFC逆变器 小功率直流稳压电源设计-课程设计(仿真图、AD原理图、PCB图、设计说明) 基于无线充电的电路设计方案精选20篇 基于stm32的指纹考勤系统(原理图、PCB图) RFID/NFC远距离射频模块(演示视频、程序、原理图、PCB图) 基于单片机protues仿真的水果自动挑拣仪器设计(仿真图、源代码、讲解视频、AD原理图、PCB图) 12V转36V 3A BOOST升压开关电源设计(AD原理图、PCB图、实验报告) 基于stm32的心率采样系统设计+LabVIEW显示(原理图、源代码、论文、讲解视频、上位机) 基于stm32设计的智能配电单元(原理图、PCB图、源代码和上位机) 基于单片机protues仿真的智能温度控制系统设计(仿真图、源代码) 基于单片机智能控制的电压可调开关电源设计(仿真图、源代码、AD原理图、PC图、论文) 基于stm32的环境监测系统(包含仿真图、源代码和讲解演示视频) 基于单片机protues仿真的脑血氧饱和浓度测量仪设计(仿真图、源代码) 基于单片机protues仿真的温室盆栽灌溉系统设计(仿真图、源代码、讲解视频) 蔡司,“质”敬明天:新能源汽车主题日 第三届汽车技术论坛 变则通,江波龙的一盘大棋 数字汽车钥匙:便捷与安全的选择?探索英飞凌数字钥匙解决方案 来实战第二季EP1 - 单片机BootLoader的理解与实现 与英飞凌一起探讨车身电子电气架构及跨域融合的发展方向 新一代电子电气架构:空间域/功能域连接器系统 英飞凌OBC解决方案深度详解 安森美汽车智能传感器提升驾驶的安全性及可靠性 爆款拆解:服务器冗余电源拆解,揭秘稳定可靠的来源 爆款拆解:萤石儿童陪护机器人拆解,解析智能陪伴背后的“秘密” 英飞凌AURIX™ TC3xx车规级单片机和典型模块技巧及运用(CAN-FD、SMU、ADC) 第三届绿色能源技术论坛 蓝牙5.4时代到了,你准备好了吗? 爆款拆解:服务器冗余电源拆解,揭秘稳定可靠的来源 【直播DAY1】高层对话-2024 深圳国际传感器与应用技术展览会 Keysight World Tech Day 人工智能与数据中心互连新技术分论坛 莱迪思Avant-G™和Avant-X™ FPGA系列,构建创新的低功耗FPGA解决方案 快速上手面向成本敏感型应用的开发利器:ZU 系列 芯片新技术与测试峰会(上海 . 张江) FPGA至简设计原理与应用 “连”动数据无限可能 【直播DAY2】高层对话-2024 深圳国际传感器与应用技术展览会 物联网时代近场通信技术(NFC)新选择 —— Renesas PTX105R套件评测 2024研华智能设备新品发布会 与未来同行-是德科技创新技术行业峰会-北京-主会场 与未来同行-是德科技创新技术行业峰会-北京-高速互连新技术分会场 Alitum Designer AD 软件教程电子档视频课程 与未来同行-是德科技创新技术行业峰会-北京-无线通信与汽车网联新技术分会场 小米手环8 PRO拆解:芯片国产化率又提升了 Python基础实战系列课程 西门子EDA我在用 — 老石聊硬件加速器 降压稳压电源电路设计 32位流水灯软件设计 lm334恒流源电路 隔离485通讯电路设计 51单片机二层五车位立体停车系统 51单片机物联网毕业设计 lm3409恒流电路设计 51单片机电子电路设计方案 51单片机系统考勤毕设 LM34936升降压设计 降压电路分立元器件方案 雨滴传感器电路设计 降低电流电路设计 lm2596数控可调电源设计 51心形流水灯硬件电路设计 陀螺仪传感器电路设计 隐形眼镜盒电路设计 隔离CAN总线收发器电路设计 8位密码锁电子电路设计 LM358呼吸灯毕业设计 阻抗匹配电路设计 LM2596S降压稳压电源电路设计 LM25965a开关电源设计 lm358呼吸灯设计原理及功能 arduino音响设计方案 lm2576可调电源设计 BLDC电机驱动硬件设计 雨滴检测模块电路设计 DHT11车内测量湿度电路设计 阻容降压养生壶电路图 交换板电路设计方案 基于单片机的楼道声光控灯的电路设计 led驱动 proteus仿真 Qorvo LCD显示 数字化转型 Hosiden GE智能平台 易兆微电子 联创微电子 Baraja Lumentum RoboDK 3Glasses Linux基金会 MAX11049ETN MC56F8322VFAE ADA4807-1AKSZ TPS92662AQPHPRQ1 STD20NF06LAG SI7463DP-T1-GE3 TFP410MPAPREP S-1000C36-M5T1G ATSAME70N21B-AN NCP1593AMNTWG AD5726 LM3481QMM TMS320F28335PGFA AT25160B-XHL TMC246 MUR860G SI8662BD-B-ISR LTC2984 INA827AIDGK AD5757ACPZ AD5752 TPS2H160BQPWPRQ1 AD7685CRMZRL7 UCC28C45DGK MK66FX1M0 ATXMEGA64D3-AU ADP7105ACPZ-5.0 LTC2642ACDD-16 MBRD1045T4G LTC5553 DAC8551IDGK AD7899ARSZ-