大模型微调|从原理到实践之lora(一)

文章目录

    • 概要
    • lora原理
    • 细节

概要

    大模型颠覆了nlp领域,通过与大模型对话就可以帮助我们解决文本任务,比如文本总结、写报告、写代码以及解答疑问等。

    其中向大模型的提问就是编写prompt,但是在实际使用过程中往往会发现即使我们编写的prompt拥有了专有知识,比如说问答对、领域知识、示例sql查询等,大模型不一定会按照我们的预期做出回答。即使逐字调整的prompt临时取得了较好的效果,隔一天测试发现还是有偏差。为了实现大模型稳定地输出正确结果,可以使用私有数据微调大模型。

    不同于得到预训练模型,微调是以预训练模型为基础,运用私有数据仅仅训练少量参数,即可适配不同的下游任务,主要流派分为基于adapter、基于selective、基于prompt、基于reparameter的几种。其中,lora作为reparameter流派,适用于NLG任务,具有低资源(算力、存储)、可插拔以及没有推理延迟的特点。

    本系列文章围绕lora先后介绍:lora的原理、如何根据私有数据构建微调数据集、lora微调的过程以及微调效果不好可能的原因。

lora原理

    下图是简化版的大语言模型的拓扑结构,结构中各个block的embedding、attention以及feedforward等模块蕴含着大量可训练的参数。

图1

   

    lora的思想是当微调训练时,在预训练模型的参数W基础上加上ΔW旁路作为前向计算的参数,但是保持预训练模型的参数W不变,仅仅反向梯度更新ΔW的参数。

    此外假定ΔW旁路由B、A两个低秩矩阵相乘得到。其中矩阵B、A的维度分别为(r×d)和(d×r),且r的值远远小于d,那么相较于优化器直接梯度更新d×d的参数,lora仅仅需要(r×d)+(d×r)旁路参数,大大减少了所需要优化的参数、实现了相较于全参数低资源微调大模型的效果。

   

图2

细节

    需要注意的是,旁路参数可以作为可插拔的部分存储,也就是说,对于不同数据集或不同下游任务,使用lora方法能做到保存各自的微调参数,推理时只需将该旁路合并到原始预训练模型中即可。

   一般来说,微调针对的是multi-head attention模块中的Wq,Wk,Wv,Wo四个矩阵添加旁路,并且ΔW低秩分解中的r为需要调整的超参。

ref:

(1)Hu, J.E., Shen, Y., Wallis, P., Allen-Zhu, Z., Li, Y., Wang, S., & Chen, W. (2021). LoRA: Low-Rank Adaptation of Large Language Models. ArXiv, abs/2106.09685.

(2)​​​​https://ai.stackexchange.com/questions/40179/how-does-the-decoder-only-transformer-architecture-work

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值