欢迎关注我的CSDN:https://spike.blog.csdn.net/
本文地址:https://spike.blog.csdn.net/article/details/141638928
免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。
在 Diffusion 图像生成框架中,LoRA (Low-Rank Adaptation) 是用于模型微调的技术,通过在模型的权重矩阵中引入低秩结构来实现。这种方法,可以在不显著增加模型参数数量的情况下,有效地调整和优化模型的行为。具体来说,LoRA 通过在权重矩阵中添加一个小型的低秩矩阵,来调整原有的权重,从而实现对模型的微调。这样做的好处是可以保持模型整体参数量的可控性,同时允许模型在特定任务上进行更精细的调整,提高生成图像的质量和多样性。在 Diffusion 模型中,LoRA 可以应用于条件生成任务,使得模型能够更好地适应不同的输入条件,生成更加符合预期的图像结果。
以 flux1dev-asianfemale 的 LoRA 为例,演示如何使用:
下载模型,将模型放入 ComfyUI 的 LoRA 文件夹,即:
ComfyUI/models/loras/flux1_asian_female_v0.1.safetensors
启动 ComfyUI:
nohup python3 -u main.py --listen 0.0.0.0 > nohup.run_main.out &
在基础流程中,添加节点 LoRA加载器仅模型 (LoRALoaderModelOnly),直接连接在 UNET 加载器 (Load Diffusion Model) 之后即可,其余不变,例如:
调整 LoRA 的权重,调整至 0.4~0.6 即可。
输入提示词:
a photo of a woman.
测试图像输出,左侧是使用 LoRA 权重 0.6,使用 LoRA 之后图像更偏向于亚洲人脸,右侧是原图,即:
需要注意的是,LoRA 需要适配权重精度,FP8 或 FP16,与训练相关,例如 flux1dev-asianfemale
为例,需要适配 fp8_e4m3fn
,与 Diffusion 模型无关,与 CLIP 模型无关。
- 适用于 Flux 的 FP8 版
flux1-dev-fp8.safetensors
,权重类型fp8_e4m3fn
,t5xxl_fp8_e4m3fn.safetensors
模型 - 适用于 Flux 的 FP8 版
flux1-dev.safetensors
权重类型fp8_e4m3fn
,t5xxl_fp16.safetensors
模型
当 Diffusion 模型 (Flux) 的精度,与 LoRA 模型的精度不匹配时,图像输出异常:
如果遇到异常:module 'torch' has no attribute 'float8_e4m3fn'
则表示 PyTorch 版本过低,安装最新版本即可,例如 torch==2.4.0
pip3 install torch==2.4.0 torchvision torchaudio -i https://pypi.tuna.tsinghua.edu.cn/simple
测试 PyTorch 是否安装成功,即:
python
import torch
print(torch.__version__) # 2.4.0
print(torch.cuda.is_available()) # True
exit()
测试自训练的 LoRA 模型的效果,权重依次是 0.0 -> 0.6 -> 0.8 -> 1.0:
提示词:
This is a photo of a girl named [xxx]. The image is a high-resolution photograph of a young Asian woman with long, straight, dark brown hair and bangs that frame her face.
这是一张名叫 [xxx] 的女孩的照片。这张照片是一张高分辨率的照片,展示了一位年轻的亚洲女性,她有着长直的深棕色头发和刘海,刘海勾勒出她的脸庞。
图像如下 (图像来自于网络,仅用于测试),LoRA 权重 0.0 -> 0.6:
图像如下 (图像来自于网络,仅用于测试),LoRA 权重 0.8 -> 1.0: