【版权严正声明】
本文系作者 [编程界的小学生] 原创,并拥有完整、独立的著作权。
未经本人 书面授权 ,任何单位、平台或个人, 严禁 以任何形式(包括但不限于转载、复制、摘编、修改、链接、转贴、建立镜像等)使用本文的全部或部分内容。
任何无视本声明的侵权行为,本人将依据《中华人民共和国著作权法》等相关法律法规,采取一切必要的法律手段,追究其侵权责任,要求其 立即停止侵权、赔礼道歉、消除影响,并赔偿因此造成的一切经济损失及维权成本(包括但不限于律师费、诉讼费、公证费等)。
侵权必究,切勿以身试法!
1. 插件简介
插件地址: https://github.com/kijai/ComfyUI-FluxTrainer
这个插件就像是给 ComfyUI 装了一个"AI 训练师",专门用来训练和微调各种 AI 模型。想象一下,你有一堆照片想让 AI 学会画出特定的风格或者特定的人物,这个插件就能帮你"教会" AI 这些技能。
主要功能:
🎯 Flux 模型训练:训练最新的 Flux 图像生成模型,让它学会你想要的风格
🔧 LoRA 训练:创建小巧的"技能包",不用重新训练整个大模型
📚 多模型支持:支持 Flux、SD3、SDXL 等多种模型的训练
⚡ 内存优化:各种省内存的技巧,让普通显卡也能训练
📊 可视化监控:实时查看训练进度和损失曲线
能带来什么效果:
让 AI 学会画特定人物、物体或风格
创建个人专属的 AI 绘画模型
批量生成符合特定要求的图片
节省训练时间和计算资源
2. 如何安装
方法一:通过 ComfyUI Manager 安装(推荐)
打开 ComfyUI Manager
搜索 "FluxTrainer"
找到这个插件点击安装
重启 ComfyUI
方法二:手动安装
进入你的 ComfyUI 安装目录下的 custom_nodes 文件夹
打开命令行工具,执行:
git clone https://github.com/kijai/ComfyUI-FluxTrainer.git
进入插件文件夹:
cd ComfyUI-FluxTrainer
安装依赖:
pip install -r requirements.txt
重启 ComfyUI
注意: 建议使用 PyTorch 2.4.0 或更高版本,训练需要大量显存和存储空间。
3. 节点详解
当前插件包含节点总数:39个 本次输出节点数:10个 剩余未输出节点数:29个
3.1 FluxTrainModelSelect 节点 - Flux模型选择器
这个节点是干嘛的? 这就像是一个"模型管理员",负责选择和准备训练用的各种模型文件。就像做菜前要准备好所有食材一样,训练前要先选好所有需要的模型。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
transformer | transformer | 下拉选择 | - | 选择主要的图像生成"大脑",就像选择画家的主要技能 | 选择Flux transformer模型文件 | 从unet文件夹选择flux模型文件 |
vae | vae | 下拉选择 | - | 选择图像编码解码器,就像选择画笔和颜料 | 选择VAE模型用于图像编码解码 | 选择ae.safetensors文件 |
clip_l | clip_l | 下拉选择 | - | 选择文字理解助手,帮AI理解你说的话 | 选择CLIP-L文本编码器 | 选择clip_l.safetensors文件 |
t5 | t5 | 下拉选择 | - | 选择高级文字理解助手,理解更复杂的描述 | 选择T5文本编码器 | 选择t5xxl_fp16.safetensors文件 |
lora_path | lora_path | 文本输入 | 空 | 如果有现成的"技能包"想继续训练,在这里填路径 | 预训练LoRA权重路径 | 填入已有LoRA文件的完整路径 |
3.2 TrainDatasetGeneralConfig 节点 - 训练数据通用配置
这个节点是干嘛的? 这就像是"训练规则制定者",设定训练时如何处理你的图片和文字描述。比如是否要随机翻转图片、是否要打乱文字描述等。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
color_aug | color_aug | 开关 | False | 是否随机调整图片颜色,就像给照片加滤镜 | 启用弱色彩增强 | 想让AI适应不同光线条件时开启 |
flip_aug | flip_aug | 开关 | False | 是否随机左右翻转图片,增加训练样本多样性 | 启用水平翻转增强 | 训练人物或对称物体时可以开启 |
shuffle_caption | shuffle_caption | 开关 | False | 是否打乱文字描述的顺序,让AI不依赖固定顺序 | 随机打乱标签顺序 | 想让AI更灵活理解描述时开启 |
caption_dropout_rate | caption_dropout_rate | 数值滑块 | 0.0 | 随机丢掉一些文字描述,让AI学会从部分信息推断 | 标签丢弃率 | 设置0.1表示10%概率丢掉部分描述 |
alpha_mask | alpha_mask | 开关 | False | 是否使用图片的透明通道作为训练遮罩 | 使用alpha通道作为训练遮罩 | 有透明背景的PNG图片时开启 |
reset_on_queue | reset_on_queue | 开关 | False | 每次运行时是否重新刷新配置 | 队列时强制刷新 | 调试时可以开启 |
caption_extension | caption_extension | 文本输入 | .txt | 文字描述文件的后缀名 | 标签文件扩展名 | 如果用.caption文件就改成.caption |
3.3 TrainDatasetRegularization 节点 - 正则化数据集配置
这个节点是干嘛的? 这就像是"平衡训练师",提供一些"标准样本"来防止AI学偏了。比如你在教AI画猫,正则化数据就是一些普通的猫图片,防止AI只学会画你特定风格的猫。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
dataset_path | dataset_path | 文本输入 | - | 正则化图片文件夹的路径 | 正则化数据集路径 | 填入包含标准样本的文件夹路径 |
class_tokens | class_tokens | 文本输入 | - | 触发词,告诉AI这是什么类型的图片 | 类别标记词 | 比如填"cat"表示这些都是猫的图片 |
num_repeats | num_repeats | 数值输入 | 1 | 每个正则化样本重复使用多少次 | 数据重复次数 | 设置2表示每张图片当作2张来用 |
3.4 TrainDatasetAdd 节点 - 添加训练数据集
这个节点是干嘛的? 这就像是"数据集管理员",把你的训练图片和配置整合在一起。它会设定图片尺寸、批次大小等重要参数。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
dataset_config | dataset_config | 连接输入 | - | 从通用配置节点接收的设置 | 数据集通用配置 | 从TrainDatasetGeneralConfig连线 |
width | width | 数值输入 | 1024 | 训练图片的宽度,就像设定画布大小 | 基础分辨率宽度 | 1024适合大多数情况 |
height | height | 数值输入 | 1024 | 训练图片的高度 | 基础分辨率高度 | 1024适合大多数情况 |
batch_size | batch_size | 数值输入 | 2 | 一次处理多少张图片,越大越快但越耗内存 | 批次大小 | 显存8GB建议用1-2,16GB可用4 |
dataset_path | dataset_path | 文本输入 | - | 训练图片文件夹的路径 | 数据集路径 | 填入包含训练图片的文件夹路径 |
class_tokens | class_tokens | 文本输入 | - | 触发词,训练完成后用这个词来生成图片 | 类别标记词 | 比如"mydog",生成时就用"mydog" |
enable_bucket | enable_bucket | 开关 | True | 是否允许不同尺寸的图片一起训练 | 启用分桶训练 | 开启可以用不同尺寸的图片 |
bucket_no_upscale | bucket_no_upscale | 开关 | False | 是否禁止放大小图片 | 禁止上采样 | 想保持原图质量时开启 |
num_repeats | num_repeats | 数值输入 | 1 | 每张训练图片重复使用多少次 | 数据重复次数 | 图片少时可以设置更大值 |
min_bucket_reso | min_bucket_reso | 数值输入 | 256 | 允许的最小图片尺寸 | 最小分桶分辨率 | 一般不用改 |
max_bucket_reso | max_bucket_reso | 数值输入 | 1024 | 允许的最大图片尺寸 | 最大分桶分辨率 | 显存够可以设置更大 |
regularization | regularization | 连接输入 | 可选 | 连接正则化数据集配置 | 正则化数据配置 | 从TrainDatasetRegularization连线 |
3.5 OptimizerConfig 节点 - 优化器配置
这个节点是干嘛的? 这就像是"学习方法指导师",决定AI如何学习和调整。不同的优化器就像不同的学习方法,有的快但粗糙,有的慢但精细。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
optimizer_type | optimizer_type | 下拉选择 | adamw8bit | 选择学习算法,就像选择学习方法 | 优化器类型 | adamw8bit省内存,prodigy自动调节 |
max_grad_norm | max_grad_norm | 数值输入 | 1.0 | 限制学习步长,防止学习过猛 | 梯度裁剪 | 1.0是安全值,可以防止训练崩溃 |
lr_scheduler | lr_scheduler | 下拉选择 | constant | 学习速度的变化方式 | 学习率调度器 | constant保持不变,cosine逐渐降低 |
lr_warmup_steps | lr_warmup_steps | 数值输入 | 0 | 开始时慢慢提升学习速度的步数 | 学习率预热步数 | 设置100表示前100步慢慢加速 |
lr_scheduler_num_cycles | lr_scheduler_num_cycles | 数值输入 | 1 | 学习速度循环变化的次数 | 调度器循环次数 | 一般用1就够了 |
lr_scheduler_power | lr_scheduler_power | 数值输入 | 1.0 | 学习速度变化的强度 | 调度器幂次 | 1.0是线性变化 |
min_snr_gamma | min_snr_gamma | 数值输入 | 5.0 | 降低困难样本权重的参数 | 最小信噪比gamma | 5.0是论文推荐值 |
extra_optimizer_args | extra_optimizer_args | 文本输入 | 空 | 额外的优化器参数,用竖线分隔 | 额外优化器参数 | 高级用户可以添加特殊参数 |
现在我已经完成了前5个节点的详细分析。由于节点数量很多(39个),我需要继续分批完成剩余的节点分析。
3.6 OptimizerConfigAdafactor 节点 - Adafactor优化器配置
这个节点是干嘛的? 这是专门为 Adafactor 优化器设计的配置节点。Adafactor 就像是一个"自适应学习专家",能够根据情况自动调整学习方式,特别适合大模型训练。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
max_grad_norm | max_grad_norm | 数值输入 | 0.0 | 限制学习步长,0表示不限制 | 梯度裁剪 | Adafactor通常设为0让它自己控制 |
lr_scheduler | lr_scheduler | 下拉选择 | constant_with_warmup | 学习速度变化方式 | 学习率调度器 | adafactor是专用调度器 |
lr_warmup_steps | lr_warmup_steps | 数值输入 | 0 | 预热步数 | 学习率预热步数 | Adafactor建议设置一些预热步数 |
lr_scheduler_num_cycles | lr_scheduler_num_cycles | 数值输入 | 1 | 循环次数 | 调度器循环次数 | 一般用1 |
lr_scheduler_power | lr_scheduler_power | 数值输入 | 1.0 | 变化强度 | 调度器幂次 | 1.0是标准值 |
relative_step | relative_step | 开关 | False | 是否使用相对步长 | 相对步长 | True让Adafactor自动调节学习率 |
scale_parameter | scale_parameter | 开关 | False | 是否缩放参数 | 参数缩放 | True可以提高稳定性 |
warmup_init | warmup_init | 开关 | False | 是否预热初始化 | 预热初始化 | True配合relative_step使用 |
clip_threshold | clip_threshold | 数值输入 | 1.0 | 裁剪阈值 | 裁剪阈值 | 控制梯度裁剪的强度 |
min_snr_gamma | min_snr_gamma | 数值输入 | 5.0 | 信噪比参数 | 最小信噪比gamma | 5.0是推荐值 |
extra_optimizer_args | extra_optimizer_args | 文本输入 | 空 | 额外参数 | 额外优化器参数 | 高级参数设置 |
3.7 FluxTrainerLossConfig 节点 - Flux训练损失配置
这个节点是干嘛的? 这就像是"评分标准制定者",决定如何评判AI学习的好坏。不同的损失函数就像不同的评分方式,有的严格有的宽松。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
loss_type | loss_type | 下拉选择 | huber | 选择评分方式,huber比较温和 | 损失函数类型 | huber对异常值不敏感,l2更严格 |
huber_schedule | huber_schedule | 下拉选择 | exponential | Huber损失的调度方式 | Huber调度方法 | exponential是指数衰减 |
huber_c | huber_c | 数值输入 | 0.25 | Huber损失的衰减参数 | Huber衰减参数 | 越小越温和 |
huber_scale | huber_scale | 数值输入 | 1.75 | Huber损失的缩放参数 | Huber缩放参数 | 控制损失的整体大小 |
3.8 OptimizerConfigProdigy 节点 - Prodigy优化器配置
这个节点是干嘛的? 这是专门为 Prodigy 优化器设计的配置。Prodigy 就像是一个"天才学习助手",能够自动找到最佳的学习速度,不需要你手动调节。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
max_grad_norm | max_grad_norm | 数值输入 | 0.0 | 梯度裁剪,0表示不限制 | 梯度裁剪 | Prodigy通常不需要裁剪 |
lr_scheduler | lr_scheduler | 下拉选择 | constant | 学习率调度器 | 学习率调度器 | Prodigy自己调节,用constant即可 |
lr_warmup_steps | lr_warmup_steps | 数值输入 | 0 | 预热步数 | 学习率预热步数 | 一般不需要预热 |
lr_scheduler_num_cycles | lr_scheduler_num_cycles | 数值输入 | 1 | 循环次数 | 调度器循环次数 | 保持默认 |
lr_scheduler_power | lr_scheduler_power | 数值输入 | 1.0 | 调度器幂次 | 调度器幂次 | 保持默认 |
weight_decay | weight_decay | 数值输入 | 0.0 | 权重衰减,防止过拟合 | 权重衰减 | 0.01-0.1可以防止过拟合 |
decouple | decouple | 开关 | True | 是否使用AdamW风格的权重衰减 | 解耦权重衰减 | True是推荐设置 |
use_bias_correction | use_bias_correction | 开关 | False | 是否使用偏差修正 | 偏差修正 | False是默认设置 |
min_snr_gamma | min_snr_gamma | 数值输入 | 5.0 | 信噪比参数 | 最小信噪比gamma | 5.0是推荐值 |
extra_optimizer_args | extra_optimizer_args | 文本输入 | 空 | 额外参数 | 额外优化器参数 | 高级设置 |
3.9 TrainNetworkConfig 节点 - 训练网络配置
这个节点是干嘛的? 这就像是"技能包制作工坊",决定要制作什么类型的LoRA技能包。不同类型的LoRA就像不同的技能包,有的小巧精简,有的功能全面。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
network_type | network_type | 下拉选择 | lora | 选择技能包类型 | 网络类型 | lora最常用,LyCORIS更高级 |
lycoris_preset | lycoris_preset | 下拉选择 | attn-mlp | LyCORIS的预设配置 | LyCORIS预设 | attn-mlp平衡效果和大小 |
factor | factor | 数值输入 | -1 | LoKr的因子参数,-1表示自动 | LoKr因子 | 一般保持-1自动设置 |
extra_network_args | extra_network_args | 文本输入 | 空 | 额外的网络参数 | 额外网络参数 | 高级用户可以添加特殊设置 |
3.10 OptimizerConfigProdigyPlusScheduleFree 节点 - ProdigyPlus免调度优化器
这个节点是干嘛的? 这是最新的"超级学习助手",结合了 Prodigy 的自动学习率和免调度技术。就像有了一个既聪明又不需要监督的学习伙伴。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
lr | lr | 数值输入 | 1.0 | 学习率调整参数 | 学习率调整参数 | 1.0是标准值,可以微调 |
max_grad_norm | max_grad_norm | 数值输入 | 0.0 | 梯度裁剪 | 梯度裁剪 | 0.0表示不裁剪 |
prodigy_steps | prodigy_steps | 数值输入 | 0 | 冻结Prodigy调整的步数 | Prodigy冻结步数 | 0表示一直调整 |
d0 | d0 | 数值输入 | 1e-6 | 初始学习率 | 初始学习率 | 很小的值作为起点 |
d_coef | d_coef | 数值输入 | 1.0 | 学习率估计系数 | 学习率系数 | 1.0是标准值 |
split_groups | split_groups | 开关 | True | 是否分组跟踪参数 | 分组跟踪 | True可以更精确 |
use_bias_correction | use_bias_correction | 开关 | False | 是否使用RAdam变体 | 偏差修正 | False是默认 |
min_snr_gamma | min_snr_gamma | 数值输入 | 5.0 | 信噪比参数 | 最小信噪比gamma | 5.0是推荐值 |
use_stableadamw | use_stableadamw | 开关 | True | 是否使用稳定AdamW | 稳定AdamW | True提高稳定性 |
use_cautious | use_cautious | 开关 | False | 是否使用谨慎更新 | 谨慎更新 | 实验性功能 |
use_adopt | use_adopt | 开关 | False | 是否使用ADOPT方法 | ADOPT方法 | 实验性功能 |
use_grams | use_grams | 开关 | False | 是否使用GRAMS更新 | GRAMS更新 | 实验性功能 |
stochastic_rounding | stochastic_rounding | 开关 | True | 是否使用随机舍入 | 随机舍入 | True对bfloat16有帮助 |
use_orthograd | use_orthograd | 开关 | False | 是否使用正交梯度 | 正交梯度 | 实验性功能 |
use_focus | use_focus | 开关 | False | 是否使用FOCUS方法 | FOCUS方法 | 实验性功能 |
extra_optimizer_args | extra_optimizer_args | 文本输入 | 空 | 额外参数 | 额外优化器参数 | 高级设置 |
当前进度更新: 已输出节点数:10个 剩余未输出节点数:29个
3.11 InitFluxLoRATraining 节点 - 初始化Flux LoRA训练
这个节点是干嘛的? 这是整个训练流程的"总指挥官",把所有配置整合起来,准备开始训练。就像是把所有食材和工具准备好,开始正式做菜。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
flux_models | flux_models | 连接输入 | - | 从模型选择器接收的模型配置 | Flux模型配置 | 从FluxTrainModelSelect连线 |
dataset | dataset | 连接输入 | - | 从数据集配置接收的训练数据 | 数据集配置 | 从TrainDatasetAdd连线 |
optimizer_settings | optimizer_settings | 连接输入 | - | 从优化器配置接收的学习设置 | 优化器设置 | 从OptimizerConfig连线 |
output_name | output_name | 文本输入 | flux_lora | 训练完成后模型的名字 | 输出模型名称 | 起个有意义的名字如"my_style_lora" |
output_dir | output_dir | 文本输入 | flux_trainer_output | 保存训练结果的文件夹 | 输出目录 | 相对于ComfyUI根目录的路径 |
network_dim | network_dim | 数值输入 | 4 | LoRA的"技能容量",越大越强但文件越大 | 网络维度 | 4-16适合大多数情况,32-64用于复杂风格 |
network_alpha | network_alpha | 数值输入 | 1.0 | LoRA的"影响强度"调节器 | 网络alpha值 | 通常设为network_dim的1/4到1/2 |
learning_rate | learning_rate | 数值输入 | 4e-4 | AI的学习速度,太快容易学坏,太慢学不会 | 学习率 | 4e-4是安全起点,可以调到1e-3或2e-4 |
max_train_steps | max_train_steps | 数值输入 | 1500 | 总共要学习多少步 | 最大训练步数 | 1000-3000步适合大多数情况 |
apply_t5_attn_mask | apply_t5_attn_mask | 开关 | True | 是否使用T5注意力遮罩 | T5注意力遮罩 | True可以提高文本理解 |
cache_latents | cache_latents | 下拉选择 | disk | 如何缓存图片编码,disk省内存但慢 | 潜在向量缓存 | disk省内存,memory更快 |
cache_text_encoder_outputs | cache_text_encoder_outputs | 下拉选择 | disk | 如何缓存文本编码 | 文本编码器输出缓存 | disk省内存,memory更快 |
blocks_to_swap | blocks_to_swap | 数值输入 | 0 | 交换到CPU的模块数量,省显存但慢 | 交换块数量 | 显存不够时设为18 |
weighting_scheme | weighting_scheme | 下拉选择 | logit_normal | 训练样本的权重分配方式 | 权重方案 | logit_normal是推荐设置 |
logit_mean | logit_mean | 数值输入 | 0.0 | logit_normal权重的均值 | Logit均值 | 0.0是标准设置 |
logit_std | logit_std | 数值输入 | 1.0 | logit_normal权重的标准差 | Logit标准差 | 1.0是标准设置 |
mode_scale | mode_scale | 数值输入 | 1.29 | mode权重方案的缩放因子 | 模式缩放 | 仅在使用mode权重时有效 |
timestep_sampling | timestep_sampling | 下拉选择 | sigmoid | 时间步采样方法 | 时间步采样 | sigmoid是推荐方法 |
sigmoid_scale | sigmoid_scale | 数值输入 | 1.0 | sigmoid采样的缩放因子 | Sigmoid缩放 | 1.0是标准值 |
model_prediction_type | model_prediction_type | 下拉选择 | raw | 模型预测的处理方式 | 模型预测类型 | raw是标准设置 |
guidance_scale | guidance_scale | 数值输入 | 1.0 | 引导缩放,Flux训练应该是1.0 | 引导缩放 | Flux必须用1.0 |
discrete_flow_shift | discrete_flow_shift | 数值输入 | 1.0 | 离散流调度器的偏移值 | 离散流偏移 | 3.0是标准值 |
highvram | highvram | 开关 | False | 是否使用高显存模式 | 高显存模式 | 显存充足时可以开启 |
fp8_base | fp8_base | 开关 | True | 是否对基础模型使用fp8精度 | FP8基础模型 | True可以节省显存 |
gradient_dtype | gradient_dtype | 下拉选择 | fp32 | 训练时使用的数据精度 | 梯度数据类型 | fp32最稳定,bf16更快 |
save_dtype | save_dtype | 下拉选择 | bf16 | 保存模型时使用的数据精度 | 保存数据类型 | bf16平衡质量和大小 |
attention_mode | attention_mode | 下拉选择 | sdpa | 注意力机制的实现方式 | 注意力模式 | sdpa是推荐设置 |
sample_prompts | sample_prompts | 文本输入 | illustration of a kitten | photograph of a turtle | 验证用的提示词,用|分隔多个 | 采样提示词 | 填入想测试的描述 |
additional_args | additional_args | 文本输入 | 空 | 额外的训练参数 | 额外参数 | 高级用户使用 |
resume_args | resume_args | 连接输入 | 可选 | 恢复训练的参数 | 恢复参数 | 从FluxTrainResume连线 |
train_text_encoder | train_text_encoder | 下拉选择 | disabled | 是否同时训练文本编码器 | 训练文本编码器 | disabled最安全 |
clip_l_lr | clip_l_lr | 数值输入 | 0 | CLIP-L的学习率 | CLIP-L学习率 | 训练文本编码器时设置 |
T5_lr | T5_lr | 数值输入 | 0 | T5的学习率 | T5学习率 | 训练文本编码器时设置 |
block_args | block_args | 连接输入 | 可选 | 限制训练的模块 | 块参数 | 从FluxTrainBlockSelect连线 |
gradient_checkpointing | gradient_checkpointing | 下拉选择 | enabled | 是否使用梯度检查点 | 梯度检查点 | enabled可以节省显存 |
loss_args | loss_args | 连接输入 | 可选 | 损失函数配置 | 损失参数 | 从FluxTrainerLossConfig连线 |
network_config | network_config | 连接输入 | 可选 | 网络结构配置 | 网络配置 | 从TrainNetworkConfig连线 |
3.12 InitFluxTraining 节点 - 初始化Flux完整训练
这个节点是干嘛的? 这是用来训练完整Flux模型的"总指挥官",不是训练LoRA而是训练整个模型。就像是要重新教会AI画画,而不是只教一个新技能。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
flux_models | flux_models | 连接输入 | - | 从模型选择器接收的模型配置 | Flux模型配置 | 从FluxTrainModelSelect连线 |
dataset | dataset | 连接输入 | - | 训练数据集配置 | 数据集配置 | 从TrainDatasetAdd连线 |
optimizer_settings | optimizer_settings | 连接输入 | - | 优化器设置 | 优化器设置 | 从OptimizerConfig连线 |
output_name | output_name | 文本输入 | flux | 输出模型名称 | 输出模型名称 | 给训练的模型起名 |
output_dir | output_dir | 文本输入 | flux_trainer_output | 输出目录 | 输出目录 | 保存位置 |
learning_rate | learning_rate | 数值输入 | 4e-6 | 学习率,比LoRA训练要小很多 | 学习率 | 完整训练需要更小的学习率 |
max_train_steps | max_train_steps | 数值输入 | 1500 | 最大训练步数 | 最大训练步数 | 完整训练通常需要更多步数 |
apply_t5_attn_mask | apply_t5_attn_mask | 开关 | True | T5注意力遮罩 | T5注意力遮罩 | True提高文本理解 |
t5xxl_max_token_length | t5xxl_max_token_length | 数值输入 | 512 | T5最大token长度 | T5最大token长度 | dev版用512,schnell用256 |
cache_latents | cache_latents | 下拉选择 | disk | 潜在向量缓存方式 | 潜在向量缓存 | disk节省内存 |
cache_text_encoder_outputs | cache_text_encoder_outputs | 下拉选择 | disk | 文本编码器输出缓存 | 文本编码器输出缓存 | disk节省内存 |
weighting_scheme | weighting_scheme | 下拉选择 | logit_normal | 权重分配方案 | 权重方案 | logit_normal是推荐 |
logit_mean | logit_mean | 数值输入 | 0.0 | Logit均值 | Logit均值 | 标准设置 |
logit_std | logit_std | 数值输入 | 1.0 | Logit标准差 | Logit标准差 | 标准设置 |
mode_scale | mode_scale | 数值输入 | 1.29 | 模式缩放 | 模式缩放 | mode权重时使用 |
loss_type | loss_type | 下拉选择 | l2 | 损失函数类型 | 损失函数类型 | l2是标准选择 |
timestep_sampling | timestep_sampling | 下拉选择 | sigmoid | 时间步采样方法 | 时间步采样 | sigmoid推荐 |
sigmoid_scale | sigmoid_scale | 数值输入 | 1.0 | Sigmoid缩放 | Sigmoid缩放 | 标准值 |
model_prediction_type | model_prediction_type | 下拉选择 | raw | 模型预测类型 | 模型预测类型 | raw是标准 |
cpu_offload_checkpointing | cpu_offload_checkpointing | 开关 | True | CPU卸载检查点 | CPU卸载检查点 | True节省2GB显存 |
optimizer_fusing | optimizer_fusing | 下拉选择 | fused_backward_pass | 优化器融合方式 | 优化器融合 | 减少内存使用 |
blocks_to_swap | blocks_to_swap | 数值输入 | 0 | 交换块数量 | 交换块数量 | 每块约640MB,可以节省显存 |
guidance_scale | guidance_scale | 数值输入 | 1.0 | 引导缩放 | 引导缩放 | Flux必须用1.0 |
discrete_flow_shift | discrete_flow_shift | 数值输入 | 1.0 | 离散流偏移 | 离散流偏移 | 3.0是标准值 |
highvram | highvram | 开关 | False | 高显存模式 | 高显存模式 | 显存充足时开启 |
fp8_base | fp8_base | 开关 | False | FP8基础模型 | FP8基础模型 | 完整训练通常用False |
gradient_dtype | gradient_dtype | 下拉选择 | bf16 | 梯度数据类型 | 梯度数据类型 | bf16平衡速度和精度 |
save_dtype | save_dtype | 下拉选择 | bf16 | 保存数据类型 | 保存数据类型 | bf16节省空间 |
attention_mode | attention_mode | 下拉选择 | sdpa | 注意力模式 | 注意力模式 | sdpa推荐 |
sample_prompts | sample_prompts | 文本输入 | illustration of a kitten | photograph of a turtle | 采样提示词 | 采样提示词 | 测试用的描述 |
additional_args | additional_args | 文本输入 | 空 | 额外参数 | 额外参数 | 高级设置 |
resume_args | resume_args | 连接输入 | 可选 | 恢复参数 | 恢复参数 | 从FluxTrainResume连线 |
3.13 InitFluxTrainingFromPreset 节点 - 从预设初始化Flux训练
这个节点是干嘛的? 这是一个"快速启动器",可以从预设的配置文件快速开始训练,不需要手动设置每个参数。就像使用菜谱快速做菜。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
flux_models | flux_models | 连接输入 | - | 模型配置 | Flux模型配置 | 从FluxTrainModelSelect连线 |
dataset_settings | dataset_settings | 连接输入 | - | 数据集设置 | TOML数据集配置 | 从预设配置连线 |
preset_args | preset_args | 连接输入 | - | 预设参数 | Kohya参数配置 | 从预设文件加载 |
output_name | output_name | 文本输入 | flux | 输出名称 | 输出模型名称 | 给模型起名 |
output_dir | output_dir | 文本输入 | flux_trainer_output | 输出目录 | 输出目录 | 保存位置 |
sample_prompts | sample_prompts | 文本输入 | illustration of a kitten | photograph of a turtle | 采样提示词 | 采样提示词 | 测试描述 |
3.14 FluxTrainLoop 节点 - Flux训练循环
这个节点是干嘛的? 这就像是"训练执行器",负责实际执行训练过程。你告诉它要训练多少步,它就会老老实实地训练这么多步。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
network_trainer | network_trainer | 连接输入 | - | 从初始化节点接收的训练器 | 网络训练器 | 从InitFluxLoRATraining连线 |
steps | steps | 数值输入 | 1 | 这次要训练多少步 | 训练步数 | 可以分批训练,比如每次100步 |
3.15 FluxTrainAndValidateLoop 节点 - Flux训练和验证循环
这个节点是干嘛的? 这是一个"智能训练管家",不仅会训练,还会定期检查训练效果和保存模型。就像有个助手定期检查你的学习进度。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
network_trainer | network_trainer | 连接输入 | - | 训练器 | 网络训练器 | 从初始化节点连线 |
validate_at_steps | validate_at_steps | 数值输入 | 250 | 每多少步检查一次效果 | 验证步数间隔 | 250步检查一次比较合适 |
save_at_steps | save_at_steps | 数值输入 | 250 | 每多少步保存一次模型 | 保存步数间隔 | 250步保存一次防止丢失 |
validation_settings | validation_settings | 连接输入 | 可选 | 验证设置 | 验证设置 | 从FluxTrainValidationSettings连线 |
当前进度更新: 已输出节点数:15个 剩余未输出节点数:24个
3.16 FluxTrainSave 节点 - Flux训练保存
这个节点是干嘛的? 这就像是"成果保存员",负责把训练好的LoRA模型保存下来。你可以选择是否保存完整的训练状态,以及是否复制到ComfyUI的LoRA文件夹。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
network_trainer | network_trainer | 连接输入 | - | 训练器 | 网络训练器 | 从训练循环节点连线 |
save_state | save_state | 开关 | False | 是否保存完整训练状态,用于恢复训练 | 保存训练状态 | True可以后续继续训练 |
copy_to_comfy_lora_folder | copy_to_comfy_lora_folder | 开关 | False | 是否复制到ComfyUI的LoRA文件夹 | 复制到LoRA文件夹 | True方便直接使用 |
3.17 FluxTrainSaveModel 节点 - Flux训练保存完整模型
这个节点是干嘛的? 这是专门保存完整Flux模型的"档案管理员",不是保存LoRA而是保存整个训练好的模型。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
network_trainer | network_trainer | 连接输入 | - | 训练器 | 网络训练器 | 从训练循环连线 |
copy_to_comfy_model_folder | copy_to_comfy_model_folder | 开关 | False | 是否复制到ComfyUI模型文件夹 | 复制到模型文件夹 | True方便直接使用 |
end_training | end_training | 开关 | False | 是否结束训练 | 结束训练 | True会正式结束训练过程 |
3.18 FluxTrainEnd 节点 - Flux训练结束
这个节点是干嘛的? 这是训练的"毕业典礼",正式结束训练并保存最终的模型。它会生成训练的元数据信息。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
network_trainer | network_trainer | 连接输入 | - | 训练器 | 网络训练器 | 从训练循环连线 |
save_state | save_state | 开关 | True | 是否保存训练状态 | 保存训练状态 | True保存完整信息 |
3.19 FluxTrainResume 节点 - Flux训练恢复
这个节点是干嘛的? 这就像是"断点续传器",可以从之前保存的训练状态继续训练,不用从头开始。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
load_state_path | load_state_path | 文本输入 | 空 | 要恢复的训练状态文件路径 | 训练状态路径 | 填入之前保存的状态文件路径 |
skip_until_initial_step | skip_until_initial_step | 开关 | False | 是否跳过到初始步数 | 跳过到初始步数 | True会跳过已训练的步数 |
3.20 FluxTrainBlockSelect 节点 - Flux训练块选择
这个节点是干嘛的? 这就像是"精准训练师",可以选择只训练模型的特定部分,而不是训练整个模型。就像只练习画画的某个技巧。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
include | include | 文本输入 | lora_unet_single_blocks_20_linear2 | 要包含训练的模块名称 | 包含的模块 | 可以用逗号分隔多个模块,支持范围如(10-20) |
3.21 FluxTrainValidationSettings 节点 - Flux训练验证设置
这个节点是干嘛的? 这就像是"考试设置员",决定如何测试训练效果。设定生成测试图片的各种参数。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
steps | steps | 数值输入 | 20 | 生成测试图片的采样步数 | 采样步数 | 20步够用,50步质量更好 |
width | width | 数值输入 | 512 | 测试图片宽度 | 图片宽度 | 512快速测试,1024看细节 |
height | height | 数值输入 | 512 | 测试图片高度 | 图片高度 | 512快速测试,1024看细节 |
guidance_scale | guidance_scale | 数值输入 | 3.5 | 引导强度,控制AI对描述的遵循程度 | 引导缩放 | 3.5是平衡值,7.5更严格 |
seed | seed | 数值输入 | 42 | 随机种子,固定可以生成相同图片 | 随机种子 | 固定种子便于对比效果 |
shift | shift | 开关 | True | 是否使用时间步偏移 | 时间步偏移 | True提高高质量图片比例 |
base_shift | base_shift | 数值输入 | 0.5 | 基础偏移值 | 基础偏移 | 0.5是标准值 |
max_shift | max_shift | 数值输入 | 1.15 | 最大偏移值 | 最大偏移 | 1.15是标准值 |
3.22 FluxTrainValidate 节点 - Flux训练验证
这个节点是干嘛的? 这就像是"考试执行员",实际执行验证过程,生成测试图片来检查训练效果。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
network_trainer | network_trainer | 连接输入 | - | 训练器 | 网络训练器 | 从训练循环连线 |
validation_settings | validation_settings | 连接输入 | 可选 | 验证设置 | 验证设置 | 从FluxTrainValidationSettings连线 |
3.23 VisualizeLoss 节点 - 可视化损失
这个节点是干嘛的? 这就像是"成绩单制作器",把训练过程中的损失变化画成图表,让你直观看到训练效果。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
network_trainer | network_trainer | 连接输入 | - | 训练器 | 网络训练器 | 从训练循环连线 |
plot_style | plot_style | 下拉选择 | default | 图表样式 | matplotlib样式 | default简洁,seaborn更美观 |
window_size | window_size | 数值输入 | 100 | 移动平均窗口大小,平滑曲线 | 移动平均窗口 | 100让曲线更平滑 |
normalize_y | normalize_y | 开关 | True | 是否将Y轴标准化到0 | Y轴标准化 | True让图表更清晰 |
width | width | 数值输入 | 768 | 图表宽度像素 | 图表宽度 | 768适合查看 |
height | height | 数值输入 | 512 | 图表高度像素 | 图表高度 | 512适合查看 |
log_scale | log_scale | 开关 | False | 是否使用对数刻度 | 对数刻度 | True适合损失变化很大的情况 |
3.24 FluxKohyaInferenceSampler 节点 - Flux Kohya推理采样器
这个节点是干嘛的? 这就像是"作品展示器",可以用训练好的LoRA模型生成图片,测试训练效果。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
flux_models | flux_models | 连接输入 | - | 模型配置 | Flux模型配置 | 从FluxTrainModelSelect连线 |
lora_name | lora_name | 下拉选择 | - | 要使用的LoRA模型 | LoRA模型名称 | 从loras文件夹选择 |
lora_method | lora_method | 下拉选择 | apply | LoRA应用方式 | LoRA应用方法 | apply是标准方式,merge是合并 |
steps | steps | 数值输入 | 20 | 采样步数 | 采样步数 | 20步快速,50步高质量 |
width | width | 数值输入 | 512 | 图片宽度 | 图片宽度 | 512测试,1024正式生成 |
height | height | 数值输入 | 512 | 图片高度 | 图片高度 | 512测试,1024正式生成 |
guidance_scale | guidance_scale | 数值输入 | 3.5 | 引导强度 | 引导缩放 | 3.5平衡,7.5更严格 |
seed | seed | 数值输入 | 42 | 随机种子 | 随机种子 | 固定种子便于对比 |
use_fp8 | use_fp8 | 开关 | True | 是否使用FP8精度 | FP8精度 | True节省显存 |
apply_t5_attn_mask | apply_t5_attn_mask | 开关 | True | 是否使用T5注意力遮罩 | T5注意力遮罩 | True提高文本理解 |
prompt | prompt | 文本输入 | illustration of a kitten | 生成图片的描述 | 提示词 | 填入想要生成的内容描述 |
3.25 UploadToHuggingFace 节点 - 上传到HuggingFace
这个节点是干嘛的? 这就像是"作品发布器",可以把训练好的模型上传到HuggingFace平台分享给其他人。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
network_trainer | network_trainer | 连接输入 | - | 训练器 | 网络训练器 | 从训练节点连线 |
source_path | source_path | 文本输入 | 空 | 要上传的文件路径 | 源文件路径 | 填入模型文件的完整路径 |
repo_id | repo_id | 文本输入 | 空 | HuggingFace仓库ID | 仓库ID | 格式:用户名/模型名 |
revision | revision | 文本输入 | 空 | 版本分支 | 版本分支 | 通常留空使用main分支 |
private | private | 开关 | True | 是否创建私有仓库 | 私有仓库 | True创建私有,False公开 |
token | token | 文本输入 | 空 | HuggingFace访问令牌 | 访问令牌 | 从HuggingFace获取的token |
当前进度更新: 已输出节点数:25个 剩余未输出节点数:14个
这个节点是干嘛的? 这就像是"技能提取器",可以从一个完整训练的模型中提取出LoRA技能包。比如你有两个模型,一个是原版一个是训练后的,这个节点可以提取出它们的差异做成LoRA。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
original_model | original_model | 下拉选择 | - | 原始模型文件 | 原始模型 | 选择未训练的原版模型 |
finetuned_model | finetuned_model | 下拉选择 | - | 微调后的模型文件 | 微调模型 | 选择训练后的模型 |
output_path | output_path | 文本输入 | models/loras/Flux | 输出LoRA的保存路径 | 输出路径 | 设置保存LoRA的位置 |
dim | dim | 数值输入 | 4 | LoRA的维度大小 | LoRA维度 | 4-16适合大多数情况 |
save_dtype | save_dtype | 下拉选择 | bf16 | 保存的数据精度 | 保存数据类型 | bf16平衡质量和大小 |
load_device | load_device | 下拉选择 | cuda | 加载模型的设备 | 加载设备 | cuda用GPU,cpu用内存 |
store_device | store_device | 下拉选择 | cpu | 存储LoRA的设备 | 存储设备 | cpu节省显存 |
clamp_quantile | clamp_quantile | 数值输入 | 0.99 | 裁剪分位数 | 裁剪分位数 | 0.99去除极值 |
metadata | metadata | 开关 | True | 是否构建元数据 | 构建元数据 | True包含训练信息 |
mem_eff_safe_open | mem_eff_safe_open | 开关 | False | 是否使用内存高效加载 | 内存高效加载 | True节省内存但可能更慢 |
SD3相关节点
3.27 SD3ModelSelect 节点 - SD3模型选择器
这个节点是干嘛的? 这是专门为SD3模型设计的"模型管理员",选择训练SD3需要的各种模型文件。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
transformer | transformer | 下拉选择 | - | SD3的主模型文件 | SD3 transformer模型 | 从checkpoints文件夹选择SD3模型 |
clip_l | clip_l | 下拉选择 | - | CLIP-L文本编码器 | CLIP-L文本编码器 | 选择clip_l.safetensors |
clip_g | clip_g | 下拉选择 | - | CLIP-G文本编码器 | CLIP-G文本编码器 | 选择clip_g.safetensors |
t5 | t5 | 下拉选择 | - | T5文本编码器 | T5文本编码器 | 选择t5xxl文件 |
lora_path | lora_path | 文本输入 | 空 | 预训练LoRA路径 | 预训练LoRA路径 | 可选的现有LoRA路径 |
3.28 InitSD3LoRATraining 节点 - 初始化SD3 LoRA训练
这个节点是干嘛的? 这是SD3模型的"训练总指挥",专门用来训练SD3的LoRA技能包。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
sd3_models | sd3_models | 连接输入 | - | SD3模型配置 | SD3模型配置 | 从SD3ModelSelect连线 |
dataset | dataset | 连接输入 | - | 数据集配置 | 数据集配置 | 从TrainDatasetAdd连线 |
optimizer_settings | optimizer_settings | 连接输入 | - | 优化器设置 | 优化器设置 | 从OptimizerConfig连线 |
output_name | output_name | 文本输入 | sd35_lora | 输出模型名称 | 输出模型名称 | 给SD3 LoRA起名 |
output_dir | output_dir | 文本输入 | sd35_trainer_output | 输出目录 | 输出目录 | 保存位置 |
network_dim | network_dim | 数值输入 | 16 | LoRA维度 | 网络维度 | SD3建议用16 |
network_alpha | network_alpha | 数值输入 | 16 | LoRA alpha值 | 网络alpha | 通常等于network_dim |
learning_rate | learning_rate | 数值输入 | 1e-4 | 学习率 | 学习率 | SD3适合稍高的学习率 |
max_train_steps | max_train_steps | 数值输入 | 1500 | 最大训练步数 | 最大训练步数 | 1500步适合大多数情况 |
cache_latents | cache_latents | 下拉选择 | disk | 潜在向量缓存 | 潜在向量缓存 | disk节省内存 |
cache_text_encoder_outputs | cache_text_encoder_outputs | 下拉选择 | disk | 文本编码器缓存 | 文本编码器缓存 | disk节省内存 |
training_shift | training_shift | 数值输入 | 3.0 | 训练时间步偏移 | 训练偏移 | 3.0是SD3推荐值 |
highvram | highvram | 开关 | False | 高显存模式 | 高显存模式 | 显存充足时开启 |
blocks_to_swap | blocks_to_swap | 数值输入 | 0 | 交换块数量 | 交换块数量 | SD3.5L最多36块,SD3.5M最多22块 |
fp8_base | fp8_base | 开关 | False | FP8基础模型 | FP8基础模型 | True节省显存 |
gradient_dtype | gradient_dtype | 下拉选择 | fp32 | 梯度数据类型 | 梯度数据类型 | fp32最稳定 |
save_dtype | save_dtype | 下拉选择 | bf16 | 保存数据类型 | 保存数据类型 | bf16节省空间 |
attention_mode | attention_mode | 下拉选择 | sdpa | 注意力模式 | 注意力模式 | sdpa推荐 |
train_text_encoder | train_text_encoder | 下拉选择 | disabled | 训练文本编码器 | 训练文本编码器 | disabled最安全 |
clip_l_lr | clip_l_lr | 数值输入 | 0 | CLIP-L学习率 | CLIP-L学习率 | 训练文本编码器时设置 |
clip_g_lr | clip_g_lr | 数值输入 | 0 | CLIP-G学习率 | CLIP-G学习率 | 训练文本编码器时设置 |
T5_lr | T5_lr | 数值输入 | 0 | T5学习率 | T5学习率 | 训练文本编码器时设置 |
sample_prompts | sample_prompts | 文本输入 | illustration of a kitten | photograph of a turtle | 采样提示词 | 采样提示词 | 测试用的描述 |
gradient_checkpointing | gradient_checkpointing | 下拉选择 | enabled | 梯度检查点 | 梯度检查点 | enabled节省显存 |
3.29 SD3TrainLoop 节点 - SD3训练循环
这个节点是干嘛的? 这是SD3的"训练执行器",负责执行SD3模型的训练过程。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
network_trainer | network_trainer | 连接输入 | - | 训练器 | 网络训练器 | 从InitSD3LoRATraining连线 |
steps | steps | 数值输入 | 1 | 训练步数 | 训练步数 | 可以分批训练 |
3.30 SD3TrainLoRASave 节点 - SD3训练LoRA保存
这个节点是干嘛的? 这是SD3的"成果保存员",专门保存训练好的SD3 LoRA模型。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
network_trainer | network_trainer | 连接输入 | - | 训练器 | 网络训练器 | 从SD3训练循环连线 |
save_state | save_state | 开关 | False | 保存训练状态 | 保存训练状态 | True可以恢复训练 |
copy_to_comfy_lora_folder | copy_to_comfy_lora_folder | 开关 | False | 复制到LoRA文件夹 | 复制到LoRA文件夹 | True方便使用 |
3.31 SD3TrainEnd 节点 - SD3训练结束
这个节点是干嘛的? 这是SD3训练的"毕业典礼",正式结束SD3的训练过程。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
network_trainer | network_trainer | 连接输入 | - | 训练器 | 网络训练器 | 从SD3训练循环连线 |
save_state | save_state | 开关 | True | 保存训练状态 | 保存训练状态 | True保存完整信息 |
3.32 SD3TrainValidationSettings 节点 - SD3训练验证设置
这个节点是干嘛的? 这是SD3的"考试设置员",设定SD3模型验证时的各种参数。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
steps | steps | 数值输入 | 20 | 采样步数 | 采样步数 | 20步够用 |
width | width | 数值输入 | 1024 | 图片宽度 | 图片宽度 | SD3适合1024 |
height | height | 数值输入 | 1024 | 图片高度 | 图片高度 | SD3适合1024 |
guidance_scale | guidance_scale | 数值输入 | 4 | 引导强度 | 引导缩放 | SD3推荐4 |
seed | seed | 数值输入 | 42 | 随机种子 | 随机种子 | 固定种子便于对比 |
3.33 SD3TrainValidate 节点 - SD3训练验证
这个节点是干嘛的? 这是SD3的"考试执行员",实际执行SD3模型的验证过程。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
network_trainer | network_trainer | 连接输入 | - | 训练器 | 网络训练器 | 从SD3训练循环连线 |
validation_settings | validation_settings | 连接输入 | 可选 | 验证设置 | 验证设置 | 从SD3TrainValidationSettings连线 |
SDXL相关节点
3.34 SDXLModelSelect 节点 - SDXL模型选择器
这个节点是干嘛的? 这是专门为SDXL模型设计的"模型管理员",选择SDXL训练需要的模型文件。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
checkpoint | checkpoint | 下拉选择 | - | SDXL模型文件 | SDXL检查点 | 从checkpoints文件夹选择SDXL模型 |
lora_path | lora_path | 文本输入 | 空 | 预训练LoRA路径 | 预训练LoRA路径 | 可选的现有LoRA路径 |
3.35 InitSDXLLoRATraining 节点 - 初始化SDXL LoRA训练
这个节点是干嘛的? 这是SDXL模型的"训练总指挥",专门用来训练SDXL的LoRA技能包。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
SDXL_models | SDXL_models | 连接输入 | - | SDXL模型配置 | SDXL模型配置 | 从SDXLModelSelect连线 |
dataset | dataset | 连接输入 | - | 数据集配置 | 数据集配置 | 从TrainDatasetAdd连线 |
optimizer_settings | optimizer_settings | 连接输入 | - | 优化器设置 | 优化器设置 | 从OptimizerConfig连线 |
output_name | output_name | 文本输入 | SDXL_lora | 输出模型名称 | 输出模型名称 | 给SDXL LoRA起名 |
output_dir | output_dir | 文本输入 | SDXL_trainer_output | 输出目录 | 输出目录 | 保存位置 |
network_dim | network_dim | 数值输入 | 16 | LoRA维度 | 网络维度 | SDXL建议用16 |
network_alpha | network_alpha | 数值输入 | 16 | LoRA alpha值 | 网络alpha | 通常等于network_dim |
learning_rate | learning_rate | 数值输入 | 1e-6 | 学习率 | 学习率 | SDXL需要很小的学习率 |
max_train_steps | max_train_steps | 数值输入 | 1500 | 最大训练步数 | 最大训练步数 | 1500步适合大多数情况 |
cache_latents | cache_latents | 下拉选择 | disk | 潜在向量缓存 | 潜在向量缓存 | disk节省内存 |
cache_text_encoder_outputs | cache_text_encoder_outputs | 下拉选择 | disk | 文本编码器缓存 | 文本编码器缓存 | disk节省内存 |
highvram | highvram | 开关 | False | 高显存模式 | 高显存模式 | 显存充足时开启 |
blocks_to_swap | blocks_to_swap | 数值输入 | 0 | 交换块数量 | 交换块数量 | SDXL最多可以交换一定数量的块 |
fp8_base | fp8_base | 开关 | False | FP8基础模型 | FP8基础模型 | True节省显存 |
gradient_dtype | gradient_dtype | 下拉选择 | fp32 | 梯度数据类型 | 梯度数据类型 | fp32最稳定 |
save_dtype | save_dtype | 下拉选择 | fp16 | 保存数据类型 | 保存数据类型 | fp16适合SDXL |
attention_mode | attention_mode | 下拉选择 | sdpa | 注意力模式 | 注意力模式 | sdpa推荐 |
train_text_encoder | train_text_encoder | 下拉选择 | disabled | 训练文本编码器 | 训练文本编码器 | disabled最安全 |
clip_l_lr | clip_l_lr | 数值输入 | 0 | CLIP-L学习率 | CLIP-L学习率 | 训练文本编码器时设置 |
clip_g_lr | clip_g_lr | 数值输入 | 0 | CLIP-G学习率 | CLIP-G学习率 | 训练文本编码器时设置 |
sample_prompts_pos | sample_prompts_pos | 文本输入 | illustration of a kitten | photograph of a turtle | 正面提示词 | 正面采样提示词 | 想要生成的内容 |
sample_prompts_neg | sample_prompts_neg | 文本输入 | 空 | 负面提示词 | 负面采样提示词 | 不想要的内容 |
gradient_checkpointing | gradient_checkpointing | 下拉选择 | enabled | 梯度检查点 | 梯度检查点 | enabled节省显存 |
3.36 SDXLTrainLoop 节点 - SDXL训练循环
这个节点是干嘛的? 这是SDXL的"训练执行器",负责执行SDXL模型的训练过程。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
network_trainer | network_trainer | 连接输入 | - | 训练器 | 网络训练器 | 从InitSDXLLoRATraining连线 |
steps | steps | 数值输入 | 1 | 训练步数 | 训练步数 | 可以分批训练 |
3.37 SDXLTrainLoRASave 节点 - SDXL训练LoRA保存
这个节点是干嘛的? 这是SDXL的"成果保存员",专门保存训练好的SDXL LoRA模型。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
network_trainer | network_trainer | 连接输入 | - | 训练器 | 网络训练器 | 从SDXL训练循环连线 |
save_state | save_state | 开关 | False | 保存训练状态 | 保存训练状态 | True可以恢复训练 |
copy_to_comfy_lora_folder | copy_to_comfy_lora_folder | 开关 | False | 复制到LoRA文件夹 | 复制到LoRA文件夹 | True方便使用 |
3.38 SDXLTrainEnd 节点 - SDXL训练结束
这个节点是干嘛的? 这是SDXL训练的"毕业典礼",正式结束SDXL的训练过程。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
network_trainer | network_trainer | 连接输入 | - | 训练器 | 网络训练器 | 从SDXL训练循环连线 |
save_state | save_state | 开关 | True | 保存训练状态 | 保存训练状态 | True保存完整信息 |
3.39 SDXLTrainValidationSettings 节点 - SDXL训练验证设置
这个节点是干嘛的? 这是SDXL的"考试设置员",设定SDXL模型验证时的各种参数。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
steps | steps | 数值输入 | 20 | 采样步数 | 采样步数 | 20步够用 |
width | width | 数值输入 | 1024 | 图片宽度 | 图片宽度 | SDXL适合1024 |
height | height | 数值输入 | 1024 | 图片高度 | 图片高度 | SDXL适合1024 |
guidance_scale | guidance_scale | 数值输入 | 7.5 | 引导强度 | 引导缩放 | SDXL推荐7.5 |
sampler | sampler | 下拉选择 | dpm_2 | 采样器类型 | 采样器 | dpm_2效果好 |
seed | seed | 数值输入 | 42 | 随机种子 | 随机种子 | 固定种子便于对比 |
3.40 SDXLTrainValidate 节点 - SDXL训练验证
这个节点是干嘛的? 这是SDXL的"考试执行员",实际执行SDXL模型的验证过程。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
network_trainer | network_trainer | 连接输入 | - | 训练器 | 网络训练器 | 从SDXL训练循环连线 |
validation_settings | validation_settings | 连接输入 | 可选 | 验证设置 | 验证设置 | 从SDXLTrainValidationSettings连线 |
最终统计: 插件总节点数:39个 已完成分析节点数:39个 剩余未分析节点数:0个
4. 使用技巧和建议
4.1 新手入门建议
从LoRA训练开始:比完整模型训练更容易,需要的资源更少
使用小数据集测试:先用10-20张图片测试流程,确认没问题再用大数据集
选择合适的参数:network_dim=4-16,learning_rate=4e-4,max_train_steps=1000-2000
4.2 显存优化技巧
启用缓存:cache_latents和cache_text_encoder_outputs设为disk
使用FP8:fp8_base=True可以节省显存
交换块:blocks_to_swap设为18可以节省约11GB显存
梯度检查点:gradient_checkpointing=enabled节省显存
4.3 训练质量提升
数据质量:确保训练图片清晰,描述准确
合适的重复次数:图片少时增加num_repeats
正则化数据:使用TrainDatasetRegularization防止过拟合
定期验证:使用FluxTrainAndValidateLoop监控训练效果
4.4 不同模型的建议
Flux LoRA:network_dim=4-16,learning_rate=4e-4
SD3 LoRA:network_dim=16,learning_rate=1e-4
SDXL LoRA:network_dim=16,learning_rate=1e-6
5. 常见问题解答
Q1: 训练时显存不够怎么办?
A:
设置blocks_to_swap=18
启用fp8_base=True
使用cache_latents=disk
降低batch_size到1
启用gradient_checkpointing
Q2: 训练效果不好怎么办?
A:
Q3: 训练速度太慢怎么办?
A:
Q4: 如何恢复中断的训练?
A:
训练时设置save_state=True
使用FluxTrainResume节点
填入保存的状态文件路径
Q5: LoRA文件太大怎么办?
A:
降低network_dim
使用save_dtype=fp16或bf16
选择合适的network_type
Q6: 如何分享训练好的模型?
A:
使用UploadToHuggingFace节点
需要HuggingFace账号和token
可以选择公开或私有分享
6. 总结
ComfyUI FluxTrainer 是一个功能强大的AI模型训练插件,支持Flux、SD3、SDXL等多种模型的训练。通过39个专业节点,你可以:
记住最重要的几点:
数据质量决定训练效果:好的数据是成功的一半
合理设置参数:根据显存和需求选择合适的配置
耐心调试:训练是个试错过程,需要不断调整
定期保存:避免训练中断导致的损失
希望这个详细的教程能帮助你快速掌握ComfyUI FluxTrainer插件的使用!