自ChatGPT掀起大模型浪潮以来,模型的参数规模持续扩大,对算力的需求呈指数级增长。模型的“体型”与硬件“体力”之间的竞赛就从未停止。当参数规模冲破千亿,单纯堆砌算力的成本已让人望而却步。
破局的关键,在于让每一次计算、每一寸显存都发挥极致效率。在这条追求效率的征途上,低比特量化技术,尤其是4位量化,正扮演着至关重要的角色。而这背后,离不开计算硬件的有力支撑,从Turing架构的INT4,到Ampere的BF16,再到Hopper的FP8,直至BlackWell架构专为4位精度推出的NvFP4格式,GPU的每一次迭代,都在为更低精度、更高效率的计算铺平道路。
本文将带你深入解析4位量化的技术内核,并通过在英博云平台上的实测,为你展示它如何让大模型推理告别显存焦虑,实现效率的质的飞跃。
1. 技术原理:为什么4位量化如此高效?
1.1 量化算法加速运算的基本逻辑
下面分析一下在主流GPU上的矩阵乘运算的计算时间和数据读取时间的关系,来说明4 位量化能够提升计算性能的逻辑。
以一个典型的矩阵乘法(GEMM)计算为例,假设输入数据的维度为M*N维的,权重维度为N*K维,则结果为M*K维的。容易分析得到在BF16格式时,总FLOPs为2*M*N*K, 总数据读写量为2*(M*N + M*K + K*N) Bytes。如果权重改为FP4格式,而输入仍然维持为BF16格式,则总数据读写量为(2*M*N + 0.5*N*K + 2*M*K) Bytes。
H800卡的基准BF16算力为989T Flops = 9.9e14 Flops, 显存带宽为3.6TB。A800卡的基准BF16算力为3.12e14 Flops, 显存带宽为2.04TB。简单计算即可得到在理想情况下对不同形状的输入,计算时间和数据读写时间的估算值。
从上表可以看出,对于M(等价于模型推理中的Batch_size或sequence_length)较小的GEMM,其处理时间主要花在数据读取上,采用4位的权重可以节省较多的处理时间。在大语言模型的Prefill环节,将计算转化为GEMM时,等效的M一般还比较大。
但是在Decoding环节中,等效M比较小,导致读取数据等操作所占据的时间成为耗时的主要部分,虽然采用 4 位表示权重需要在每次计算时反量化,但采用INT4/FP4来表示权重仍能带来较明显的性能提升。
1.2 量化尺度的选择
随着模型权重的精度越来越低,一个问题变得越来越严重,那就是如何在有限的位数上尽可能逼近原权重。从FP8格式开始,由于精度和数据范围相对于BF16有较明显的下降,一般不再采用统一的固定尺度来表示权重。而是在固定大小的Block上进行量化。比如DeepSeek V3及后续模型在训练时即已经采用FP8格式,在128*128大小的Block上进行量化。
采用4位量化模型时,量化块的大小对精度的影响更显著。以HuggingFace上找到的一些 4 位模型为例,比如Barrrrry/DeepSeek-R1-W4AFP8的模型中的反量化权重是每64个权重共用一个FP32 的反量化系数,RedHatAI/DeepSeek-R1-0528-quantized.w4a16是每 64 个权重共用一个BF16的反量化系数。Open Compute Project为了规范不同GPU上对较小的块量化的支持,提出了微尺度(micorscaling)标准格式。其中MXFP4的量化block_size是每 32 个权重共用一个FP8_E8M0的反量化系数,而英伟达今年提出的NvFP4格式是每 16 个权重共用一个FP8_E4M3的反量化系数。从我们自己测试结果来看,nvFP4是精度偏差最小的,MXFP4表现次之,而块大小为64的量化模型则精度偏差往往较大。
1.3 量化方式和量化层的选择
按照是否对激活值进行量化,对模型的量化又分为weight_only(权重量化)和权重-激活联合量化。权重量化在实际进行模型推理时,会将权重反量化到FP8(Hopper架构)或BF16等更高精度来实际计算,主要收益体现在显存空间和显存读取时延两个方面。权重-激活量化需要GPU原生支持激活的格式。比如如果选择W4A8量化将激活转换到FP8格式,则需要有Hopper架构的GPU来执行原生FP8的运算,同时也可能因为FP8量化的精度而造成误差。
对模型进行量化时一般优先选择结构简单,量化后精度损失小的层进行量化,比如在Transformer结构中,一般优先对FFN层进行量化。在选择将模型量化到FP4还是INT4格式时,一般原生支持FP4的加速卡会选择FP4,而不支持的则需要综合速度和精度来进行选择。下面我们列出了huggingface上一些4 位量化模型的详细信息。
2. 4位量化模型的量化算法
2.1 大语言模型的通用量化算法
当前最主流的大语言模型的量化算法是GPTQ和AWQ。这两种算法的计算代价较小,可以用比较小的代价量化规模较大的模型,因此应用比较广泛。GPTQ采用逐层量化的方式来最小化模型激活和量化模型激活之间的误差。AWQ则是用算法找到量化中对激活影响最大的channel,对其权重进行调整之后再进行量化。这两种算法都需要提供少量的标定数据来作为输入,生成各层的激活数据,从而来对量化的权重或范围进行调整。
2.2 SVQuant量化算法
大语言模型中的解码过程一般是memory-bound的,而图像生成模型一般是compute-bound的。对于计算密集型的模型,如果不能同时量化权重和激活,则量化的加速效果会有较大的下降。因此,SVDQuant将4位量化应用到图像生成模型的权重和激活上。
这相对于一般W4A16的模型来说,对精度提出了更高的要求。SVDQuant需要同时考虑输入数据和权重中的Outlier值。因此该模型采用两步方案,先将Outlier值从输入转到权重上,然后对于比较难量化的权重,采用与Lora训练类似的低秩分解来进行逼近。Lora权重将一直保存在模型中,因此该算法需要采用专用的推理框架进行推理。在4090上相比于W4A16版本的量化算法,推理速度提升了3倍以上。
3. 4位量化模型推理评测
3.1 Qwen3-32B的量化及推理评测
3.1.1 使用两张A800来启动Qwen3-32B-BF16服务
Qwen3-32B如果采用BF16数据格式,参数权重一共64G,理论上一张A800的显卡能够加载。但是由于vllm 在加载模型时,需要留出能够容纳模型最大长度的kv缓存空间,以及加载cudagraph所用的空间,使得很难加载成功。因此我们选用两卡来启动该模型。对应启动服务脚本和推理评测脚本如下:
3.1.2 使用单张A800来测试Qwen3-32B-AWQ
Qwen官方提供了量化到INT4的Qwen3-32B-AWQ模型,采用与上面相似的脚本来进行服务和评测性能。由于占用的显存减小,采用 1 张A800即可以很方便地测试。
3.1.3 量化到FP4并使用单张A800来启动服务
对Qwen3-32B模型进行量化可以采用llmcompressor工具,量化脚本代码可以参考如下链接:
https://github.com/ebtech-ebcloud/job-template/blob/main/paper/2509-4bit-quant/quant_fp4.py
量化后的模型启动服务和benchmark的脚本如下:
对于Qwen3-32B模型, 原始16 位模型, FP4量化模型和INT4量化模型的评测结果对比列在下表:
从评测结果来看,采用FP4量化对精度的影响很小,平均到每张卡上吞吐量有30%-50%的提升。吞吐量的提升相比于单纯用GEMM推算得到的提升要小,因为该模型只量化了线性层。采用INT4量化的模型精度相比BF16有一定的下降,且推理速度有较大幅度下降,可能与测试集的最大长度设置较长有关。我们尝试了将max_gen_toks减小到1024,吞吐量基本与FP4的模型一致,但是在精度上会与原模型有更大的差异。
3.2 图像生成模型实验脚本及复现
3.2.1 Flux.1-dev模型实验
我们下面对SVDQuant的实际效果进行复现和评测。由于SVDQuant修改了Transformer模型推理的流程,因此依赖一个专门的开源推理库nunchaku。下面介绍一下其使用方式。首先安装nunchaku,然后运行examples/flux.1-dev.py。
其生成脚本如下,从脚本中可见其将Flux.1-dev中的transformer模型修改为NunchakuFluxTransformer2dModel的实现,其中模型名中用r32表示SVD分解的秩为32。
该脚本会自动判断当前硬件的框架,如果不原生支持FP4则采用INT4。我们在A800上进行实验,所以默认格式是INT4的。实验表明,使用A800生成一张1024*1024的图片需要14.7s。根据我们之前的评测数据,采用A800的BF16格式的模型生成一张图片的时间为24.06秒,从对比来看,采用4位量化有较明显的速度提升,同时使用的显存量也减少不少。
上述脚本生成图像如下:
3.2.2 带Lora微调的Flux.1-dev模型
Lora微调是比较常用的微调图像生成模型的方法。由于SVD-quant将权重中幅度变化剧烈的部分作为一个Lora通路进行推理,因此进行了Lora微调的模型可以很方便地适配。下面采用Flux.1-dev作为基座模型,加载lora权重之后,生成一张图片的时间为15.2秒。其调用脚本如下:
生成的图片如下:
4. 实验复现说明
上述实验均基于英博云(ebcloud.com)平台完成,实验方法参见如下项目:https://github.com/ebtech-ebcloud/job-template/tree/main/paper/2509-4bit-quant。测试环境的拉起可参考README 中的描述,也可直接使用 README 中提及的镜像启动开发机进行评测。此处我们整理了具体压测脚本,方便使用者快速复现。登入容器后直接执行对应命令启动服务,并在另外的终端执行本机压测即可。
实验环境的创建
测试环境的拉起,执行如下脚本即可。
该命令会根据资源规格申请一个A800双卡容器,等待容器创建完成后,即可进入容器。
Qwen3-32B模型服务及评测
见正文3.1.1节,或参考下节进行修改。
Qwen3-32B-AWQ模型服务及评测
完整执行脚本及需要注意的问题如下:
Qwen3-32B模型量化及评测脚本
量化需要的校正数据集为ultrachat_200k, 我们已经保存在英博云上,可以直接拷贝。上面拷贝评测数据时也同时拷贝了该数据集。
然后运行模型量化脚本程序quant_fp4.py来进行量化,我们在镜像中提供了该程序,也可直接从正文中拷贝。
量化完成后模型放在/root/Qwen3-32B-NVFP4,评测脚本见正文或在AWQ模型基础上进行修改即可。
图像生成的复现脚本
图像生成的复现脚本如下所示:
实验环境的清理
对前面apply创建的测试容器,执行如下命令清理创建的pod, service等。
5. 结论及总结
本文主要介绍了比较主流的4 位量化模型的推理和评测,并提供了在英博云上复现实验的方法。希望能够通过这些内容,让用户对大模型进行 4 位量化的可行性和效果有一定的了解。同时,我们也观察到,越来越多的研究工作已经开始研究基于MXFP4和NvFP4的训练,比如openai新发布的开源模型gpt-oss就在后训练阶段采用MXFP4格式进行训练,从而提供高质量的FP4格式的模型。也有一些研究工作尝试在整个流程上用FP4 进行训练,并验证了以FP4为主,辅以混合精度训练可以有效解决训练中的精度问题。就像DeepSeek首次完成全流程的FP8格式训练从而引领潮流一样,FP4原生训练的模型也很可能会成为未来的一种流行趋势。
对模型进行4 位量化的收益不仅限于节省了一半或者75%的显存,还在于可以将模型部署得更加紧凑。比如4 位量化的DeepSeek-671B模型可以在一台A800上进行部署,而INT8量化的模型最少需要两台A800才能部署,转换成BF16格式的模型则需要 4 台A800才能部署。采用 4 位量化模型一方面可以省去计算网的成本,另一方面通信效率和可靠性也大大提高,收益是非常明显的。
4位量化这项技术的意义不止于当下,更为未来更大规模的模型部署铺平了道路。当业界在为“万卡集群”的复杂度而苦恼时,它让我们看到了一条更加务实高效的路径,用更少的资源,做更多的事情。
英博数科作为鸿博股份(002229)旗下全资子公司,以前沿的"单位有效算力成本"评估体系为行业基准,构建从智算基建到产业赋能的完整生态,为AI开发者、企业及科研机构提供全栈式智能算力解决方案。我们致力于将4位量化此类前沿技术转化为客户触手可及的算力服务,赋能每一位AI探索者。
现在就登录英博云平台(ebcloud.com),亲身体验4位量化技术如何为您解锁更高算力利用率,让您的AI研究与应用更快、更省、更高效。我们已备好开箱即用的实验环境与脚本,助您将创新想法即刻付诸实践。
本文实验均在英博云平台完成,完整复现方法参见GitHub项目。

