有了RAG我们还需要微调吗?
RAG技术已经这么强大了——这是很多人最近都在问的一个问题。大模型本身能解决日常中大部分通用问题,对于企业私有知识的问答场景,RAG技术也确实提供了不错的方案。但真正落到特定任务、专业领域或细粒度场景时,基础大模型的那点通用知识往往就给不出精准回答;而RAG依赖的通用知识库,可能压根不包含某个细分领域的最新或最专业信息。所以,想让模型真正“懂行”,最终还是需要对模型本身做微调,增强它在专业领域内的知识能力。
那么,微调效率就成了关键。谷歌的研究人员在《Parameter-Efficient Transfer Learning for NLP》这篇论文中,正式把PEFT(参数高效微调)技术推到了台前。PEFT的核心思路很直接:用最少量的参数更新,让预训练模型快速适配新任务,同时大幅降低计算成本。这样一来,哪怕你手头的算力有限,照样能借助预训练模型的知识积累,快速迁移到新的任务上。
下面我们就来逐一拆解目前主流的几种PEFT技术,看看它们各自怎么运作,优缺点在哪,又适合什么场景。
主流PEFT技术
Adapter Tuning
谷歌的研究人员在提出PEFT概念时,用的就是Adapter Tuning。他们把一种叫Adapter的小型结构嵌入到Transformer的每一层里,固定原模型的所有参数,只训练这些新增的Adapter。
Adapter具体长这样——在Transformer层中插入两个小瓶颈层,实现维度压缩再恢复。
论文里的实验数据很有说服力:只增加了3.6%的额外参数,就能在全量微调的效果上打个平手。不过,Adapter毕竟是在模型里硬生生加了层,推理时多了几步计算,延迟会有所增加。
Prefix Tuning
斯坦福的研究人员提出了Prefix Tuning,思路和构造Prompt有点像——在输入token之前拼接一段任务相关的虚拟token(称为Prefix),训练时只更新Prefix部分的参数,其余全部冻结。说白了,就是让模型“隐形”地理解你想要的指令。
为了训练稳定,他们还在Prefix层前面加了个MLP结构,训练完直接扔掉MLP,只保留Prefix参数。实验效果同样亮眼。
总的来说,Prefix Tuning相当于在模型内部嵌入了一层隐式的Prompt,靠虚拟token来引导输出。
Prompt Tuning
谷歌的另一个团队则把方案简化成了Prompt Tuning——只往输入层加Prompt token,MLP也省了。它的效果和模型规模强相关:参数越大,越逼近全量微调。可以看作Prefix Tuning的精简版,但依赖更大的底座。
所以Prompt Tuning的局限性也明显:模型不够大时,效果直接打折扣。
P-Tuning
清华的研究员推出了P-Tuning,早期版本和Prefix Tuning类似,但区别在于:Prefix Tuning在每个Attention层都加入Embedding,而P-Tuning只在输入层加,并且通过LSTM+MLP来初始化这些Embedding。
V1版本实验显示,同样要到10B参数量才能和全量微调持平。小参数模型上效果很差。
到了V2版本,他们把Prompt token加入到了多层结构里——不仅输入层,更深层也加,带来了更多可学习参数,也使得影响更直接。实验证明,V2在小参数模型上也能取得不错的效果。
P-Tuning的整体思路和Prefix Tuning、Prompt Tuning同属一派,都在模型上构造类似Prompt的概念来影响输出,但V2通过在深层加Prompt,让影响路径更短、效果更稳。
LoRA
LoRA是微软和CMU提出的方法,出发点完全不一样。研究者发现大模型起关键作用的其实是其中的低秩本质维度,于是设计了一个巧妙的方案:在原本矩阵乘法的模块旁,并联两个低秩矩阵A和B,通过训练它们来模拟全量微调的过程。这相当于只更新模型中最关键的“主心骨”部分。
LoRA的最大优势是:没有额外增加推理延迟,因为那两个低秩矩阵在推理时可以合并到原权重里;也没有Prompt方法带来的那些麻烦。几乎不损失训练效果。
实验数据也证实了这一点——极小的参数量就能达到甚至超过全量微调的效果。
总结分类
经过上面的介绍,你会发现PEFT家族确实枝繁叶茂。CMU的科学家在论文《TOWARDS A UNIFIED VIEW OF PARAMETER-EFFICIENT TRANSFER LEARNING》中,把主流技术归为了几大类。我们按照各自特点来做个总结:
Adapter Tuning
特点:轻量级,在预训练模型中插入小型适配器,只训练适配器参数,计算和内存需求低。
优势:资源受限场景下有效,保持泛化能力。
适用场景:移动端部署等计算资源有限的环境。Prefix Tuning
特点:在输入序列前加特定前缀标记,引导模型适应任务。
优势:可通过定制前缀精细控制任务输出。
适用场景:问答、文本生成等特定任务微调。Prompt Tuning
特点:结合前缀生成和微调,引入可学习的Prompt指导模型。
优势:灵活控制输出,优化模型参数。
适用场景:需要精细输出控制的NLP任务。P-Tuning
特点:基于控制变量,引入调节器但不直接调整模型参数,实现精细控制。
优势:对模型输出有精细调节能力。
适用场景:生成式任务等需要调节输出的场景。LoRA
特点:综合性方法,通过低秩矩阵模拟全微调,结合大批量优化、正则化、注意力等技巧。
优势:综合考虑大规模微调的各种问题,提高性能和泛化能力。
适用场景:各种大型模型微调任务。
挑战与展望
PEFT技术确实给微调带来了效率革命,但远没有到完美无缺的地步。首先,性能和效率之间的平衡在大规模数据集上依然是难题。其次,那么多PEFT方法,每个在不同任务上表现迥异,怎么选最合适的方法本身就是个挑战。再者,虽然PEFT能复用预训练模型,但跨任务的高效复用仍在探索中。计算资源需求虽然降低了,但在某些场景下仍然很高,资源受限环境下的部署并不轻松。模型复杂度上来了,可解释性却下降了——内部机制不如全量微调直观。此外,PEFT在特定任务上可能比全量微调更优,但跨任务和跨领域的泛化能力依然存疑。
长期影响也还不清楚:对模型泛化能力、稳健性到底会造成什么后果?模型规模持续膨胀,PEFT能否有效扩展?目前大多数PEFT聚焦文本任务,多模态融合场景还有很长的路。最后,安全隐私方面,PEFT模型可能更容易被对抗攻击——这些都是需要持续投入的课题。
结论
PEFT是近年来NLP领域的重要突破。只微调少量参数,就能让预训练模型适应新任务,大幅降低成本,这才是它的核心价值。不同PEFT技术适配不同下游任务,有效率也有灵活性。它显著降低了对计算和存储的需求,同时还能保持预训练模型的泛化能力,避免过拟合。对大模型落地应用来说,PEFT意味着更快的交付、更少的资源、更好的适应性。鼓励NLP和AI领域的技术人员继续深挖PEFT的潜力,优化现有方案,探索新方法。建议企业和研究机构多组织交流,共享成果。同时加大在PEFT研发上的投入,推动技术普及。针对安全风险,也需要开展针对性研究,防范对抗攻击。
文献参考
[1] 《Parameter-Efficient Transfer Learning for NLP》- Neil Houlsby, Andrei Giurgiu, Stanisław Jastrzębski, Bruna Morrone, Quentin de Laroussilhe, Andrea Gesmundo, Mona Attariyan, Sylvain Gelly
[2] 《Prefix-Tuning: Optimizing Continuous Prompts for Generation》- Xiang Lisa Li, Percy Liang
[3] 《The Power of Scale for Parameter-Efficient Prompt Tuning》- Brian Lester, Rami Al-Rfou, Noah Constant
[4] 《GPT Understands, Too》- Xiao Liu, Yanan Zheng, Zhengxiao Du, Ming Ding, Yujie Qian, Zhilin Yang, Jie Tang
[5] P-Tuning v2: Prompt Tuning Can Be Comparable to Fine-tuning Universally Across Scales and Tasks - Xiao Liu, Kaixuan Ji, Yicheng Fu, Weng Lam Tam, Zhengxiao Du, Zhilin Yang, Jie Tang
[6] LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS - Edward Hu, Yelong Shen, Phillip Wallis, Zeyuan Allen-Zhu, Yuanzhi Li, Shean Wang, Lu Wang, Weizhu Chen
[7] TOWARDS A UNIFIED VIEW OF PARAMETER-EFFICIENT TRANSFER LEARNING - Junxian He, Chunting Zhou, Xuezhe Ma, Taylor Berg-Kirkpatrick, Graham Neubig