7.训练相关 系列文章目录章节1什么是MLIR章节2MLIR的引入章节3MLIR完成一个端到端的流程章节4编写一个pass章节5MLIR相关语法章节6量化相关章节7训练相关章节8图优化文章目录目录系列文章目录文章目录一、梯度1. 从一维导数说起2. 多维时每个方向都有偏导3. 梯度把偏导组成向量4. 梯度的几何意义5. 在深度学习里梯度是什么6. 一个具体例子一句话总结二、LSQ的QAT算法核心思想让量化器自己“找”最佳分辨率量化公式步长 s 决定了量化的一切核心机制如何计算可学习步长 s 的梯度关键技巧梯度缩放Gradient Scale完整的 LSQ 训练流程总结总结一、梯度梯度是一个向量它把“函数在每个方向上的变化率”打包在一起指向函数值增长最快的方向其长度表示这个最快方向的增长率。1. 从一维导数说起一维函数 f(x)f(x) 的导数 f′(x)f′(x) 表示“xx 增加一点ff 增加多少”。比如。在 x3 处导数是 6意思是往正方向走一点函数值大约增加 6 倍那么多。一维只有“正方向”和“负方向”所以导数一个数就够了。2. 多维时每个方向都有偏导函数有多个变量时比如它对 xx 的偏导是对 yy 的偏导是偏导只回答“只动 x 时怎么变”或“只动 y 时怎么变”但没有回答“如果同时动 x 和 y往哪个方向变最快”。3. 梯度把偏导组成向量梯度就是把所有偏导按变量顺序排成一个向量在点 (1,2)处这个向量 (2,4)就是梯度。4. 梯度的几何意义梯度 ∇f∇f 有两个关键性质方向指向函数值增长最快的方向大小这个最快方向的增长率所以沿梯度方向走函数值上升最快沿负梯度方向走函数值下降最快梯度垂直于等高线等值线以为例等高线是圆。在点 (1,2)梯度 (2,4)从原点指向外正好垂直于过该点的圆指向函数值增大的方向。5. 在深度学习里梯度是什么训练时损失函数 LL 是所有模型参数的函数梯度就是它告诉每个参数如果只把这个参数往正方向调一点损失会怎么变所有参数一起看往哪个方向调损失上升最快所以梯度下降做的是其中η就代表学习率在足够小学习率下损失会局部减小即往负梯度方向走让损失下降。6. 一个具体例子设损失在 w1,b1处预测值 1×213误差 3−5−2损失 4对 w 的偏导对 bb 的偏导梯度负梯度方向是 (8,4)意思是增大 w 和 b能让损失下降。梯度下降会按这个方向更新参数。一句话总结梯度是由所有偏导数组成的向量指向函数值增长最快的方向它的反方向就是函数值下降最快的方向。在深度学习中梯度告诉我们“每个参数该怎么调、往哪个方向调损失会上升或下降”。二、LSQ的QAT算法理解 LSQLearned Step Size Quantization的关键在于把量化“步长”从一个需要预设的固定超参数变成了一个像权重一样、可以由模型自己“学习”的可训练参数。核心思想让量化器自己“找”最佳分辨率在常规的 QAT 中量化步长 s 通常是固定的例如根据权重或激活的统计值预先计算好。LSQ 的核心突破在于它让步长 s 变成了一个可学习的参数直接与模型的权重一起通过梯度下降来优化。这意味着模型在训练中会自动地为每一层、每一个张量寻找最适合其当前数据分布的量化“分辨率”而不是依赖一个可能并非最优的静态预设值。量化公式步长 s 决定了量化的一切在 LSQ 中对于一个待量化的数值 v可以是权重或激活其量化过程为vˉ量化后的整数。v^反量化回浮点数的结果。s可学习的量化步长。它同时决定了量化精度ss 越小分辨率越高和截断边界。核心机制如何计算可学习步长 s 的梯度这是 LSQ 最精妙的部分。由于量化中的取整操作⌊⋅⌋本身不可导LSQ 使用了STE直通估计器的思想并推导出了一个专门针对步长 s 的梯度公式这个公式的含义很直观在量化范围内梯度反映了当前数值 v 与它最近量化格点的距离。如果 v 正好在格点上梯度贡献为 0如果 v 在两个格点中间梯度最大推动步长 s 去“覆盖”这个位置。在截断区域当 v 超出可表示范围时梯度会饱和为一个常数−QN​ 或 QP​推动 s 增大以将原本被截断的极端值重新纳入可量化范围。关键技巧梯度缩放Gradient ScaleLSQ 发现如果直接使用上述梯度步长 s 的更新幅度会与权重 w 的更新幅度严重不匹配导致训练不稳定。为此LSQ 引入了一个梯度缩放因子人为地调整 s 的梯度大小使其更新步调与权重更新相协调。论文中使用的缩放因子约为​​其中 N 是该层参数的数量这个启发式方法被证明能有效提升收敛性。完整的 LSQ 训练流程初始化从一个预训练好的全精度FP32模型开始这能显著提升最终性能。前向传播使用量化后的权重和激活v^进行计算。反向传播对权重使用标准的 STE 近似其梯度。对步长 s使用上面推导的LSQ 专属梯度公式并乘以缩放因子。参数更新同时更新全精度权重和可学习的步长 s。部署训练完成后从模型中提取出学习好的、固定的步长 s用于最终的整数推理。总结LSQ 的核心贡献在于将量化参数步长本身也变成了模型优化的一部分。它通过设计一个能感知量化状态格点距离、是否截断的专属梯度并辅以梯度缩放来平衡优化使得模型能够自适应地找到低比特如 2、3、4 bit下的最优量化配置。这让 LSQ 在极低比特量化下表现尤为突出例如首次实现了 3-bit 量化网络达到全精度模型的精度。总结