二级域名网站怎么建设,78模板网免费模板,网站手机网页如何做,义乌论坛Lora#xff1a;Low-Rank Adapation of Large Language modelsIntroductionMethodExperiment代码Introduction
这篇论文最初与21.06上传与arXiv#xff0c;作者指出在当时#xff0c;NLP的一个重要范式是先训练一个通用领域的模型然后在通过微调适应不同的领域与数据#…
LoraLow-Rank Adapation of Large Language modelsIntroductionMethodExperiment代码Introduction
这篇论文最初与21.06上传与arXiv作者指出在当时NLP的一个重要范式是先训练一个通用领域的模型然后在通过微调适应不同的领域与数据但是对于当时的大模型来说是十分昂贵的于是作者提出了一个叫Low-Rank- Adaptation的方法也叫Lora它冻结了Pre-Train model 然后在Transformer的每一层注入了可训练的 rank decomposition matrices作者指出与 用了Adam的GPT-3相比需要更新的参数量少了10000倍显存少了三倍性能也有略微提升。
作者假设在微调时Pre-train model的权重矩阵在过度更新参数时它的权重矩阵的秩是很低的于是作者的想法就是把 一些Dense layer的权重替换成低秩分解矩阵然后作者发现效果也不错。 Lora主要有这些优势
一个Pre-train model可以用来为不同的任务建立许多小的LoRA模块可以冻结共享模型并通过替换图1中的矩阵A和B来有效地切换任务从而大大减少存储需求和任务切换的开销。Lora 更高效并且降低了硬件门槛。在推理时可以把图一中两种颜色的矩阵合并与完全finetune的速度没有差别。LoRA与许多先前的方法是不相关的并且可以与许多方法相结合。
作者又介绍了一些符号的定义这里我直接词典翻译 术语和惯例 我们经常提到Transformer架构并对其维度使用常规术语。我们把Transformer层的输入和输出维度大小称为model。我们用Wq、Wk、Wv和Wn来指代self-attention模块中的查询/键/值/输出投影矩阵。W或W0指的是预训练的权重矩阵∆W指的是适应过程中的累积梯度更新。我们用r来表示一个LoRA模块的秩。我们遵循Vaswani等人2017Brown等人2020规定的惯例使用AdamLoshchilov Hutter2019Kingma Ba2017进行模型优化并使用Transformer MLP前馈维度dfn4×dmodel。
Method
一个神经网络包含许多dense layers它们通常都是满秩的但是通过下游任务微调后这些权重矩阵通常是低秩的但是他们仍然可以有效学习。作者收到启发假设Pre-Train model 的权重矩阵为 w0 冻结它引入新的底秩分解矩阵 这里有些类似于1 * 1 conv的形式中间的 维度 r 都是为在加速的前提下尽可能保留更多的信息r的选择我认为作者应该会考虑与完全 finetune 权重矩阵的秩差不多的数。其中 W0 与 BA 其中BA与图1对应与相同的Input 做矩阵乘法然后二者在求和。
公式如下 其中A通过正态分布 初始化B则全0所以BA也是全0矩阵。
这个额外的矩阵是支持热‘插拔的’是指我可以在不同的下游任务应用不同的矩阵比如我想做词性标注我只需要原始的Pre-train model 加上在词性标注数据上finetune 的 BA就可以了并且速度不受影响。
Experiment 代码
from peft import get_peft_model, LoraConfig, TaskTypepeft_config LoraConfig(task_typeTaskType.CAUSAL_LM, inference_modeFalse, r8, lora_alpha32, lora_dropout0.1,target_modules[query_key_value]
)model 加载的模型
model get_peft_model(model, peft_config)
# 打印参数情况
model.print_trainable_parameters()
接下来和正常训练模型一样