模型压缩笔记1:模型量化

模型压缩

深度神经网络的缺点是计算量太大,研究人员对此的优化有两个方面

  1. 高性能硬件加速
  2. 模型压缩

模型压缩方式

  1. 剪枝:删除冗余权重
  2. 蒸馏:大模型 --> 小模型
  3. 量化:高精度 --> 低精度
    注意:三种方式建议三选一

常用程度:量化 > 蒸馏 > 剪枝
量化:需要一定的硬件支持

模型量化(Model Quantization)

1. 原理

  • 模型量化是将神经网络中的权重和激活值从高精度(通常为32位浮点数)转换为较低精度的数值表示(如16位、8位甚至更低)。这种操作大大减少了模型的存储空间需求和计算复杂度。
  • 量化方法:
    • 定点量化(Fixed-Point Quantization):将浮点数映射到定点数。最常见的方式是将32位浮点数量化为8位整数。
    • 动态范围量化(Dynamic Range Quantization):对权重和激活值进行8位量化,同时仍然使用浮点数进行某些计算,如累加操作。
    • 全整数量化(Full Integer Quantization):不仅对权重和激活值进行整数量化,连计算(如卷积操作)也使用整数运算。
    • 半精度浮点量化(Half-Precision Quantization, FP16):将32位浮点数转换为16位浮点数(FP16)。
  • 量化通常涉及以下步骤:
    • 选择量化级别:确定使用的位数,例如8位、16位等。
    • 量化方案:选择量化方法,如对称量化、非对称量化等。
    • 量化范围:确定量化值的范围,通常通过最大值和最小值来确定。
    • 量化映射:将浮点数映射到量化级别上的过程。

2. 应用

  • 移动设备与嵌入式系统: 在计算和存储资源有限的设备上,如智能手机、物联网设备中,模型量化可以显著减少内存占用和功耗,从而实现更快速的推理。
  • 边缘计算: 在边缘设备上进行推理时,通过量化模型可以减少带宽需求并提高响应速度。
  • 云计算: 即使在云端,量化也能降低成本,减少数据中心的能耗,并提高模型的推理速度。

3. 不同精度对比

  • 32位浮点数(FP32):
    • 特点: 高精度,模型准确率最高,但大小和计算需求也最大。适用于训练和高精度要求的推理任务。
    • 应用场景: 适用于需要高精度计算的科学研究和数据分析任务。研究和开发阶段、金融模型、科学计算等对精度要求极高的领域。
  • 16位浮点数(FP16):
    • 特点: 通过减少位数(减少了一半的内存使用)来提高计算速度,特别是在GPU和TPU上的运算。相较于低精度,模型准确率更高,大小和计算需求适中。
    • 应用场景: 适用于大多数桌面和服务器端的应用,用于需要平衡精度和性能的任务,如实时视频处理、大规模语音识别等。
  • 8位整数(INT8):
    • 特点: 显著减少模型大小(通常是FP32模型的1/4大小),同时保持接近FP32精度的推理结果。模型大小大幅减小,推理速度加快,但准确率可能会有所下降。
    • 应用场景: 适用于移动设备和嵌入式系统,实时应用,如物体检测、语音命令识别等。
  • 4位或更低精度量化(INT4/2):
    • 特点: 更小的模型尺寸和更快的计算速度,但会显著影响精度,通常用于极端资源受限的环境。
    • 应用场景: 超低功耗设备、简单任务(如分类问题中的特定类别检测)。

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

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

相关文章

gpt2的学习

现在学习下gpt2模型做摘要,我们都知道gpt2 是纯decoder,做摘要说话的效果较好。 把数据拆分 按照这个进行tokenizer 用这个tokenizer BertTokenizer.from_pretrained(‘bert-base-chinese’) 2w多词汇表 用交叉熵做lossf, 设好一些简单的…

网络安全设备

防火墙 防火墙是管理和控制网络流量的重要工具,防火墙适用于过滤流量的网络设备。防火墙根据一组定义的规则过滤流量。 静态数据包过滤防火墙 静态数据包过滤防火墙通过检查消息头中的数据来过滤流量。通常,规则涉及源、目标和端口号。静态数据包过滤防…

Python爬虫:深入探索1688关键词接口获取之道

在数字化经济的浪潮中,数据的价值愈发凸显,尤其是在电商领域。对于电商平台而言,关键词不仅是搜索流量的入口,也是洞察市场趋势、优化营销策略的重要工具。1688作为中国领先的B2B电商平台,其关键词接口的获取对于商家来…

SpringCloud Gateway转发请求到同一个服务的不同端口

SpringCloud Gateway默认不支持将请求路由到一个服务的多个端口 本文将结合Gateway的处理流程,提供一些解决思路 需求背景 公司有一个IM项目,对外暴露了两个端口8081和8082,8081是springboot启动使用的端口,对外提供一些http接口…

全面监测Exchange邮件服务器的关键指标

在当今高度信息化的社会,Exchange邮件服务器已成为企业日常通信的重要组成部分。为了确保邮件服务器的稳定运行,及时发现潜在问题并采取相应的解决措施显得尤为重要。监控易作为一款专业的监控工具,为Exchange邮件服务器提供了全方位的监测功…

实用功能,觊觎(Edge)浏览器的内置截(长)图功能

Edge浏览器内置截图功能 近年来,Edge浏览器不断更新和完善,也提供了长截图功能。在Edge中,只需点击右上角的“...”,然后选择“网页捕获”->“捕获整页”,即可实现长截图。这一功能的简单易用,使其成为…

IDEA2023版本配置项目全局编码

IDEA默认的项目编码是UTF-8,有时候拿到别人的代码使用的编码是GBK,虽然可以在idea右下角进行修改,但是一个一个的修改太慢了。所以需要去进行该项目的编码全局配置。接下来直接讲步骤,以IDEA2023版本为例。 第一步 File>Sett…

【Spiffo】环境配置:VScode+Windows开发环境

摘要: 在Linux下直接开发有时候不习惯快捷键和操作逻辑,用Windows的话其插件和工具都更齐全、方便,所以配置一个Windows的开发环境能一定程度提升效率。 思路: 自己本地网络内远程连接自己的虚拟机(假定用的是虚拟机…

计算机网络 实验六 组网实验

一、实验目的 通过构造不同的网络拓扑结构图并进行验证,理解分组转发、网络通信及路由选择的原理,理解交换机和路由器在子网划分中的不同作用。 二、实验原理 组网实验是指将多个计算机通过网络连接起来,实现数据的共享和通信。 组网需要考虑…

springboot vue工资管理系统源码和答辩PPT论文

人类现已迈入二十一世纪,科学技术日新月异,经济、资讯等各方面都有了非常大的进步,尤其是资讯与网络技术的飞速发展,对政治、经济、军事、文化等各方面都有了极大的影响。 利用电脑网络的这些便利,发展一套工资管理系统…

【PPTist】添加PPT模版

前言:这篇文章来探索一下如何应用其他的PPT模版,给一个下拉菜单,列出几个项目中内置的模版 PPT模版数据 (一)增加菜单项 首先在下面这个菜单中增加一个“切换模版”的菜单项,点击之后在弹出框中显示所有的…

输入/输出管理 III(磁盘和固态硬盘)

一、磁盘 【总结】: 磁盘(Disk)是由表面涂有磁性物质的物理盘片,通过一个称为磁头的导体线圈从磁盘存取数据。在读/写操作期间,磁头固定,磁盘在下面高速旋转。如下图所示: 磁盘盘面…

链表算法速成计划

链表算法速成计划 1.准备工作 1.1创建链表节点结构体 struct ListNode {int val;ListNode* next;ListNode() : val(0), next(NULL) {}ListNode(int x) : val(x), next(NULL) {}ListNode(int x, ListNode* next) : val(x), next(next) {} };1.2 在IDE中创建链表代码 ListNod…

iPhone或iPad接收的文件怎么找?怎样删除?

因为iOS系统和iPadOS系统的特殊性,在使用AirDroid传输文件之后,往往存在“找文件”的难题。本篇文章一次性解释清楚。 文件传输到iPhone/iPad之后,怎样才能找到? iPhone/iPad接收到的全部文件都可以在AirDroid右上角的【时钟】按钮…

猎板 HDI 多阶工艺:高密度互连的核心技术

一、猎板HDI引言 随着电子设备不断向小型化、高性能化和多功能化发展,PCB(印刷电路板)的设计与制造面临着前所未有的挑战。HDI(高密度互连)技术应运而生,而其中的多阶工艺更是满足了对更高布线密度、更小尺…

VUE 的前置知识

一、JavaScript----导图导出 1. JS 提供的导入导出机制&#xff0c;可以实现按需导入 1.1 在html页面中可以把JS文件通过 <script src"showMessage.js"></script> 全部导入 1.2 通过在JS文件中写export关键字导出通过 <script src"showMessage…

---Arrays类

一 java 1.Arrays类 1.1 toString&#xff08;&#xff09; 1.2 arrays.sort( )-----sort排序 1&#xff09;直接调用sort&#xff08;&#xff09; Arrays.sort() 方法的默认排序顺序是 从小到大&#xff08;升序&#xff09;。 2&#xff09;定制排序【具体使用时 调整正负…

【H2O2|全栈】JS进阶知识(六)ES6(2)

目录 前言 开篇语 准备工作 Set和Map 基本概念 Set 相互转化 常见属性和API 数组去重 并集、交集和差集 Map 转化 常见的属性和API Set和Map的区别 This的指向 function函数 箭头函数 修改this 使用方式 三种方式的异同 案例 更改this指向为obj 求数组数…

Node基本使用

1. 创建自定义全局指令 1.1 新建一个空的文件夹, 创建一个cli.js文件 1.2 在cli.js写入内容 /usr/bin/env就是让系统使用node来执行你的脚本文件。 #! /usr/bin/env node1.3 执行终端指令 // 在文件夹 node-project 的终端下执行指令npm init执行完后package.json结构如下,…

Python编程技巧:多变量赋值的优雅艺术

在Python编程的世界里&#xff0c;有许多令人惊叹的语法特性&#xff0c;而多变量赋值就像是一颗闪耀的明珠&#xff0c;它不仅让代码更优雅&#xff0c;还能提升程序的执行效率。今天我们就深入探讨这个看似简单却蕴含深意的编程技巧。 基础认识 传统的变量赋值方式&#xff…