参数高效微调(PEFT)描述了机器学习(ML)中使用的一系列技术,用于调整大型预训练模型(如基础模型)以适应特定的下游任务,而无需更新模型的所有参数。相反,PEFT 方法只专注于修改一小部分参数或添加少量新参数。这种方法大大降低了与微调大型模型(如大型语言模型(LLM)或计算机视觉(CV)中使用的大型视觉模型)相关的计算和存储成本,使定制变得更加方便和高效。
相关性和益处
超大型预训练模型(通常包含数十亿个参数)的兴起使得传统的微调方法成为资源密集型方法。对此类模型进行全面微调需要强大的计算能力(通常需要多个高端GPU)、大量内存以及每个调整后模型的可观存储空间。PEFT 通过提供几个关键优势来应对这些挑战:
- 降低计算成本:只训练一小部分参数所需的计算能力和时间大大减少,从而可以更快地进行迭代和实验,有可能使用Ultralytics HUB 云训练等平台。
- 更低的内存要求:更少的活动参数意味着在训练和推理过程中所需的内存更少,因此可以在消费级硬件或边缘设备上对大型模型进行微调。
- 更小的存储空间:PEFT 不需要为每个任务保存微调模型的完整副本,通常只需要保存一小部分修改或添加的参数,从而大大节省了存储空间。
- 减少过拟合:通过限制可训练参数的数量,PEFT 可以降低过度拟合的风险,尤其是在较小的数据集上进行微调时。
- 防止灾难性遗忘:PEFT 方法通过冻结大部分基础模型参数,有助于保留预培训期间学到的一般知识,克服灾难性遗忘,即模型在学习新任务时失去以前的能力。
- 高效的模型部署:任务特定参数的较小尺寸使模型部署更简单,尤其是在边缘人工智能等资源受限的环境中。
关键概念和技术
PEFT 建立在迁移学习概念的基础上,即把基础模型中的知识应用到新任务中。标准微调会调整许多(或所有)层,而 PEFT 则采用专门的方法。一些流行的 PEFT 技术包括
- 适配器:插入预训练模型层之间的小型神经网络模块。在微调过程中,只对这些适配器模块的参数进行训练,而原始模型的权重则保持不变。
- LoRA(低秩自适应):这种技术将可训练的低秩矩阵注入大型模型的各层(通常是转换器层)。它假定适应模型所需的变化具有较低的 "内在秩",并且可以有效地表示出来。详情请阅读LoRA 研究论文原文。
- 前缀调谐:在输入中预置一串连续的、特定任务向量(前缀),同时冻结基础 LLM 参数。只学习前缀参数。
- 提示调整:与前缀调整类似,但通过在输入序列中添加可训练的 "软提示"(嵌入)来简化前缀调整,并直接通过反向传播进行优化。
Hugging Face PEFT 库等库提供了各种 PEFT 方法的实现,使其更容易集成到常见的 ML 工作流程中。
与相关概念的区别
必须将 PEFT 与其他模型适应和优化技术区分开来:
- 微调:标准微调通常是在新数据集上更新预训练模型的全部或大部分参数。相比之下,PEFT 只修改很小一部分参数或添加一些新参数。
- 模型剪枝:这种技术通常是在训练或全面微调之后,从训练好的模型中删除多余或不重要的参数(权重或连接),以减少模型的大小和计算成本。PEFT 专注于通过限制初始训练内容来实现高效适应。
- 知识蒸馏:包括训练一个较小的 "学生 "模型来模仿一个较大的、预先训练好的 "教师 "模型的行为。PEFT 直接调整大型模型本身,尽管效率很高。
- 超参数调整 这一过程的重点是找到训练过程的最佳配置设置(例如,......)、 学习率, 批量大小),而不是针对新任务调整模型的学习参数。像 Ultralytics
Tuner
类 为这个提供方便。