一、工具初探一ComfyUI应用场景探索
1.初识ComfyUI
ComfyUI 是一个用于创建图形用户界面的框架,主要在机器学习和深度学习的应用中使用。它的设计旨在简化用户交互,提升可视化体验,使得即使没有编程经验的用户也能方便使用复杂的模型和工具。
ComfyUI 核心模块
1. 界面构建模块:ComfyUI 提供了一系列工具和控件,用于构建用户界面。这些控件包括按钮、滑块、文本框等,用户可以通过简单的配置来创建所需的界面布局。
2. 数据处理模块:处理输入数据和输出结果的功能,允许用户轻松地导入数据、处理计算和展示结果。这对于需要大量数据处理的机器学习任务尤为重要。
3. 模型集成模块:ComfyUI 支持集成各种机器学习模型,提供简单的接口来加载和使用它们。用户可以方便地选择不同模型,并对其进行参数调整。
4. 可视化模块:为了帮助用户理解模型输出或数据处理过程,ComfyUI 提供了数据和结果的可视化工具,比如图表、图像展示等,增强了用户体验。
5. 配置管理模块:用户可以通过配置文件或者方便的界面来管理和保存配置信息,提供了灵活性和可重复性。
6. 插件系统:ComfyUI 支持插件扩展,用户或开发者可以创建自定义功能并将其集成到现有框架中,进一步提升其灵活性和实用性。
下面让我们跟随小k一起来探究一下ComfyUI图片生成流程
2.20分钟速通安装ComfyUI
在这里,我们依旧选择使用魔搭社区提供的Notebook和免费的GPU算力体验来体验ComfyUI。
下载安装ComfyUI的执行文件
和task1中微调完成Lora文件
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/
然后粘贴代码下载文件,点击上方运行按钮一键安装
复制This is the URL to access ComfyUI后面的链接到浏览器
3.浅尝ComfyUI工作流
这一部分文件上传较为麻烦,这里有官方链接可以进行查看下载
Datawhale (linklearner.com)https://linklearner.com/activity/14/10/37
成果展示
不带Lora的工作流样例
带Lora的工作流样例
二、Lora微调
Lora简介
LoRA (Low-Rank Adaptation) 微调是一种用于在预训练模型上进行高效微调的技术。它可以通过高效且灵活的方式实现模型的个性化调整,使其能够适应特定的任务或领域,同时保持良好的泛化能力和较低的资源消耗。这对于推动大规模预训练模型的实际应用至关重要。
Lora微调的原理
LoRA通过在预训练模型的关键层中添加低秩矩阵来实现。这些低秩矩阵通常被设计成具有较低维度的参数空间,这样它们就可以在不改变模型整体结构的情况下进行微调。在训练过程中,只有这些新增的低秩矩阵被更新,而原始模型的大部分权重保持不变。
Lora微调的优势
快速适应新任务
在特定领域有少量标注数据
的情况下,也可以有效地对模型进行个性化调整
,可以迅速适应新的领域或特定任务。
保持泛化能力
LoRA通过微调模型的一部分,有助于保持模型在未见过的数据上的泛化能力
,同时还能学习到特定任务的知识。
资源效率
LoRA旨在通过仅微调模型的部分权重,而不是整个模型,从而减少所需的计算资源和存储空间。
Lora详解
现在我们来针对可图比赛中的微调代码进行一个深入的了解。
Task2中的的微调代码
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训练
参数详情表
UNet、VAE和文本编码器的协作关系
-
UNet:负责根据输入的噪声和文本条件生成图像。在Stable Diffusion模型中,UNet接收由VAE编码器产生的噪声和文本编码器转换的文本向量作为输入,并预测去噪后的噪声,从而生成与文本描述相符的图像
-
VAE:生成模型,用于将输入数据映射到潜在空间,并从中采样以生成新图像。在Stable Diffusion中,VAE编码器首先生成带有噪声的潜在表示,这些表示随后与文本条件一起输入到UNet中
-
文本编码器:将文本输入转换为模型可以理解的向量表示。在Stable Diffusion模型中,文本编码器使用CLIP模型将文本提示转换为向量,这些向量与VAE生成的噪声一起输入到UNet中,指导图像的生成过程
三、如何准备一个高质量的数据集
以下渠道来源均需要考虑合规性问题,请大家在使用数据集过程中谨慎选择。
来源类型 | 推荐 |
公开的数据平台 | 魔搭社区内开放了近3000个数据集,涉及文本、图像、音频、视频和多模态等多种场景,左侧有标签栏帮助快速导览,大家可以看看有没有自己需要的数据集。 其他数据平台推荐:
|
使用API或爬虫获取 |
|
数据合成 | 利用现有的图形引擎(如Unity、Unreal Engine)或特定软件生成合成数据,这在训练某些类型的模型时非常有用。 最近Datawhale联合阿里云天池,做了一整套多模态大模型数据合成的学习,欢迎大家一起交流。从零入门多模态大模型数据合成 |
数据增强 | 对于较小的数据集,可以通过旋转、翻转、缩放、颜色变换等方式进行数据增强。 |
购买或定制 | 如果你的应用是特定领域的,比如医学影像、卫星图像等,建议从靠谱的渠道购买一些数据集。 |