Press "Enter" to skip to content

“Hugging Face Diffusers现在可以正确加载LoRA”

使用最新的Diffusers Monkey Patching函数加载LoRA与A1111相比产生完全相同的结果

从Hugging Face的Diffusers代码仓库中获取最新代码,并发现最新的代码更新与LoRA加载相关,现在可以进行Monkey-Patching LoRA加载。

安装最新的Diffusers:

pip install -U git+https://github.com/huggingface/diffusers.git@main

根据我的测试,昨天的LoRA加载函数生成了稍微有问题的结果。本文讨论如何使用Diffusers包中的最新LoRA加载器。

加载LoRA并更新稳定的扩散模型权重

自从使用Diffusers的程序员无法轻松加载LoRA以来已经有一段时间了。为了将LoRA加载到检查点模型并输出与A1111的稳定扩散Webui相同的结果,我们需要使用额外的自定义代码来加载权重,我在本文中提供了这些代码。

改进Diffusers包以实现高质量图像生成

克服令牌大小限制、自定义模型加载、LoRA支持、文本反转支持等

towardsdatascience.com

本文提供的解决方案效果好且快速,但需要额外管理LoRA的α权重,我们需要创建一个变量来记住当前的LoRA权重α。因为加载LoRA的代码只是将LoRA的A矩阵和B矩阵相加。

然后与主要的检查点模型权重W进行合并。

要删除LoRA权重,我们将需要一个负的-α来删除LoRA权重,或者重新创建管道。

加载LoRA的Monkey-Patching方式

使用LoRA的另一种方法是在执行模块前向过程的代码中进行修补,并在计算文本嵌入和注意力分数时引入LoRA权重。

这就是Diffusers LoraLoaderMixin对LoRA加载的方法。这种方法的好处是不会更新模型权重,我们可以轻松地重置LoRA并提供一个新的α来定义LoRA权重。

Leave a Reply

Your email address will not be published. Required fields are marked *