『不废话』之大模型量化技术

大型语言模型(LLMs)由于其参数量庞大,导致很难在有限资源下运行,所以工业界通常会将模型进行量化后再部署到生产环境,今天我们来不讲理论、定义等,只人话梳理一下这个技术。

前置基础

量化(人话):大模型在训练或微调后的每个参数,都是float32或半精度(float16或bf16)的。量化就是将模型权重降低精度(如8位、6位、4位等),以致模型能以最小化计算资源运行。

举例:假设某个参数=3.1415926789,通过量化后该参数值=3.14,则必然所需计算资源要少得多。

缺点:由于量化会降低精度,所以必然会带来一定的损失,我们现在要讨论的是如何才能在最小化损失和运行速度上取得平衡。

常用量化手段

量化方法主要应用优势劣势性能损失

GGUF

点击跳转

CPU 推理灵活,CPU 性能好GPU 支持可能较弱,生态系统仍在发展

取决于量化级别,目标是在给定级别下最小化损失。

量化到8位-2位都有,性能损失越来越高。

推荐q4_k_m就行。

AWQ

点击跳转

CPU/GPU 推理性能好,量化快,适应性好灵活性可能不如 GGUF4 比特量化损失较小,接近原始模型性能。

GPTQ

点击跳转

GPU 推理,Transformer 模型Transformer 模型性能好,压缩率高量化耗时,主要针对 Transformer4 比特量化损失相对较小,过度量化损失较大。

HQQ

点击跳转

CPU/GPU 推理精度高,理论基础扎实实现复杂,量化过程可能需要更多资源旨在减少损失,相同压缩率下通常优于传统方法。

量化后损失(以GGUF为例)

TypeSize (GB)PPLMean ΔpRMS Δp
f1614.976.2331--
q8_07.966.2342-0.019 ± 0.003 %1.198 %
q6_K6.146.2533-0.007 ± 0.006 %2.295 %
q5_K_M5.336.2886-0.114 ± 0.008 %3.160 %
q5_05.216.3632-0.416 ± 0.012 %4.634 %
q4_K_M4.586.3830-0.389 ± 0.014 %5.251 %
q4_04.346.7001-1.588 ± 0.022 %8.434 %

数据来源于:Comparing Quantized Performance in Llama Models — LessWrong

量化后模型运行软件

量化方法常用运行软件
GGUFllama.cppOllamavLLM
AWQ

NVIDIA TensorRT-LLMFastChatvLLMSGLangHuggingFace TGILMDeploy

GPTQ同上

工业界最佳实践

  1. 【有GPU】如果只是测试,GGUF+Ollama足矣,4位就行。
  2. 【有GPU】如果需要在业务上使用,AWQ+vLLM或SGLang是最佳配合。如果是不缺钱的大佬,请忽略这个建议,跑原版没有损失。
  3. 【只有CPU】GGUF+Ollama,没什么别的省时省力的好方案。

Qwen系列模型是除了LLama外,目前国内外最知名的开源模型。最新发版的QwQ-32B模型,官方有原版AWQ版。通过开源的模型权重文件对比即可发现,原版模型权重文件有14个safetensors,而AWQ版仅有5个safetensors,从这即可看出量化后不管是在文件存储上,还是在模型加载速度上,都能有好处。当然,最重要的是文件变小(本质是权重精度变低),所需计算资源(CPU和GPU)大大降低,咱老百姓也能本地玩玩7B、14B,甚至32B的大模型。

参考资料

Which Quantization Method Works Best for You?

https://huggingface.co/docs/transformers/v4.49.0/quantization/overview

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值