微调入门篇:大模型微调的理论学习

1、为什么大模型微调

之前在《大模型这块蛋糕,想吃吗》介绍了普通人如何搭上大模型这块列车, 其中有一个就是模型微调,这个也是未来很多IT公司需要发力的方向,以及在《垂直领域大模型的应用更亲民》中论述了为什么微调适合大家,以及微调有什么价值? 作为小程序猿在开始进行微调实操之前,我们先了解一下微调大模型有什么方法和技术吗?

2、大模型微调的方式

(1)全量微调(Full Fine-tuning):这个其实算不上微调,算是全新训练,但是大部分微调框架都支持这种方式需要较大的计算资源和时间,但可以获得更好的性能.

(2)增加额外参数

(3)选取一部分参数调优

(4)引入重参数优化

3、大模型微调的技术

由上面微调的方式的道路,引发的微调技术也是很多的

(1)《BitFit: BitFit: Simple Parameter-efficient Fine-tuning or Transformer-based Masked Language-models》训练时只更新bias的参数或者部分bias参数

(2)《Prefix Tuning: Prefix-Tuning: Optimizing Continuous Prompts for Generation》在输入token之前构造一段任务相关的virtual tokens作为Prefix,然后训练的时候只更新Prefix部分的参数,而PLM中的其他部分参数固定。

(3)《Prompt Tuning: The Power of Scale for Parameter-Efficient Prompt Tuning》 该方法可以看作是Prefix Tuning的简化版本,它给每个任务定义了自己的Prompt,然后拼接到数据上作为输入,但只在输入层加入prompt tokens,并且不需要加入 MLP 进行调整来解决难训练的问题。

(4)《P-Tuning: GPT Understands, Too 》该方法将Prompt转换为可以学习的Embedding层,并用MLP+LSTM的方式来对Prompt Embedding进行一层处理。相比Prefix Tuning,P-Tuning加入的可微的virtual token,但仅限于输入层,没有在每一层都加;另外,virtual token的位置也不一定是前缀,插入的位置是可选的。这里的出发点实际是把传统人工设计模版中的真实token替换成可微的virtual token

(5)《P-Tuning v2: P-Tuning v2: Prompt Tuning Can Be Comparable to Fine-tuning Universally Across Scales and Tasks》该方法在每一层都加入了Prompts tokens作为输入,而不是仅仅加在输入层

(6)《Adapter Tuning :Parameter-Efficient Transfer Learning for NLP》,该方法设计了Adapter结构,并将其嵌入Transformer的结构里面,针对每一个Transformer层,增加了两个Adapter结构(分别是多头注意力的投影之后和第二个feed-forward层之后),在训练时,固定住原来预训练模型的参数不变,只对新增的 Adapter 结构和 Layer Norm 层进行微调,从而保证了训练的高效性。

(7)《LoRA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS》,该方法的核心思想就是通过低秩分解来模拟参数的改变量,从而以极小的参数量来实现大模型的间接训练.

........

小结:

(1)增加额外参数,如:Prefix Tuning、Prompt Tuning、Adapter Tuning及其变体。

(2)选取一部分参数更新,如:BitFit。

(3)引入重参数化,如:LoRA、AdaLoRA、QLoRA。

(4)混合高效微调,如:MAM Adapter、UniPELT

那怎么选择微调技术呢?

(1)总的来说,像P-Tuning v2、LoRA等都是综合评估很不错的高效微调技术。如果显存资源有限可以考虑QLoRA;如果只是解决一些简单任务场景,可以考虑P-Tuning、Prompt Tuning也行。

(2)Prompt Tuning、Prefix Tuning、LoRA等少部分微调技术针对不同参数规模的模型进行过评估,同时,这几种方式也是目前应用比较多的高效微调方法.

4、微调框架

要参考论文实现那些技术吗?当然不用,现在开源的能力越来越强,所以计算机发展越来越快,根本学不过来:

(1)DeepSpeed Chat : 微软开源,提供了一键式RLHF训练框架,奖励模型微调和基于人类反馈的强化学习(RLHF),此外还实现了DeepSpeed HE,统一的高效混合引擎,达到训练和推理引擎之间的过渡是无缝的。

(2)PEFT:PEFT 是 Huggingface 开源的一个参数高效微调库,它提供了最新的参数高效微调技术,并且可以与 Transformers 和 Accelerate 进行无缝集成。

小结:

一般来说现在大家基本选择peft框架进行微调.

5、PEFT框架支持微调技术

不同任务下支持模型和技术都有所差别:

PERF支持微调技术有:

(1)LoRA

(2)Prefix Tuning

(3)P-Tuning

(4)Prompt Tuning

(5)AdaLoRA:Adaptive Budget Allocation for Parameter-Efficient Fine-Tuning

(6)IA3:Infused Adapter by Inhibiting and Amplifying Inner Activations

..... 还在新增

6、当前高效微调技术存在的一些问题

(1)缺乏模型大小的考虑

(2)缺乏测量基准和评价标准

(3)代码实现可读性差

7、总结

立一下flag,鼓励自己学下去,了解完微调技术和微调框架,接下来就是实践微调

相关推荐
Shy9604188 小时前
Doc2Vec句子向量
python·语言模型
智匠MindCraft Al17 小时前
GPT o1 模型使用及API调用
人工智能·gpt·ai·语言模型·chatgpt
沉下心来学鲁班1 天前
欺诈文本分类检测(十八):基于llama.cpp+CPU推理
人工智能·语言模型·分类·cpu·llama.cpp
m0_523674211 天前
技术前沿:从强化学习到Prompt Engineering,业务流程管理的创新之路
人工智能·深度学习·目标检测·机器学习·语言模型·自然语言处理·数据挖掘
小言从不摸鱼1 天前
【AI大模型】ELMo模型介绍:深度理解语言模型的嵌入艺术
人工智能·深度学习·语言模型·自然语言处理·transformer
衬衫chenshan1 天前
【论文阅读】(Security) Assertions by Large Language Models
论文阅读·人工智能·语言模型
DisonTangor2 天前
AMD-OLMo:在 AMD Instinct MI250 GPU 上训练的新一代大型语言模型。
人工智能·语言模型·自然语言处理
Soungkayou2 天前
Safety Assessment of Chinese Large Language Models
人工智能·语言模型·自然语言处理
湫ccc2 天前
Ollama的安装以及大模型下载教程
语言模型·llama