LLM微调概览

171 阅读1分钟

1. Prompt engineering

加入多个examples(Few-shot技术)可能会使LLM表现的更好, 但是同时也会出现以下问题:

  1. 因为Input Token 变长,Inference成本增加
  2. 由于examples本身占用了太多的Token,留给context,instruction,input的Token的空间变小

2. Fine-tuning

当使用Few-shot技术发现无法得到想要的结果时,我们才会考虑使用Fine-tuning技术(这里的Fine-tuning是指SFT,即Supervised Fine Tuning)通过训练来直接调整模型的参数。

Few-shot VS Fine-tuning: Few-shot是把examples(知识库)挂载到模型的外面,而Fine-tuning是把examples(知识库)直接嵌入到模型本身,这时候就不需要考虑examples数量的影响了,甚至可以直接上2000个examples

  1. Fine-tuning的Instruction Data获取:

    • 根据existing supervised training data: 通过人工设计的模板Template把原始监督数据转成instruction data
  2. Fine-tunning 的训练集,验证集,测试集

  3. Fine-tunning 的问题:遗忘(catastropy forgetting)

    原始LLM的输入输出:

    Screenshot 2024-03-21 at 10.32.19.png

    现在我们对原始LLM做一个情感分类的Fine-tuning,现在的LLM输出反而不正确了:

    Screenshot 2024-03-21 at 10.33.03.png

4.遗忘的处理方式:

  • 在Fine-tunning 数据集中加入通用数据:例如我们发现所需的能力在Fine-tuning之后下降了,我们就构造一个针对此能力的instruction data加入到原有的数据中,再进行fine-tuning

  • 多任务学习:

    现在我们需要完成3个任务:

    • 情感分析
    • summarization
    • Extraction

    我们只需要把这三个任务的instruction data拼接起来,然后一起作为instruction data来进行Fine-tunning 即可

  • 使用更大的LLM:模型越小,遗忘越大