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

相关文章:

  • RISCV的异常和中断
  • vue基于Spring Boot框架的水果商城设计与实现_6628xfyb_
  • 【入门级-数据结构-3、特殊树:完全二叉树的定义与基本性质】
  • python用openpyxl操作excel-读取或创建excel文件
  • 刷题日记day5(二分+前缀和)
  • 005-AES:采招网
  • 基于python+django的在线考试系统(源码+lw+部署文档+讲解等)
  • C语言一维与二维数组名详解:从本质理解到高手应用
  • 当水印遇见AI:一场像素级的美学修复之旅
  • 软件测试是保障软件质量的关键环节,尤其在当前无法完全依赖形式化方法证明软件正确性的背景下,测试成为发现缺陷最主要、最有效的手段
  • 如何用AI快速生成Flink面试题答案?
  • 10分钟搞定:DeepSeek本地开发环境快速搭建方案
  • 豆包AI手机智能操控的硬核原理
  • CVE-2023-48795漏洞深度解析:原理与影响
  • 深入解析strspn:字符串扫描的精确尺子
  • 纺织AI设计系统:用技术重构创意与效率
  • 用AI辅助开发:weditor的自动化测试新体验
  • vivo真机adb 命令获取手机当前窗口信息
  • 3分钟极速安装!MinGW自动化方案对比
  • Spring Boot依赖冲突:新手必看指南
  • 1小时快速搭建Kiro下载工具原型
  • GitLab本地部署效率革命:比官方文档快3倍的极简方案
  • 智能问数如何让数据分析效率提升10倍
  • Phyfusion在游戏开发中的5个惊艳应用案例
  • 电商网站商品筛选栏的sticky定位实战
  • 零基础学结构体:从概念到实战5个例子
  • 5分钟搭建status_invalid_image_hash检测原型
  • 人工智能应用-机器视觉:车牌识别(1)
  • 5分钟搞定node-sass配置:快速原型开发指南
  • 幽冥大陆(四十九)PHP打造Java的Jar实践——东方仙盟筑基期