参数高效微调 (Parameter efficient fine-tuning, PEFT)
参数高效微调(Parameter Efficient Fine-Tuning,简称PEFT)是一种相对于全量微调更为节省资源的大型语言模型(LLM)训练方法。以下是对PEFT的详细解释和总结:
训练LLM的挑战:

- 训练LLM需要大量计算资源。
- 全量微调不仅需要存储模型权重,还需为优化器状态、梯度、前向激活和整个训练过程中的临时内存分配空间。
- 这些额外组件的内存需求可能远大于模型本身,超出消费级硬件的处理能力。
PEFT的基本原理:

- 与全量微调(更新所有模型权重)不同,PEFT仅更新模型的一小部分参数。
- 某些PEFT技术冻结大部分模型权重,专注于微调模型的特定层或组件。
- 其他方法不修改原始模型权重,而是添加少量新参数或层,并仅微调这些新组件。

- PEFT通常保持LLM的大部分或全部权重不变,因此受训参数远少于原始LLM。
PEFT的优点:

- 训练时的内存需求更小,有时只占原始LLM权重的15-20%。
- PEFT通常可以在单个GPU上进行,使得训练成本更加可控。
- LLM只是轻微修改或保持不变,因此PEFT不太容易出现全量微调中的灾难性遗忘问题.
- 对于多任务微调,PEFT产生的存储问题更小,因为只需训练少量权重。
PEFT的主要类别:

- 选择性方法:只微调原始LLM的一部分参数。可以选择训练模型的特定组件、特定层或特定类型的参数。
- 重参数化方法:通过创建原始网络权重的新低秩变换来减少训练参数的数量。常用技术包括LoRA(Low-Rank Adaptation)。
- 附加方法:通过保持所有原始LLM权重固定,并引入新的可训练组件来进行微调。主要有两种方法:
- 适配器方法:在模型架构中添加新的可训练层,通常位于编码器或解码器的注意力层或前馈层之后。
- 软提示方法:保持模型架构固定和冻结,通过操纵输入来提高性能。这可以通过向提示嵌入添加可训练参数来实现,或者保持输入固定并重新训练嵌入权重。
PEFT的实践应用:
- PEFT在多任务微调中更为有效,允许灵活地适应原始模型以适应多种任务。
- 由于PEFT所需的资源较少,它在有限硬件条件下尤其有用。
PEFT为大型语言模型提供了一种资源高效的微调方法,允许模型在保持原始结构的同时,通过少量参数的调整来适应不同的任务。这种方法解决传统全量微调过程中的资源消耗和存储问题,使得大型模型的微调更加实用和可达。