模型压缩技术(二),模型量化让模型“轻装上阵”

一、技术应用背景

在人工智能蓬勃发展的浪潮下,大模型在自然语言处理、计算机视觉等诸多领域大放异彩,像知名的GPT以及各类开源大语言模型,其规模与复杂度持续攀升。然而,这一发展也带来了挑战,模型越大,对计算资源和存储资源的索求便越高。

在实际应用场景中,无论是将模型部署于云端服务器,还是让其在边缘设备上运行,资源受限的问题都十分突出。比如手机、智能音箱这类边缘设备,它们的硬件计算能力和内存空间相对有限,难以承载庞大的原始模型运行。在此背景下,大模型量化技术应需而生,其核心目标就是要破解模型在资源受限环境下如何实现高效运行的难题。

二、底层原理

(一)信息的数字化表示

在计算机的世界里,数据是以二进制的形式来存储和处理的。对于大模型中的权重和激活值而言,其原始的表示形式通常为32位的浮点数(float32)。一个32位浮点数由符号位、指数位和尾数位这三部分构成,凭借这样的结构,它能够精准地呈现各种各样的实数。但这种高精度的表示方式也有弊端,那就是会占用较多的存储空间。而量化技术的关键思路,就是运用更少的比特数来对这些数据进行表示,比如把32位浮点数转化成8位整数(int8)甚至比特数更低的形式。如下图,meta-Llama-3-8B模型FP32大小为32GB,用Int8量化后为8GB。
在这里插入图片描述

(二)量化过程

量化的操作过程类似给数据划分“格子”。以将float32量化到int8为例来详细说明,假设原始数据的取值范围是[-1, 1],我们要做的是把这个范围映射到int8的取值范围[-128, 127]。具体步骤如下:
首先,要确定一个缩放因子(scale),比如通过公式scale = 255 / (1 - (-1)) 来计算得出。接着,将原始的float32数据乘以这个scale,并按照四舍五入的规则取最接近的整数,如此一来,这个整数就会落入int8的取值范围之中。而在进行推理运算时,还需要将int8数据再除以scale,以此还原回近似的原始值来开展后续的计算。通过这样的方式,就实现了从float32到int8的量化和反量化过程,就如同在左边的float32取值范围和右边的量化后的int8取值范围之间,搭建起了一座通过缩放因子实现映射的“桥梁”。

三、技术实现方式

(一)训练后量化(Post - Training Quantization)

这种量化方式是在模型完成训练之后才进行的操作。具体而言,先是在全精度(如float32)的条件下完成模型的训练,之后再对已经训练好的权重和激活值实施量化。其中,常见的方法是线性量化,也就是前面所提到的依据缩放因子来开展量化的方式。训练后量化具有实现起来较为简单的优势,并且不需要对模型进行重新训练,所以它很适合用于那些需要快速完成部署的场景。例如,在一些对精度要求并非特别严苛的图像分类应用场景中,直接针对训练好的模型开展训练后量化操作,能够迅速地降低模型的大小,同时也能减少推理时的计算量。

(二)量化感知训练(Quantization - Aware Training)

此方式是在模型的训练过程当中就将量化的影响纳入考虑范畴。在训练阶段,会模拟量化的实际过程,让模型从训练之时就能够适应低比特数的表示形式。详细来讲,在进行反向传播计算梯度时,会针对量化操作采取特殊的处理手段,使得模型参数在训练进程中可以适应由于量化而产生的精度损失。量化感知训练这种方法能够在一定程度上降低量化对模型精度所造成的影响,所以它比较适用于那些对精度要求相对较高的应用场景,比如医疗影像识别领域中所运用的大模型。

四、对模型的利弊影响

(一)利

  1. 显著减少存储空间:以从32位浮点数量化到8位整数为例,经过量化后,模型的存储需求能够降低大约4倍。这对于那些存储资源有限的设备,或者是在进行大规模模型部署的情况而言,无疑是大大削减了存储成本。
  2. 有效加速推理过程:低比特数的数据在进行计算时,硬件的计算效率会更高。例如,在一些能够支持int8计算的硬件加速器上,模型的推理速度能够得到显著的提升。这样一来,模型便可以更迅速地响应外界的请求,进而有效提升用户的使用体验。
  3. 切实降低能耗:由于计算量有所减少,并且硬件的计算效率也得到了提升,所以模型在运行过程中的能耗会随之降低。对于边缘设备来讲,更低的能耗就意味着能够拥有更长的电池续航时间,这在实际使用中是非常具有优势的。

(二)弊

  1. 存在精度损失风险:量化操作本质上是运用有限的离散值去近似原始的连续值,所以不可避免地会带来一定程度的精度损失。在一些对精度要求极高的任务当中,比如金融风险预测等领域,经过量化后的模型很可能无法满足相应的精度要求。
  2. 调优工作较为复杂:量化感知训练这种方式需要在训练过程中对更多的超参数进行调整,以此来平衡量化所带来的各种影响,这无疑增加了模型训练以及调优工作的复杂性。而且,不同的量化方法以及量化比特数对模型精度的影响也各不相同,所以需要开展大量的实验来筛选出最为合适的量化方案。

大模型量化技术实则是在努力寻求模型性能与资源限制之间的平衡,尽管它目前还存在一些局限性,但随着相关技术的不断发展与优化,量化技术必然会在大模型的广泛应用中发挥愈发重要的作用,从而让大模型能够在更多的场景中“轻装上阵”,为人工智能的进一步普及和发展提供坚实有力的支持。大模型压缩技术还有模型蒸馏技术,可以看看。

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

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

相关文章

swift-5-汇编分析闭包本质

一、枚举、结构体、类都定义方法 方法占用对象的内存么? 不占用 方法的本质就是函数 方法、函数都存放在代码段,因为方法都是公共的,不管 对象一还是对对象二调用都是一样的,所以放在代码段,但是每个对象的成员不一样所…

通义千问本地配置并实现微调

通义千问本地配置并实现微调 最小Qwen模型大小942mb from modelscope import snapshot_download model_dir = snapshot_download(“qwen/Qwen2.5-0.5B”, cache_dir=“./models2.5”) Qwen2.5-0.5B:942MB from modelscope import snapshot_download model_dir = snapshot_d…

< 自用文儿 > CertBot 申请 SSL 证书 使用 challenge 模式 避开防火墙的阻挡

环境: 腾讯 VPS 腾讯会向你销售 SSL , 这个本是免费的。CertBot 默认申请证书要用到 80 端口,会蹭边什么什么条款,备案法律来阻止80端口的通讯,没有网站也一样被阻拦。 通过腾讯买的域名: bestherbs.cn …

<建模软件安装教程1>Blender4.2系列

Blender4.2安装教程 0注意:Windows环境下安装 第一步,百度网盘提取安装包。百度网盘链接:通过网盘分享的文件:blender.zip 链接: https://pan.baidu.com/s/1OG0jMMtN0qWDSQ6z_rE-9w 提取码: 0309 --来自百度网盘超级会员v3的分…

SpringBoot统一响应类型3.1.1版本

前言: 通过实践而发现真理,又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识,又从理性认识而能动地指导革命实践,改造主观世界和客观世界。实践、认识、再实践、再认识,这种形式,循环往…

如是APP:AI精准匹配需求,信用体系重构信任,双轮驱动打造无套路电商

如是APP:AI精准匹配需求,信用体系重构信任,双轮驱动打造无套路电商 2024年3月,一款结合AI导购与信用体系的电商平台——如是APP即将上线。如是APP通过AI对话帮助用户精准快速购物,并通过全维度信用体系实现产品信息透明化,旨在打造一个“信息对称”的电商平台,实现“无套路”的…

[SAP MM] 查看物料主数据的物料类型

创建物料主数据时,必须为物料分配物料类型,如原材料或半成品 在标准系统中,物料类型ROH(原材料)的所有物料都要从外部采购,而类型为NLAG(非库存物料)的物料则可从外部采购也可在内部生产 ① 特殊物料类型:NLAG 该物料…

Linux中部署DeepSeek,WSL(ubunt)中使用ollama部署deepseek-R1-7b

想在自己的Win11电脑上部署Linux的DeepSeek模型,但在网上一直没有找到合适的相应教程,自己查询各种网上资源,以及询问一些AI大模型后成功安装,并整理了以下步骤。仅作为个人学习笔记使用,由于本人对各方面知识掌握不足…

NoteGen是一款开源跨平台的 AI 笔记应用,专注于 recording 和 writing ,基于 Tauri 开发

一、软件介绍 文末提供程序和源码下载 NoteGen 是一款专注于记录和写作的跨平台 AI 笔记应用,基于 Tauri 开发。NoteGen 的核心理念是将记录、写作和 AI 结合使用,三者相辅相成。记录功能可以帮助用户快速捕捉和整理碎片化知识。整理功能是连接记录和写…

C++性能分析工具

C性能分析工具常用的三种。perf、gprof、pprof perf工具需要root权限,设置perf的suid位并不行,需要设置perf对应的内核参数。 perf使用: g -o example example.cpp -O2 # 运行程序并采样 sudo perf record -g ./example # 查看采样结果 sud…

【编译器】VSCODE搭建ESP32-C3

【编译器】VSCODE搭建ESP32-C3 文章目录 [TOC](文章目录) 前言一、下载配置二、编译三、烧录四、参考资料总结 前言 使用工具: 1. 提示:以下是本篇文章正文内容,下面案例可供参考 一、下载配置 安装IDF,打开例程 二、编译 三…

《云原生监控体系构建实录:从Prometheus到Grafana的观测革命》

PrometheusGrafana部署配置 Prometheus安装 下载Prometheus服务端 Download | PrometheusAn open-source monitoring system with a dimensional data model, flexible query language, efficient time series database and modern alerting approach.https://prometheus.io/…

LLM大模型-李宏毅

本博客是对b站上,李宏毅大模型课程的简单记录。 大模型入门到进阶,一套全解决! 第1讲:生成式AI是什么? ChatGPT【Chat Generative Pre-trained Transformer】每一步都是文字接龙,其实就是分类问题 文字接…

Codeforces Round 976 (Div. 2) (部分题解)

先做一个提前的小结,感觉这场每题有很特别的结论或者很难去guess的点,但就是能对,可能在证明上有点复杂吧。 A. Find Minimum Operations 思路:题意的话就是用来代替的最小操作步骤, 这里其实可以转换成求将改写成进…

DMR协议空中接口部分

文章目录 前言DMR 空中接口协议栈模型无线空中接口发送与接收参考模型DMR的TDMA结构帧结构突发结构数据与控制突发语音突发公共广播信道突发 数据信息传送时序语音信息传送时序帧同步 调制解调4-CPFSK正交调制4-CPFSK解调基带成型滤波 信道编码类型参考 前言 DMR 协议的标准号主…

专题二串联所有单词的子串

1.题目 题目分析: 有一个字符串s和字符串数组,如何字符串数组里面的元素可以组成一个字符串,然后要在字符串里面找到连续子串跟组成的字符串一样,返回起始地址。 2.算法原理 这道题可以把字符串数组的元素string看出char&#x…

uniapp或者vue 使用serialport

参考https://blog.csdn.net/ykee126/article/details/90440499 版本是第一位:否则容易编译失败 node 版本 18.14.0 npm 版本 9.3.1 electron 版本 30.0.8 electron-rebuild 版本 3.2.9 serialport 版本 10.0.0 需要python环境 main.js // Modules to control app…

编程题-计算器(中等)

题目: 给定一个包含正整数、加()、减(-)、乘(*)、除(/)的算数表达式(括号除外),计算其结果。 表达式仅包含非负整数,, - ,*,/ 四种运算符和空格 。 整数除法仅保留整数部分。 解法一(栈&…

数据增强术:如何利用大模型(LLMs)来模拟不同的扰动类型以增强信息提取任务的鲁棒性

一、对抗样本库构建 1. 基于LLMs的领域针对性扰动设计对抗样本生成 替换实体、三元组和触发器(Replace Entity, Triple, and Trigger) 使用LLMs(如GPT-4)来替换句子中的实体、关系三元组或事件触发器,同时保持其类型不…

深入了解Linux —— git三板斧

版本控制器git 为了我们方便管理不同版本的文件,就有了版本控制器; 所谓的版本控制器,就是能够了解到一个文件的历史记录(修改记录);简单来说就是记录每一次的改动和版本迭代的一个管理系统,同…