输入“/”快速插入内容

LLM高效微调技术

2024年4月8日修改
1.
背景
LLM效果好但是动辄几十亿参数,所需计算资源和训练数据非常高。为了解决这个问题,萌生了Parameter-Efficient Fine-Tuning(PEFT)技术。PEFT技术旨在通过最小化微调参数的数量和计算复杂度,来提高预训练模型在新任务上的性能,从而缓解大型预训练模型的训练成本。这样一来,即使计算资源受限,也可以利用预训练模型的知识来迅速适应新任务,实现高效的迁移学习。因此,PEFT技术可以在提高模型效果的同时,大大缩短模型训练时间和计算成本,让更多人能够参与到深度学习研究中来。下面我们将深入探讨PEFT的一些主要做法。
PEFT方法可以分为三类,不同的方法对LLM的不同部分进行下游任务的适配:
Prefix/Prompt-Tuning:在模型的输入或隐层添加k个额外可训练的前缀tokens(注意tokens是连续的伪token),冻结住LLM参数,只训练前缀参数;
Adapter-Tuning:将参数量较小的网络层插入LLM中,成为adapter,下游任务微调时只更新这些adapter的训练参数;
LoRA:通过学习小参数的低秩矩阵获得权重矩阵的更新参数,推理时将更新参数合并会原始LLM参数。
2.
Prefix-Tuning
Prefix-Tuning 固定 PLM 的所有参数,只更新优化特定任务的 prefix。因此,在生产部署时,只需要存储一个大型 PLM 的副本和一个学习到的特定任务的 prefix,每个下游任务只产生非常小的额外的计算和存储开销。
Full VS Emb-only
embedding-only表示只有在embedding层添加前缀token,而full 表示每一层都添加前缀token;
实验表明:prefix-tuning > embedding-only > discrete prompting
Prifix VS Infix
prefix-tuning表示可训练参数放在开头,infix-tuning表示可训练token放在中间位置
结果表明:prefix-tuning > infix-tuning
3.
Prompt-Tuning
prompt-tuning可以认为是prefix-tuning的简化版。固定整个预训练模型参数,只允许将每个下游任务的额外
个可更新的 tokens(不同于prefix-tuning,这里的tokens是真实的文本) 前置到输入文本中,也没有使用额外的编码层或任务特定的输出层
作者做了一系列对比实验,都在说明:随着预训练模型参数的增加,一切的问题都不是问题,最简单的设置也能达到极好的效果。
Prompt长度影响:模型参数达到一定量级时,Prompt长度为1也能达到不错的效果,Prompt长度为20就能达到极好效果。
Prompt初始化方式影响:Random Uniform方式明显弱于其他两种,但是当模型参数达到一定量级,这种差异也不复存在。
预训练的方式:LM Adaptation的方式效果好,但是当模型达到一定规模,差异又几乎没有了。
微调步数影响:模型参数较小时,步数越多,效果越好。同样随着模型参数达到一定规模,zero shot也能取得不错效果。
4.
P-tuning
4.1
V1版本