理解大模型的量化

1. 什么是量化

量化是大模型领域中的一项关键技术,它通过降低模型参数的精度,将浮点数转换为整数或者定点数,从而实现模型的压缩和优化。
这样做的目的主要是减少模型的存储需求、加快推理速度,并且降低模型的计算复杂度,是的大模型能够高效的在一些资源受限的设备上运行,例如移动设备、嵌入式系统等等场景。

2. 精度

数据存储的一些基本概念:

  • bit 位是计算机中最小的数据单位,只能存储0或者1两种状态,一个bit可以表示两种状态,即0或1;
  • byte字节是计算机中常用的数据单位,由8个bit组成;
  • float浮点数是一种用于表示实数的数据类型,通常由32或64位的二进制数表示,其中32位的浮点数称为单精度浮点数,64位的浮点数称为双精度浮点数;
  • integer整数是一种用于表示整数的数据类型,通常由8位、16位、32位或64位的二进制数表示,其中8位的整数称为字节,16位的整数称为短整数,32位的整数称为整数,64位的整数称为长整数。

FP32

32位浮点数,通常用于表示单精度浮点数,符号位占 1 位,指数位占 8 位,尾数位占 23 位,精度约为 7 位有效数字;
FP32

32位浮点数,通常用于表示单精度浮点数,符号位占 1 位,指数位占 8 位,尾数位占 23 位,精度约为 7 位有效数字;

FP16

16位浮点数,通常用于表示半精度浮点数,符号位占1位,指数为占5位,尾数位占10位,精度约为3位有效数字;

在这里插入图片描述
BF16

16位浮点数,通常用于表示混合精度浮点数,符号位占 1 位,指数位占 8 位,尾数位占 7 位,精度约为 2 位有效数字;

在这里插入图片描述
INT8

8位整数,通常用于表示 8 位整数,范围为 -128 到 127;

在这里插入图片描述

3. 量化的类型

按照量化方法可以划分为线性量化、非线性量化(如对数量化)等多种方式,目前较为常用的是线性量化。 其中线性量化又可以按照对称性划分为对称量化和非对称量化。

对称线性量化
对称量化的特点是量化后的值中零点必须对应于原始值中的零,即量化操作的零点固定不变。这种方式通常使用两个参数(量化的最小值和最大值)来定义量化的范围,而这个范围是以零为中心对称的。

在这里插入图片描述

非对称线性量化
非对称量化不强制要求量化后的零点对应于原始数据中的零点。这种量化方法使用三个参数来定义从原始数值到量化数值的映射关系:量化最小值、量化最大值和零点。这意味着量化操作可以有一个任意的零点,这个零点被映射到量化范围内的某个整数值上。

非对称量化特别适合于原始数据分布不关于零对称的情况,例如当数据集中包含大量正值或负值时。它允许更灵活的量化范围定义,以适应数据的实际分布,从而减少量化误差,提高量化后的模型精度

在这里插入图片描述

4. 量化的粒度

量化粒度(Quantization Granularity) 是量化技术中的一个重要概念,它决定了量化操作的精细程度。 量化粒度影响着量化参数的共享方式,即量化的规模和范围。 不同的量化粒度可以带来不同的精度和效率和权衡。
量化粒度有以下几种形式:
在这里插入图片描述

  • Per-tensor:整个张量或整个层级共享相同的量化参数(scale和zero-point)。这种方式的优点是存储和计算效率较高,但可能会导致精度损失,因为一个固定的量化参数难以覆盖所有数据的动态范围;

  • Per-channel:每个通道或每个轴都有自己的量化参数。这种方式可以更准确地量化数据,因为每个通道可以有自己的动态范围,但会增加存储需求和计算复杂度;

  • Per-group:在量化过程中,将数据分成块或组,每块或每组有自己的量化参数。

    量化粒度的选择取决于模型的特定需求和目标硬件平台的特性。较小的量化粒度可以提供更高的精度,但可能会增加模型大小和推理延迟。例如,在TensorRT中,默认对激活值使用Per-tensor量化,而对权重使用Per-channel量化,这是基于多次实验得出的结论。

5. 权重打包/Weight packing

Weight packing(权重打包)是量化中的一个概念,它涉及将多个权重参数合并或者“打包”成一个量化单元,
以减少模型的内存占用和提高计算效率。权重打包技术可以与量化结合使用,通过减少模型参数的数量来进一步压缩模型大小,同时保持模型的性能。这通常通过将权重矩阵分解为较小的块,然后对这些块应用量化和编码技术来实现。

6. PTQ和QAT

在这里插入图片描述
训练后量化
训练后量化(Post Training Quantization, PTQ)是一种在模型训练完成后应用的技术,目的是减少模型的大小和提高推理速度,同时尽量保持模型的性能。PTQ特别适合部署到资源受限的设备上,如移动设备和嵌入式设备。在PTQ中,量化操作可以应用于模型的输入、权重和激活值上。

量化感知训练
量化感知训练(Quantization Aware Training, QAT)是一种在训练深度学习模型时引入量化操作的技术,目的是在减少模型大小和提高运行效率的同时,尽量减少量化带来的精度损失 。 与传统的训练后量化(不同,QAT在训练过程中模拟量化的效果,使模型能够适应量化带来的信息损失,从而在实际应用量化时保持更高的性能

**

举例说明

**

假设你有一个训练好的图像分类模型(如ResNet),现在需要将其部署到手机上。

如果你选择 PTQ:

  • 直接对模型的权重和激活值进行量化(FP32 -> INT8)。

  • 模型大小减小,推理速度加快,但分类精度可能会下降(例如从95%降到92%)。

  • 适合对精度要求不高的场景。

如果你选择 QAT:

  • 在训练过程中模拟量化操作,让模型适应量化。

  • 最终量化后的模型精度损失较小(例如从95%降到94.5%)。

  • 适合对精度要求较高的场景。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

构建逻辑思维链(CoT)为金融AI消除幻觉(保险理赔篇)

在上一篇文章中,我们介绍了如何利用亚马逊云科技的Amazon Bedrock GuardRails自动推理检查为金融行业的AI应用提升准确性,消除幻觉。在本案例中,我们将探讨一个利用AI副主保险公司评估长期护理保险理赔审核的场景。 自动推理检查配置 在本方…

上传securecmd失败

上传securecmd失败 问题描述:KES V8R6部署工具中,节点管理里新建节点下一步提示上传securecmd失败,如下: 解决办法: [rootlocalhost ~]# yum install -y unzip 上传的过程中会解压,如果未安装unzip依赖包…

蓝桥杯 5.字符串

蓝桥杯 5.字符串 文章目录 蓝桥杯 5.字符串KMP&字符串哈希Manacher编程138-148字典树基础01Trie编程149-155 KMP&字符串哈希 KMP算法 字符串匹配算法, 用于匹配**模式串P(短)和文本串S(长)**中出现的所有位置, 例如, S “ababac”, P “aba”, 那么出现的所有位置就…

TEMU标签超简单制作方法,三步快速合成TEMU标签

这个标签编辑工具使用方法很简单,零基础小白也能合成TEMU标签/跨境合规标签。 第一步:选择一个符合需求的标签 这个工具提供了非常多的标签模板,选择一个自己编辑即可。 第二步:编辑标签内容 提供了超多自定义编辑功能&…

ChatGPT入驻Safari,AI搜索时代加速到来

2月25日,人工智能领域巨头OpenAI宣布了一项重磅更新:为其广受欢迎的ChatGPT应用新增Safari浏览器扩展功能,并支持用户将ChatGPT设置为Safari地址栏的默认搜索引擎。这一举措标志着OpenAI在将ChatGPT整合进用户日常网络浏览体验方面迈出了重要…

auto.js例子之WebView多页面浏览器

"ui";ui.layout(<vertical><horizontal id"webs" layout_weight"1"></horizontal><button id"one" text"第一个" /><button id"two" text"第二个" /><button id"…

创建虚拟环境的方法

虚拟环境 python解释器 第三方包&#xff1b; 在系统中&#xff0c;一个虚拟环境就是一个文件夹&#xff0c;改动文件夹名字不行&#xff0c;因为已经写入了部分脚本中&#xff0c;如activate等启动程序中&#xff1b; Virtualenv 安装&#xff1a;pip install virtualenv…

SQL注入(order by,limit),seacms的报错注入以及系统库的绕过

一、若information_schema被过滤了&#xff0c;应该如何绕过 简介&#xff1a; information_schema 是一个非常重要的系统数据库&#xff0c;它在SQL标准中定义&#xff0c;并且被许多关系型数据库管理系统&#xff08;RDBMS&#xff09;如MySQL、PostgreSQL等支持。这个库提供…

HAL库串口发送函数 加 接收函数

数据类型 一个字节8个比特位&#xff0c;串口发送函数的第三个参数&#xff0c;写入的是数据的数量&#xff0c;以字节为单位。 ​/* exact-width signed integer types */ typedef signed char int8_t; typedef signed short int int16_t; typedef signed…

Linux:进程信号(二.信号的保存与处理、递达、volatile关键字、SIGCHLD信号)

目录 1.信号保存 1.1递达、未决、阻塞等概念 1.2再次理解信号产生与保存 1.3信号集操作函数 sigset_t类型 sigemptyset() 函数 sigismember()函数 sigaddset ()函数 sigdelset() 函数 sigprocmask()系统调用 sigpending()系统调用 2.信号的处理/递达 2.1信号处理时…

【JavaEE】SpringMVC获取HTTP中的元素

目录 一、获取URL中的参数PathVariable二、上传⽂件RequestPart三、获取Cookie/Session3.1 HttpServletRequest和 HttpServletResponse3.2 获取Cookie3.2.1 使用HttpServletRequest3.2.2 使用注解CookieValue 3.3 设置session3.4 获取session3.4.1 使用HttpServletRequest3.4.2…

React低代码项目:用户登陆

吐司问卷&#xff1a;用户登陆 Date: February 17, 2025 4:12 PM (GMT8) JWT **概念&#xff1a;**登陆成功后&#xff0c;服务端返回一个 token JWT组成&#xff1a; JWT 由三个部分组成&#xff1a;头部&#xff08;Header&#xff09;、载荷&#xff08;Payload&#xf…

集合与反射

一、集合体系 集合一共分为两部分&#xff1a;Collection&#xff08;单列集合&#xff09;每个元素&#xff08;数据&#xff09;只包含一个值。 Map&#xff08;双列集合&#xff09;每个元素包含两个值&#xff08;键值对&#xff09;。 二、ArrayList和LinkedList的区别 数…

ubuntu:桌面版磁盘合并扩容

下载gparted磁盘编辑器 apt-get install gparted 打开gparted 更改目标分区大小 当遇到这个报错时&#xff0c;需要在命令行执行原分区的挂载指令 查看该分区信息 记住该目录&#xff0c;并在命令行执行 mount -o remount -rw /# 示例&#xff1a;mount -o remount -rw /v…

全国各省山峰分布SHP数据详解及其在科学研究与旅游规划中的应用

一、引言 在中国这片广袤无垠的土地上&#xff0c;山峰作为自然界的壮丽景观&#xff0c;不仅构成了大地的骨架&#xff0c;更承载着丰富的自然资源和深厚的文化底蕴。 全国各省山峰分布SHP数据&#xff0c;作为一种地理信息系统&#xff08;GIS&#xff09;中的矢量数据格式…

向量数据库milvus部署

官方文档 Milvus vector database documentationRun Milvus in Docker (Linux) | Milvus DocumentationMilvus vector database documentation 按部署比较简单&#xff0c;这里说一下遇到的问题 一&#xff1a;Docker Compose 方式部署 1、镜像无法拉取,(docker.io被禁) …

Java 基础面试题

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

清华大学《AIGC发展研究3.0》

大家好&#xff0c;我是吾鳴。 AIGC已经爆火好长一段时间了&#xff0c;特别是DeepSeek的爆火&#xff0c;直接让很多之前没有体会过推理模型的人可以免费的使用上推理模型&#xff0c;同时DeepSeek产品形态也是全球首创&#xff0c;就是直接把AI的思考过程展示给你看&#xff…

苹果CMS泛目录站群架构:无缓存刷新技术的SEO实战

一、技术背景与行业痛点 传统泛目录站群系统普遍依赖静态缓存机制&#xff0c;导致两个核心问题&#xff1a; 缓存臃肿&#xff1a;运行3-6个月后缓存文件可达数百GB量级&#xff0c;严重影响服务器性能内容僵化&#xff1a;缓存机制导致页面TDK&#xff08;标题/描述/关键词…

iview table组件中修改按钮时 要注意是否真的修改了值

如图所示&#xff0c; switch按钮的默认值用dj来控制&#xff0c;但是如果没有加事情去修改切换后的值的话&#xff0c;那么他只会修改本身的显示值&#xff0c;但是我们需要跟着修改的列表数据的dj值是不会修改的&#xff0c;所以要注意&#xff0c;一定要加上事情去修改确定的…