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

news/2025/3/10 19:13:37/

一、技术应用背景

在人工智能蓬勃发展的浪潮下,大模型在自然语言处理、计算机视觉等诸多领域大放异彩,像知名的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. 调优工作较为复杂:量化感知训练这种方式需要在训练过程中对更多的超参数进行调整,以此来平衡量化所带来的各种影响,这无疑增加了模型训练以及调优工作的复杂性。而且,不同的量化方法以及量化比特数对模型精度的影响也各不相同,所以需要开展大量的实验来筛选出最为合适的量化方案。

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


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

相关文章

大彩串口屏开发 —— MODBUS通信

目 录 Modbus通信方式 1 使用变量与协议设置方式 2 使用LUA脚本方式 3 两者结合 Modbus通信 大彩串口屏可以采用三种方式实现与其它设备进行modbus通信和逻辑处理。 方式 1 使用变量与协议设置 步骤1 在协议设置里进行设置,包括开启modbus协议,屏做为主…

Redis常问八股(一)

1.什么是缓存穿透?怎么解决? 答:缓存穿透是指查询一个一定不存在的数据,由于存储层查不到数据因此不写入缓存,这将导致这个不存在的数据每次请求都要到 DB 去查询,可能导致 DB 挂掉。这种情况大概率是遭到…

996引擎-问题处理:实现自定义道具变身卡

996引擎-问题处理:实现自定义道具变身卡 方案一、修改角色外观(武器、衣服、特效) 实现变身先看效果创建个NPC测试效果方案二、利用 Buff 实现变身创建:变身Buff配buff表,实现人物变形测试NPC创建道具:变身卡配item表,添加道具:变身卡触发函数参考资料方案一、修改角色外…

比特币中的相关技术

1.区块链:公共大账本 比特币的核心是一个叫区块链的技术。你可以把它想象成一个所有人都能看的“公共记账本”。比如你转钱给朋友,这笔交易就会被记在这个账本上,而且永久保存、无法篡改。 区块:账本每一页记录约10分钟的交易&am…

如何在WPS中接入DeepSeek并使用OfficeAI助手(超细!成功版本)

目录 第一步:下载并安装OfficeAI助手 第二步:申请API Key 第三步:两种方式导入WPS 第一种:本地大模型Ollama 第二种APIKey接入 第四步:探索OfficeAI的创作功能 工作进展汇报 PPT大纲设计 第五步:我的使用体验(体验建议) …

【Godot】实现对话系统

前言 在 Godot 中实现对话系统(Dialogue System)是游戏开发中的常见需求。 Godot本身自带的的灵活性和轻量级脚本语言 GDScript 使得实现对话系统变得相对简单。 以下是实现一个基础对话系统的示例。(语言为GDScript但高亮选择Python因为类似…

10.2 继承与多态

文章目录 继承多态 继承 继承的作用是代码复用。派生类自动获得基类的除私有成员外的一切。基类描述一般特性,派生类提供更丰富的属性和行为。在构造派生类时,其基类构造函数先被调用,然后是派生类构造函数。在析构时顺序刚好相反。 // 基类…

Unity DOTS从入门到精通之 自定义Authoring类

文章目录 前言安装 DOTS 包什么是Authoring1. 实体组件2. Authoring类 前言 DOTS(面向数据的技术堆栈)是一套由 Unity 提供支持的技术,用于提供高性能游戏开发解决方案,特别适合需要处理大量数据的游戏,例如大型开放世…