模型压缩梳理

部署运行你感兴趣的模型镜像

参考视频

模型压缩架构和流程介绍!量化/剪枝/蒸馏/二值化4件套!【推理系统】模型压缩第01篇_哔哩哔哩_bilibili

23年的视频笔记,不知道现在还是否适用,总之就当梳理用 

推理流程

模型小型化

基础参数概念

CNN小型化结构

Transformer 小型化结构

低比特量化(Low-bit Quantization)

低比特量化是一种将神经网络权重和激活值从高精度(如 32-bit 浮点数)降低到较低比特(如 8-bit、4-bit,甚至 1-bit)的技术。这样可以减少存储需求和计算复杂度,提高模型在边缘设备上的运行效率,但往往带来精度损失。

一般情况是FP32和FP1 6的混合精度,但是模型量化一般是降到≤FP16

挑战

原理

模型量化桥接了定点与浮点,建立了一种有效的数据映射关系,使得以较小的精度损失代价获得了较好的收益

主要为线性量化

映射:把一堆数据映射到一个具体的范围(上图中是-127-127)

截断: 设置最小和最大值,不在范围内的丢掉

线性量化可以分为对称量化(int)和非对称量化(uint)

映射转换

R映射到Q叫量化

Q映射到R是反量化

目的:求S和Z

offset就是刚刚的z

分类

Quantization Aware Training 感知量化 QAT 

总之就是学习误差,进而降低误差

量化训练让模型感知量化运算对模型精度带来的影响,通过 finetune 训练降低量化误差。

伪量化节点

节点插入地方:                                                                                                                                   一般会在密集计算算子,激活算子,网络输入输出等地方插入伪量化节点

                                                                                                                                                            BN量化

                               

正向传播

x是输入数据

线性数据经过伪量化算子变成阶梯型

反向传播

更新Min和Max

训练流程

Insert stubs/observers: 伪量化算子

注意! QAT模型要经过转换之后才能执行,去掉冗余伪量化算子

Post-Training Quantization 训练后量化 PTQ

动态离线量化 Dynamic

动态离线量化仅将模型中特定算子的权重从FP32类型映射成 INT8/16 类型。

 

静态离线量化 Static

现在市面上大部分推理引擎或者框架都采用这个离线量化

 静态离线量化使用少量无标签校准数据,采用KL 散度等方法计算量化比例因子。

无标签数据主要用在衡量scale(用真实的数据厂家获取scale的缩放因子)

我在想我看的SVD-LLM是不是这种

KL散度校准法

流程

Deployment 端侧量化推理部署

需要有量化和反量化,重量化不一定有

  • 量化 → 减少数据精度,提高计算效率。
  • 反量化 → 近似恢复原数据,用于推理或解码。
  • 重量化 → 进一步优化量化数据以适应不同平台。

quantize 量化

Dequantize 反量化

Requantize 重量化

所以需要全图的信息

二值化网络(Binary Neural Networks, BNNs)

二值化网络是一种极端的量化方法,将神经网络的权重和激活值约束为 +1 和 -1(或 0 和 1),从而大幅减少存储和计算量。BNN 允许用位运算(如 XNOR 和 bit-count)代替浮点运算,提高计算效率,但可能导致精度下降。

模型剪枝(Model Pruning)

模型剪枝通过去除冗余或不重要的权重、神经元或通道来减少计算量和存储需求。剪枝方法可以分为非结构化剪枝(Unstructured Pruning)(移除单个权重)和结构化剪枝(Structured Pruning)(移除整个卷积核或通道),通常结合再训练(Fine-tuning)以恢复性能。

*量化是通过减少权重表示火激活所需的比特数来压缩模型

*剪枝是研究模型权重中的冗余,并尝试删除/修剪冗余和非关键的权重

分类

Unstructured Pruning 非结构化剪枝

structured Pruning 结构化剪枝

流 程

主要单元

最后一种是用nas自动搜索剪枝(很耗算力

L1-norm based Channel Pruning

知识蒸馏(Knowledge Distillation, KD)

模型蒸馏是一种通过**教师-学生(Teacher-Student)**架构来压缩模型的技术。一个较大的、性能更强的教师模型(Teacher Model)用于指导较小的学生模型(Student Model),通过软标签(Soft Labels)或中间层特征传递知识,使得学生模型能在保持较高性能的情况下减少参数量。

‘组成:1)知识Knowledge 2)蒸馏算法 Distillate 3)师生架构

参考文献:Knowledge Distillation: A Survey

Knowledge Format 蒸馏的知识形式

response-based knowledge

类似于老师学完知识点把结论丢给学生

Logits 越小越好

feature-based knowledge

relation-based knowledge

Distillation Schemes 具体方法

Offline Distillation

提前训练教师模型,知识渊博老师向学生传授知识

Online Distillation

*两个模型都是在线学习的,教师和学生共同学习

Self Distillation

学生自己学习知识

Hinton 算法

Hard-target 和 Soft-target

Softmax with Temperature

 

Distilling the knowledge in a Neural Network

开山之作!

您可能感兴趣的与本文相关的镜像

TensorFlow-v2.15

TensorFlow-v2.15

TensorFlow

TensorFlow 是由Google Brain 团队开发的开源机器学习框架,广泛应用于深度学习研究和生产环境。 它提供了一个灵活的平台,用于构建和训练各种机器学习模型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值