当前位置: 首页 > news >正文

大模型量化技术原理-ZeroQuant系列(一)

简单的看第一篇,这个系列目前有四篇左右,感兴趣可以去搜搜

  • ZeroQuant: Efficient and Affordable Post-Training Quantization for Large-Scale Transformers
  • ZeroQuant-V2: Exploring Post-training Quantization in LLMs from Comprehensive Study to Low Rank Compensation
  • ZeroQuant-FP: A Leap Forward in LLMs Post-Training W4A8 Quantization Using Floating-Point Formats
  • ZeroQuant-HERO: Hardware-Enhanced Robust Optimized Post-Training Quantization Framework for W8A8 Transformers

推荐一个整理很详细的链接

大模型量化技术原理-ZeroQuant系列 - 知乎


端到端的量化和推理流程,主要有三个组成:

(1)对于权重和激活的精细的硬件友好的量化计划

(2)一个全新的可以应用的层次知识蒸馏算法,这种算法甚至不需要使用原始的训练数据

(3)一个高度优化的量化系统后端支持,可以消除量化、反量化开销

QAT是传统的量化方法,PTQ是近期的量化方法,以下是他们的核心差异:

QAT

PTQ

定义和流程

在模型训练过程中就引入量化操作,模拟推理时的量化行为,让模型在训练阶段就“适应”量化带来的信息损失。

在模型训练完成后直接对权重和激活值进行量化,不重新训练或仅做极少量校准

是否需要重新训练

需要在原始训练流程中插入伪量化节点,并微调模型

直接量化已训练好的模型,通常只需用少量数据(如 100~1000 张图像)做校准以确定量化参数(如 min/max)

精度

高(接近 FP32)

中等(可能下降明显)

实现复杂度

  • 实现较复杂,需修改训练代码。
  • 训练时间长,计算资源消耗大。
  • 但最终模型鲁棒性强。
  • 实现简单,多数框架(TensorFlow Lite、PyTorch、ONNX Runtime)都提供一键量化工具。
  • 几乎零训练成本。
  • 但可能因量化误差导致性能下降。

PTQ的常见策略是将训练数据喂入网络进行校准,并得到缩放因子。但是这种方法有个问题:量化不能完全捕捉在权重矩阵和激活token中的不同行的不同数据范围。解决方法有两个:对于权重的分组量化,对于激活值的分token量化。

对于权重的分组量化:权重矩阵被分成g个组,每个组分别被量化。

对于激活值的分token量化:使用更细颗粒度的分token量化,并动态计算每个token最小/最大范围,从而减少来自激活值的量化误差。但是直接应用这个方法会导致相当大的量化和反量化成本因为这种量化方法会产生额外的操作,导致在GPU计算单元和内存之间的昂贵的数据移动消耗。为了解决这个问题,建造了一个高度优化的推理后端。比如说,zeroquant采用了核融合(kernel fusion)技术将量化算子和前面的算子融合,再将反量化算子和后面的算子融合,从而降低成本。

从KD到LKD

知识蒸馏(KD)的局限性:

  1. KD同时需要一个教师模型和一个学生模型,这样显著的增加了内存和计算成本。
  2. KD一般要求对学生模型进行完全的训练,因此几个权重参数副本就需要存储在内存中了。
  3. KD一般要求原始训练数据,这个有时候由于保密性原因无法得到。

逐层知识蒸馏(LKD):一层一层的量化网络,并且将未量化的原模型作为教师模型。比如说,如果LK要被量化了,那么使用LK-1作为输入,然后测量量化LK和不量化LK的区别。

LKD的优点:

  1. LKD不需要一个额外的教师模型
  2. 内存占用显著降低了,因为只优化LK
  3. 训练不依赖标签了(只需要知道教师模型的输出,不需要知道对应的标签),并且不依赖原始训练数据(输入可以是合成的,随机生成的,而非原始训练集中的样本)。
http://www.jsqmd.com/news/88750/

相关文章:

  • 如何优雅的应对屎山代码[特殊字符]
  • 基于SpringBoot+Vue的超市食品安全管理系统设计与实现
  • 基于Spring Boot+Vue的档案数字化项目管理系统
  • 后端学习第二周
  • 记录一下n8n docker安装方法
  • AI编程:Trae CN用户规则和项目规则定义分享
  • vue基于Spring Boot框架的企业办公OA系统设计与开发_g73fw47d_
  • 二叉搜索树详解:从原理到实战
  • vue基于Spring Boot框架的在线支付账单管理系统的设计与实现_9o4i9b4z_
  • python用openpyxl操作excel-sheet对象操作
  • RISCV的异常和中断
  • 题目集 4~5 与课堂测验总结博客
  • 完整教程:linux服务-rsync+inotify文件同步-ssh
  • vue基于Spring Boot框架的大学生英语四六级学习平台的设计与实现_6bh483sd
  • 小红书内容运营工具怎么选?专业视角拆解优质工具核心标准
  • python用openpyxl操作excel-读取sheet中数据
  • USB数据线/串口线---无法识别问题全解@
  • python用openpyxl操作excel-读取或创建excel文件
  • QMS软件系统:一体化智能平台,智绘卓越质量新图景——全星质量管理QMS软件系统应用解析
  • 重学计算机基础011:总线——计算机硬件的“高速公路网”,连接所有组件的核心枢纽
  • 电路中各种地,数字地DGND、模拟地AGND、功率地PGND、电源地GND、交流地AGND、大地EGND的区别及处理
  • 质量管理QMS软件系统:从精准管控到持续卓越——全星QMS如何驱动企业质量竞争力
  • 内容智能研发五 技术架构
  • 【AI白皮书】AI工具
  • 重学计算机基础012:x86架构32位通用寄存器——CPU的“核心数据操作台”,底层编程的基石
  • 职场思路重启,换个玩法!
  • VictoriaMetrics性能调优全攻略:从系统瓶颈到毫秒级响应
  • 12.14
  • pytorch——从核心特性到多模态与相机系统优化的实践 - 实践
  • Cesium快速入门到精通系列教程二十二:Cesium1.95中设置颜色的方式