Datawhale官方的Task3链接:Task03
往期Task1、Task2链接:Task01, Task02
【学习者手册】:链接直达
【QA文档】:链接直达
【赛事官网】:链接直达
ComfyUI
ComfyUI是一个基于深度学习的图像生成软件,它通常被用于创建高质量的图像,特别是与AI艺术生成相关。该软件支持使用各种预训练的模型,用户可以通过简单的拖放操作来构建自己的图像生成流程。ComfyUI的特点包括直观的用户界面和强大的脚本功能,使得用户能够轻松地定制和优化图像生成过程。
ComfyUI的核心在于其节点编辑系统,用户可以通过组合不同的节点来构建复杂的图像生成脚本。这些节点可能包括模型加载器、图像处理模块、输出模块等。软件的一个显著优点是它能够支持多种模型和工具链,允许用户进行各种创意实验。
此外,ComfyUI经常更新,添加新功能和改进现有功能,以保持与最新技术的发展同步。它还具有一个活跃的社区,用户可以在这个社区中交流想法、分享预设以及获取支持。
参考手册:ComfyUI用户手册
速通ComfyUI
接下来我们来跑一下跟着教程速通一下ComfyUI:
新建实例
在这里,我们依旧选择使用魔搭社区提供的Notebook和免费的GPU算力体验来体验ComfyUI。
这里需要注意的是,不要使用 Task1 中的baseline实例来跑后面内容,会发生环境重叠出错。
执行git拉取项目等命令
等待实例启动,进入实例,新建终端执行命令
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_0/checkpoints/
mv epoch=0-step=500.ckpt /mnt/workspace/models/lightning_logs/version_0/checkpoints/
一键执行安装程序(大约10min)
进入预览界面
PS:如果链接访问白屏,或者报错,就等一会再访问重试,程序可能没有正常启动完毕
待执行到最后一个代码块出现跳转链接时,可以点击跳转,也可以复制链接到浏览器中访问
这是我打开之后的工作流界面:
配置工作流JSON文件
先将task3教程中的两个JSON文件下载到本地:
在工作流中点击加载:
这里可能会显示爆红,这意味着前面的模型下载和配置没有做好:
回到jupyter中检查:
正常加载后界面如下,这是两个JSON文件的各个模块说明
K采样器的参数说明
接下来我将详细介绍出图参数调整模块(K采样器)的参数说明
Positive:
正向条件
Negative:
负向条件
latent_image:
将被去噪的潜在图像
seed:
用于创建噪声的随机种子
control_after_generate:
在每个提示后更改上述种子号的能力。节点可以randomize
、increment
、decrement
或保持种子号fixed
。
steps:
去噪过程中使用的步骤数。采样器允许进行的步骤越多,结果就越准确。但过大的steps会导致出图过爆,出现不好的画面。
cfg:
分类器自由引导(cfg)比例决定了采样器在实现提示内容方面的积极性。更高的比例强制图像更好地代表提示,但设置过高的比例会负面影响图像质量。
sampler_name:
使用哪个采样器
scheduler:
使用哪种计划
denoise:
通过噪声擦除多少潜在图像的信息
结束动作
出图完毕之后,记得保存修改并停止远程ComfyUI的连接,并关闭实例。
ComfyUI的丰富组件及搭配,给许多不同的独立场景工作流提供了可能,感兴趣的同学可以去了解下,下面推荐一位up主:赛博迪克朗的个人空间-赛博迪克朗个人主页-哔哩哔哩视频 (bilibili.com)
LoRA微调
低秩适应(LoRA)。LoRA是什么?它是如何工作的?与其他流行的微调方法相比如何?
LoRA思路
低秩适应(Low-Rank Adaptation)是一种参数高效的微调技术,其核心思想是对大型模型的权重矩阵进行隐式的低秩转换。
什么是低秩转换呢?
整体的想法和概念与主成分分析(PCA)和奇异值分解(SVD)有关,我们通过一个较低维度的表示来近似表示一个高维矩阵或数据集。
换句话说,我们试图找到原始特征空间(或矩阵)中少数维度的(线性)组合,能够捕捉数据集中大部分的信息。
如下图所示:
1. 步数相关 repeat / epoch / batch_size
- epoch多轮次比单轮次要好,通过设置可以每轮保存一组模型,多轮次说明有多组模型,得到好概率的可能是比单轮次就一个模型的概率是要高的,epoch一般设置5~10;
- batch_size要是高,一是可能显存带不动,二是值越高训练越快 越可能学得囫囵吞枣收敛得慢。
batch_size 从1到2,Ir就要*2
2. 速率/质量相关 Ir学习率 / Dim网络维度 / Optimizer优化器
学习率Ir,控制了每次参数更新的幅度,过低参数更新幅度小 训练收敛就慢 陷入局部最优解 训练时间增加,过低也会导致训练初期无法有效学习到特征;过高,参数更新幅度大 错过全局最优解附近的局部最优解 找不到稳定的收敛点,常用cos的学习率衰减策略,初始使用较大的学习率快读接近全局最优解,在随着训练的进行逐渐减小学习率,使得逐渐细化搜索空间,找到全局附近的局部最优解,提高收敛的稳定性。
前面提到的“bs提高,Ir也要提高”是因为bs较大时会导致参数更新的方差减小从而使得梯度更新幅度也减小,这时就需要Ir也相应地增大。我这里还在思考bs、Ir都提高了的话,训练速度是不是也会大幅度提高?chat告诉我不一定,因为bs大占用的内存和计算量也增加,Ir大模型容易不稳定不收敛,理论上肯定是会增加训练速度,但实际上还是要根据你的显卡来设置bs值,训练速度变向是看钞能力,跑起来才是王道,先优先考虑生成效果再训练速度吧~
3. 优化器(Optimizer)
Lion比AdamW8bit的优点是更快,总训练步数在3k-1w内都可以考虑选它。
图像这里居然不要很多,作者这里是考虑到耗费时间等因素,我觉得有道理,如果我训练效果不好,我将尝试将重新创建我的数据集,只选出质量最高的30来张图像来做训练。
loss值的最优区间0.07-0.09,但loss值只是一个参考,但更多的还是要通过XYZ测试来看模型的好坏,原图VS根据原图tag测试模型生成的图片。