什么是LoRA
什么是LoRA
什么是LoRA
LoRA全称为LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS,为微软2021年发表的针对大语言模型高效微调的一种方式。我们知道诸如GPT的大语言模型,GPT3参数量到达1750亿个,训练需要大量的数据和算力资源,重头训练或者全参数微调(full fine-tuning) 一个如此巨大模型难度很大,而且效果不一定好。GPT3就提供通过prompt的方式来将大语言模型作为预训练模型来支持多种不同的任务。
但对于某些垂直领域,需要有特定的知识,大语言的预训练模型(pretained model)不一定擅长,即使有prompt加持。如何高效利用少量的特定知识预训练模型进行微调,就是LoRA的目标。
LoRA首先冻结预训练模型的所有参数,不参与学习;额外在每层增加一个学习的分支参数,然后将参数融合到预训练参数中,以此学习少量的参数来微调新的数据,达到将预训练模型应用到更广垂直专业领域的目的。
简要过程如下图所示:

LoRA还有一个好处是同一个预训练模型可以搭配不同LoRA来适应不同的任务,只要将不同的LoRA参数融合到预训练模型即可,甚至可以多个LoRA。
LoRA和Stable Diffusion
在文生图我们也经常可以听到LoRA的大名,特别是开源的Stable Diffusion,LoRA以一种简便的方式将文生图扩展到更多的可能。

最早是由Simo Ryu将LoRA引入StableDiffusion
LoRA主要是应用在Stable Diffusion的CrossAttention部分

Stable Diffusion webUI中LoRA的安装和使用
在webUI的目录结构中,LoRA是models下Lora目录中
- 将Lora模型下载放到Lora目录中
- 在webui中的prompt中添加如<lora:disney:1> 数字为叠加的权重

./models
├── BLIP
├── Codeformer
├── ControlNet
├── deepbooru
├── deepdanbooru
├── Deforum
├── ESRGAN
├── GFPGAN
├── hypernetworks
├── karlo
├── LDSR
├── Lora
├── RealESRGAN
├── roop
├── Stable-diffusion
├── SwinIR
├── torch_deepdanbooru
├── VAE
└── VAE-approx