NPU神经处理单元数据压缩
微信视频号:sph0RgSyDYV47z6
快手号:4874645212
抖音号:dy0so323fq2w
小红书号:95619019828
B站1:UID:3546863642871878
B站2:UID: 3546955410049087
1) AI的数据压缩
问题:
大型语言模型(LLM)功能强大,但其庞大的规模和计算需求常带来实际难题。部署一个拥有数十亿参数的模型需要大量内存、处理能力和能耗,这限制了它们在移动设备或边缘硬件等资源受限环境中的应用,并增加了云部署的运营成本。
解决:
有以下几种压缩方法:
l量化:使用低精度数字(如8位定点而非32位浮点数)表示模型参数/激活值
l剪枝: 识别并移除模型中冗余或不那么重要的参数(权重)或结构(如整个神经元或通道)。
·非结构化剪枝:移除单个权重,产生稀疏矩阵,需专用硬件或库才能加速。
·结构化剪枝:移除更大、规则的权重块(例如,整个通道或滤波器),使在标准硬件上获得加速更容易。
l知识蒸馏: 一个较小的“学生”模型被训练来模仿较大的预训练“教师”模型的行为。学生模型从教师模型的输出(例如,类别上的概率分布)或内部表示中学习,有效地将知识转移到更紧凑的形式。
l低秩分解: 此方法针对模型中的大型权重矩阵(如全连接层或注意力层中的矩阵)。它通过将这些矩阵分解为更小矩阵的乘积来近似它们,减少参数总数和相关计算。奇异值分解(SVD)等技术常在此处使用。
这些方法各自有一系列权衡,涉及实现的压缩程度、对模型准确率的影响、实现的复杂性以及在不同硬件平台上产生的推理加速。
量化显得突出,特别对于大型语言模型而言,因为降低数值精度直接转化为更低的内存带宽需求(通常是瓶颈),并且可以借助许多现代CPU和GPU上高度优化的整数算术运算。它通常在压缩比、性能提升和模型准确率保持之间提供一个良好的平衡。
2) 量化:
AI模型的庞大和复杂常常让人望而却步,尤其是当涉及到计算资源和存储空间的限制时。然而,有一种神奇的技术——量化,就像一把魔法棒,能够在不损失太多性能的情况下,让模型变得更小、更快、更节能。从高精度的 FP32 到低精度的 INT4,量化技术到底是什么?
量化就像是把一幅高精度的画变成一幅低精度的画,但尽量让它看起来还差不多。在计算机的世界里,量化是指将模型中的数据从高精度表示转换为低精度表示。比如,把 FP32(32 位浮点数)转换成 FP16(16 位浮点数)或 INT8(8 位整数)。
2.1 量化的意义
l更低的内存占用:更低的精度意味着每个参数所需的内存更少。
l提高速度:整数运算通常比浮点运算(FlOps)快得多,尤其是在针对低位计算优化的硬件上。
l能源效率:较低精度的计算消耗的功率要少得多,使其成为移动和边缘设备的理想选择。
2.2 量化的类型
1)均匀量化:此方法将一系列浮点值均匀地映射到整数值。
2)非均匀量化:使用基于网络权重或激活分布的更复杂的映射。
3)对称与非对称量化:
n对称:对正值和负值使用相同的比例和零点。
Ø有符号INT8:表示正值和负值。其常规范围是从-128到127。这对于表示权重或激活值很有用,因为它们通常以零为中心。
Ø有符号INT4: 通常表示-8到7范围内的值。
n不对称:允许不同的尺度和零点,这对于不以零为中心的分布很有用
Ø无符号INT8: 只表示非负值。范围从0到255。适合始终为正的激活值,如ReLU激活函数之后的激活值,尽管有符号整数在权重中更常见。
无符号INT4: 表示0到15范围内的值。
2.3 线性映射原理:
将浮点数范围 [Rmin,Rmax] 映射到8位整数范围 [0,255],映射方式可能如下:
添加图片注释,不超过 140 字(可选)
转化成(从原始实数值r,得到量化值q)公式:
q= round(r/S) +Z
所以反量化(从量化值q,得到原始实数值r)公式:
r=s*(q-z)
其中,
S比例因子:设置量化值之间的步长。定点数本质上是1个由预设因子隐式缩放的整数。例如,您可能决定使用一个8位带符号整数(范围从-128到127)来表示-1.0到+1.0之间的数值。为此,您需要定义一个缩放因子为 2^7=128
Z零点:分配给实数零的整数值。
2.4量化过程
即从r 到q 的转换,涉及除以缩放因子、加上零点、四舍五入到最近的整数,并将结果钳制到允许的整数范围(例如,INT8 为 [-128, 127]):
q = clip(round(r / s) + z, q_min, q_max)
缩放因子 (s) 和零点 (z) 界定了量化方案,两种主要方案是对称量化和非对称量化。
2.4.1对称量化
· 映射方式:
它将浮点范围[−R, R] 映射到有符号整数范围[q_min, q_max],通常如 INT8 的 [−127, 127] 或[−128, 127]。其特点是浮点值 0.0 直接映射到整数值 0。
· 缩放因子和零点:
1.零点 (z) 固定为 0。
2.缩放因子 (s) 由您要表示的范围中的最大绝对值 (R) 确定。具体而言,R = max(|min(r)|, |max(r)|) 或简言之针对整个张量/通道/组的 R = max(|r|)。然后计算缩放因子,将此最大绝对值R 映射到整数范围的边界。对于映射到[−127, 127] 的有符号 INT8,缩放因子将是 s = R / 127。
· 公式:
1.量化:q = clip(round(r/s), q_min, q_max) (零点为 0)
2.反量化:r ≈ s*q
· 例子:
假设将范围 [−3.8, 3.2] 中的值量化为有符号 INT8(使用 [−127, 127] 范围进行对称处理)。
1.确定范围限值R=max(|−3.8|,|3.2|) = 3.8
2.计算缩放因子s=3.8/127 ≈ 0.0299
3.设定零点z=0
4.量化一个值,例如r=1.5:q=round(1.5/0.0299) = round(50.167) = 50。
5.量化一个值,例如r=−0.8:q=round(−0.8/0.0299) = round(−26.75) = −27。
6.反量化q=50:r≈0.0299*50=1.495。
7.反量化q=−27:r≈0.0299*(−27)=−0.8073。
· 优点:
1.简洁性:零点固定为 0,简化了计算。
2.效率:当零点为 0 时,某些硬件加速器可以更高效地执行整数计算。
· 缺点:
1.潜在的低效:如果原始浮点分布偏斜(未围绕零点居中),则整数范围的一侧可能未充分利用或未使用,这相较于使用相同位数的非对称量化,会有效降低可用精度。
2.4.2 非对称量化
非对称量化将张量中观测到的精确浮点最小值和最大值映射到整数范围的最小值和最大值。当数据分布未围绕零点居中时,这种方法尤其有用。
映射方式
将浮点范围[min(r),max(r)] 映射到完整的整数范围 [qmin,qmax],例如:
·无符号 INT8(UINT8)的 [0,255]
·有符号 INT8 的 [−128,127]。
添加图片注释,不超过 140 字(可选)
缩放因子和零点
·缩放因子(s):基于完整浮点范围计算:s=(max(r)−min(r))/(qmax−qmin)
·零点(z):确保浮点值 0.0 正确映射到量化值,计算为整数偏移量:z=round(qmin−smin(r)/s)
注意:z 可能不为 0,它表示实数 0.0 对应的整数值。实际应用中,零点通常被钳制到整数范围 [qmin,qmax],若需钳制,缩放因子可能需微调。
公式
·量化:q=clip(round(s/r)+z, qmin, qmax)
·反量化:r≈s*(q−z)
示例
假设将范围[0.5,6.2] 中的激活值量化为无符号 INT8(UINT8,范围 [0,255]):
1.确定范围:min(r)=0.5,max(r)=6.2。
2.计算缩放因子 s:s=255−6.2−0.5=255.7≈0.02235
3.计算零点 z:z=round(0−0.022350.5)=round(−22.37)=−22
4.量化 r=1.5:q=clip(round(0.022351.5)−22, 0, 255)=clip(67−22, 0, 255)=45
5.量化 r=5.0:q=clip(round(0.022355.0)−22, 0, 255)=clip(224−22, 0, 255)=202
6.反量化 q=45:r≈0.02235⋅(45−(−22))=0.02235⋅67≈1.497
7.反量化 q=202:r≈0.02235⋅(202−(−22))=0.02235⋅224≈4.99
· 优点
灵活性:能精确表示偏斜或未围绕零点居中的数据分布(例如ReLU 激活函数的输出恒为非负)。
精度:最大化利用整数范围,对非对称分布的数据可提供比对称量化更低的量化误差。
· 缺点
复杂性:反量化及后续计算需额外处理缩放因子和零点,相比零点固定为0的对称量化,会引入计算和存储开销
2.5 量化的策略:
训练后量化(PTQ)和量化感知训练(QAT)
1)训练后量化 (PTQ):
模型已使用标准高精度浮点数(通常是FP32)训练完成后,对其进行量化。
PTQ 实现起来更简单、更快速,但与 QAT 相比,其准确率下降幅度可能略大。
2)量化感知训练 (QAT):
不是对一个完全训练好的模型进行量化,而是在模型权重仍在更新的同时模拟低精度行为。核心思想是在模型的计算图中插入操作,以模拟量化和反量化步骤(FP32→INT8→FP32)。这些通常被称为“伪量化”节点。在训练的前向传播过程中,权重和/或激活值在用于后续操作之前被量化,然后立即反量化。这迫使模型学习能够处理量化过程引入的噪声和信息损失的参数。
将模拟量化集成到训练过程中,使模型能够根据量化噪声调整其权重,能获得更高精度。
微信视频号:sph0RgSyDYV47z6
快手号:4874645212
抖音号:dy0so323fq2w
小红书号:95619019828
B站1:UID:3546863642871878
B站2:UID: 3546955410049087
参考文献链接
人工智能芯片与自动驾驶

浙公网安备 33010602011771号