Datawhale组队学习】模型减肥秘籍:模型压缩技术3——模型量化

news/2024/11/19 14:13:33/

模型量化的目的是通过将浮点运算转换为定点运算,以减少模型大小、内存和存储需求,同时加快推理速度,降低计算功耗,使得模型在低算力设备上运行更加高效,特别适用于嵌入式设备或移动端场景。

不同数据类型(FP32、BF16、FP16、INT8)在动态范围和精度上的差异。FP32具有最广的动态范围,同时精度最高。图中两个相邻值之间的距离较小,意味着它能够在很大范围内精确地表示数值,是深度学习模型的常见选择,尤其在精度要求高的场景中。

BF16保持了与FP32类似的动态范围,但牺牲了一部分精度。虽然它能够处理与FP32相同范围的数值,但相邻值之间的距离较大,因此精度较低。这种格式在需要节省内存的情况下仍然能提供足够大的动态范围,常用于加速模型训练而不显著影响性能。

FP16的动态范围比BF16略小,数值范围从 -65504 到 65504,精度也比FP32低,相邻值之间的距离比FP32和BF16更大。FP16常用于在精度损失可接受的情况下减少模型的计算和存储资源。

INT8是一种8位整数类型,具有非常有限的动态范围。由于它只能表示离散的整数值,其动态范围和精度都明显低于浮点数类型。但由于其低存储需求和高计算效率,INT8非常适合于资源受限设备的模型推理,特别是在内存和功耗有限的场景中。

在这里插入图片描述
把普通图片用8位颜色表示:在这里插入图片描述

实际操作

在这里插入图片描述
以下是一段简单的代码表示张量 x 从 fp32 量化到 int8 整型,再反量化回 fp32 的示例:

x->x{int}->x_hat 的过程的一个示例如下:
在这里插入图片描述
量化前 x:
在这里插入图片描述

量化后 x_hat:
在这里插入图片描述

工业界的应用

大型语言模型的量化也能让模型“瘦身”,让它能更高效地运行。原本这些模型用的是很高精度的数据类型来保存参数,这样虽然精确,但代价就是占用大量内存,而且运算也非常耗费资源。一台普通的设备根本跑不动这样的庞然大物,用量化技术把这些参数从高精度的格式变成低精度的格式,比如把32位的浮点数变成8位的整数,这样不仅减少了模型的大小,也加快了计算速度。特别是在手机或者嵌入式设备上,量化能让模型跑得又快又省电。量化就成了大型语言模型落地应用的重要一步,让它们不再只是实验室里的庞然大物,而是可以实际用起来,服务更多场景。

在这里插入图片描述
GPTQ 是最早被工程化部署所接受的量化方案,W8A16 或 W4A16 的量化效果在多数场景中都有与原模型较为接近的表现,而且其量化过程非常快。
在这里插入图片描述

参考文献

  1. https://tech.dewu.com/article?id=112
  2. https://www.datawhale.cn/learn/content/68/963
  3. https://blog.csdn.net/penriver/article/details/136411485
  4. https://piprogramming.org/articles/Simple-and-Foolproof-ways-to-Shrink-Compress-and-Accelerate-your-Deep-Learning-Neural-Network-etc-Artificial-Intelligence-Models-0000000015.html
  5. https://newsletter.maartengrootendorst.com/p/a-visual-guide-to-quantization
  6. https://xie.infoq.cn/article/01daa1c8fdd58f2d07af448ab?utm_campaign=geektime_search&utm_content=geektime_search&utm_medium=geektime_search&utm_source=geektime_search&utm_term=geektime_search

http://www.ppmy.cn/news/1548252.html

相关文章

【金融风控】样本不均衡和异常点检测

内容介绍 知道样本不均衡时的常用处理方式 掌握SMOTE过采样的使用 掌握IForest算法的使用 【掌握】样本不均衡简介 通常分类机器学习任务期望每种类别的样本是均衡的,即不同目标值样本的总量接近相同。 在梯度下降过程中,不同类别的样本量有较大差异时…

Ascend C算子性能优化实用技巧05——API使用优化

Ascend C是CANN针对算子开发场景推出的编程语言,原生支持C和C标准规范,兼具开发效率和运行性能。使用Ascend C,开发者可以基于昇腾AI硬件,高效的实现自定义的创新算法。 目前已经有越来越多的开发者使用Ascend C,我们…

<项目代码>YOLOv8 瞳孔识别<目标检测>

YOLOv8是一种单阶段(one-stage)检测算法,它将目标检测问题转化为一个回归问题,能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法(如Faster R-CNN),YOLOv8具有更高的…

网络安全技术概论知识点

第一章 网络安全基础 知识点 1.网络安全威胁现状、成因: 缺乏相关网络安全法律法规、管理缺失和安全意识不强;政府机构与企业在网络安全方面出发点、思路、侧重点不同、国内外或不同企事业机构及行业等的网络安全标准不统一;网络安全威胁及…

【Linux】软件包管理器yum、编辑器vim

Linux 1.源码安装 和 软件包安装2.软件包管理器yum1.什么是包管理器 3.vim编辑器1.vim常见的三种模式2.vim命令模式:命令集3.vim底行模式:命令集4.使用vim的小技巧5.vim配置 1.源码安装 和 软件包安装 在Linux下安装软件,一个通常的办法是下…

大三学生实习面试经历(1)

最近听了一位学长的建议,不能等一切都准备好再去开始,于是就开始了简历投递,恰好简历过了某小厂的初筛,开启了线上面试,记录了一些问题: (通过面试也确实了解到了自己在某些方面确实做的还不够…

centos7 如何卸载和安装达梦数据库实例

1.DM8数据库的卸载和安装 1.1 卸载数据库(卸载和安装部分建议反过来看) 1.1.1 运行uninstall.sh 脚本所在位置为DM8数据库安装所在目录 # 进入DM数据库所在安装目录 cd /dm8 # 运行卸载脚本 ./uninstall.sh 1.1.2 查看安装目录剩下的文件 ll 1.1.3 清空安装目录 #…

Spring Boot汽车资讯:科技与速度的新纪元

摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了汽车资讯网站的开发全过程。通过分析汽车资讯网站管理的不足,创建了一个计算机管理汽车资讯网站的方案。文章介绍了汽车资讯网站的系统分析部分&…