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

大模型——剪枝、量化、蒸馏、二值化

大语言模型的参数量现在十分惊人,GPT3的参数量已经达到1750亿。GPT3在fp16的精度下仍需要325G的存储空间,推理时至少需要5张80G的A100GPU。高参数量意味着对内存要求很高,以至于对终端部署有着极高要求。
而为了能在更多的设备上运行大模型,就需要模型压缩技术。
四大模型压缩技术:量化、剪枝、蒸馏和二值化
模型压缩主要有几个需求:1.降低模型所占空间。2.降低模型计算复杂度。3.降低能耗,提高续航。4.保证模型性能

量化

压缩每个权重参数存储的比特数,以达到降低内存需求的目的。传统的深度学习,参数一般用32位浮点数存储。量化可以将32位浮点数,量化成8位整数。这样,模型存储空间将直降至四分之一。而且,低精度的整数运算比浮点数运算高效的多。
对于1位量化,理想条件下,模型大小甚至可以降低至原来的三十二分之一。
在这里插入图片描述
量化方法主要有三类:训练后量化(PTQ)、量化感知训练(QAT)、量化感知微调(QAF)

训练后量化

模型训练后,对权重进行量化。
TensorFlow lite提供工具,可以将32位浮点数,量化成8位整数。
缺点:量化时无法考虑训练中的动态变化,会使模型的精度下降

量化感知训练

在训练中就进行量化,让模型提前适应低精度。
TensorRT支持这种方法,在训练中模拟量化,保持模型性能。
缺点:运算更加复杂,需要更高的运算资源

训练感知微调

基于预训练模型进行微调,同时加入量化操作。结合了预训练模型的优势和量化的高效性。
在NLP中,研究人员经常在预训练的BERT中进行量化感知微调。他能快速适应特定任务,减少计算开销。性能上不如从头训练的量化感知模型。

量化存在的问题

  • 精度下降。量化的位数越低,精度下降越大
  • 模型敏感度不同。不同模型,对量化的敏感程度不同,对于有些模型,量化后性能依然出色,但有些模型,量化对其影响会非常大。
    量化友好模型:传统CNN(如ResNet, VGG, MobileNet)、轻量级设计模型。
    敏感模型:包含Transformer架构的模型、某些循环神经网络(RNN/LSTM)、超小模型、包含特定算子(如Depthwise卷积)的模型。
  • 量化感知训练、训练感知微调需要修改训练过程,从而加大了训练的难度和计算资源的需求。

剪枝

去除神经网络中的不必要的连接,或者让一些神经元失活。以减少模型参数,降低计算量。
剪枝方法主要有两种:结构化剪枝、非结构化剪枝
在这里插入图片描述
在这里插入图片描述

基于权重重要性的剪枝方法
通过分析权重对模型输出的影响,将影响小的权重减掉。在不怎么影响模型性能的情况下,大幅度降低模型的参数数量。
在这里插入图片描述

非结构化剪枝

随机移除单个权重和连接。
可以很好提高压缩比,直接移除对模型影响很小的权重。非结构化剪枝可以把模型参数减少50%以上
缺点:产生的稀疏结构在硬件上很难高效运算,因为硬件更喜欢规整的矩阵操作。参数量虽然减少很多,但推理速度减少并不明显。

结构化剪枝

按照一定规则剪枝,比如移除一定的神经元、滤波器、隐藏层。
压缩比上不如非结构化剪枝,但是推理速度优化方面表现更好,在CNN中可以将推理速度提升2~3倍,并降低能耗。

剪枝总结

  • 精度损失问题。剪枝比例高时,精度损失严重。
  • 可以降低参数量50%以上,对于结构化剪枝,还可以提升计算速度,降低能耗,这对于移动设备和嵌入式设备非常友好。
  • 由于剪枝去除了冗余信息,模型的泛化能力也更好。
  • 不同硬件平台对剪枝的接受程度不一样,可能需要额外优化
  • 不同模型对剪枝敏感度不一样

蒸馏

分为教师模型和学生模型。
首先,训练一个大型、复杂、性能优异的教师模型,让其在大规模的数据集上学习,积累丰富的知识。
其次,选择一个较小的模型作为学生模型,进行初始化,要求结构简单但有一定的学习能力。
然后,进行训练。将教师模型的输出作为额外的监督信息,和学生模型的输出对比,通过优化损失函数来训练学生模型。损失函数包含两部分:学生模型原始损失、两个模型差异损失(一般选KL散度)
最后,对学生模型微调。
蒸馏涉及到一个温度参数,意义为难度程度。在高温模式下,可以学习到复杂的关联关系。低温模式下,答案接近原始分布,适合简单任务。(也可以选择动态,初期高温学习更多信息,后期低温聚焦特征)
NLP中,通常以BERT作为教师模型,LSTM作为学生模型。

蒸馏总结

优势
模型压缩效果显著,学生相较于教师,参数可以达到十分之一甚至更少。
推理速度快几倍
泛化能力更强
应用范围广:图像分类、目标检测、NLP

缺点
学生模型性能严重依赖教师模型的质量
训练时同时考虑学生和教师的训练过程
对于复杂任务,学生模型精度处理不如教师模型
需要合适且匹配的学生模型和教师模型

二值化

二值化可以在一些低功耗的物联网设备中,实现高精度的图像识别和语音识别,且由于计算简单不需要复杂的硬件支持。

二值化是一种极端的量化技术,把神经网络的权重和激活值限制在两个值上,通常为+1和-1。
二值化后,参数只需要1个bit就可以表示,极大程度降低模型复杂度,传统32位浮点数相比,缩小32倍。
由于只有两个值,乘法计算也可以通过转化为加法和移位替代。二值化网络卷积通过 同或XNOR 和 位操作 实现。

在这里插入图片描述

二值化总结

在神经网络训练中,研究人员也通过二值化技术压缩预训练的Transformer模型,显著减少模型存储空间和推理延迟。
二值化压缩率极高
推理速度提升明显,在一些网络中可以加快10倍以上
计算简单,可以进行硬件优化,使用专门的二值化硬件加速器

缺点:
精度损失严重,在复杂任务中更为明显
训练时需要特殊处理,如用直通估计器处理不可导的二值化操作
不同模型对二值化敏感度不同

场景分析

资源受限的场景

二值化适合精度要求不高的任务。量化可以调整量化精度控制压缩效果和模型性能之间的平衡。

要求计算速度,对精度有要求

量化和结构化剪枝

要求高性能

蒸馏

展望

多种压缩方法组合
量化+剪枝
蒸馏+量化感知训练

论文

https://arxiv.org/pdf/1603.05279
https://arxiv.org/pdf/2004.09602
https://arxiv.org/pdf/1511.00363
https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37631.pdf

http://www.xdnf.cn/news/1469791.html

相关文章:

  • 一招快速识别你的电脑是机械硬盘还是固态硬盘
  • 笔记三 FreeRTOS中断
  • 虚拟机详细图文教程系列15、Linux虚拟机Centos8系统部署禅道开源项目
  • 如何修改drawio中的线条样式(将实线变为虚线)
  • unsloth笔记:基本介绍
  • SAP官方授权供应商名单2025
  • 神经网络|(十九)概率论基础知识-伽马函数·下
  • JavaSE丨IO流全解:从基础概念到序列化实战
  • 树莓派传感器扩展板资料
  • VMWare上搭建大数据集群
  • 8. Mono与IL2Cpp简介
  • mysql中null值对in子查询的影响
  • B.50.10.03-Nginx核心原理与电商应用
  • 基于STM32单片机FM调频TEA5767功放收音机液晶显示设计
  • Zynq-7000 上 RT-Thread 的 MMU 与 SMP 优势分析
  • 七彩喜智慧养老:科技向善,让“养老”变“享老”的智慧之选
  • 23种设计模式——桥接模式 (Bridge Pattern)详解
  • 极大似然估计与概率图模型:统计建模的黄金组合
  • 洛谷 P1099 [NOIP 2007 提高组] 树网的核-普及+/提高
  • ShareX神操作:多区域截图+特效功能!
  • linux ubi文件系统
  • Linux 文件系统及磁盘相关知识总结
  • Webpack 有哪些特性?构建速度?如何优化?
  • 前端开发vscode插件 - live server
  • 【SuperSonic】:PluginParser 插件解析器
  • 雅菲奥朗SRE知识墙分享(六):『混沌工程的定义与实践』
  • 十二、软件系统分析与设计
  • Linux:进程信号理解
  • Day21_【机器学习—决策树(2)—ID3树 、C4.5树、CART树】
  • stm32——NVIC,EXIT