预训练大模型LLM的微调PEFT(概述)

前言

大模型现在已经不是什么新奇玩意了,大家都耳熟能详,我们都知道大模型要从头到尾的训练,需要巨大的人力物力,如此高昂的费用小公司是难以承受的,那么我们是否可以像牛顿一样,站在巨人的肩膀上,利用已经训练好的大模型进行二次训练以适用于我们自己的应用呢?回答当然是肯定的,我们只需要极少量的训练数据和资源,就能将大模型改造以适应我们的应用。

微调的分类

对大模型进行二次训练的操作我们通常称为微调(Fine-Tuning),微调分为两种:

 Full-Fine Tuning (FFT) 

全参数微调,随着大模型的参数越多,使用FFT进行微调的时候,需要的训练数据和资源就会越多,所以该方法经常用在小尺寸的LLM上面,对于特大尺寸的LLM,如果训练数据过少,直接无法推动模型参数的变更。

Parameter-Efficient Fine-Tuning(PEFT)

参数有效的微调,该微调仅仅微调非常少(额外的)模型参数,而不需要微调模型的所有参数,这将显著的降低计算和存储成本,同时也能产生与完全微调模型相当的性能,这是不是让我们欣喜若狂,实现了我们既要……又要……的夙愿。其实PEFT是一个统称,不同的实现策略让PEFT又有进一步的分类,今天先列出来huggingface的peft包支持的微调方法,后续我再仔细讲解不同的peft方法的异同和相应的微调代码:

  1. PROMPT_TUNING
  2. MULTITASK_PROMPT_TUNING
  3. P_TUNING
  4. PREFIX_TUNING
  5. LORA
  6. ADALORA
  7. ADAPTION_PROMPT
  8. IA3
  9. LOHA
  10. LOKR
  11. OFT
  12. POLY

另外需要说明一点,不是每个模型都支持所有的微调方法,所以在我们进行微调之前先确认一下。

你可能感兴趣的:(人工智能,人工智能,LLM,peft,微调,LORA)