Datawhale × 魔塔Al夏令营——进阶上分-实战优化_task 3

一.初识ComfyUI

1.1 ComfyUI 是什么?

ComfyUI 是一个图形化的界面,它将各种处理图像的功能模块化,并把这些模块通过一个直观的拖放式界面展示给用户。你可以把 ComfyUI 想象成一个拼图游戏,每块拼图代表一个功能,比如生成图像、调整颜色、增加特效等。你可以把这些拼图组合在一起,构建出一个完整的图像处理流程,而不需要写代码。

1.2 为什么使用 ComfyUI?

  1. 易于使用:不需要编程经验就能操作。ComfyUI 把复杂的图像生成和处理功能以简单的模块形式展现出来,用户只需要把这些模块拖到界面上并连接起来,就能完成整个图像生成过程。

  2. 高度定制化:你可以根据自己的需求选择不同的模块来构建工作流。比如,你可以先用一个模块生成一个基础图像,然后再用另一个模块对它进行润色,最后用第三个模块来增加一些艺术效果。

  3. 实时预览:ComfyUI 允许你在调整参数时实时预览结果,这样你可以随时看到你的修改对图像的影响,直到你对最终效果满意为止。

  4. 适合各种用户:无论你是艺术家、设计师,还是对 AI 图像生成感兴趣的初学者,ComfyUI 都能帮助你更轻松地实现创意。

1.3 ComfyUI 的主要功能

  • 模块化设计:每个模块都有独特的功能,如生成、编辑、风格化等。你可以自由组合这些模块,形成自己的工作流。

  • 直观的界面:ComfyUI 的界面非常友好,你只需将模块拖放到画布上并进行连接,然后调整参数,就可以开始生成图像。

  • 多样化的应用场景:从艺术创作到研究实验,再到图像处理,ComfyUI 都能发挥作用。比如你想生成一幅特定风格的图像,你可以选择一个生成模块,然后再加上一个风格化模块,最后输出一幅独特的艺术作品。

1.4  ComfyUI 是如何工作的?

视频直达:2.2ComfyUI应用场景探索_哔哩哔哩_bilibili

1.4.1 速通安装ComfyUI

在这里,我们依旧选择使用魔搭社区提供的Notebook和免费的GPU算力体验来体验ComfyUI。

1.4.2 下载脚本代码文件

下载安装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/ 

1.4.3 进入ComfyUI的安装文件

1.4.4 一键执行安装程序(大约10min)

1.4.5 进入预览界面

当执行到最后一个节点的内容输出了一个访问的链接的时候,复制链接到浏览器中访问

PS:如果链接访问白屏,或者报错,就等一会再访问重试,程序可能没有正常启动完毕

1.5 资源网站

名称

链接地址

在魔搭使用ComfyUI,玩转AIGC!

https://modelscope.cn/headlines/article/429

ComfyUI的官方地址

https://github.com/comfyanonymous/ComfyUI

ComfyUI官方示范

https://comfyanonymous.github.io/ComfyUI_examples/

别人的基础工作流示范

https://github.com/cubiq/ComfyUI_Workflows

https://github.com/wyrde/wyrde-comfyui-workflows

工作流分享网站

https://comfyworkflows.com/

推荐一个比较好的comfyui的github仓库网站

https://github.com/ZHO-ZHO-ZHO/ComfyUI-Workflows-ZHO?tab=readme-ov-file

二.初识Lora

2.1 什么是 Lora?

Lora 是一种微调方法,主要目的是在保持大模型性能的同时,减少训练所需的计算和内存资源。传统的模型微调需要更新模型中的所有参数,这不仅需要大量的计算资源,还可能导致过拟合,特别是在训练数据量有限的情况下。Lora 提供了一种解决方案,通过只调整模型中的一小部分参数来达到类似的效果。

2.2 Lora的工作原理

Lora 的核心思想是通过引入低秩矩阵分解,来减少模型中需要调整的参数数量。具体来说,Lora 在模型的某些层(通常是注意力层或前馈层)中插入低秩矩阵,用这些矩阵来代替原本需要训练的大量参数。

  1. 参数分解:在模型训练之前,LoRA 将模型的权重矩阵分解为两个低秩矩阵。这个分解使得模型的权重矩阵可以用更少的参数来表示。

  2. 参数调整:在训练过程中,LoRA 只微调这些低秩矩阵,而不调整原始的权重矩阵。这意味着模型的大部分参数保持不变,从而显著减少了训练所需的计算和内存资源。

  3. 模型恢复:训练完成后,微调后的低秩矩阵与原始权重矩阵结合,生成最终的模型。这个模型保留了大模型的强大能力,同时对新任务有良好的适应性。

2.3 Lora 的优点

  1. 资源高效:由于只调整一小部分参数,Lora 的微调过程显著减少了计算和内存资源的消耗。这使得在资源有限的环境下,也能够对大模型进行微调。

  2. 避免过拟合:Lora 通过限制需要调整的参数数量,减少了模型对训练数据的过度依赖,从而降低了过拟合的风险。

  3. 灵活性强:Lora 可以很容易地集成到现有的大模型架构中,如 GPT、BERT、Stable Diffusion 等,使得这些模型在处理新任务时更加灵活。

  4. 应用广泛:Lora 可以用于各种任务的微调,无论是文本生成、图像生成,还是其他自然语言处理或计算机视觉任务。

2.4 应用场景

  • 生成式 AI:在图像生成模型(如 Stable Diffusion)中使用 Lora,可以在不修改整个模型的情况下,快速适应不同的图像风格或特定任务。

  • 大语言模型:对于像 GPT-3 这样的语言模型,Lora 可以用于微调模型以适应特定的对话风格或领域,如医疗、法律等。

  • 跨任务适应:Lora 还可以帮助大模型在多个不同任务之间快速切换,而不需要重新训练整个模型。

2.5 Lora 的实施步骤

  1. 选择目标层:首先需要确定模型中哪些层需要进行低秩分解。通常是注意力机制中的投影矩阵或前馈层。

  2. 矩阵分解:将选定的权重矩阵分解为两个低秩矩阵。这一步骤会引入额外的参数,但数量远少于原始的参数数量。

  3. 训练:在微调过程中,只更新分解后的低秩矩阵,而不改变模型的其他参数。

  4. 合并权重:在推理阶段,将微调后的低秩矩阵与原始权重矩阵合并,得到最终的模型。

2.6 详解Lora

视频直达:通俗易懂理解全量微调和LoRA微调_哔哩哔哩_bilibili

2.6.1 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训练    

2.6.2 参数详情

参数名称

参数值

说明

pretrained_unet_path

models/kolors/Kolors/unet/diffusion_pytorch_model.safetensors

指定预训练UNet模型的路径

pretrained_text_encoder_path

models/kolors/Kolors/text_encoder

指定预训练文本编码器的路径

pretrained_fp16_vae_path

models/sdxl-vae-fp16-fix/diffusion_pytorch_model.safetensors

指定预训练VAE模型的路径

lora_rank

16

设置LoRA的秩(rank),影响模型的复杂度和性能

lora_alpha

4

设置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)

三.准备一个高质量的数据集

 3.1 数据集来源整理

以下渠道来源均需要考虑合规性问题,请大家在使用数据集过程中谨慎选择。

来源类型

推荐

公开的数据平台

魔搭社区内开放了近3000个数据集,涉及文本、图像、音频、视频和多模态等多种场景,左侧有标签栏帮助快速导览,大家可以看看有没有自己需要的数据集。

其他数据平台推荐:

  • ImageNet:包含数百万张图片,广泛用于分类任务,也可以用于生成任务。

  • Open Images:由Google维护,包含数千万张带有标签的图片。

  • Flickr:特别是Flickr30kK和Flickr8K数据集,常用于图像描述任务。

  • CelebA:专注于人脸图像的数据集。

  • LSUN (Large-scale Scene Understanding):包含各种场景类别的大规模数据集。

使用API或爬虫获取

  1. 如果需要特定类型的内容,可以利用API从图库网站抓取图片,如Unsplash、Pexels等。

  2. 使用网络爬虫技术从互联网上抓取图片,但需要注意版权问题。

数据合成

利用现有的图形引擎(如Unity、Unreal Engine)或特定软件生成合成数据,这在训练某些类型的模型时非常有用。

最近Datawhale联合阿里云天池,做了一整套多模态大模型数据合成的学习,欢迎大家一起交流。从零入门多模态大模型数据合成

数据增强

对于较小的数据集,可以通过旋转、翻转、缩放、颜色变换等方式进行数据增强。

购买或定制

如果你的应用是特定领域的,比如医学影像、卫星图像等,建议从靠谱的渠道购买一些数据集。

 

  • 21
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值