输入“/”快速插入内容

一文读懂: LLM的压缩方法

2024年7月23日修改
大型语言模型(LLM)已经引起了轩然大波,它们在许多任务中展示出了卓越的性能。然而,他们令人印象深刻的能力带来了一个重大的缺点:高计算成本。
顶级模型如LLaMA 2和Falcon可能需要数十甚至数百GB的GPU内存。这不仅使它们昂贵,而且在设置方面也带来了巨大的挑战。此外,他们对资源的密集性使得在没有访问强大云服务器的边缘设备上运行它们几乎不可能。
为了克服这些障碍,研究人员一直在开发一系列创新的压缩技术。这些方法旨在使LLM更紧凑,使其能够适应资源有限的设备。此外,它们可以提高这些模型的速度并减少推理延迟,使它们更高效。
在这篇文章中,我们将深入探讨LLM压缩技术的世界。我们将探讨它们是如何工作的,涉及的权衡,以及它们对LLM应用的影响。
LLM修剪
像其他深度神经网络一样,大型语言模型由许多组件组成。然而,并非所有这些组件都对模型的输出有显著贡献。事实上,有些可能几乎没有任何效果。这些非必要的组件可以被修剪,使模型更紧凑,同时保持模型的性能。
有几种方法可以进行LLM修剪,每种方法都有其自身的优点和挑战。非结构化修剪涉及到移除不相关的参数,而不考虑模型的结构。本质上,非结构化修剪将低于某个阈值的参数设置为零,有效地消除了它们的影响。这导致了一个稀疏的模型,其中零和非零权重是随机分布的。
非结构化修剪易于实施。然而,非结构化修剪中权重的随机分布使得利用硬件优化变得困难。它需要额外的计算和处理步骤来压缩稀疏模型。此外,压缩后的模型通常需要进一步的再训练以达到最佳性能。
尽管存在这些挑战,但在非结构化修剪方面已经取得了重大进展。其中一个发展是SparseGPT,这是由奥地利科学技术研究所(ISTA)的研究人员开发的技术。SparseGPT对大型transformer模型如BLOOM和OPT进行一次性修剪,消除了再训练的需要。
另一种技术,LoRAPrune,将低秩适应(LoRA)与修剪结合,以提高LLM在下游任务上的性能。LoRA是一种参数高效微调(PEFT)技术,只更新基础模型的一小部分参数。这使得它成为提高模型性能的高效方法。
另一方面,结构化修剪涉及移除模型的整个部分,如神经元、通道或层。结构化修剪的优点是它简化了模型压缩并提高了硬件效率。例如,移除整个层可以降低模型的计算复杂性,而不会在模型结构中引入不规则性。
然而,结构化修剪需要深入理解模型的架构以及不同部分对整体性能的贡献。由于移除整个神经元或层可能会消除重要的学习特征,因此有更高的风险显著影响模型的准确性。
对于结构化修剪,一个有前景的技术是LLM-Pruner。这种任务不可知的方法最小化了对原始训练数据的依赖,并根据梯度信息选择性地移除非关键的耦合结构。这种方法最大限度地保留了LLM的大部分功能,使其成为模型压缩的有效工具。
LLM知识蒸馏
知识蒸馏是一种机器学习技术,其中一个小的“学生”模型被训练来模仿一个更大、更复杂的“教师”模型的行为。训练过程有效地将知识从教师模型转移到学生模型,创建一个更紧凑但能力强大的模型。
在LLM领域,知识蒸馏技术分为两个主要类别。第一种,标准知识蒸馏,旨在将教师模型的一般知识转移到学生。例如,你可以从ChatGPT收集一系列的提示和响应,并用它们来训练一个更小的开源LLM。然而,需要注意的是,对从商业模型收集的数据进行LLM训练存在限制。
标准知识蒸馏的挑战在于准确捕捉底层数据分布。清华大学和微软研究院的研究人员开发的一种技术MiniLLM解决了这个问题。它采用了专门为LLM设计的不同的目标函数和优化函数,提高了蒸馏过程的效果。
第二类别,突现能力蒸馏,寻求提取教师模型已经学习的特定能力,并将其转移到学生模型。突现能力是大模型中存在的能力,但在小模型中不存在。例如,你可以从GPT-4收集关于数学或推理问题的提示和响应,并尝试将它们转移到像Vicuna这样的小模型。EA蒸馏的优点是它更容易测量,因为它关注的是一组狭窄的任务。然而,必须记住,模仿大模型的突现行为的LLM的能力是有限的。
LLM量化
像GPT-3这样的LLM通常将其参数存储为浮点值。在半精度下,每个参数占用两个字节,这导致GPT-3大小的模型需要数百GB的内存。量化是一种压缩技术,它将这些参数转换为单字节或更小的整数,显著减小了LLM的大小。
量化因为使开源LLM能够在日常设备如笔记本电脑和台式电脑上运行而受到欢迎。GPT4All和Llama.cpp是两个利用了这种技术的量化LLM的显著例子。
量化可以在模型训练周期的各个阶段应用。在量化感知训练(QAT)中,量化被集成到训练过程中。这种方法允许模型从一开始就学习低精度表示,减轻了量化造成的精度损失。然而,QAT的缺点是它需要从头开始训练模型,这可能需要大量的资源并且成本高昂。
量化感知微调(QAFT)是另一种方法,其中预训练的高精度模型被调整以保持其在低精度权重下的质量。QLoRA和参数高效和量化感知适应(PEQA)等技术常用于QAFT。
最后,训练后量化(PTQ)涉及在模型训练后将LLM的参数转换为低精度数据类型。PTQ旨在减少模型的复杂性,而不改变架构或重新训练模型。它的主要优点是其简单性和效率,因为它不需要任何额外的训练。但是,它可能无法像其他技术那样有效地保留原始模型的准确性。
LLM压缩是一个不断发展的迷人的研究领域。