当前位置: 首页 > 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.gsyq.cn/news/99089.html

相关文章:

  • 基于SpringBoot+Vue的超市食品安全管理系统设计与实现
  • 基于Spring Boot+Vue的档案数字化项目管理系统
  • vue基于Spring Boot框架的企业办公OA系统设计与开发_g73fw47d_
  • vue基于Spring Boot框架的大学生英语四六级学习平台的设计与实现_6bh483sd
  • 重学计算机基础011:总线——计算机硬件的“高速公路网”,连接所有组件的核心枢纽
  • 内容智能研发五 技术架构
  • C++笔记:流式异步日志库
  • 完整教程:linux服务-rsync+inotify文件同步-ssh
  • Cesium快速入门到精通系列教程二十二:Cesium1.95中设置颜色的方式
  • C++学习之旅【实战全面解析C++类和对象】
  • 基于协同过滤算法的运动场馆服务平台设计与实现
  • 低代码 | 低代码库研究 + 拖拽
  • 005-AES:采招网
  • 基于Python与Django的白泽自动化运维系统设计与实现
  • 基于Python+django的智能停车系统的设计与实现(源码+lw+部署文档+讲解等)
  • 【设计模式|第五篇】代理模式:控制访问的智能中介
  • SPOOLing 是 Simultaneous Peripheral Operations On-Line 的缩写,中文为“外部设备同时联机操作”
  • 小红书内容运营工具怎么选?专业视角拆解优质工具核心标准
  • K8S资源无法删除处理方法
  • 音频二维码怎么做?音频二维码制作指南
  • DeepSeek-V3超长上下文处理终极指南:从原理到实战
  • 程序在输入或输出的边界附近更容易出现缺陷,例如数组越界、循环次数错误
  • Prompt工程能否代替模型训练?
  • 基于Python+Django的智能停车管理系统(源码+lw+部署文档+讲解等)
  • 基于python+django的在线考试系统(源码+lw+部署文档+讲解等)
  • C语言一维与二维数组名详解:从本质理解到高手应用
  • 路径覆盖是一种白盒测试方法,旨在设计足够的测试用例,使得程序中的每一条可能执行路径至少被执行一次
  • 深入解析strspn:字符串扫描的精确尺子
  • 临时笔记1
  • 雨燕直播案例分析:如何打造高并发直播平台