LoRA大模型微调的利器

LoRA模型是小型的Stable Diffusion模型,它们对checkpoint模型进行微小的调整。它们的体积通常是检查点模型的10到100分之一。因为体积小,效果好,所以lora模型的使用程度比较高。

这是一篇面向从未使用过LoRA模型的初学者的教程。你将了解LoRA模型是什么,在哪里找到它们,以及如何在AUTOMATIC1111 GUI中使用它们。然后,你将在文章末尾找到一些LoRA模型的演示。

LoRA模型是什么?

LoRA(Low-Rank Adaptation)是一种微调Stable Diffusion模型的训练技术。

虽然我们已经有像Dreambooth和文本反转这样的训练技术。那么LoRA有什么用呢?

LoRA实际上可以看做是Dreambooth和文本反转embeddings的折中方案。Dreambooth功能虽然强大,但模型文件会比较大(2-7 GB)。文本反转非常小(约100 KB),但能做的事情比较少。

LoRA介于两者之间。它的文件大小更容易管理(2-200 MB),并且训练能力相当不错。

因为checkpoint比较大,所以硬盘空间存储会是一个问题。而LoRA是解决存储问题的优秀方案。

像文本反转一样,你不能单独使用LoRA模型。它必须与模型检查点文件一起使用。LoRA通过对配套的模型文件进行小的修改来改变风格。

LoRA是定制AI艺术模型的绝佳方式,而不会占用太多本地存储空间。

LoRA如何工作?

LoRA对Stable Diffusion模型中最关键的部分进行小的修改:交叉注意力层。研究人员发现,微调这部分模型就足以实现良好的训练。交叉注意力层是下面Stable Diffusion模型架构中的黄色部分。

交叉注意力层

交叉注意力层的权重以矩阵的形式排列。矩阵只是按列和行排列的一堆数字,就像Excel电子表格上一样。LoRA模型通过将自己的权重加到这些矩阵上来微调模型。

如果LoRA模型需要存储相同数量的权重,它们的文件怎么会更小呢?**LoRA的技巧是将矩阵分解成两个更小的(低秩)矩阵。**通过这样做,它可以存储更少的数字。让我们通过以下示例来说明。

假设模型有一个100行100列的矩阵。那是10000个数字(100x 100)需要存储在模型文件中。LoRA将矩阵分解成一个1000x2矩阵和一个2x100矩阵。那只有400个数字(100 x 2 + 2 x 100,如果矩阵够更大的话,LoRA模型会减少的更多。这就是为什么LoRA文件要小得多的原因。

image-20240703105705024

在这个例子中,矩阵的是2。它比原始尺寸低得多,所以它们被称为低秩矩阵。秩可以低至1。

这种操作必定会带来数据上的缺失,但是在交叉注意力层来说,这些损失是无伤大雅的。所以Lora这种做法是可行的。

在哪里找到LoRA模型?

Civitai

image-20240703110017448

寻找LoRA的首选地点是Civitai。该网站托管了大量LoRA模型的集合。应用LORA过滤器以仅查看LoRA模型。不过里面的大多数模型都是:女性肖像,动漫,现实主义插图风格等。

Hugging Face

image-20240703110326192

Hugging Face是另一个LoRA库的好来源。你会发现更多种类的LoRA模型。但那里的LoRA模型可能没有C站多,并且也不太直观。因为没有图片预览。

如何使用LoRA?

这里,我将介绍如何在AUTOMATIC1111 Stable Diffusion GUI中使用LoRA模型。

AUTOMATIC1111原生支持LoRA。你不需要安装任何扩展。

第1步:安装LoRA模型

要在AUTOMATIC1111 webui中安装LoRA模型,请将模型文件放入以下文件夹。

stable-diffusion-webui/models/Lora

第2步:在提示中使用LoRA

要在AUTOMATIC1111 Stable Diffusion WebUI中添加带权重的LoRA,请在提示或否定提示中使用以下语法:

<lora: name: weight>

name是LoRA模型的名称。它可以与文件名不同。weight是应用于LoRA模型的权重。默认值为1。将其设置为0将禁用模型。

那么怎么知道lora的名字是什么呢?

其实我们并不需要手动输入lora的名字,我们只需要点击下面的lora标签:

image-20240703111227834

你应该看到一个已安装的LoRA模型列表。单击你想要使用的模型。

LoRA短语将被插入到提示中。

就是这样!

使用LoRA的注意事项

你可以调整乘数以增强或调整效果。将乘数设置为0将禁用LoRA模型。你可以在0和1之间调整风格效果。

一些LoRA模型是使用Dreambooth训练的。你需要包括一个触发关键词才能使用LoRA模型。你可以在模型页面上找到触发关键词。

类似于嵌入,你可以同时使用多个LoRA模型。你也可以将它们与嵌入一起使用。

在AUTOMATIC1111中,LoRA短语不是提示的一部分。在应用LoRA模型后,它将被删除。这意味着你不能使用像[keyword1:keyword2: 0.8]这样的提示语法来使用他们。

实用的LoRA模型

这里介绍一些在实际应用中比较实用的Lora。

add_detail

image-20240703112744179

谁不想要AI图像中更多的细节?细节调整器允许你增加或减少图像中的细节。现在,你可以调整你想要的细节量。

使用正LoRA权重来增加细节,使用负权重来减少细节。

add_saturation

这个lora可以给图片添加一些饱和度,效果如下:

image-20240703113008727

add_brightness

这个lora可以用来控制图片的亮度:

image-20240703134833039

总结

LoRA模型是checkpoint模型的小型修改器。你可以通过在提示中包含一个短语轻松地在AUTOMATIC1111中使用它们。

我将在以后的文章中告诉你如何自己来训练一个LoRA模型。

点我查看更多精彩内容:www.flydean.com

### LoRA 大模型微调技术 #### 定义与背景 Low-Rank Adaptation (LoRA) 是一种用于大语言模型参数高效微调的技术。通过引入低秩矩阵分解的方法,在保持原有模型性能的同时显著减少训练所需的计算资源和时间[^1]。 #### 方法原理 具体来说,LoRA 技术主要基于两个核心概念: - **低秩更新**:只对部分权重矩阵施加较小规模的增量变化; - **冻结预训练层**:除了新增加的小型可训练模块外,其余大部分网络结构维持不变并固定下来不再参与反向传播过程中的梯度下降操作。 这种方法不仅能够有效降低内存占用量级至原来的千分之一级别,而且还能加快收敛速度约十倍以上[^2]。 #### 实现方式 以下是 Python 中实现 LoRA 微调的一个简单例子: ```python from peft import get_peft_model, LoraConfig, TaskType import transformers model_name_or_path = "bert-base-uncased" tokenizer_name_or_path = "bert-base-uncased" config = { 'base_model': model_name_or_path, } peft_config = LoraConfig( task_type=TaskType.SEQ_CLS, inference_mode=False, r=8, lora_alpha=32, lora_dropout=0.1 ) model = transformers.AutoModelForSequenceClassification.from_pretrained(model_name_or_path) model = get_peft_model(model, peft_config) ``` 此代码片段展示了如何配置以及获取适用于序列分类任务类型的 BERT 模型实例,并为其添加了特定于 LoRA 的设置选项来完成初始化工作流程。 #### 最佳实践建议 当采用 LoRA 进行实际项目开发时,可以考虑以下几个方面以获得更好的效果: - 合理设定超参数 `r` 和 `lora_alpha` ,这二者决定了适应组件的空间维度大小及其影响程度; - 对不同子集的数据分别测试验证最佳的学习率范围; - 尝试多种组合策略如多轮迭代优化等提高最终泛化能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

flydean程序那些事

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值