链载Ai

标题: LoRA 介绍 [打印本页]

作者: 链载Ai    时间: 昨天 12:27
标题: LoRA 介绍

经过 pre-training 得到的Base Model具有通用的能力,为了adapt不同的任务,需要fine-tuning;

常用的微调方法包括:

由于 LLM 的参数量巨大,全参微调需要较多的算力资源开销,成本较高,如训练时间长,需要较多显存等;

目前主流方案是通过 PEFT 进行微调,旨在减少需要训练的模型参数量,同时保证微调后的模型性能能够与全量微调的表现相媲美。


Adapters

PEFT-based 技术的一种思路是通过Adapters来实现;

通过在Transformer中添加一些模块组件,这样不需要微调全部参数,只需要微调Adapters的参数而冻结其他部分的参数,在特定任务上可以实现模型效果的提升;

Adapters 也可以出现在模型中的不同位置:

本文介绍的LoRA是PEFT中广泛使用的技术,也可以看作是一种Adapter;

除了LoRA,其他PEFT还包含适配器微调,前缀微调、提示微调。


What is LoRA ?

LLM 的 Transformer 架构中,包含大量的线性变换层,且参数矩阵维度通常很高,研究人员发现模型在针对特定任务进行适配时,参数矩阵往往是过参数化(Over-parametrized)的,其存在一个较低的内在秩

为了解决这一问题,LoRA 提出在预训练模型的参数矩阵上添加低秩分解矩阵来近似每层的参数更新,从而减少适配下游任务所需要训练的参数

LoRA在微调的时候,将pre-trained model的参数冻结,同时将可训练的秩分解矩阵注入到Transformer架构的layer中,可以极大降低需要训练的参数量。

whichfreezes the pre-trained model weightsandinjects trainable rank decomposition matrices into each layer of the Transformer architecture, greatly reducing the number of trainable parameters for downstream tasks


How LoRA Work?

不同于全参微调,需要更新全部的参数;

我们可以进行矩阵分解,用小矩阵的更新来近似更新大矩阵;如图中显示,当rank=1的时候,需要更新的参数从10*10降低到10+10。



LoRA Workflow

给定一个参数矩阵 ?,参数更新过程:? = ?0+ Δ?,

LoRA 的基本思想是冻结原始矩阵 ?0∈ R?×?,通过低秩分解矩阵 ? ∈ R?×?和 ? ∈ R?×?来近似参数更新矩阵 Δ? = ? · ?,其中 ? ≪ ? 是减小后的秩。

在微调期间,原始的矩阵参数 ?0不会被更新,低秩分解矩阵 ? 和 ? 则是?0用于适配下游任务;


LoRA参数初始化


LoRA 所需的显存估计




LoRA 改进

为弥补LoRA 与全量微调之间仍存在性能差距,提出 LoRA 的改进方法,以进一步提升 LoRA 在下游任务中的适配性能。现有方法主要有:


QLoRA

尽管 LoRA 能够有效地节省显存,但对于参数规模达到上百亿级别的模型而言,其微调所需的成本仍然相当高昂。QLoRA 将原始的参数矩阵量化为 4 比特,而低秩参数部分仍使用 16 比特进行训练,在保持微调效果的同时进一步节省了显存开销。

QLoRA 微调所需要的显存由 LoRA 微调所需要的2? 进一步下降为 0.5?。因 此通过 QLoRA 技术,可以在一张 A6000 (48GB) 的 GPU 上微调 65B 的模型,接 近 16 比特模型微调的性能。


Why LoRA Work?

which show that the learnedover-parametrizedmodels in fact reside on alow intrinsic dimension. We hypothesize that the change in weights during model adaptation also has a low “intrinsic rank”

研究表明,语言模型针对特定任务微调之后,权重矩阵通常具有很低的本征秩 (Intrinsic Rank)。研究人员认为参数更新量即便投影到较小的子空间中,也不会影响学习的有效性。因此,提出固定预训练模型参数不变,在原本权重矩阵旁路添加低秩矩阵的乘积作为可训练参数,用以模拟参数的变化量







欢迎光临 链载Ai (https://www.lianzai.com/) Powered by Discuz! X3.5