news 2026/11/6 2:01:02

7.训练相关

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
7.训练相关

系列文章目录


章节1:什么是MLIR

章节2:MLIR的引入

章节3:MLIR完成一个端到端的流程

章节4:编写一个pass

章节5:MLIR相关语法

章节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 增加多少”。

比如。在 x=3 处,导数是 6,意思是往正方向走一点,函数值大约增加 6 倍那么多。

一维只有“正方向”和“负方向”,所以导数一个数就够了。

2. 多维时,每个方向都有偏导

函数有多个变量时,比如:

它对 xx 的偏导是:

对 yy 的偏导是:

偏导只回答“只动 x 时怎么变”或“只动 y 时怎么变”,但没有回答“如果同时动 x 和 y,往哪个方向变最快”。

3. 梯度把偏导组成向量

梯度就是把所有偏导按变量顺序排成一个向量:

在点 (1,2)处:

这个向量 (2,4)就是梯度。

4. 梯度的几何意义

梯度 ∇f∇f 有两个关键性质:

  • 方向:指向函数值增长最快的方向

  • 大小:这个最快方向的增长率

所以:

  • 沿梯度方向走,函数值上升最快

  • 沿负梯度方向走,函数值下降最快

  • 梯度垂直于等高线(等值线)

以为例,等高线是圆。在点 (1,2),梯度 (2,4)从原点指向外,正好垂直于过该点的圆,指向函数值增大的方向。

5. 在深度学习里,梯度是什么

训练时,损失函数 LL 是所有模型参数的函数:

梯度就是:

它告诉每个参数:

  • 如果只把这个参数往正方向调一点,损失会怎么变

  • 所有参数一起看,往哪个方向调,损失上升最快

所以梯度下降做的是,其中η就代表学习率,(在足够小学习率下)损失会局部减小:

即往负梯度方向走,让损失下降。

6. 一个具体例子

设损失:

在 w=1,b=1处:

  • 预测值 =1×2+1=3

  • 误差 =3−5=−2

  • 损失 =4

对 w 的偏导:

对 bb 的偏导:

梯度:

负梯度方向是 (8,4),意思是增大 w 和 b能让损失下降。梯度下降会按这个方向更新参数。

一句话总结

梯度是由所有偏导数组成的向量,指向函数值增长最快的方向;它的反方向就是函数值下降最快的方向。在深度学习中,梯度告诉我们“每个参数该怎么调、往哪个方向调,损失会上升或下降”。

二、LSQ的QAT算法

理解 LSQ(Learned 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 Scale)

LSQ 发现,如果直接使用上述梯度,步长 s 的更新幅度会与权重 w 的更新幅度严重不匹配,导致训练不稳定。

为此,LSQ 引入了一个梯度缩放因子,人为地调整 s 的梯度大小,使其更新步调与权重更新相协调。论文中使用的缩放因子约为​​(其中 N 是该层参数的数量),这个启发式方法被证明能有效提升收敛性。

完整的 LSQ 训练流程

  1. 初始化:从一个预训练好的全精度(FP32)模型开始,这能显著提升最终性能。

  2. 前向传播:使用量化后的权重和激活(v^)进行计算。

  3. 反向传播:

    • 对权重:使用标准的 STE 近似其梯度。

    • 对步长 s:使用上面推导的LSQ 专属梯度公式,并乘以缩放因子。

  4. 参数更新:同时更新全精度权重和可学习的步长 s。

  5. 部署:训练完成后,从模型中提取出学习好的、固定的步长 s,用于最终的整数推理。

总结

LSQ 的核心贡献在于将量化参数(步长)本身也变成了模型优化的一部分。它通过设计一个能感知量化状态(格点距离、是否截断)的专属梯度,并辅以梯度缩放来平衡优化,使得模型能够自适应地找到低比特(如 2、3、4 bit)下的最优量化配置。这让 LSQ 在极低比特量化下表现尤为突出,例如首次实现了 3-bit 量化网络达到全精度模型的精度。


总结

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/11/6 2:00:43

数据质量怎么判断?完整性、准确性、一致性到底有什么区别?

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/11/6 1:59:26

QML自定义输入框:仿Agent输入条与仿wechat输入框

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/11/6 1:59:26

msvcr71.dll丢失怎么办?官方修复流程与单文件下载风险详解

在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…

作者头像 李华
网站建设 2026/11/6 1:56:25

粗糙度测试方法比对,WLI、LSCM、AFM该如何选择?

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/11/6 1:55:27

WiFi 智能电表选型指南:单相 / 三相 / 高速监测三款典型产品对比

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/11/6 1:55:17

Qwen2.5-7B 私有化部署 vLLM 实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华