量化QAT QLoRA GPTQ

模型量化的思路可以分为PTQ(Post-Training Quantization,训练后量化)和QAT(Quantization Aware Training,在量化过程中进行梯度反传更新权重,例如QLoRA),GPTQ是一种PTQ的思路。

QAT(Quantization Aware Training)

BN需要先融合掉:
在这里插入图片描述
伪量化节点是根据融合图来决定的

量化过程中不可导的部分是Round函数,Hinton论文中把他的导数置为1,这就解决了量化框架中梯度反向传播的问题,图片截取自https://www.bilibili.com/video/BV13s4y1D73L/:
在这里插入图片描述
在这里插入图片描述
AdaRound和AdaQuant这些论文都是一层层训练的,QAT需要把某些层切成子图,对子图量化即可。

QLoRA

几个关键点:

  • 4bit NormalFloat 量化
  • 双重量化
  • Page Optimizer:Page Optimizer机制使得在GPU显存吃紧的时候可以把optimizer转移到内存上,在需要更新optimizer状态时再加载回来,据说可以有效减少GPU显存的峰值占用,文章称想要达到在24gb上训练33B 参数模型这个机制是必须的

QLoRA实现中用了bitsandbytes这个库

GPT

例如TensorRT的后量化,paddlepaddle的后量化,推理框架最清楚网络做哪些图融合,但是GPT不会训练,不会梯度反传。PPQ是商汤出的量化框架
在这里插入图片描述

GPTQ

GPTQ并不是完全凭空头脑风暴出来的想法,而是经过OBD(Optimal Brain Damage)->OBS(Optimal Brain Surgeon,Second Order Derivatives for Network Pruning)-> OBQ(Optimal Brain Quantization)->GPTQ逐渐演化过来的。这一类思路基本的出发点在于先考虑一个单层的网络W,如何找到一个量化后的网络Wq,使得W和Wq之间的差别最小?OBD方法是Lecun在1989年就在搞的方法,主要思路用W和Wq之间的误差进行泰勒展开,展开后舍弃一些项,得到利用海森矩阵进行迭代更新;OBS方法发现OBD方法在进行权重剪切的过程中并不完全合理,所以新增了权重删除补偿的策略(参考https://readpaper.feishu.cn/docx/HaM7d7uGhoQ2VPxxZBacpduDny7);OBS在执行中是直接把权重展开计算对应的海森矩阵,然后按照顺序进行量化,OBQ对量化的顺序进行了调整,将权重分行进行计算,利用贪心算法每次找到量化误伤最小的行进行量化,量化复杂度显著降低;GPTQ在OBQ基础上进行顺序量化+组内联合,进一步降低了量化的复杂度(参考https://readpaper.feishu.cn/docx/OPP2dTuXAoaO0oxWhQAcC05Wnpc)
在这里插入图片描述
GPTQ在实现中用Cholesky分解来稳定了数值计算

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

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

相关文章

spring整合mybatis教程(详细易懂)

一、引言 1、Spring整合MyBatis的目的是? 将两个框架结合起来,以实现更好的开发体验和效果。Spring提供了一种轻量级的容器和依赖注入的机制,可以简化应用程序的配置和管理。而MyBatis是一个优秀的持久层框架,可以方便地进行数据…

【面试题】MVC、MVP与MVVM模式是什么?

MVC模式 MVC是应用最广泛的软件架构之一,一般MVC分为: Model( 模型 )、Controller( 控制器 )、View( 视图 )。 这主要是基于分层的目的,让彼此的职责分开。View 一般…

自启动遇到某个节点或者某种环境变量问题导致启动失败

前言:此次记录无人车自启动过程遇到的问题。为了让ROS无人车能够实现飞控进行室外自主航线的问题,将飞控发布的PWM转为ROS无人车对应的速度。为了确保无人车启动后能够使用遥控器控制无人车,所以需要开机自启动。 硬件: 1、star…

飞书小程序开发

1.tt.showModal后跳转页面 跳转路径要为绝对路径,相对路径跳转无响应。 2.手机息屏后将不再进入onload()生命周期,直接进入onshow()生命周期。 onLoad()在页面初始化的时候触发,一个页面只调用一次。 onShow()在切入前台时就会触发&#x…

详解预处理

全文目录 前言预定义符号#define 定义标识符常量#define 定义宏#define 替换规则# 宏参数转换字符串## 宏参数拼接带有副作用的宏参数 宏与函数的对比#undef 移出宏定义命令行定义条件编译#include 文件包含头文件的包含方式头文件的重复包含 前言 前面我们学习了程序的编译和…

尝试自主打造一个有限状态机(二)

前言 上一篇文章我们从理论角度去探索了状态机的定义、组成、作用以及设计,对状态机有了一个基本的认识,这么做有利于我们更好地去分析基于实际应用的状态机,以及在自主设计状态机时也能更加地有条不紊。本篇文章将从状态机的实际应用出发&am…

C# 使用NPOI操作EXCEL

1.添加NOPI 引用->管理NuGet程序包->添加NOPI 2.相关程序集 3.添加命名空间 using NPOI.HSSF; using NPOI.XSSF; using System.IO; using NPOI.XSSF.UserModel; using NPOI.HSSF.UserModel; 4.样例 //NPOI读入dgv private void button1_Click(object sender, EventArgs…

视频云存储/安防监控EasyCVR视频汇聚平台接入GB国标设备时,无法显示通道信息该如何解决?

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…

Vue2-快速搭建pc端后台管理系统

一.推荐二次开发框架 vue-element-admin Star(84k)vue-antd-admin Star(3.5k) 二.vue-element-admin 官网链接:https://panjiachen.github.io/vue-element-admin-site/zh/ 我这里搭建的是基础模版vue-admin-template(推荐) # 克隆项目 git clone https://github.com/PanJi…

wazhu配置以及漏洞复现

目录 1.wazhu配置 进入官网下载 部署wazhu 修改网络适配器 重启 本地开启apache wazhu案例复现 前端页面 执行 1.wazhu配置 进入官网下载 Virtual Machine (OVA) - Installation alternatives (wazuh.com) 部署wazhu 修改网络适配器 重启 service network restart 本地…

C语言练习4(巩固提升)

C语言练习4 选择题 前言 面对复杂变化的世界,人类社会向何处去?亚洲前途在哪里?我认为,回答这些时代之问,我们要不畏浮云遮望眼,善于拨云见日,把握历史规律,认清世界大势。 选择题 …

程序的编译链接【编译链接大概步骤】

全文目录 😀 前言🙂 翻译环境和执行环境😶 编译和链接😵‍💫 预编译(预处理)😵‍💫 编译😵‍💫 汇编😵‍💫 链接 &#x1…