大型语言模型(LLMs)的完全微调通常会带来显著的计算和存储负担。尽管效果好,但调整模型中通常超过数十亿个参数的做法,带来了实际的阻碍,因此需要更有效的方法。追求参数效率不仅仅是为了方便;它是使LLM调整变得可用、可扩展且在许多情况下都切实可行的基本要求。问题规模试想一个典型的大型模型,可能拥有70亿、700亿,甚至数千亿个参数。完全微调需要:庞大的计算资源: 训练需要大量的GPU计算能力(通常分布在多个高端GPU上),并且需要很长时间。在反向传播过程中计算梯度和更新数十亿个参数是计算密集型的。过高的内存需求: 存储模型权重、每个参数的梯度、优化器状态(如Adam中的动量和方差估计)以及中间激活会消耗大量的GPU内存(VRAM)。一个700亿参数的模型,即使采用混合精度(16位浮点数),仅参数、梯度和优化器状态就需要数百GB的VRAM,这使得训练超出了常用硬件的能力范围。繁琐的存储与部署: 如果您需要为一个基础模型调整适应多种不同任务(例如,客户支持聊天、代码生成、摘要),完全微调会导致为每个任务生成一个完整的、数GB的模型副本。存储、管理和提供这些独立的庞大模型成为一个重大的操作难题。设想一下,为十个从相同700亿参数基础模型派生出的不同下游任务维护独立的140GB模型文件。这仅为调整后的权重就占用了1.4TB。高计算成本、极高内存需求和僵硬的部署逻辑相结合,使得完全微调对许多组织和研究团队来说不切实际。此外,更新所有参数存在灾难性遗忘的风险,即模型在适应新数据时,其在原始通用预训练任务,甚至之前学过的微调任务上的表现会大幅下降。为什么效率并非可有可无完全微调的局限性使得开发能够有效调整LLM,同时只修改总参数中一小部分的办法变得十分必要。这一需求推动了参数高效微调(PEFT)技术的发展和采用。主要目标包括:大幅减少计算和内存: 使微调在要求较低的硬件上(例如,单个GPU或较小的集群)变得可行,并缩短训练时间。实现高效多任务调整: 允许单个预训练模型实例通过只加载少量特定任务的参数来服务多个任务,而不是加载整个模型副本。这极大地简化了部署并显著降低了存储开销。减轻灾难性遗忘: 通过冻结原始模型绝大部分参数,只调整一小部分,PEFT方法通常比完全微调更能保留模型的通用能力。促进更快实验: 较低的资源需求允许在开发和测试新任务调整时进行更快的迭代周期。PEFT方法通过策略性地添加或修改少量参数(通常少于总参数的1%),同时保持预训练模型的大部分冻结状态来实现这一点。其基本假设,尤其与后面将讨论的LoRA等方法相关,是特定任务所需的调整通常存在于一个低维子空间中。这意味着模型权重中所需的变化,即更新矩阵$\Delta W$,通常可以通过一个低秩矩阵有效近似,这比完整的$\Delta W$需要少得多的参数来表示。接下来的章节将研究具体的PEFT方法,首先详细审视低秩适配(LoRA),考察它们如何通过不同的架构和数学策略来满足这些必要条件。理解这些推动因素对于理解每种技术的设计选择和权衡至关重要。