大模型--模型量化GPTQ--23

news/2024/11/27 9:42:35/文章来源:https://www.cnblogs.com/cavalier-chen/p/18571604

目录
  • 1. 参考
  • 2. OBD
  • 3. OBS
  • 4. 从 OBS 到 OBQ
  • 5. GPTQ Gradient PreTrained Quantity

1. 参考

GPTQ 量化技术演进:https://zhuanlan.zhihu.com/p/690834228?utm_id=0
OBS/OBD/GPTQ:https://www.cnblogs.com/wangbingbing/p/17547681.html

GPTQ使用的方法改进自OBC(Frantar, 2022),OBC来源于OBS(Hassibi, 1992),OBS来源于OBD(Lecun, 1990)

2. OBD

OBD 的基本思想是以模型训练损失为目标函数,迭代地选择剪枝参数使目标函数Loss最小化。
设模型的权重为w,损失函数为f,则在当前权重下,模型的训练损失为
对损失函数进行泰勒展开可以估计权重调整造成的影响,对 进行泰勒展开:

其中:是 Hessian 矩阵
是剪枝后损失的变化量,显然越小越好
目标就是找到一个,使得最小。

一个训练好的神经网络模型,其损失一般都处于权重空间中的局部极小值,因此可以认为,因此式中的第一项可以忽略。另外再忽略高阶项,则上式可以简化为:

介绍 OBD 的一个重要假设,为了进一步简化问题,OBD 认为 Hessian 矩阵是一个对角矩阵--也就是只有对角线有元素,其他全为0,其含义是,同时剪枝多个权重参数对模型精度造成的影响,等于单独剪枝每个权重对模型造成影响之和

最终需要求解的问题就成了

3. OBS

OBS 受到 OBD 关于减小模型剪枝对损失函数影响的启发,但是不同意 OBD 的假设。
认为权重剪枝之间是有关联的,所以不能简单地将 Hessian 矩阵假设为对角矩阵

再次分析:

假设对第q个参数进行剪枝,

也就是对应位置的权重置为0,

于是这里就变成了带约束的凸优化问题:

其中:约束条件可以写成更一般的形式:

第q个值为 1 的单位向量。

对于上述问题,可以使用拉格朗日乘子法来求解,定义拉格朗日函数:

求导,并设置为 0

然后做如下变换:

  1. 对一个方程乘以
    交换第二个方程的

  1. 第二个方程乘以

  2. 注意到并将第二个方程带入第一个方程

  3. 得到

  4. 第一个方程,解得

其中:
表示的第q列,

  1. 获得之后带入损失函数


得到:

可以找到当前最优的剪枝参数q,再使用公式计算所有权重的修正量,这就完成了一次迭代。不断找到需要剪枝的权重参数,直到达到剪枝的目标。

4. 从 OBS 到 OBQ

剪枝和量化都涉及到对权重值的修改,只不过剪枝是直接将权重设置为 0,而量化则是降低权重值的数值精度,比如将 fp32 数值变成 fp16,int8,int4 等
OBS 的思想可以很自然的应用到量化上来,这种方法也被称为OBQ (Optimal Brain Quantization),为了兼顾剪枝和量化,论文的标题就叫 OBC (Optimal Brain Compression)。

从这个公式出发:

在 OBS 中,对应的约束条件为
索引为 q 的权重修改量为

而在量化条件下,情况要复杂一点,
参考:https://arxiv.org/abs/2106.08295
量化实际上就是将浮点数权重转换为整数:

其中 表示缩放系数,
z表示零点偏移,
N表示最大整数值。

为例,量化函数图像如下:

可以看到,该函数将浮点数权重分阶段地映射到了整数值上。

一个训练好的模型,对所有权重值应用量化变换,并保存好相应的参数,这就是经典的量化过程。

与量化过程对应的还有一个逆量化操作可以恢复原先的精度类型

量化后的权重实际上存在两种等价的表示形式,第一种是通过量化函数变换到的整数空间,第二种是通过逆量化函数变换到的浮点数空间。

对于 OBQ 来说,每量化一个权重值,需要调整剩余权重来最小化量化损失,但是我们不能直接在整数空间上调整(因为剩余权重都是浮点数),应该在浮点数空间上调整,
定义函数 quant先对权重进行量化,再逆量化,就得到浮点数空间上的量化值,

剪枝操作中的约束条件在这里就变成了

再次使用拉格朗日乘子法求解最小化问题,可以得到,


表示一行权重的修正量即

交替使用上面公式 就得到了量化版本的 OBC 算法 OBQ。

5. GPTQ Gradient PreTrained Quantity

OBQ 采用 row-wise 的权重量化方法,将 Hessian 矩阵求逆的复杂度降低到了
并且一个权重矩阵总的参数量为因此总体来说 OBQ 的时间复杂度为
虽然相对于 OBS 有了很大的改进,但对于大模型来说,OBQ 仍然是一个非常耗时的操作。

GPTQ 提出了两点改进来提高 OBQ 的量化效率,
首先是将每一行的量化权重选择方式从贪心策略改成按索引顺序选择,
其次是将权重更新方式修改为批量更新

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/842129.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ERP、SCM、SRM、WMS、MES、QMS、OMS全上,真的有必要吗?

声明:不存在任何踩一捧一的意思,来自于网络上大家讨论度比较高的一个话题,某些专门盯着我们挑刺的朋友可以出门右转了。 另外这篇内容也会尽量客观的去探讨这个问题,也欢迎大家补充指正哦!首先,开门见山给出我个人的看法:没有必要。 就拿我所了解的一些企业来说吧,上了…

sqoop搭建及基本操作

SQOOP安装及使用 目录SQOOP安装及使用SQOOP安装1、上传并解压2、修改配置文件3、修改环境变量4、添加MySQL连接驱动5、测试准备MySQL数据登录MySQL数据库创建student数据库切换数据库并导入数据另外一种导入数据的方式使用Navicat运行SQL文件导出MySQL数据库importMySQLToHDFS编…

创建vue

首先下载nodejs 在安装好的nodejs目录下创建两个文件夹,分别命名为node_cache和node_global 打开cmd,分别输入 npm config set prefix “你的安装目录\node_global” npm config set cache “你的安装目录\node_cache” 将npm的全局模块目录和缓存目录配置到我们刚才创建的那…

TEZ搭建

Hive集成TezTez介绍:https://www.infoq.cn/article/apache-tez-saha-murthy MR在hive2中已经被弃用了,推荐使用Tez或Spark作为执行引擎1、编译下载Tez源码并根据Hadoop版本进行 由于Tez官方所提供的安装包对某些Hadoop版本不支持,可采取手动编译方式 需准备好maven环境,手动…

半导体行业数据保护:内外网数据摆渡的前沿技术!

在半导体行业中,核心数据的保护至关重要,像设计图纸、源代码、工艺参数、生产数据、测试数据、研发数据等,这些数据不仅是企业的核心资产,还直接关系到产品的竞争力和市场占有率。基于网络和数据安全管理需求,半导体企业一般会将内部网络通过防火墙隔离为内网和外网两个网…

什么是Data URI?

Data URI,全称为 Data Uniform Resource Identifier,是一种将小型数据文件直接嵌入到HTML、CSS或JavaScript等Web资源中的方案。它允许将数据编码为Base64字符串并包含在URI中,而不是引用外部文件。 基本语法: data:[<mediatype>][;base64],<data>data: 前缀,…

怎么去掉点击a链接或者图片出现的边框?

要去掉点击 a 链接或者图片出现的边框,你可以使用 CSS 的 outline 属性将其设置为 none。 以下几种方法可以实现: 1. 通用方法 (推荐): a, img {outline: none; }这个方法最简单直接,会移除所有 a 标签和 img 标签的 outline。 2. 更精确的控制 - 针对特定链接或图片: 如…

windows上安装npm

npm是nodejs下的包管理器,要使用npm命令就要下载nodejs 首先进入nodejs官网进行下载Node.js — Run JavaScript Everywhere (nodejs.org) 下载好后next,安装到想要的路径下一直next就行 这一步选择APP to PATH,默认添加配置 打开cmd 输入echo %path%,查看所有配置 看到node…

Prometheus告警带图完美解决方案

转载自:https://mp.weixin.qq.com/s/dDmZaJ66tdEScCJyansyJA 需求背景 告警分析处理流程 通常我们收到 Prometheus 告警事件通知后,往往都需要登录 Alertmanager 页面查看当前激活的告警,如果需要分析告警历史数据信息,还需要登录 Prometheus 页面的在 Alerts 中查询告警 p…

360评估如何自动剔除掉最高分和最低分?

在 360 度评估中,为了确保数据的真实性和有效性,我们可以采取一些控制评分结果的严谨措施。比如前几期中提到的 评价时的得分分布控制、提交评价后HR管理后台对极端评价结果一键打回功能等这些手段。 但有的时候我们就是希望不人为去干预太多,比如一键打回那种方式HR要付出不…

Dumphash: 绕过杀软dumphash 离线读取工具

免责声明 工具仅供安全研究与学习之用,若将工具做其他用途,由使用者承担全部法律及连带责任,作者及发布者不承担任何法律及连带责任。信息及工具收集于互联网,真实性及安全性自测!!!项目介绍 Dumphash绕过国内全部杀软转存储 该工具无任何网络行为 编译完成后可以注释掉…

fsacn输出结果的图形化工具 - FscanParser

免责声明: 工具仅供安全研究与学习之用,若将工具做其他用途,由使用者承担全部法律及连带责任,作者及发布者不承担任何法律及连带责任。信息及工具收集于互联网,真实性及安全性自测!!!项目介绍 一个用于处理fsacn输出结果的图形化工具(尤其面对大量资产的fscan扫描结果…