admin管理员组

文章数量:1531705

Datawhale X 魔搭 AI夏令营第四期魔搭 Task3:进阶上分-实战优化

ComfyUI应用场景探索

Stable Diffusion的基本原理是通过降噪的方式(如完全的噪声图像),将一个原本的噪声信号变为无噪声的信号(如人可以理解的图像)。其中的降噪过程涉及到多次的采样。采样的系数在KSampler中配置:

  • seed:控制噪声产生的随机种子
  • control_after_generate:控制seed在每次生成后的变化
  • steps:降噪的迭代步数,越多则信号越精准,相对的生成时间也越长
  • cfg:classifier free guidance决定了prompt对于最终生成图像的影响有多大。更高的值代表更多地展现prompt中的描述。
  • denoise: 多少内容会被噪声覆盖 sampler_name、scheduler:降噪参数

ComfyUI 则是将 webUI的流程分解为小模块,让你可以手动魔改

运行的ComfyUI:

Lora微调

Lora微调原理和优势

LoRA通过在预训练模型的关键层中添加低秩矩阵来实现。这些低秩矩阵通常被设计成具有较低维度的参数空间,这样它们就可以在不改变模型整体结构的情况下进行微调。本质就是将大型矩阵拆成,两个小矩阵相乘,从而降低计算复杂度。
M R × C = A R × k ⋅ B k × C M_{R \times C} = A_{R \times k} \cdot B_{k \times C} MR×C=AR×kBk×C
在特定领域有少量标注数据的情况下,也可以有效地对模型进行个性化调整,可以迅速适应新的领域或特定任务。有助于保持模型在未见过的数据上的泛化能力,同时还能学习到特定任务的知识。LoRA旨在通过仅微调模型的部分权重,而不是整个模型,从而减少所需的计算资源和存储空间。

Lora详解

import os
cmd = """
python DiffSynth-Studio/examples/train/kolors/train_kolors_lora.py \ # 选择使用可图的Lora训练脚本DiffSynth-Studio/examples/train/kolors/train_kolors_lora.py
  --pretrained_unet_path models/kolors/Kolors/unet/diffusion_pytorch_model.safetensors \ # 选择unet模型
  --pretrained_text_encoder_path models/kolors/Kolors/text_encoder \ # 选择text_encoder
  --pretrained_fp16_vae_path models/sdxl-vae-fp16-fix/diffusion_pytorch_model.safetensors \ # 选择vae模型
  --lora_rank 16 \ # lora_rank 16 表示在权衡模型表达能力和训练效率时,选择了使用 16 作为秩,适合在不显著降低模型性能的前提下,通过 LoRA 减少计算和内存的需求
  --lora_alpha 4.0 \ # 设置 LoRA 的 alpha 值,影响调整的强度
  --dataset_path data/lora_dataset_processed \ # 指定数据集路径,用于训练模型
  --output_path ./models \ # 指定输出路径,用于保存模型
  --max_epochs 1 \ # 设置最大训练轮数为 1
  --center_crop \ # 启用中心裁剪,这通常用于图像预处理
  --use_gradient_checkpointing \ # 启用梯度检查点技术,以节省内存
  --precision "16-mixed" # 指定训练时的精度为混合 16 位精度(half precision),这可以加速训练并减少显存使用
""".strip()
os.system(cmd) # 执行可图Lora训练    

参数列表

参数id脚本中的数值解释
pretrained_unet_pathmodels/kolors/Kolors/unet/diffusion_pytorch_model.safetensors指定预训练UNet模型的路径
pretrained_text_encoder_pathmodels/kolors/Kolors/text_encoder指定预训练文本编码器的路径
pretrained_fp16_vae_pathmodels/sdxl-vae-fp16-fix/diffusion_pytorch_model.safetensors指定预训练VAE模型的路径
lora_rank16设置LoRA的秩(rank),影响模型的复杂度和性能
lora_alpha4设置LoRA的alpha值,控制微调的强度
dataset_pathdata/lora_dataset_processed指定用于训练的数据集路径
output_path./models指定训练完成后保存模型的路径
max_epochs1设置最大训练轮数为1
center_crop启用中心裁剪,用于图像预处理
use_gradient_checkpointing启用梯度检查点,节省显存
precision“16-mixed”设置训练时的精度为混合16位精度(half precision)

LoRA训练

接下来是我自己训练LoRA的流程:

创建自己的数据集

使用魔搭帮助自己创见数据集,csv等可以自己生成:

下载自己的数据集,并继续用baseline训练

#数据集下载
from modelscope.msdatasets import MsDataset

ds =  MsDataset.load(
    'ThereAreBearsComing/ZzzLoRAData', 	# 自己的数据集
                     subset_name='default', 
                     split='train',
                    cache_dir="/mnt/workspace/kolors/data" # 添加baseline中的原定路径,让路径对应
)
#您可按需配置 subset_name、split,参照“快速使用”示例代码

Run baseline进行训练,之后发布LoRA:
https://modelscope/models/ThereAreBearsComing/Thekingofwolfkids-KolorsTrained-ZZZ-LoRA
获得自己的LoRA,需要更换comfyUI的LoRA路径,并设置LoRA权重

用ComfyUI开始生成:

提示词反向提示词结果
16岁的女孩在雪地里醒来,四周覆盖着厚厚的积雪,天空灰暗,远处有极光。女孩穿着厚实的蓝色羽绒服,内搭羊毛衫,下身是保暖裤,脚穿雪靴,戴着蓝色针织帽和手套,脖子围着一条围巾。深棕色长发绑成马尾辫,明亮的蓝色眼睛,二次元丑陋、变形、嘈杂、模糊、低对比度,扭曲的手指,多余的手指、色情擦边、热带气候、阳光明媚、温暖环境
女孩在雪地中艰难前行,背景中有雪松和冰冻的河流。女孩穿着厚实的蓝色羽绒服,内搭羊毛衫,下身是保暖裤,脚穿雪靴,戴着蓝色针织帽和手套,脖子围着一条围巾。深棕色长发绑成马尾辫,明亮的蓝色眼睛,二次元丑陋、变形、嘈杂、模糊、低对比度,扭曲的手指,多余的手指、色情擦边、沙漠、炎热天气、干旱地区
女孩与一只驯鹿相遇,两者相互观察,背景中有雪地和树木。女孩穿着厚实的蓝色羽绒服,内搭羊毛衫,下身是保暖裤,脚穿雪靴,戴着蓝色针织帽和手套,脖子围着一条围巾。深棕色长发绑成马尾辫,明亮的蓝色眼睛,二次元丑陋、变形、嘈杂、模糊、低对比度,扭曲的手指,多余的手指、色情擦边、热带雨林、城市街道、家养宠物
女孩正在建造一个简易的小屋,背景中有木材堆和雪墙。女孩穿着厚实的蓝色羽绒服,内搭羊毛衫,下身是保暖裤,脚穿雪靴,戴着蓝色针织帽和手套,脖子围着一条围巾。深棕色长发绑成马尾辫,明亮的蓝色眼,二次元丑陋、变形、嘈杂、模糊、低对比度,色情擦边、色情擦边、高楼大厦、现代建筑、豪华别墅
女孩和其他几个幸存者围坐在篝火旁,背景中有简易小屋。女孩穿着厚实的蓝色羽绒服,内搭羊毛衫,下身是保暖裤,脚穿雪靴,戴着蓝色针织帽和手套,脖子围着一条围巾。深棕色长发绑成马尾辫,明亮的蓝色眼睛,二次元丑陋、变形、嘈杂、模糊、低对比度,扭曲的手指,多余的手指、色情擦边、孤独、荒岛、无人区
女孩手拿弓箭和同伴们在雪地中追踪足迹,准备狩猎。背景中有雪地和冰川,环境中有大雾。女孩穿着厚实的蓝色羽绒服,内搭羊毛衫,下身是保暖裤,脚穿雪靴,戴着蓝色针织帽和手套,脖子围着一条围巾。深棕色长发绑成马尾辫,明亮的蓝色眼睛,二次元丑陋、变形、嘈杂、模糊、低对比度,扭曲的手指,多余的手指、色情擦边、都市生活、超市购物、快餐店
女孩和同伴们庆祝狩猎成功,背景中有篝火和烤肉。女孩穿着厚实的蓝色羽绒服,内搭羊毛衫,下身是保暖裤,脚穿雪靴,戴着蓝色针织帽和手套,脖子围着一条围巾。深棕色长发绑成马尾辫,明亮的蓝色眼睛,二次元丑陋、变形、嘈杂、模糊、低对比度,扭曲的手指,多余的手指、色情擦边、饥饿、贫困、缺乏食物
女孩和同伴们踏上了前往未知目的地的旅程,背景中有山脉和雪原。女孩穿着厚实的蓝色羽绒服,内搭羊毛衫,下身是保暖裤,脚穿雪靴,戴着蓝色针织帽和手套,脖子围着一条围巾。深棕色长发绑成马尾辫,明亮的蓝色眼睛,二次元丑陋、变形、嘈杂、模糊、低对比度,扭曲的手指,多余的手指、色情擦边、停滞不前、放弃希望、独自一人

最后提交作品:

本文标签: 进阶夏令营实战第四期魔搭