随着大规模预训练语言模型(LLM)的普及,模型参数的数量日益增多,传统的全参数微调方法(Full Fine-Tuning)逐渐显现出高昂的计算和存储成本。此外,在实际应用中,传统微调也容易出现“灾难性遗忘”现象,即在新任务上微调后,模型会忘记先前任务的知识。为了解决这些问题,参数高效微调(Parameter-Efficient Fine-Tuning,PEFT)方法应运而生。
PEFT方法通过仅调整一小部分模型参数,而保持大部分预训练模型的参数不变。这种方法不仅降低了计算和存储需求,还在数据量较少的情况下表现优异,同时在域外数据上的泛化性能更好。本文将介绍PEFT的几种常见方法,并提供详细的代码示例,帮助理解和应用这些技术。
1. 环境设置
在开始之前,我们需要安装所需的库,并设置工作环境。
# 安装必要的库
# !pip install peft
# !pip install evaluate
import os
import torch
import transformers
import peft
os.environ["CUDA_VISIBLE_DEVICES"] = "1" # 设置GPU设备
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
print(f"Using device: {device}")
2. PEFT 技术概览
技术 | 全部参数量 | 可训练参数量 | 可训练百分比 |
BitFit | 124,808,448 |