将 LoRA 模型融合进 Stable Diffusion 模型中

一个简单的模型融合方法。

前言

在训练 Stable Diffusion 模型时,如果使用全量微调的方式,如 Dreambooth,需要大量的 GPU 显存进行训练,这使微调 Stable Diffusion 模型的成本变得很高。但 LoRA 可以使微调 Stable Diffusion 模型变得很容易,仅用较少的 GPU 显存就能进行训练,并且也能实现全量微调的效果。

训练得到的 LoRA 模型需要搭配 Stable Diffusion 模型进行使用,如果不想每次都使用 LoRA 模型,可以将 LoRA 模型融合进 Stable Diffusion 模型中,下面介绍一个简单的方法。

配置环境

将 LoRA 融合进 Stable Diffusion 模型之前需要配置环境。

安装 Git 和 Python

Windows

进入 Python 官网,下载 Python 安装包并安装,

再进入 Git 官网,下载 Git 安装包并安装。

Linux

使用 Linux 发行版自带的包管理器安装 Python 和 Git。

下载转换工具

融合模型需要 LyCORISsd-scripts,这里先新建一个文件夹,进入文件夹后打开终端(在 Windows 上可以使用 Git Bash),使用下面的命令进行下载。

1
2
git clone https://github.com/KohakuBlueleaf/LyCORIS
git clone https://github.com/kohya-ss/sd-scripts

安装依赖

转换工具下载好后需要相应的依赖才能运行,这里使用命令创建一个虚拟环境用于安装依赖。

1
2
3
4
5
# Linux
python3 -m venv venv

# Windows
python -m venv venv

再进入创建好的虚拟环境。

1
2
3
4
5
# Windows
source venv/Scripts/activate

# Linux
source venv/bin/activate

如果重新打开后需要重新进入虚拟环境再进行模型融合。

进入虚拟环境后就可以安装依赖了。

1
2
3
pip install -e LyCORIS
pip install -e sd-scripts
pip install -r LyCORIS/requirements-kohya.txt

融合模型

环境都准备好后,可以将 LoRA 模型融合进 Stable Diffusion 中。先把 LoRA 模型和 Stable Diffusion 模型放到当前所在的文件夹中(这样在输入命令时就不需要输入完整的模型路径),接下来就可以进行模型融合了。

1
python LyCORIS/tools/merge.py animagine-xl-3.1.safetensors artist_all_in_one_2-000036.safetensors licyk_style_v0.1.safetensors --is_sdxl --dtype fp16

命令中的的animagine-xl-3.1.safetensors为 Stable Diffusion 模型,artist_all_in_one_2-000036.safetensors为 LoRA 模型,licyk_style_v0.1.safetensors为融合模型后保存的模型名称,--is_sdxl用于指定模型的种类为 Stable Diffusion XL 模型,--dtype fp16指定保存的模型精度为 fp16。

融合模型需要较多的内存,推荐电脑的内存大于或等于 64G,低于该内存大小可能会消耗大量的虚拟内存(swap),使硬盘的读写量增大。

融合结束后,可以看到当前文件夹中多了licyk_style_v0.1.safetensors这个 Stable Diffusion 模型,直接使用该模型就可以达到使用原来的 Stable Difusion 模型(animagine-xl-3.1.safetensors) + LoRA 模型(artist_all_in_one_2-000036.safetensors)的效果了。


将 LoRA 模型融合进 Stable Diffusion 模型中
http://licyk.github.io/2024/10/01/merge-lora-to-stable-diffusion-model/
作者
licyk
发布于
2024年10月1日
许可协议