一、comfyUI
ComfyUI是一个基于节点的Stable Diffusion用户界面,可以进行文字转图像、图像转图像、LoRA等多种图像生成任务。
comfyUI官方地址:https://github.com/comfyanonymous/ComfyUI
comfyUI官方演示:https://comfyanonymous.github.io/ComfyUI_examples/
使用魔塔安装comfyUI步骤
网址:我的Notebook · 魔搭社区 (modelscope.cn)
1.1 下载脚本代码文件
file→new→terminal,复制代码粘贴到新建的Terminal中
git lfs install
git clone https://www.modelscope.cn/datasets/maochase/kolors_test_comfyui.git
mv kolors_test_comfyui/* ./
rm -rf kolors_test_comfyui/
mkdir -p /mnt/workspace/models/lightning_logs/version_2/checkpoints/
mv epoch=0-step=500.ckpt /mnt/workspace/models/lightning_logs/version_2/checkpoints/
1.2 双击comfyUI.ipynb进入文件
1.3 一键执行,安装程序
1.4 进入预览界面
如果出现下面的网址,复制网址在新网页打开
1.5 尝试ComfyUI工作流
加载工作流脚本
输入正向提示词和负向提示词,点击Queue Prompt运行
二、Lora微调
通俗易懂的介绍视频:通俗易懂理解全量微调和LoRA微调_哔哩哔哩_bilibili
总结:通过矩阵分解,降秩的思想,节省空间和成本
import os
cmd = """
python DiffSynth-Studio/examples/train/kolors/train_kolors_lora.py \
--pretrained_unet_path models/kolors/Kolors/unet/diffusion_pytorch_model.safetensors \
--pretrained_text_encoder_path models/kolors/Kolors/text_encoder \
--pretrained_fp16_vae_path models/sdxl-vae-fp16-fix/diffusion_pytorch_model.safetensors \
--lora_rank 16 \
--lora_alpha 4.0 \
--dataset_path data/lora_dataset_processed \
--output_path ./models \
--max_epochs 1 \
--center_crop \
--use_gradient_checkpointing \
--precision "16-mixed"
""".strip()
os.system(cmd)
下面是命令的详细解释:
python DiffSynth-Studio/examples/train/kolors/train_kolors_lora.py
:运行用于Kolors模型的LoRA训练脚本。--pretrained_unet_path
:指定预训练的UNet模型的路径。--pretrained_text_encoder_path
:预训练文本编码器的路径。--pretrained_fp16_vae_path
:使用FP16精度的预训练VAE模型的路径。--lora_rank
:设置LoRA的秩(rank)。--lora_alpha
:指定LoRA的缩放因子。--dataset_path
:处理后的数据集的路径。--output_path
:保存训练后的模型的目录。--max_epochs
:训练的轮数(这里设为1)。--center_crop
:在训练过程中对图像应用中心裁剪。--use_gradient_checkpointing
:启用梯度检查点,以节省内存。--precision "16-mixed"
:使用混合精度(FP16)进行训练。
在使用LoRA(Low-Rank Adaptation)进行模型训练时,lora_rank
和lora_alpha
是两个重要的超参数,它们分别对模型的适应能力和训练效果产生影响。
2.1 lora_rank
- 定义:
lora_rank
是指低秩分解的秩(rank)。在LoRA中,模型的权重矩阵被分解为两个低秩矩阵的乘积,lora_rank
决定了这两个低秩矩阵的维度大小。 - 作用:
- 模型容量:
lora_rank
越大,低秩矩阵能够捕获的特征信息越多,模型的表达能力越强。然而,较高的lora_rank
也意味着更多的参数,因此需要更多的计算资源和内存。 - 精度与资源的平衡:较低的
lora_rank
可以减少训练时间和内存消耗,但可能会导致模型表达能力不足,尤其在处理复杂任务时。反之,较高的lora_rank
可以提高模型的精度,但也会增加计算开销。
- 模型容量:
2.2 lora_alpha
- 定义:
lora_alpha
是一个缩放因子(scaling factor),用于调整LoRA产生的矩阵对原始权重矩阵的影响。它类似于一个学习率缩放参数。 - 作用:
- 控制更新幅度:
lora_alpha
决定了LoRA矩阵在应用到原始权重时的缩放比例。较大的lora_alpha
值意味着LoRA对模型权重的调整更大,可能导致模型快速适应新的数据分布,但也可能引入更大的不稳定性或过拟合风险。 - 平衡模型适应性:较小的
lora_alpha
值可以使模型更稳定地学习,减少过拟合的风险,但也可能导致学习速度变慢,特别是在需要快速适应新任务或数据分布时。
- 控制更新幅度:
2.3 如何选择合适的值?
lora_rank
:通常,较简单的任务或较小的数据集可以使用较小的lora_rank
,如8或16;而较复杂的任务或大规模数据集则可能需要较高的lora_rank
,如32或64。lora_alpha
:开始时可以选择一个适中的值,如4或8,然后根据验证集的表现进行调整。如果模型收敛过慢或训练不稳定,可以尝试调整lora_alpha
。