写点什么

LoRA 大模型微调的利器

作者:程序那些事
  • 2024-09-04
    广东
  • 本文字数:1943 字

    阅读完需:约 6 分钟

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 文件要小得多的原因。



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


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

在哪里找到 LoRA 模型?

Civitai


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

Hugging Face


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 标签:



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


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


就是这样!

使用 LoRA 的注意事项

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


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


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


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

实用的 LoRA 模型

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

add_detail


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


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

add_saturation

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


add_brightness

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


总结

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


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


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

用户头像

关注公众号:程序那些事,更多精彩等着你! 2020-06-07 加入

最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧,尽在公众号:程序那些事!

评论

发布
暂无评论
LoRA大模型微调的利器_程序那些事_程序那些事_InfoQ写作社区