一块显卡能不能跑动一个大型AI模型,很多时候并不完全取决于GPU算力,而是先取决于显存够不够。模型参数动辄几十亿甚至上千亿,哪怕只是把每个参数从32位换成8位,所节省的内存也可能达到数十GB。于是,量化成为大模型部署中一个非常重要的技术。
所谓量化,简单理解就是让模型使用更低位宽的数字来表示原本以较高精度存储的数据。FP32每个数使用32 bit,也就是4字节;FP16和BF16使用16 bit,也就是2字节;INT8使用8 bit,通常只需要1字节;INT4则进一步压缩到4 bit,也就是半个字节。
这里最容易产生误解的地方是,“4 bit”并不意味着计算机真的拿半个字节作为一个独立的普通整数变量存起来。现代AI框架通常会把多个4 bit数打包到字节甚至更大的数据结构中,同时保存量化所需要的scale等辅助信息。量化真正做的事情,是降低表示这些模型权重所需要的数据位数。
假设一个模型拥有10亿个参数。如果全部使用FP32,仅参数本身就需要大约4GB存储空间。如果使用INT8,理论上的权重存储量约为1GB;如果使用INT4,则约为0.5GB。这里的比例分别是FP32的四分之一和八分之一。
这也是量化能够显著降低显存需求的最直接原因。
但真实情况比这个计算稍微复杂一些。
一个神经网络参数原本可能是一个浮点数,例如:
0.137
-2.481
5.672
浮点格式能够表示相当大的数值范围,并且可以保留比较细的数值差异。如果直接把这些数字转换成普通整数,很多信息都会丢失。
量化因此不能简单理解为“把小数砍掉”。
一种非常常见的思路,是先找到一组浮点数的范围,然后建立一个从浮点数到低位宽整数的映射。以对称量化为例,如果一组权重的绝对值最大约为10,那么系统可以把这个范围映射到INT8能够表示的整数范围。
例如,某个浮点数经过缩放后可能对应到:
0.137 → 2
-2.481 → -32
5.672 → 72
真正计算时,再利用对应的scale把整数近似还原到原来的数值尺度。
因此,量化后的数据通常并不是“原始数字”,而是“低位宽整数 + 缩放信息”。
可以把它想象成一把刻度尺。
原来模型使用非常精细的刻度测量每个数字,现在把刻度变粗了。数据依然可以表示,只不过很多非常接近的数会被归到同一个量化等级。刻度越粗,数据占用的空间越小,但误差也越可能增加。
INT8的优势就在于它仍然拥有256种可能的8位组合,因此相比INT4具有更多的离散表示级别。具体使用有符号还是无符号表示,以及零点如何设置,要看具体量化方案。
而INT4只有16种可能的4 bit组合。
这意味着INT4的量化误差通常比INT8更加敏感。
这里还要纠正一个常见说法:不能把“INT4”简单理解成所有数据都必须使用传统有符号整数的 -8 到 7。实际大模型量化方案可以采用不同的数据表示、对称或非对称量化,以及不同的scale和zero-point设计。某些现代大模型量化甚至并不严格等同于传统意义上的“普通INT4整数计算”。
因此,“INT4就是把FP32直接压成 -8 到7”只是非常粗略的教学模型,并不是所有实际部署方案的完整描述。
那么,量化到底在哪里发生?
一种方法是训练完成以后再量化,也就是后训练量化,通常简称PTQ。模型已经训练好了,再根据权重和激活值的分布确定量化参数。
另一种方法是量化感知训练,也就是QAT。训练过程中就模拟低精度表示造成的误差,让模型逐渐适应这种误差。
两者并不是一回事。
如果模型对量化比较敏感,QAT可能帮助模型保持更好的精度,但它意味着额外的训练成本。对于已经训练完成的大语言模型来说,重新进行完整量化感知训练并不总是现实,因此工程上大量采用各种PTQ方法。
量化时还有一个非常重要的问题:不能把整个模型简单地用同一个scale处理。
因为神经网络不同层、不同通道甚至不同权重块的数值分布可能差异很大。如果强行使用同一个范围,那么少数极端值就可能把量化范围拉得非常宽,导致大量普通数值挤在很少的量化等级里。
这也是为什么现代量化方案经常采用per-tensor、per-channel、group-wise或者block-wise等不同粒度。
以大语言模型常见的分组量化为例,可以把一大片权重划分成若干小组,每一组拥有自己的scale。这样可以让量化范围更贴近局部数据分布,从而减少误差。
代价也很明显:每个组都需要保存额外的scale,有些方案还需要zero-point或者其他辅助信息。
所以,理论上的“INT4只有FP32八分之一”,并不意味着最终磁盘文件或者运行时显存一定精确等于八分之一。
如果一个模型的权重采用FP16存储,那么INT8理论上大约可以把权重存储量压缩到一半;INT4理论上大约可以压缩到四分之一。相比FP32,则分别约为四分之一和八分之一。
这也是为什么很多大语言模型在消费级显卡上可以通过4 bit量化运行。
例如一个参数规模约70亿的模型,如果只考虑FP16权重,理论上大约需要14GB左右的权重存储空间;如果采用4 bit量化,纯权重部分理论上大约只需要3.5GB左右,再加上scale、运行时缓冲区、激活和其他开销,实际显存需求会更高。
如果模型规模扩大到700亿参数,差距就更加明显。FP16权重本身可能需要约140GB,而4 bit权重理论值约35GB。对于只有24GB显存的GPU来说,这种差距已经不是“跑得快一点还是慢一点”的问题,而是模型能不能装进去的问题。
不过,模型显存并不只有权重。
这是理解量化时最重要的一点。
AI推理时,GPU显存通常还需要保存激活值、临时计算空间以及其他运行时数据。对于大语言模型,KV Cache也可能成为非常重要的显存消耗来源,尤其是在上下文长度很大或者同时处理多个请求时。
因此,即使把模型权重从FP16压缩到INT4,整个推理过程的显存也不会按照同样比例下降。
举一个极端的例子,如果某个工作负载中权重只占显存的一部分,而KV Cache占据了大量空间,那么继续压缩权重带来的整体收益自然会越来越有限。
这也解释了为什么“INT4可以把显存降低8倍”这样的说法只能用于描述理论权重存储比例,而不能直接当成所有推理场景的实际结果。
量化还有一个经常被忽略的收益:减少内存带宽压力。
GPU进行大规模矩阵运算时,不只是计算速度重要,数据从显存读取到计算单元的速度同样重要。如果同样一批权重从4字节变成1字节甚至更低位宽的数据,GPU需要搬运的数据量就明显下降。
这对于很多大模型推理尤其重要,因为某些推理阶段受到的限制并不是计算单元数量,而是内存访问和数据搬运。
不过,低位宽数据并不自动意味着GPU一定能获得同等比例的速度提升。
原因很简单:硬件必须支持高效的低精度计算。
现代GPU拥有专门针对矩阵运算设计的计算单元,并且不同架构对FP32、FP16、BF16、INT8、INT4等数据类型的支持程度不同。有些低精度格式可以通过专门的Tensor Core等硬件获得非常高的吞吐量,而另一些量化格式即使理论上节省显存,也可能因为硬件和软件栈支持不足而无法充分发挥性能。
所以,“模型变小”和“模型跑得更快”是两个相关但不完全相同的问题。
量化还有一个更加现实的挑战:模型精度。
如果把一个复杂模型粗暴地从高精度压到4 bit,模型性能可能明显下降。尤其是大语言模型中,某些权重或者通道可能对最终输出特别敏感。少数异常值也可能让简单的量化方案产生较大的误差。
因此,大模型量化技术一直在围绕一个核心问题发展:怎样用尽可能少的bit,保存尽可能多的有效信息。
这也是各种GPTQ、AWQ、SmoothQuant以及其他量化方法出现的背景之一。它们并不是简单地“把数字变小”,而是在研究权重和激活值的分布、异常值、分组方式、缩放策略以及硬件执行方式之间怎样取得平衡。
其中,有些方法主要针对权重量化,有些同时考虑激活值,有些则更强调硬件执行效率。不同方法适合的模型、硬件和推理框架也可能不同。
因此,在实际部署中,“INT4”并不是一个足够完整的答案。
还需要知道采用什么量化算法、量化哪些部分、使用什么group size、scale如何保存、激活是否量化、计算过程中是否需要反量化,以及底层GPU是否能够高效执行这种格式。
有些系统甚至会采用混合精度:一部分数据使用4 bit,一部分保持8 bit、16 bit甚至更高精度。这样做看起来不够“纯粹”,却可能在模型质量、显存和速度之间取得更好的平衡。
从工程角度看,这其实比追求一个漂亮的“8倍压缩”数字更加重要。
量化的意义,也因此不能简单概括成“把模型压小”。
它改变的是模型在硬件上的数据表示方式。FP32、FP16、BF16、INT8和INT4之间的差别,本质上是用多少信息位来表示一个数,以及硬件如何处理这些数据。当模型参数从32 bit降低到8 bit或者4 bit时,存储空间和数据搬运需求随之下降;如果硬件同时支持高效低精度计算,推理吞吐也可能获得提升。
但低精度不是免费的午餐。
位宽越低,能够表示的数值状态越少,量化误差控制就越重要。模型越大、结构越复杂、工作负载越特殊,量化方案就越不能靠简单的“一键压缩”解决。权重、激活、KV Cache、scale、计算内核和GPU架构必须一起考虑。
对于普通用户,可以把量化理解成给一个庞大的数字世界重新设计“存储格式”。原来每个数字都用很精细的刻度保存,现在允许一些细节被合并,以换取更小的文件、更低的显存占用和更少的数据搬运。INT8是在精度和压缩之间比较温和的一步,INT4则进一步追求极致的空间效率。
这也是为什么今天很多本地AI模型能够进入普通PC甚至消费级GPU。过去需要数据中心级硬件才能装下的模型,通过低精度量化、模型结构优化和更高效的推理软件,已经可以在有限显存中运行。
但量化真正改变的,并不是数学规律,而是工程边界。它没有凭空消灭模型参数,也没有让几十亿个参数突然“免费”;它只是用更紧凑的方式表示这些参数,并通过算法和硬件共同承担由此产生的误差。AI模型越来越大,而显存永远有限,量化技术解决的,正是这两个现实之间越来越紧张的矛盾。
AI 模型量化为什么能够降低显存需求,INT8 和 INT4 背后到底发生了什么
喜欢这篇报道?
使用下面的功能,方便以后继续阅读和分享 MNewsTV
关于文章收藏
收藏不需要注册帐号,收藏信息仅保存在当前浏览器中。
删除收藏请进入「我的收藏」进行管理。
分享 Facebook | X | WhatsApp | LinkedIn
捐助(Paypal): https://www.paypal.me/observeccp 订阅中国观察电报 Telegram : https://t.me/s/ObserveCCP