赞
踩
LLM日益流行,已经渗透到各个领域,比如生物医学,但是模型的规模导致微调LLM对普通用户不够友好,因此,我们需要借助一些低成本方法,通过更新少量参数也达到与LLM全参数更新一样的效果。这里介绍三种主流方法:冻结,P-tuning,QLoRA。
冻结
Freeze是冻结的意思,Freeze方法指的是参数冻结,对原始模型的大部分参数进行冻结,仅训练少部分的参数,这样就可以大大减少显存的占用,从而完成对大模型的微调。这是一种比较简单微调方法,由于冻结的参数是大部分,微调的参数是少部分,因此在代码中只需要设置需要微调的层的参数即可,比如:
for name, param in model.named_parameters():
if not any(pn in name for pn in ["layers.26", "layers.25", "layers.24", "layers.23"]):
param.requires_grad = False
P-tuning
P-tuning分为P-tuning v1和P-tuning v2。首先了解prefix-tuning(prefix-tuning:Optimizing Continuous Prompts for Generation),指的是在微调模型的过程中只优化加入的一小段可学习的向量(virtual tokens,即Prefix),而不需要优化整个模型的参数(训练的时候只更新Prefix部分的参数,而LLM中的其他部分参数固定)。prefix-tuning可以理解为在输入信息中添加额外的prompt,这个prompt是通过学习获得的。
可以了解soft prompt和hard prompt:
在离散的prompts中,提示语的变化对模型最终的性能特别敏感,加一个词、少一个词或者变动位置都会造成比较大的变化。成本比较高,并且效果不太好,连续的prompts将具有更好的鲁棒性,显然Prefix Tuning属于Soft prompt。
在P-tuning v1中,使用virtual tokens替换hard prompt中的离散tokens,使用BiLSTM+MLP对virtual tokens编码得到连续prompts。P-Tuning v2在每一层都加入了Prompts tokens作为输入,而不是仅仅加在输入层,这带来两个方面的好处:1.更多可学习的参数可以提高表现,2.加入到更深层结构中的Prompt能给模型预测带来更直接的影响。
QLoRA
LoRA需要回顾 LLaMA-7B微调记录-Alpaca-LoRA,LoRA 的最大优势是速度更快,使用的内存更少:
QLoRA的核心如下:
微调经验
对于模型大小的选择:
数据处理:
灾难性遗忘问题:
来自:https://blog.csdn.net/dzysunshine/article/details/131590701
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。