ComfyUI模型训练:自定义数据集微调指南
【免费下载链接】ComfyUI 最强大且模块化的具有图形/节点界面的稳定扩散GUI。 项目地址: https://gitcode.com/GitHub_Trending/co/ComfyUI
你是否曾想让AI模型生成更符合特定风格的图片?比如公司LOGO、个人肖像或特定场景的图像?手动调整参数效果有限,而自定义数据集微调(Fine-tuning)能让模型"学习"新风格,生成更精准的结果。本文将带你用ComfyUI完成从数据准备到模型训练的全流程,无需复杂代码,只需简单配置即可让AI为你"量身定制"。
读完本文你将学会:
- 如何规范整理训练数据集
- 使用ComfyUI节点加载和预处理数据
- 配置LoRA模型训练参数
- 监控训练过程并评估结果
- 导出和使用微调后的模型
一、数据集准备
1.1 数据结构要求
ComfyUI支持两种数据集格式,推荐使用带文本描述的文件夹结构,便于模型学习图像与文字的关联:
input/
└── my_dataset/ # 数据集根目录
├── image1.png # 训练图像
├── image1.txt # 对应图像的文本描述
├── image2.jpg
├── image2.txt
└── ...
技术细节:LoadImageTextSetFromFolderNode节点会自动匹配图像文件与其同名文本文件作为描述。
1.2 图像预处理规范
- 尺寸统一:所有图像建议调整为相同尺寸(如512×512像素)
- 格式支持:.png、.jpg、.webp等常见格式
- 数量建议:最少20张图像,越多效果越好
- 文本描述:简洁明确,包含关键特征(如"a photo of a red cat, high resolution")
1.3 数据集存放位置
将整理好的数据集文件夹放入ComfyUI的输入目录:
GitHub_Trending/co/ComfyUI/input/
二、训练流程节点配置
2.1 核心节点组合
ComfyUI采用节点式工作流,训练LoRA模型需要以下关键节点:
2.2 数据加载节点
使用LoadImageTextSetFromFolderNode加载数据集:
| 参数 | 推荐值 | 说明 |
|---|---|---|
| folder | my_dataset | 数据集文件夹名称 |
| resize_method | Stretch | 图像尺寸不一时的处理方式 |
| width/height | 512 | 统一图像尺寸 |
代码参考:加载图像和文本会自动编码文本描述为模型可理解的向量。
2.3 模型加载节点
使用CheckpointLoaderSimple加载基础模型:
模型路径: models/checkpoints/
推荐模型: v1-5-pruned-emaonly.safetensors
三、关键训练参数配置
3.1 基础参数设置
在TrainLoraNode中配置核心训练参数:
| 参数 | 推荐值 | 适用场景 |
|---|---|---|
| batch_size | 2-4 | 根据GPU显存调整 |
| steps | 1000-5000 | 小数据集用较小值 |
| learning_rate | 0.0001-0.0005 | 学习率过高易过拟合 |
| rank | 8-32 | 数值越大细节保留越多 |
| optimizer | AdamW | 主流优化器,收敛稳定 |
代码定义:TrainLoraNode参数包含完整参数说明。
3.2 高级参数调优
- gradient_checkpointing: 启用可减少显存占用
- training_dtype: bf16比fp32训练速度更快
- loss_function: MSE适合风格迁移,Huber对噪声数据更鲁棒
# 训练参数示例代码
{
"batch_size": 2,
"steps": 2000,
"learning_rate": 0.0003,
"rank": 16,
"optimizer": "AdamW",
"loss_function": "MSE"
}
四、启动训练与监控
4.1 开始训练
连接好所有节点后,点击Queue Prompt开始训练。训练过程中会显示进度条:
Training LoRA: 100%|██████████| 2000/2000 [10:30<00:00, loss=0.0234]
进度显示实现:TrainSampler使用tqdm库生成进度条。
4.2 训练过程监控
训练时关注损失值(loss)变化,正常情况下应逐渐降低并趋于稳定:
损失可视化:draw_loss_graph会生成训练损失曲线图。
4.3 常见问题排查
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 显存溢出 | batch_size过大 | 减小batch_size或启用gradient_checkpointing |
| loss不下降 | 学习率过高 | 降低learning_rate至0.0001以下 |
| 过拟合 | 数据量少或steps过多 | 增加数据量或提前停止训练 |
五、模型导出与使用
5.1 保存训练结果
训练完成后,使用SaveLora节点将模型保存到:
GitHub_Trending/co/ComfyUI/models/loras/
文件名建议包含关键参数:my_style_lora_rank16_steps2000.safetensors
5.2 在生成中使用LoRA
在图像生成工作流中添加LoraLoader节点:
5.3 参数调整建议
| LoRA强度 | 效果 | 适用场景 |
|---|---|---|
| 0.5-0.7 | 风格融合适中 | 大多数创意生成 |
| 0.8-1.0 | 风格强烈 | 需要突出训练特征 |
六、高级优化技巧
6.1 混合训练策略
可加载现有LoRA继续训练:
existing_lora: "pretrained_lora.safetensors" # 在TrainLoraNode中设置
6.2 学习率调度
通过代码自定义学习率衰减:
# 在TrainLoraNode中添加学习率调度器
scheduler = torch.optim.lr_scheduler.CosineAnnealingLR(optimizer, T_max=steps)
6.3 训练结果评估
使用相同提示词对比训练前后效果:
提示词: "a photo of a cat in the style of my_dataset"
总结
通过自定义数据集微调LoRA模型,你可以让AI生成更符合特定风格的图像。关键步骤包括:准备规范的数据集、配置合理的训练参数、监控训练过程并调整。ComfyUI的节点式设计让这一过程无需编写代码,只需简单连接和配置即可完成。
扩展学习:查看script_examples中的API示例,了解如何通过代码控制训练过程。
祝你的模型训练顺利!如有问题,可参考项目官方文档或提交issue获取帮助。
【免费下载链接】ComfyUI 最强大且模块化的具有图形/节点界面的稳定扩散GUI。 项目地址: https://gitcode.com/GitHub_Trending/co/ComfyUI
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



