模型压缩相关技术概念澄清(量化/剪枝/知识蒸馏)

1.模型压缩背景

随着深度学习技术的不断发展,模型的规模和复杂度也随之增加。大型模型往往具有更高的精度和更强的泛化能力,但在实际应用中,模型的大小却成为了一个制约因素。模型体积过大会导致存储、传输和推理速度等方面的瓶颈,限制了模型在资源受限设备上的部署和应用。因此,模型压缩技术应运而生,旨在减少模型的体积,同时尽可能地保持模型的性能。

下面的这张图(推理流程图)可以看到模型压缩在整个模型推理流程中的位置,模型压缩处于离线推理模块中;

在这里插入图片描述

模型压缩的主要方法:
1.模型量化
2.模型剪枝
3.知识蒸馏

2.模型量化基础

1.深度学习神经网络模型的特点:
  • 数据参数量大
  • 计算量大
  • 内存占用大
  • 模型精度高
2.模型量化的概念

模型量化是一种将浮点计算转成低比特定点计算的技未,可以有效的降低模型计算强度、参数大小和内存消耗,但往往带来巨大的精度损失。无其是在极低比特(<4bit)、二值网络(Ibit)、甚至将梯度进行量化时,带来的精度挑战更大。

常见模型精度:

在这里插入图片描述

3.模型量化的优点
  • 保持精度:只要把控好量化的程度,对于高级任务精度的影响可以做到很小
  • 加速计算:传统的卷积运算一般采用FP32计算,INT8与其比可以增加3倍速度
  • 节省内存:INT8比FP32占用的空间更小,传输时间也能大幅下降
  • 节能:使用的位数少,做运算时搬运的数据少,访存次数就少了
4.模型量化方法
  • 量化训练(Quant Aware Training,QAT)

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

  • 动态离线量化(Post Training Quantization Dynamic,PTQ Dynamic)

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

  • 静态离线量化(Post Training Quantization Static,PTQ Static)

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

5.量化原理

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

3.模型剪枝基础

1.模型剪枝的概念

模型剪枝是一种从神经网络中移除“不必要”权重或偏差(weight/bias)的模型压缩技术。它可以通过减少模型的大小和计算量来提高模型的效率和速度。模型剪枝可以分为细粒度剪枝、粗粒度剪枝和结构化剪枝等不同的剪枝方法。

2.模型剪枝分类
  • Unstructured Pruning(非结构化剪枝)
    • 随机对独立的权重或神经元链接进行剪枝
    • 剪枝算法简单,模型压缩比高
    • 但精度不可控,剪枝后权重矩阵稀疏
  • Structured Pruning(结构化剪枝)
    • 对filter/channel/layer进行剪枝
    • 大部分算法在channel/layer上进行,相较非结构化更加保留原始结构
    • 剪枝算法相对复杂
3.常见剪枝算法
  • L1正则化剪枝

  • L2正则化剪枝

  • 稀疏结构学习剪枝

  • 通道剪枝

  • 卷积核剪枝

  • 低秩分解剪枝

  • 基于Hessian矩阵的剪枝

4.剪枝的优缺点
  • 模型剪枝的优点是可以减少模型的大小和计算量,提高模型的运行速度和效率。同时,模型剪枝可以提高模型的泛化能力,减少过拟合的风险。

  • 模型剪枝的缺点是可能会牺牲模型的准确率和压缩比,而且非结构化剪枝需要依赖于专门的运行库和硬件设备。

5.剪枝VS量化
  • 模型量化是通过减少权重表示或者激活所需的比特数来压缩模型

    在这里插入图片描述

    精度:32bit—>8bit

  • 模型剪枝研究的是模型权重中的冗余部分,尝试删除冗余的和非关键的部分

在这里插入图片描述

​ 精度不变,删除冗余和非关键的部分

4.知识蒸馏(Knowledge Distillation)基础

1.概念介绍

知识蒸馏(Knowledge Distillation,简记为 KD)是一种经典的模型压缩方法,核心思想是通过引导轻量化的学生模型“模仿”性能更好、结构更复杂的教师模型(或多模型的 ensemble),在不改变学生模型结构的情况下提高其性能。

2.蒸馏主要思想

知识蒸馏就是将已经训练好的模型包含的知识,蒸馏到另一个模型中去。具体来说,知识蒸馏,可以将一个网络的知识转移到另一个网络,两个网络可以是同构或者异构。一般是将一个复杂模型(或集成模型)蒸馏到一个轻量级模型中以提升运行速度,但也有以提升指标为目的的蒸馏。

蒸馏的常规做法是先训练一个 teacher 网络,然后使用这个 teacher 网络的输出和数据的真实标签去训练 student 网络。

3.知识蒸馏算法的关键组成
  • Knowledge
  • 蒸馏算法Distillate
  • 师生架构
4.知识蒸馏方法
  • Offline distillaction(离线蒸馏)

    在这里插入图片描述

    • 大多数知识蒸馏均采用该方法;该方法主要分为两个部分:1.预训练教师模型;2.蒸馏算法迁移知识
    • 大多采用单向知识迁移和两阶段训练过程;
    • 在训练教师模型时时间较长,但对学生模型的蒸馏比较高效
  • Online distillaction(在线蒸馏)

    在这里插入图片描述

    • 主要针对参数量大、精度性能好的教师模式不可获得的情况下;
    • 教师模型和学生模型同时更新
    • 但现有的online distillaction往往难以获得在线环境下参数量大、精度性能好的教师模型;
  • Self-distillaction(自监督蒸馏)

    在这里插入图片描述

    • 教师模型和学生模型使用相同结构的网络
    • 两者都采取端到端的可训练方案
    • 属于online distillaction一种特例;
5.总结
  • Offline Distillation 像知识渊博的老师向传授学生知识;
  • Online Distillation 更像老师和学生共同学习;
  • Self-Distillation 更像学生自己学习知识。

日常学习总结

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/917270.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

‌EAC(Estimate at Completion)和ETC(Estimate to Complete)

‌EAC 预计完工成本ETC 预计尚需成本Estimate at CompletionEstimate to Complete完成预估完工时尚需成本估算 EAC ETC ACETC EAC – AC 预测项目总成本&#xff0c;包含了到目前为止实际发生的成本&#xff08;AC&#xff09;和预计将发生的成本。如果EAC大于BAC&#xf…

计算机网络 (6)物理层的基本概念

前言 计算机网络物理层是OSI模型&#xff08;开放式系统互联模型&#xff09;中的第一层&#xff0c;也是七层中的最底层&#xff0c;它涉及到计算机网络中数据的物理传输。 一、物理层的主要任务和功能 物理层的主要任务是处理物理传输介质上的原始比特流&#xff0c;确保数据…

探索大规模语言模型(LLM)在心理健康护理领域中的应用与潜力

概述 心理健康是公共卫生最重要的领域之一。根据美国国家精神卫生研究所&#xff08;NIMH&#xff09;的数据&#xff0c;到 2021 年&#xff0c;22.8% 的美国成年人将患上某种形式的精神疾病。在全球范围内&#xff0c;精神疾病占非致命性疾病负担的 30%&#xff0c;并被世界…

深度学习之GAN应用

1 GAN的应用&#xff08;文本生成&#xff09; 1.1 GAN为什么不适合文本任务&#xff1f; ​ GAN在2014年被提出之后&#xff0c;在图像生成领域取得了广泛的研究应用。然后在文本领域却一直没有很惊艳的效果。主要在于文本数据是离散数据&#xff0c;而GAN在应用于离散数据时…

15分钟学 Go 实战项目五 :简单电子商务网站(3W字完整例子)

简单的电子商务网站开发实战 项目概述 目标 实现用户注册登录功能开发商品浏览和搜索功能实现购物车管理完成订单处理流程 技术栈 类别技术选择说明Web框架Gin高性能HTTP框架数据库MySQL存储用户和商品信息缓存Redis购物车和会话管理ORMGORM数据库操作认证JWT用户身份验证…

C++- 基于多设计模式下的同步异步日志系统

第一个项目:13万字,带源代码和详细步骤 目录 第一个项目:13万字,带源代码和详细步骤 1. 项目介绍 2. 核心技术 3. 日志系统介绍 3.1 为什么需要⽇志系统 3.2 ⽇志系统技术实现 3.2.1 同步写⽇志 3.2.2 异步写⽇志 4.知识点和单词补充 4.1单词补充 4.2知识点补充…

【AlphaFold3】开源本地的安装及使用

文章目录 安装安装DockerInstalling Docker on Host启用Rootless Docker 安装 GPU 支持安装 NVIDIA 驱动程序安装 NVIDIA 对 Docker 的支持 获取 AlphaFold 3 源代码获取基因数据库获取模型参数构建将运行 AlphaFold 3 的 Docker 容器 参考 AlphaFold3: https://github.com/goo…

【提高篇】3.4 GPIO(四,工作模式详解 下)

五,模拟输入输出 5.1 模拟功能 上下拉电阻断开,施密特触发器关闭,双 MOS 管也关闭。该模式用于 ADC 采集或者 DAC 输出,或者低功耗下省电。但要注意的是 GPIO本身并不具备模拟输出输入的功能。 5.2 模拟功能的特点 上拉电阻关闭下拉电阻关闭施密特触发器关闭双MOS管不…

向潜在安全信息和事件管理 SIEM 提供商提出的六个问题

收集和解读数据洞察以制定可用的解决方案是强大网络安全策略的基础。然而&#xff0c;组织正淹没在数据中&#xff0c;这使得这项任务变得复杂。 传统的安全信息和事件管理 ( SIEM ) 工具是组织尝试使用的一种方法&#xff0c;但由于成本、资源和可扩展性等几个原因&#xff0…

领域驱动系列-浅析VO、DTO、DO、PO

一、概念介绍 POJO&#xff08;plain ordinary java object&#xff09; &#xff1a;简单java对象&#xff0c;个人感觉POJO是最常见最多变的对象&#xff0c;是一个中间对象&#xff0c;也是我们最常打交道的对象。一个POJO持久化以后就是PO&#xff0c;直接用它传递、传递过…

网站部署到IIS后,数据库登录失败

1.数据库-安全性-登录名-NT AUTHORITY\SYSTEM-属性 2.选择用户映射选项---在里面将我们要访问的数据库选中 3.先别点确定---再选择我们刚才选择的哪个数据库,在下面的数据库角色成员身份里要选择db_owner权限

paddle表格识别数据制作

数据格式 其中主要数据有两个一个表格结构的检测框&#xff0c;一个是tokens&#xff0c;注意的地方是 1、只能使用双引号&#xff0c;单引号不行 2、使用带引号的地方是tokens里面 "<tr>", "<td", " colspan2", ">",&quo…

FPGA 第6讲 简单组合逻辑多路选择器

时间&#xff1a;2024.11.11-11.14 一、学习内容 1.组合逻辑 组合逻辑是VerilgHDL设计中一个重要组成部分。从电路本质上讲&#xff0c;组合逻辑电路的特点是输出信号只是当前时刻输入信号的函数&#xff0c;与其他时刻的输入状态无关&#xff0c;无存储电路&#xff0c;也没…

Elasticsearch 8.16.0:革新大数据搜索的新利器

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;…

Mysql-DQL条件查询

文章目录 条件查询比较运算符逻辑运算符范围like 关键字排序单列顺序组合排序 聚合函数分组基本的分组流程参数的区别 limit 语句limit 语法格式limit 的使用场景 &#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;Mysql专栏&#xff1a;点击&#xff01; ⏰…

华为云租户网络-用的是隧道技术

1.验证租户网络是vxlan 2.验证用OVS 2.1控制节点VXLAN 本端ip&#xff08;local ip&#xff09;192.168.31.8 2.2计算节点VXLAN 本端ip&#xff08;local ip&#xff09;192.168.31.11 计算节点用的是bond0做隧道网络 2.3查看bond文件是否主备模式

go 集成swagger 在线接口文档

安装swaggo go install github.com/swaggo/swag/cmd/swaglatest 编写swag import ("github.com/gin-gonic/gin""goWeb/internal/service""goWeb/model/response" )// UserRouter 路由 func UserRouter(ctx *gin.RouterGroup) {ctx.GET("/…

《Python网络安全项目实战》项目6 编写密码工具程序

《Python网络安全项目实战》项目6 编写密码工具程序 项目6 编写密码工具程序任务6.1 猜数字游戏任务描述任务分析任务实施6.1.1 编写基本的猜数字程序6.1.3 测试并修改程序6.1.4 给程序增加注释 任务拓展任务实施6.2.1 生成随机密码6.2.4 菜单功能 相关知识1. 密码字典2. 密码字…

IQ Offset之工厂实例分析

有个产品 其方块图如下: FEM全名为Front End Module 详情可参照这篇 [1] WIFI前端模块的解析 这边就不赘述 而在工厂大量生产时 有一块板子 其Chain1的EVM Fail 分析Log后 发现其IQ Offset的值 比Chain2/Chain3/Chain4 还要来得差 请问 问题是出在收发器? 还是…

音视频入门基础:MPEG2-TS专题(4)——使用工具分析MPEG2-TS传输流

一、引言 有很多工具可以分析MPEG2-TS文件/流&#xff0c;比如Elecard Stream Analyzer、PROMAX TS Analyser、easyice等。下面一一对它们进行简介&#xff08;个人感觉easyice功能更强大一点&#xff09;。 二、Elecard Stream Analyzer 使用Elecard Stream Analyzer工具可以…