一文读懂大模型微调策略:P-tuning 与 LoRA
大模型微调这个话题,最近热度一直很高。今天我们来聊聊其中最常用的两种策略——P-tuning与LoRA。先跟大家简单过一下背景,这两个东西到底从哪儿来的,以及在实际应用中该怎么选。
说到微调,首先得提一下
PEFT(Parameter Efficient Fine-Tuning)
PEFT最大的好处,就是在参数更新量大幅减少的前提下,还能保持甚至只是轻微牺牲模型性能——换句话说,投入产出比很划算。
而
LoRA,其实就是PEFT策略里一种非常具体、也非常流行的实现方式
P-tuning:改提示,不动模型
Prompt tuning(通常也叫P-tuning)的思路跟传统微调不太一样。它不直接修改预训练模型(比如GPT-3)里面的参数,模型参数是固定的,不参与训练。它改的是什么呢?是输入的“提示”(prompt)。
你可以这么理解:同样一款引擎,你给它不同的指令,它就能输出不同风格的内容。P-tuning要做的,就是在输入提示上做优化。本质上,它优化的是词嵌入向量——也就是把输入提示中的某些部分变成可训练的向量,从而引导模型输出你想要的内容。
P-tuning的优势在于:
- 灵活性极强。只要改改prompt,就能适配各种不同的任务,不需要动模型结构。
- 训练和优化速度通常更快。因为要更新的参数少,迭代和实验的节奏可以很快。
但也不是没有短板:
如果目标任务本身训练数据很少,那微调出来的词嵌入向量可能会过度适应这有限的样本,导致过拟合。说白了,就是学得太“死”了,换个场景就不灵了。
LoRA:改参数,不动全模型
LoRA走的是另一条路。它要干的事情,是在模型里面“加东西”——具体来说,是对模型中的权重矩阵做低秩更新。什么意思呢?就是给预训练模型的某些层增加一些额外的参数模块(一般规模都不会太大),这些模块在微调阶段进行优化。原始预训练模型的参数保持不变,所以模型的“底子”不会坏,而新增的这些参数则负责帮模型更好地适应特定任务。
一个常见的做法是,在Transformer模型每一层都加一个“适配器”(adapter)。这些适配器就是小型神经网络,参数是可学习的。微调的时候,预训练模型的大参数不动,只优化适配器里的那些小参数。
LoRA的优势也很明显:
- 内存和计算资源占用少。只更新一小部分参数,省了不少硬件成本。
- 灵活性高。模型主力参数不变,通过小规模新增模块来适配新任务,整个过程中模型的“主力能力”不受影响。
不过它也有自己的麻烦:
因为是直接修改模型内部的参数结构(哪怕是微小的改动),它对模型行为的影响可能会更全面、更深入,所以实操的难度和复杂度比P-tuning要高一些。说白了,想调好它,得对模型本身有更深的理解。
到底什么时候用哪个?
P-tuning更适合:
LoRA更适合:
总结一下:不管是P-tuning还是LoRA,它们的共同目标都是让你能用更低的成本、更少的资源,把预训练大模型调成你需要的那个样子。选哪一种,取决于你到底要解决什么问题、手上有多大的计算资源、以及你期望的灵活性有多高。P-tuning靠改输入提示,LoRA靠调整参数,两者各有千秋,但都为大模型微调提供了一条高效、实用的路径。
-
- 关于宇宙的好的网名有哪些
- 角色扮演 | 1
- 网名