news 2026/4/18 17:19:29

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
大模型量化技术原理-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. 训练不依赖标签了(只需要知道教师模型的输出,不需要知道对应的标签),并且不依赖原始训练数据(输入可以是合成的,随机生成的,而非原始训练集中的样本)。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 9:02:18

vue基于Spring Boot框架的大学生英语四六级学习平台的设计与实现_6bh483sd

目录具体实现截图项目介绍论文大纲核心代码部分展示项目运行指导结论源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作具体实现截图 本系统(程序源码数据库调试部署讲解)同时还支持java、ThinkPHP、Node.js、Spring B…

作者头像 李华
网站建设 2026/4/18 7:51:24

通达信极好成交量 源码

{}VAR1:VOL/((HIGH-LOW)*2-ABS(CLOSE-OPEN)); 主买:IF(CLOSE>OPEN,VAR1*(HIGH-LOW),IF(CLOSE<OPEN,VAR1*((HIGH-OPEN)(CLOSE-LOW)),VOL/2)),COLORRED,POINTDOT; 主卖:IF(CLOSE>OPEN,VAR1*((HIGH-CLOSE)(OPEN-LOW)),IF(CLOSE<OPEN,VAR1*(HIGH-LOW),VOL/2)),COLOR00F…

作者头像 李华
网站建设 2026/4/18 6:25:04

基于Django与Zabbix集成的运维故障管理系统设计与实现

基于Django与Zabbix集成的运维故障管理系统设计与实现 基于Django与Zabbix集成的运维故障管理系统&#xff1a;毕业设计源码与论文全解析 在当今数字化时代&#xff0c;企业的IT基础设施日益复杂&#xff0c;服务器、网络设备、应用程序等资源的稳定运行至关重要。然而&#…

作者头像 李华
网站建设 2026/4/17 20:35:05

python用openpyxl操作excel-单元格样式操作

python用openpyxl操作excel的单元格样式操作import logging import com.pro001.log.pro_log_config as pro_log_config from openpyxl import Workbook, load_workbook from openpyxl.styles import Font, Alignment, Side, PatternFill, Border import os import datetime im…

作者头像 李华
网站建设 2026/4/17 6:49:49

python用openpyxl操作excel-单元格操作

python用openpyxl操作excel-单元格操作import logging import com.pro001.log.pro_log_config as pro_log_config #参见另一篇博文 from openpyxl import Workbook, load_workbook from openpyxl.styles import Font, Alignment, Side, PatternFill, Border import os import …

作者头像 李华
网站建设 2026/4/18 1:45:01

【设计模式|第五篇】代理模式:控制访问的智能中介

什么是代理模式&#xff1f;生活化的比喻核心角色为什么要使用代理模式&#xff1f;代理模式在Java中的实现静态代理动态代理静态代理与动态代理的区别实际应用场景什么是代理模式&#xff1f; 代理模式&#xff08;Proxy Pattern&#xff09;是一种结构型设计模式&#xff0c…

作者头像 李华