前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何高效微调大模型?技术原理与最佳实践揭秘!

如何高效微调大模型?技术原理与最佳实践揭秘!

作者头像
OpenMMLab 官方账号
发布2023-10-10 10:02:53
1.3K0
发布2023-10-10 10:02:53
举报
文章被收录于专栏:OpenMMLab

本期精彩

随着,ChatGPT 迅速爆火,引发了大模型的时代变革。然而对于普通大众来说,进行大模型的预训练或者全量微调遥不可及。由此,催生了各种参数高效微调技术,让科研人员或者普通开发者有机会尝试微调大模型。

因此,该技术值得我们进行深入分析其背后的机理,本次分享主要讲述目前业界常见的一些大模型微调技术原理(如:LoRA、Prefix Tuning、Adapter Tuning 等)以及在进行大模型微调技术研究时的最佳实践分享;同时,将分享大模型微调实践过程中如何选择模型及 GPU 型号等。

内容详情

BitFit

BitFit 是一种稀疏的微调方法,它训练时只更新 bias 的参数或者部分 bias 参数。

对于 Transformer 模型而言,冻结大部分 transformer-encoder 参数,只更新 bias 参数跟特定任务的分类层参数。涉及到的 bias 参数有 attention 模块中计算 query,key,value 跟合并多个 attention 结果时涉及到的 bias,MLP 层中的 bias,Layernormalization 层的 bias 参数。

Prefix Tuning

Prefix Tuning 方法在输入 token 之前构造一段任务相关的 virtual tokens 作为 Prefix,然后训练的时候只更新 Prefix 部分的参数,而 PLM 中的其他部分参数固定。

针对不同的模型结构,需要构造不同的 Prefix。

针对自回归架构模型:在句子前面添加前缀,得到 z = [PREFIX; x; y],合适的上文能够在固定 LM 的情况下去引导生成下文(比如:GPT3 的上下文学习)。

针对编码器-解码器架构模型:Encoder 和 Decoder 都增加了前缀,得到 z = [PREFIX; x; PREFIX0; y]。Encoder 端增加前缀是为了引导输入部分的编码,Decoder 端增加前缀是为了引导后续 token 的生成。

Adapter Tuning

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

LoRA

LoRA 方法的核心思想就是通过低秩分解来模拟参数的改变量,从而以极小的参数量来实现大模型的间接训练。

在涉及到矩阵相乘的模块,在原始的 PLM 旁边增加一个新的通路,通过前后两个矩阵 A,B 相乘,第一个矩阵 A 负责降维,第二个矩阵 B 负责升维,中间层维度为 r,从而来模拟所谓的本征秩。

在下游任务训练时,固定模型的其他参数,只优化新增的两个矩阵的权重参数,将 PLM 跟新增的通路两部分的结果加起来作为最终的结果(两边通路的输入跟输出维度是一致的),即 h=Wx+BAx。第一个矩阵的 A 的权重参数会通过高斯函数初始化,而第二个矩阵的 B 的权重参数则会初始化为零矩阵,这样能保证训练开始时新增的通路 BA=0 从而对模型结果没有影响。

在推理时,将左右两部分的结果加到一起即可,h=Wx+BAx=(W+BA)x,所以只要将训练完成的矩阵乘积 BA 跟原本的权重矩阵 W 加到一起作为新权重参数替换原本 PLM 的 W 即可,对于推理来说,不会增加额外的计算资源。

UniPELT

UniPELT 方法是 LoRA、Prefix Tuning 和 Adapter 的门控组合。

更具体地说,LoRA 重新参数化用于 WQ 和 WV 注意力矩阵,Prefix Tuning 应用于每一 Transformer 层的 key 和value,并在 Transformer 块的 feed-forward 子层之后添加 Adapter。对于每个模块,门控被实现为线性层,通过 GP 参数控制 Prefix-tuning 方法的开关,GL控制LoRA方法的开关,GA 控制 Adapter 方法的开关。可训练参数包括 LoRA 矩阵 WA(Down)和 WB(Up),提示调优参数 Pk 和 Pv、Adapter 参数和门函数权重。即图中蓝颜色的参数为可学习的参数。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-10-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 OpenMMLab 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
GPU 云服务器
GPU 云服务器(Cloud GPU Service,GPU)是提供 GPU 算力的弹性计算服务,具有超强的并行计算能力,作为 IaaS 层的尖兵利器,服务于生成式AI,自动驾驶,深度学习训练、科学计算、图形图像处理、视频编解码等场景。腾讯云随时提供触手可得的算力,有效缓解您的计算压力,提升业务效率与竞争力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档