赞
踩
在今日这个由数据驱动的时代,人工智能技术的快速发展正不断拓展着社会和技术的边界。随着大语言模型应用的深入人心,我们对大语言模型的部署和效率提出了更高的要求。这就面临着一个不可避免的挑战,如何在有限的计算资源和能源消耗下实现复杂模型的高效运行?量化技术是解决这一挑战的关键技术之一,本文带您深入了解模型量化技术,分析各种模型量化方法。
在深度学习领域,量化通常指的是将模型参数(如权重和偏置)从浮点数转换为较低位精度的整数,比如将 32 位浮点数转换为 8 位整数。
通俗地说,量化类似于将用高级词汇写成的晦涩书籍简化为内容摘要或加工为儿童故事。这个内容摘要或儿童故事占用的存储空间更小,更易于传播,但可能会丢失一些原书的细节。
量化的主要目的如下:
通过用较低精度表示原始浮点数,可能会丢失一些信息,导致模型精度下降,这意味着模型的能力会降低。为了平衡这种精度损失,研究人员开发了各种量化策略和技术,例如动态量化和权重共享等等,以尽量减少模型能力的损失,同时降低模型的要求。
例如,如果一个模型的完整能力为 100 分,推理时的大小和内存需求为 100%。经过量化后,模型的能力可能会降低到 90 分,但其大小和内存需求可能会降至 50%,这就是模型量化的意义。
FP32、FP16、INT8 和 INT4 是深度学习模型中使用的不同数值精度类型,这些精度类型决定了模型在训练和推理过程中可以处理的数据范围和精度。
FP32 是最常用的数值精度类型,也称为单精度浮点数。FP32 可以表示非常大和非常小的数值,并且具有很高的精度。在深度学习模型中,FP32通常用于训练阶段,因为它可以提供更高的数值稳定性和精度。然而,使用FP32也会增加模型的计算和存储需求,从而降低模型的性能和效率。
FP16 也称为半精度浮点数。FP16 相比 FP32 具有较小的数值范围和精度,但它可以减少模型的计算和存储需求,提高模型的性能和效率。在现代 GPU 和 TPU 等硬件设备上,FP16 通常具有更高的计算速度和能效比。因此,在深度学习模型推理阶段,通常会使用 FP16 以获得更快的速度和更高的能效。
INT8 是一种低精度数值类型,它使用 8 位来表示整数。INT8 可以进一步减少模型的计算和存储需求,提高模型的性能和效率。在深度学习模型推理阶段,INT8 通常用于量化技术,将模型的权重和激活从 FP32 或 FP16 转换为 INT8,从而减少模型的计算和存储需求,提高模型的性能和效率。然而,INT8 的数值范围和精度较低,可能会导致模型的数值稳定性降低,因此需要仔细选择量化策略和校准方法。
INT4 是一种非常低精度的数值类型,使用 4 位来表示整数。与 INT8 相比,INT4 可以进一步减少模型的计算和存储需求,提高模型的性能和效率。然而,INT4 的数值范围和精度非常有限,可能会导致模型的数值稳定性严重降低。因此,INT4 通常只适用于特定的模型和场景,需要仔细选择和使用。
模型的相关信息可以通过 HuggingFace 平台查看,HuggingFace 是一个面向自然语言处理(NLP)领域的开发者和研究人员的平台,它提供了各种预训练的自然语言处理模型和工具,以其开源社区和丰富的 NLP 资源而闻名。
在 HuggingFace 上,如果模型名称没有特定的标签,比如 Llama-2-7b
或 chatglm3-6b
,通常表示这些模型是全精度 (fp32) 或半精度 (fp16)。
然而,如果模型名称包含 FP16
, INT8
, INT4
等描述,比如 Llama-2-7B-fp16
, chatglm-6b-int8
或 chatglm2-6b-int4
等,这意味着这些模型是量化的。在这里, fp16
, int8
和 int4
表示模型的量化精度。
精度从高到低的顺序是: FP32
> FP16
> INT8
> INT4
。量化精度越低,模型大小和推理所需的内存就越小,但相应模型的能力也越弱。
以 ChatGLM2-6B
为例。该模型的全精度(FP32)版本大小为 12G,推理所需内存约为 12-13G。然而,量化的 INT4 版本仅为 3.7G,推理所需内存降至 5G。可以看出,量化显著减少了模型大小和内存需求。
FP32
和 FP16
精度模型需要在 GPU 服务器上运行,而 INT8
和 INT4
精度模型可以在 CPU 上运行。
不同精度的数值类型在深度学习模型中具有不同的优势和限制,选择合适的数值精度类型需要根据模型的实际需求和硬件设备的支持情况进行权衡。通常,训练阶段使用 FP32 或 FP16,推理阶段使用FP16 或 INT8,而在特定情况下可以考虑使用 INT4。
GPTQ 是一种模型量化方法,可以将大语言模型量化为 INT8、INT4、INT3 甚至 INT2 精度,而性能损失较小。如果在 HuggingFace 上看到带有 GPTQ
标签的模型名称,比如 Llama-2-13B-chat-GPTQ
,这意味着这些模型已经使用GPTQ进行了量化。完整精度版本的 Llama-2-13B-chat
大小为 26G,但使用 GPTQ 进行 INT4 精度量化后,大小减小到 7.26G。
现在更受欢迎的 GPTQ 量化工具是 AutoGPTQ,它可以量化任何 Transformer 模型。HuggingFace 已经将 AutoGPTQ 集成到 Transformers 中。GPTQ 方法只对模型权重进行量化。而针对大语言模型的量化,存在其他的方法,提供了以较小的预测质量损失为代价,同时量化权重和激活值的方案。
激活感知权重量化(AWQ)算法,其原理不是对模型中的所有权重进行量化,而是仅保留小部分(1%)对 LLM 性能至关重要的权重。
AWQ 专为大型语言模型设计,支持低位的权重量化,有效减少模型大小。在确定哪些权重是显著的过程中,AWQ 通过观察激活分布而非权重分布来进行。AWQ 不依赖于复杂的反向传播或重构过程,因此能够更好地保持模型的泛化能力,避免对特定数据集的过拟合。AWQ 在多种语言建模任务和领域特定基准测试中表现出色,包括指令调整的语言模型和多模态语言模型。这种方法支持在内存和计算能力有限的边缘设备(如 NVIDIA Jetson Orin 64GB)上部署大型模型,如 Llama-2-70B
模型。
特征算法 | AWQ | GPTQ |
---|---|---|
设计目的 | 量化大语言模型,特别强调保护显著权重,以减少量化误差。 | 专为GPT模型设计,高效地完成权重量化,以减少计算和存储成本。 |
量化方法 | 基于激活分布而不是权重来选择保护的权重。 | 一次性权重量化,基于近似二阶信息。 |
精度和效率 | 在不同模型和位精度上都表现优异,能够提高视觉语言模型的性能。 | 在极低位数量化(如2位)下仍保持合理准确度,能在短时间内量化大规模模型。 |
硬件适应性 | 支持高效推理框架,适用于桌面和移动GPU。 | 使得在单个GPU上执行大规模模型成为可能,提高了推理速度。 |
应用范围 | 适用于多种模型和任务,包括多模态语言模型。 | 专门针对GPT模型,适用于高计算需求的模型。 |
推理性能提升 | 提供显著的速度提升,尤其在边缘设备上表现突出。 | 在高端和成本效益高的GPU上均实现显著的推理速度提升。 |
在讨论GGML之前,需要提到 llama-cpp 项目,这是 Llama 模型的纯 C/C++ 版本,主要优势是在 CPU 上快速推理,而无需GPU。作者随后从该项目中提取了模型量化部分,创建了一个模型量化工具 GGML。
在 HuggingFace 上,如果看到带有 GGML
标签的模型名称,比如 Llama-2-13B-chat-GGML
,这意味着这些模型已经使用 GGML 进行量化。一些GGML模型还包括像 q4
, q4_0
, q5
等术语,比如 Chinese-Llama-2-7b-ggml-q4
。这里的 q4
指的是 GGML 量化方法,从 q4_0
一直延伸到 q4_0
、q4_1
、q5_0
、q5_1
以及 q8_0
,相关数据如下。
Model | Measure | F16 | Q4_0 | Q4_1 | Q5_0 | Q5_1 | Q8_0 |
---|---|---|---|---|---|---|---|
7B | perplexity | 5.9066 | 6.1565 | 6.0912 | 5.9862 | 5.9481 | 5.9070 |
7B | file size | 13.0G | 3.5G | 3.9G | 4.3G | 4.7G | 6.7G |
7B | ms/tok @ 4th | 127 | 55 | 54 | 76 | 83 | 72 |
7B | ms/tok @ 8th | 122 | 43 | 45 | 52 | 56 | 67 |
7B | bits/weight | 16.0 | 4.5 | 5.0 | 5.5 | 6.0 | 8.5 |
13B | perplexity | 5.2543 | 5.3860 | 5.3608 | 5.2856 | 5.2706 | 5.2548 |
13B | file size | 25.0G | 6.8G | 7.6G | 8.3G | 9.1G | 13G |
13B | ms/tok @ 4th | - | 103 | 105 | 148 | 160 | 131 |
13B | ms/tok @ 8th | - | 73 | 82 | 98 | 105 | 128 |
13B | bits/weight | 16.0 | 4.5 | 5.0 | 5.5 | 6.0 | 8.5 |
本文结合 HuggingFace 举例,总结了大语言模型的常见量化格式,量化技术是大模型部署的关键方法,可以显著减小模型的大小和推理所需的内存。如果要真正将大模型融入普通人的生活,能够在每个人的智能手机上运行并实现真正的“无处不在”,量化技术是必不可少的。量化技术的进步,不仅仅是对效率的追求,更是对可持续发展和技术普及的深刻思考。在未来,随着技术的不断进步和创新,我们期待大模型为人类社会带来更广泛、更深远的影响。
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。