Lora
Lora背景
从微调的本质可知,我们希望得到改动的量,但是全量微调需要算力太高。
(1)对于改动的量,可能里面包含许多有限的有用值。比如100亿的参数,可能只有50亿有用,别的都是重复或者可根据已知来推导的
(2)有时我们希望模型某一方面的能力更突出,所以只需要训练部分参数即可
Lora核心思想
为了减少训练量,我们不会更新所有参数。假设预训练模型的参数矩阵为W,我们可以将其写成W=A*B的形式。

其中k成为rank。假设原本w为100x100大小,则A大小为100xK,B为Kx100,假设W中有用信息多,我们就可以让k大一点,否则就小一点。假设k=2,则AB中各有200个参数,一共400个,远远比W参数少得多。
这样可以大大减少显存空间和学习成本
前言
当我们预训练更大的模型时,重新训练所有模型参数的完全微调变得不太可行。
LoRA,冻结预训练的模型权重,将可训练的秩分解矩阵注入到Transformer架构的每一层,大大减少下游任务的可训练参数数量。
并且,与适配器不同,没有额外的推理延迟
Lora的几个优点
(1)LoRA(低秩适应)通过引入小型的、特定任务的模块来调整大型预训练模型的行为。通常,这些模块由矩阵
A 和 B 组成,插入到预训练模型的各层中,使模型能够适应特定的任务。在适应不同任务的过程中,预训练模型保持不变(冻结)。这意味着在切换任务时,无需重新训练或修改模型本身。
(2)通过为不同任务替换 LoRA 模块中的矩阵 A 和 B,可以高效地在任务之间进行切换。这种方法显著减少了存储需求和任务切换的计算开销。与其为每个任务存储和加载完全不同的模型,不如只存储小型的 LoRA

&spm=1001.2101.3001.5002&articleId=141825978&d=1&t=3&u=b111fb95639a4573b5e20f07ae9d7c21)
1万+

被折叠的 条评论
为什么被折叠?



