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

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,鼓励自己学下去,了解完微调技术和微调框架,接下来就是实践微调

相关推荐
超级晒盐人3 小时前
vue 开发总结:从安装到第一个交互页面-与数据库API
经验分享·python·语言模型·学习方法·微信公众平台
顾默@3 小时前
个人电脑部署私有化大语言模型LLM
人工智能·语言模型·自然语言处理
超级晒盐人4 小时前
落霞归雁思维框架应用(十) ——在职考研 199 管综 + 英语二 30 周「顺水行舟」上岸指南
经验分享·语言模型·学习方法·微信公众平台·教育电商
硅谷秋水4 小时前
DyWA:用于可推广的非抓握操作的动态自适应世界动作模型
人工智能·深度学习·机器学习·语言模型·机器人
蹦蹦跳跳真可爱58921 小时前
Python----MCP(MCP 简介、uv工具、创建MCP流程、MCP客户端接入Qwen、MCP客户端接入vLLM)
开发语言·人工智能·python·语言模型
海绵波波1071 天前
解读LISA:通过大型语言模型实现推理分割
人工智能·语言模型·自然语言处理
贾全1 天前
Transformer架构全解析:搭建AI的“神经网络大厦“
人工智能·神经网络·ai·语言模型·自然语言处理·架构·transformer
**梯度已爆炸**2 天前
语言模型的评估指标整理
人工智能·语言模型·自然语言处理
计算机sci论文精选2 天前
ACL 2024 大模型方向优秀论文:洞察NLP前沿关键突破
人工智能·深度学习·语言模型·多模态·acl·机器翻译模型
__風__2 天前
从本地 Docker 部署的 Dify 中导出知识库内容(1.6版本亲测有效)
人工智能·python·mysql·语言模型