量化技术助力LLM(Large Language Model)轻量级部署

摘要:随着LLM(LLM的擅长与不擅长:深入剖析大语言模型的能力边界)规模的不断扩大和训练数据的急剧增加,大型语言模型(LLMs)如GPT系列、LLaMA等已成为自然语言处理领域的佼佼者。然而,这些模型巨大的参数数量和计算需求使得它们在资源受限的环境(如移动设备、嵌

随着LLM(LLM的擅长与不擅长:深入剖析大语言模型的能力边界)规模的不断扩大和训练数据的急剧增加,大型语言模型(LLMs)如GPT系列、LLaMA等已成为自然语言处理领域的佼佼者。然而,这些模型巨大的参数数量和计算需求使得它们在资源受限的环境(如移动设备、嵌入式系统等)中部署变得极具挑战性。为了克服这一难题,LLM量化技术应运而生。今天我们一起了解一下模型量化。

模型量化是指通过减少深度学习模型的参数大小和内存占用,使其在保持性能基本不变的前提下,更加适合在资源受限的环境中部署。量化技术通过将模型中的高精度参数(如32位浮点数)转换为低精度参数(如8位、4位甚至更低位数的整数),从而显著降低模型的存储和计算需求。这种转换不仅有助于减小模型体积,还能加快推理速度,降低能耗,是深度学习模型优化的重要手段之一。

模型量化技术种类繁多,每种技术都有其独特的优势和适用场景。以下是几种常见的量化技术:

QLoRA

QLoRA是一种基于低秩适应(LoRA)的量化微调技术,用于高效地适应预训练的大型语言模型。LoRA是一种参数高效的微调(PEFT)技术,它通过冻结预训练模型的权重,仅对一小部分额外的权重(称为适配器)进行微调,从而显著降低了内存需求。QLoRA通过两种机制实现量化:4位NormalFloat(NF4)数据类型和双重量化(DQ)。NF4是一种专为存储神经网络权重优化的4位数值格式,它将每个权重归一化到-1和1之间的值,以更准确地表示低精度权重值。双重量化则是在已经量化的模型上应用第二层量化,以实现极端的压缩效率。

GPTQ

GPTQ是指针对生成式预训练Transformer模型的后训练量化技术。该技术旨在减小模型大小,使其能够在单个GPU上运行。GPTQ通过逐层量化(layer-wise quantization)实现,即逐层量化模型权重,以最小化输出误差(均方误差MSE)。在量化过程中,模型权重首先被转换为矩阵形式,然后以128列为一批进行处理,采用惰性批量更新技术。该过程涉及量化每批权重、计算MSE并调整权重以最小化误差。一旦校准批次处理完毕,矩阵中剩余的权重将基于初始批次的MSE进行更新。最后,将各个层重新组合以生成量化模型。

GGML/GGUF

GGML是Georgi Gerganov开发的C语言机器学习库,专门用于支持Llama模型的权重量化。GGML通过k-quant系统实现量化,该系统根据所选量化方法使用不同位宽的数值表示。在k-quant系统中,最重要的权重被量化为更高精度的数据类型,而其余权重则被分配为更低精度的类型。例如,q2_k量化方法将最大的权重转换为4位整数,其余权重转换为2位。GGUF是GGML的继任者,旨在解决GGML仅支持Llama模型的限制。GGUF能够量化非Llama模型,通过将模型中的相似权重分组为更小、更易管理的簇,并对每个权重组进行统一量化。

AWQ

AWQ(激活感知权重量化)是一种先进的量化技术,它在量化权重时考虑了模型激活的分布。与传统仅关注权重的量化方法不同,AWQ旨在优化权重及其与激活的相互作用。在AWQ中,权重的量化根据模型中的激活分布进行调整。与较高方差激活相互作用的权重被量化为更高精度,而与较低方差激活相关联的权重则被量化为较低精度。此外,AWQ还最小化了原始模型和量化模型之间激活的均方误差(MSE),以确保量化不会降低模型性能。

为了实现模型量化,开发者需要借助各种量化工具。以下是一些常用的量化工具及其特点:

llama.cpp

llama.cpp是一款既支持量化又支持推理的大型语言模型工具。它允许将模型量化为GGML/GGUF格式,特别是进行权重量化。llama.cpp能够在本地和云端以最小的设置和先进的性能运行LLM推理。

GPTQ-for-Llama

GPTQ-for-Llama是一个专门用于LLaMA模型的4位量化库,仅支持Linux系统。它采用权重量化方法,有效减小了模型大小。

Auto-GPTQ

Auto-GPTQ基于GPTQ(仅权重量化)算法,支持多种开源LLM架构,如falcon、llama、bloom等。它提供了自动化的量化流程,简化了量化过程。

bitandbytes

bitandbytes是一个轻量级的Python包装器,围绕CUDA自定义函数构建,支持8位和4位量化。它提供了高效的量化操作,适用于需要快速量化的场景。

Optimum-Quantao

Optimum-Quantao是PyTorch量化工具包,支持Optimum后端。它采用线性量化方法,支持将权重量化为8位浮点数、8位整数、4位整数和2位整数。此外,它还支持量化感知训练(QAT),以提高量化模型的性能。

llm-awq支持激活感知的LLM量化。它在低位权重量化(INT3/4)方面表现出色,适用于LLMs的指令调优模型和多模型LLMs。llm-awq提供了快速且准确的量化过程。

AutoAWQ

AutoAWQ是一个易于使用的4位量化模型包。与FP16相比,AutoAWQ可将模型速度和内存需求降低3倍。它实现了AWQ算法,用于量化LLMs。AutoAWQ提供了自动化的量化流程,简化了量化过程,并提高了量化模型的性能。

选择合适的量化技术和工具:不同的量化技术和工具具有不同的特点和适用场景。开发者需要根据自己的具体需求(如模型类型、部署环境、性能要求等)选择合适的量化技术和工具。评估量化对性能的影响:量化虽然能够减小模型大小和计算需求,但也可能对模型性能产生一定影响。因此,在进行量化之前,开发者需要评估量化对模型性能的影响,并根据评估结果进行必要的调整和优化。保持量化过程中的一致性:在量化过程中,开发者需要确保量化参数、量化方法和量化工具的一致性,以避免因不一致性导致的量化错误或性能下降。关注量化后的模型评估:量化后的模型需要进行充分的评估,以确保其在实际应用中的性能和稳定性。评估内容包括但不限于准确率、召回率、F1分数等指标,以及模型的推理速度和内存占用等性能指标。持续优化量化模型:量化是一个持续优化的过程。开发者需要不断尝试不同的量化技术和工具,以及调整量化参数和方法,以进一步提高量化模型的性能和稳定性。

模型量化作为深度学习模型优化的重要手段之一,在提升LLM部署效率方面发挥着重要作用。通过选择合适的量化技术和工具,评估量化对性能的影响,保持量化过程中的一致性,关注量化后的模型评估以及持续优化量化模型,开发者可以成功地将大型语言模型部署到资源受限的环境中,并实现高效的推理和计算。

本文,完。觉得本篇文章不错的,记得随手点个赞、收藏和转发三连,感谢感谢~如果想第一时间收到推送,请记得关注我们⭐~

来源:AIGC研究社一点号

相关推荐